Skip to content

docs: demote DESIGN.md to a design record and move the semantic model - #22

Merged
Hosi121 merged 1 commit into
mainfrom
agent/10-design-md-design-record
Jul 31, 2026
Merged

docs: demote DESIGN.md to a design record and move the semantic model#22
Hosi121 merged 1 commit into
mainfrom
agent/10-design-md-design-record

Conversation

@vyuma

@vyuma vyuma commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

Closes #10

The decision

The issue offered (a) rewrite DESIGN.md as the current specification, or (b) demote it to a design record and move the still-true semantic model out. This takes (b), for the reason the issue gives: an authoritative spec written before the code cannot survive, and the semantic model is the part worth keeping.

What changed

DESIGN.md — retitled to a design record, with a header that says plainly that it is not a specification, is not synchronized with the code, and loses to the code on any disagreement. The header carries a table naming what actually governs each topic.

Removed outright, because they could only misdirect:

  • §10 repository layout — a 78-line Python source tree; none of those paths exist.
  • §12 implementation roadmap and §13 issue-sized backlog — phases 0–6 of future work, all of it shipped.

Marked superseded, with the living document named:

  • §7 rule catalog — does not match the shipped 92 (MLC001 is missing from it); docs/rules/ and src/rules/registry.rs govern.
  • §8 CLI/config/suppressions — missing shipped flags such as --analysis-summary; docs/reference/, docs/guides/configuration.md, schemas/, and qual --help govern.
  • §11 test strategy — the fixtures are not named branches.py / expected.json, and the §11.4 release gate (200 hand-labeled cases, precision 98%, 95% Wilson lower bound 95%) is computed by no code; tests/corpus_gate.rs and the CONTRIBUTING labeling protocol are what is enforced.

Corrected against the code:

  • The fix-validation section promised ast.parse(feature_version=...), contradicting the README and src/reporting/fixes.rs. It now states what the Rust implementation does: a fixed rustpython-parser 0.4 / Python 3.12 grammar with no feature_version pin, and target-python as a post-parse MLC000 gate.
  • The supersession list claimed MLR112 > generic portability, which does not exist, and omitted the three shipped ones. It now names the six real relations and points at RuleMetadata::supersedes.

docs/architecture.md — gains The Manim semantic model in English: Scene lifecycle, the exact Scene.play state machine, frame time and the dt-parameter updater convention, membership/family/draw order, 3D fixed objects, and the renderer-specific point layouts. Legacy section numbers are kept in the headings (### Scene lifecycle (§3.1)), so the ~15 existing docs/rules/*.md citations of "DESIGN §3.x" still resolve — the intro explains the mapping.

README.md, CONTRIBUTING.md, AGENTS.md, docs/index.md, docs/releasing.md, docs/rules/README.md — now point at documents that match the repository. AGENTS.md is rewritten: no "start with Phase 0", no "do not claim a reserved rule is implemented" (zero are reserved), and the standing rules state that the catalog is finished.

Language decision, recorded in CONTRIBUTING.md, AGENTS.md, and the DESIGN.md header: authoritative documentation is written in English. DESIGN.md stays Japanese as the one deliberate exception, because a design record is preserved rather than maintained — no contributor needs to read it.

Acceptance

  • No document that describes a non-existent Python implementation is labeled authoritative
  • README.md and CONTRIBUTING.md point contributors at something that matches the repository
  • The specific contradictions listed in the issue are corrected or removed
  • AGENTS.md reflects a finished catalog
  • A decision is recorded on whether the authoritative document is English

Verification

cargo test green (docs-only change, but the schema/golden tests cover the contracts referenced). Every relative link target checked to exist from the file that contains it.

🤖 Generated with Claude Code

README called DESIGN.md authoritative and CONTRIBUTING told contributors
to read it before changing implementation code. It still described the
design as it stood before the implementation existed, in Python: a
78-line src/manim_lint/*.py tree, phases 0-6 of future work, a
`class Rule(Protocol)`, and fix validation via
`ast.parse(feature_version=...)` that the bundled fixed grammar cannot
provide. An outside contributor is pointed there first and told it
outranks everything else, so following it produces wrong work.

An authoritative spec written before the code cannot survive, so demote
it. DESIGN.md becomes a design record with a header that says so and
names what actually governs. The sections that could only misdirect are
removed outright: the Python repository layout (§10), the implementation
roadmap (§12), and the issue-sized backlog (§13). The catalog, CLI, and
test-strategy sections carry superseded notes naming the living
documents, and the drifted claims -- the invented
`MLR112 > generic portability` supersession, the missing shipped ones,
and the feature_version promise -- are corrected against the code.

The part worth keeping is the semantic model, so it moves to
docs/architecture.md in English, with the legacy section numbers kept in
the headings so existing "DESIGN §3.x" citations still resolve.

AGENTS.md no longer says to start with Phase 0 or to withhold claims
about reserved rules: the catalog has been 92 implemented / 0 reserved
since 0.2.0.

Records the language decision the issue asked for: authoritative
documentation is English. DESIGN.md stays Japanese as the one deliberate
exception, because a design record is preserved rather than maintained.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

@Hosi121 Hosi121 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.

Agreed with (b). A specification written before the code cannot survive, and the semantic model is the part worth keeping. Deleting the 78-line phantom source tree (§10) and the already-shipped roadmap (§12/§13) is straightforwardly right — those could only misdirect a reader.

Two coordination notes with #21:

  • Both PRs append to CHANGELOG.md under [Unreleased], so the second to land needs a trivial rebase.
  • #21 adds three new code comments citing DESIGN §8.2 honesty (in src/application.rs and src/config/loader.rs), and this PR marks §8 superseded. The principle is right and worth keeping in the code, but whichever merges second should repoint those citations at the living document — docs/guides/configuration.md, presumably — so a reader following the reference does not land in a section that says it loses to the code.

@Hosi121
Hosi121 merged commit cb07a3f into main Jul 31, 2026
17 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.

DESIGN.md is declared authoritative but still describes a Python implementation that never existed

2 participants