Skip to content

docs(architecture): the CLI ships, and the typeset spike is a package - #363

Merged
FBumann merged 1 commit into
mainfrom
docs/architecture-diagram-accuracy
Jul 31, 2026
Merged

docs(architecture): the CLI ships, and the typeset spike is a package#363
FBumann merged 1 commit into
mainfrom
docs/architecture-diagram-accuracy

Conversation

@FBumann

@FBumann FBumann commented Jul 31, 2026

Copy link
Copy Markdown
Owner

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 dashed plan class, while src/lpspec/__main__.py is a real argparse front end — one verb per entry in typeset.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: S3 has no progress surface anywhere, C3 is Track 4, and A3 (value-only re-solve) exists only as a comment in executor.py.

  • latex.py is no longer a module. The spike is the typeset/ 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, since to_markdown is in lpspec.__all__ and is a CLI verb.

  • Module map gaps. Added _yaml.py (the YAML 1.2 boolean and duplicate-key rules), __main__.py, and relational/sinks/tables.py (the ModelTables contract every sink reads). tests/test_architecture.py accepts 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 gave api.py the build verb the pipeline diagram already showed.

Everything else spot-checked against the code holds: the api.py verbs, lp_file + highs with mps still only planned, the single declared entry in DELIBERATE_LAZY_IMPORTS, ENGINE_MAY_IMPORT = {'lpspec.errors'}, and _label_frame as the one labeller shared by variables and rows.

Test plan

  • uv run pytest tests/test_architecture.py tests/test_docs_site.py — 15 passed
  • mkdocs build --strict not run locally (separate dep group); no page added and no link outside docs/, so nothing it gates is touched

🤖 Generated with Claude Code

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>
@coderabbitai

coderabbitai Bot commented Jul 31, 2026

Copy link
Copy Markdown

Warning

Review limit reached

@FBumann, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 53 minutes

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

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.

Review details
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 7b289657-511d-467f-a427-4bff4ee89faa

📥 Commits

Reviewing files that changed from the base of the PR and between aabd452 and 69fb172.

📒 Files selected for processing (1)
  • docs/ARCHITECTURE.md

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@read-the-docs-community

Copy link
Copy Markdown

Documentation build overview

📚 lpspec | 🛠️ Build #33846844 | 📁 Comparing 69fb172 against latest (aabd452)

  🔍 Preview build  

2 files changed
± ARCHITECTURE/index.html
± changelog/index.html

@FBumann
FBumann merged commit f0b6cf1 into main Jul 31, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant