Correct the prose that drifted from the code, and stop a local key file being committable - #43
Conversation
There was a problem hiding this comment.
🟢 Approval recommended
Changes are predominantly documentation alignment plus a clearly-correct ignore rule for a sensitive local config file, with small verified-safe workflow/config cleanups.
Pull request overview
This PR performs a repo-wide prose/documentation audit to bring written surfaces back in sync with current behavior, and adds a safeguard to prevent a local config file (containing a real API key) from being accidentally committed. It also includes two small non-prose cleanups uncovered during the audit: removing an inert mypy override and making the release workflow’s changelog extractor accept both bracketed and unbracketed heading styles.
Changes:
- Align docstrings/READMEs/CHANGELOG language with current behavior in the service and tools (including the apiclient’s prefill semantics and dialog set).
- Prevent committing
config.local.toml(used by a VS Code launch config and expected to contain a real serial URL + API key) by adding it to.gitignoreand documenting why. - Remove an inert mypy override in
pyproject.tomland widen the release workflow changelog-section regex to support both## [x.y.z]and## x.y.zheadings.
File summaries
| File | Description |
|---|---|
| tools/signsim/signsim/window.py | Updates signsim window prose to match current UI structure (empty-table count). |
| tools/signsim/signsim/model.py | Adjusts comment wording to match current “section” terminology. |
| tools/apiclient/tests/test_enums.py | Updates test fixture example payload to reflect current enumeration examples while still validating shape parsing. |
| tools/apiclient/README.md | Clarifies “prefill” behavior and documents the standalone mypy invocation for the apiclient. |
| tools/apiclient/apiclient/format.py | Corrects status-code meaning provenance to reflect the actual sources of truth. |
| tools/apiclient/apiclient/dialogs.py | Updates module docstring to include the curl preview dialog. |
| tools/apiclient/apiclient/catalogue.py | Updates Input docstring to reflect that prefills are schema-backed and pinned by tests. |
| tools/apiclient/apiclient/app.py | Updates comment to include curl preview dialog in application naming/icon scope. |
| tests/test_launch_configurations.py | Refines test intent and documentation to assert PyCharm-startable configs exist in VS Code (asymmetric on purpose). |
| pyproject.toml | Removes an inert mypy override and clarifies the uvicorn extra rationale (watchfiles). |
| packaging/config.example.toml | Adds open_docs setting and strengthens operational notes for log file placement under systemd/container constraints. |
| CHANGELOG.md | Normalizes heading style for “Unreleased” and 0.1.0, and updates release notes prose to match current behavior. |
| .vscode/launch.json | Documents that the real-sign config points at config.local.toml and that it must remain uncommitted. |
| .gitignore | Adds config.local.toml with clear rationale (contains machine-specific serial URL + API key). |
| .github/workflows/release.yml | Updates changelog section extraction regex to handle both bracketed and unbracketed version headings. |
Review details
- Files reviewed: 14/15 changed files
- Comments generated: 0
- Review effort level: Lite
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
A documentation audit across every prose surface in the tree, plus one fix that
came out of it: a local config file holding a real API key was committable.
Every prose surface was read against the code it describes: the README, the
CHANGELOG,
AGENTS.md,docs/protocol-notes.md, both tools' READMEs, everycomment and docstring in
readerboard/,tests/,tools/andscripts/, thecomments in
pyproject.toml, the packaging files and the CI workflows, and thetext the service and the two tools emit at runtime.
Seventeen candidate findings, sixteen confirmed and applied. The one that was
refuted:
requirements.lock's header says every version was pinned more thanfourteen days after publication, which looks like it should read seven to match
.github/dependabot.yml. Both are true at once. The Dependabot figure is afloor on what it will offer, not a ceiling on how old a hand-made pin was, and
no pin in that file has arrived through a Dependabot bump. Changing it would
have replaced an accurate statement with a weaker one.
Not prose, so worth knowing before skimming
Two commits change behaviour rather than text. Both are deliberate and both
verify clean, but a reviewer expecting a documentation-only diff should see
them coming.
Remove the mypy override that relaxes nothingdeletes a[[tool.mypy.overrides]]block frompyproject.toml. All three mypy runspass with it gone, which is the proof it was inert.
Read release notes from both changelog heading styleswidens the regex in.github/workflows/release.yml. Two headings lost their reference-linkbrackets in this branch, because neither has a link definition to point at,
and the extractor previously understood only the bracketed form. Left alone,
re-tagging
v0.1.0would have failed the workflow's "no notes" guard. Theversion end stays anchored, so asking for
0.1.1still cannot match a0.1.10heading.The key that could have been committed
.vscode/launch.jsonpoints the "readerboard against the real sign"configuration at
${workspaceFolder}/config.local.toml. Unlike the otherconfigurations, which set a few environment overrides inline, that one names a
whole config file, so it carries a real serial URL and a real API key. Nothing
in
.gitignorecovered it.It is covered now, and the launch.json comment says so rather than leaving a
reader to find out. No key was ever exposed:
config.local.tomlappearsnowhere in the history on any branch, and the only
.tomlfiles ever added tothis repository are
packaging/config.example.tomlandpyproject.toml.Verification
ruff check .clean.mypy readerboardclean (29 files), and both tools clean under their ownMYPYPATH(12 and 9 files).regex against the old CHANGELOG and the new regex against the edited one:
byte identical in every case, and
0.1.0now resolves where it would nothave mid-branch.
config.local.tomlpresent,git statusreports nothing.