docs(requirements): re-express against intent sources and record unstated obligations - #46
Merged
Merged
Conversation
…ated obligations The published set was produced by transcribing the project plan's requirements section. A transcription inherits its source's structure and cannot notice what was never on it — so it carried the plan's shape, and its gaps, unchanged. This re-expresses the same obligations against the intent sources directly: the plan, the design records' problem statements and decision drivers, the README, and recalled design intent. What the system must do is unchanged; how it is stated, grouped and evidenced is not. Three classes of change. Grouping and form. Nine capability sections replace a split that was release markers wearing capability labels. Front matter the standard expects and the document lacked — purpose, scope, glossary, assumptions, out-of-scope. Compound statements split into a requirement plus acceptance criteria, so obligations that were asserted can now be tested. Release markers moved out of the statements into a status table that doubles as the numeric index. Recorded intent. Fifteen requirements for capabilities that were always intended and never written down — most importantly the three negative guarantees the architecture actually rests on: that no source file is silently dropped, that no source feature is silently dropped from rendered output, and that LLM output must not affect the deterministic artefact. The last is the README's stated thesis and had no requirement in any prior list. Honest status. Every status claim is verified against the code rather than inferred. Five requirements that read as shipped now read as partial, each naming the specific criterion that does not hold. One that read as partial is in fact shipped — its second corpus was deferred by design, not missed. Identifiers are unchanged and unrenumbered; new ones start at FR-40 and NFR-6. The retired NFR-1 keeps its number. Requirements continue to cite no design records, so traceability still runs one way. AI-assistant: Claude Code (Claude Opus 5 via Anthropic) Model: claude-opus-5
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.
What this changes
36 → 51 requirements. The set is re-expressed against the intent sources rather than transcribed from a single one. No obligation changed, and nothing shipped becomes non-conformant.
Why
The published set was produced by transcribing the project plan's requirements section. A transcription inherits its source's structure and cannot notice what was never on it — so it carried the plan's shape and its gaps unchanged, including the absence of any requirement for the README's own stated thesis.
The three classes of change
Grouping and form. Nine capability sections replace a split that was release markers wearing capability labels. Front matter the standard expects and the document lacked — purpose, scope, glossary, assumptions, out-of-scope. Compound statements split into a requirement plus acceptance criteria, so obligations that were previously asserted can now be tested. Release markers moved out of the statements into a status table that doubles as the numeric index.
Recorded intent — 15 requirements. Capabilities that were always intended and never written down. Most consequentially, the three negative guarantees the architecture actually rests on:
The last is the README's stated point of view and had no requirement in any prior list.
Verified status. Every status claim is checked against the code rather than inferred. Five requirements that read as shipped now read as
partial, each naming the specific acceptance criterion not yet met — FR-3 AC-1, FR-13 AC-2, FR-18 AC-1, NFR-4 AC-3, NFR-5 AC-2. One that read aspartialis in fact shipped: FR-7c's second corpus was deferred by design, not missed.Compatibility
Closes two open design-review findings
Both were resolved by wording rather than by a separate decision, and are called out here so they are ratified rather than left to lapse:
Not in this PR
7 ADR amendments, 1 new ADR (output-path safety), and 9 code fixes are tracked separately. Five of the code fixes are unblocked today.
🤖 Generated with Claude Code