Skip to content

docs(requirements): re-express against intent sources and record unstated obligations - #46

Merged
gvsambhu merged 1 commit into
mainfrom
dev/docs-15-requirements-re-expression
Aug 12, 2026
Merged

docs(requirements): re-express against intent sources and record unstated obligations#46
gvsambhu merged 1 commit into
mainfrom
dev/docs-15-requirements-re-expression

Conversation

@gvsambhu

Copy link
Copy Markdown
Owner

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:

  • FR-31 — no source file is ever silently dropped
  • FR-36 — no source feature is ever silently dropped from rendered output
  • FR-34 — LLM output must not affect the deterministic artefact

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 as partial is in fact shipped: FR-7c's second corpus was deferred by design, not missed.

Compatibility

  • Identifiers unchanged and unrenumbered; new ones start at FR-40 and NFR-6
  • Retired NFR-1 keeps its number, so existing references still resolve
  • Requirements continue to cite no ADRs — traceability still runs one way

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

…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
@gvsambhu
gvsambhu merged commit 53a1038 into main Aug 12, 2026
14 checks passed
@gvsambhu
gvsambhu deleted the dev/docs-15-requirements-re-expression branch August 15, 2026 18:56
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.

1 participant