docs: demote DESIGN.md to a design record and move the semantic model - #22
Merged
Conversation
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>
3 tasks
Hosi121
approved these changes
Jul 31, 2026
Hosi121
left a comment
Contributor
There was a problem hiding this comment.
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.mdunder[Unreleased], so the second to land needs a trivial rebase. - #21 adds three new code comments citing
DESIGN §8.2 honesty(insrc/application.rsandsrc/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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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:
Marked superseded, with the living document named:
MLC001is missing from it);docs/rules/andsrc/rules/registry.rsgovern.--analysis-summary;docs/reference/,docs/guides/configuration.md,schemas/, andqual --helpgovern.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.rsand the CONTRIBUTING labeling protocol are what is enforced.Corrected against the code:
ast.parse(feature_version=...), contradicting the README andsrc/reporting/fixes.rs. It now states what the Rust implementation does: a fixed rustpython-parser 0.4 / Python 3.12 grammar with nofeature_versionpin, andtarget-pythonas a post-parseMLC000gate.MLR112 > generic portability, which does not exist, and omitted the three shipped ones. It now names the six real relations and points atRuleMetadata::supersedes.docs/architecture.md— gains The Manim semantic model in English: Scene lifecycle, the exactScene.playstate machine, frame time and thedt-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 existingdocs/rules/*.mdcitations 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.mdis 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 theDESIGN.mdheader: authoritative documentation is written in English.DESIGN.mdstays Japanese as the one deliberate exception, because a design record is preserved rather than maintained — no contributor needs to read it.Acceptance
README.mdandCONTRIBUTING.mdpoint contributors at something that matches the repositoryAGENTS.mdreflects a finished catalogVerification
cargo testgreen (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