docs(architecture): the CLI ships, and the typeset spike is a package - #363
Conversation
The second diagram still marked "drive it from the command line" as planned, but `python -m lpspec <format>` is a real front end — one verb per entry in `typeset.FORMATS`. Mark it solid and say so in the prose. The spike outgrew `latex.py` into `typeset/` (walk + format + three spellings), so name the package and list Markdown alongside LaTeX and Typst. Module map: add `_yaml.py`, `__main__.py` and `relational/sinks/tables.py`, and give `api.py` the `build` verb the pipeline diagram already showed. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
|
Warning Review limit reached
Next review available in: 53 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Three drifts in
docs/ARCHITECTURE.md, all in the second diagram and the prose under it.The CLI ships, but the diagram called it planned.
S2("drive it from the command line") was in the dashedplanclass, whilesrc/lpspec/__main__.pyis a real argparse front end — one verb per entry intypeset.FORMATS, with--symbols,--standalone,--no-legend,--no-numbers. Marked solid, and the prose now says what the verb is and why it binds no data.Its siblings stay dashed and are still right:
S3has no progress surface anywhere,C3is Track 4, andA3(value-only re-solve) exists only as a comment inexecutor.py.latex.pyis no longer a module. The spike is thetypeset/package —walk.py+format.py+ three spellings. The surrounding sentence already described the package shape ("one walk over the AST, one module per output format"); only the name was stale. The map row now lists Markdown alongside LaTeX and Typst, sinceto_markdownis inlpspec.__all__and is a CLI verb.Module map gaps. Added
_yaml.py(the YAML 1.2 boolean and duplicate-key rules),__main__.py, andrelational/sinks/tables.py(theModelTablescontract every sink reads).tests/test_architecture.pyaccepts a module docstring in place of a map row, so none of these were failing CI — they are just load-bearing enough to name here. Also gaveapi.pythebuildverb the pipeline diagram already showed.Everything else spot-checked against the code holds: the
api.pyverbs,lp_file+highswithmpsstill only planned, the single declared entry inDELIBERATE_LAZY_IMPORTS,ENGINE_MAY_IMPORT = {'lpspec.errors'}, and_label_frameas the one labeller shared by variables and rows.Test plan
uv run pytest tests/test_architecture.py tests/test_docs_site.py— 15 passedmkdocs build --strictnot run locally (separate dep group); no page added and no link outsidedocs/, so nothing it gates is touched🤖 Generated with Claude Code