Skip to content

Correct the prose that drifted from the code, and stop a local key file being committable - #43

Merged
mjaksn merged 9 commits into
mainfrom
docs-audit
Sep 3, 2026
Merged

Correct the prose that drifted from the code, and stop a local key file being committable#43
mjaksn merged 9 commits into
mainfrom
docs-audit

Conversation

@mjaksn

@mjaksn mjaksn commented Sep 3, 2026

Copy link
Copy Markdown
Owner

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, every
comment and docstring in readerboard/, tests/, tools/ and scripts/, the
comments in pyproject.toml, the packaging files and the CI workflows, and the
text 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 than
fourteen days after publication, which looks like it should read seven to match
.github/dependabot.yml. Both are true at once. The Dependabot figure is a
floor 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 nothing deletes a
    [[tool.mypy.overrides]] block from pyproject.toml. All three mypy runs
    pass with it gone, which is the proof it was inert.
  • Read release notes from both changelog heading styles widens the regex in
    .github/workflows/release.yml. Two headings lost their reference-link
    brackets 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.0 would have failed the workflow's "no notes" guard. The
    version end stays anchored, so asking for 0.1.1 still cannot match a
    0.1.10 heading.

The key that could have been committed

.vscode/launch.json points the "readerboard against the real sign"
configuration at ${workspaceFolder}/config.local.toml. Unlike the other
configurations, 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 .gitignore covered 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.toml appears
nowhere in the history on any branch, and the only .toml files ever added to
this repository are packaging/config.example.toml and pyproject.toml.

Verification

  • 708 tests pass.
  • ruff check . clean.
  • mypy readerboard clean (29 files), and both tools clean under their own
    MYPYPATH (12 and 9 files).
  • Release notes extracted for all seven released versions under both the old
    regex against the old CHANGELOG and the new regex against the edited one:
    byte identical in every case, and 0.1.0 now resolves where it would not
    have mid-branch.
  • The ignore rule tested end to end: with a config.local.toml present,
    git status reports nothing.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 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 .gitignore and documenting why.
  • Remove an inert mypy override in pyproject.toml and widen the release workflow changelog-section regex to support both ## [x.y.z] and ## x.y.z headings.
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.

@mjaksn
mjaksn merged commit 0dbe3f5 into main Sep 3, 2026
13 checks passed
@mjaksn
mjaksn deleted the docs-audit branch September 3, 2026 08:48
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.

2 participants