Skip to content

design: TDDs 0073–0075 (review rigor) - #199

Merged
cahenesy merged 1 commit into
masterfrom
docs/design/review-rigor
Oct 8, 2026
Merged

cahenesy merged 1 commit into
masterfrom
docs/design/review-rigor

Conversation

@cahenesy

@cahenesy cahenesy commented Oct 8, 2026

Copy link
Copy Markdown
Owner

Designs PRD FR-102–FR-110 (PRD-rev d526c55), which folds in issue #195.
All three are new TDDs and none is superseded. Build them in sequence:
0073, then 0074, then 0075.

  • 0073 requirements-review-gate (FR-102–105, plus FR-110 for this
    reviewer):
    • the interview coverage scan, with initial and final status;
    • scripts/lib/prd-lint.sh plus prd_lint.py, reusing 0070's
      requirement parser. It computes the delta against the integration
      branch, checks only inside ## Requirements, and flags placeholders
      only on new lines. It degrades, never stops, with no git, no commits
      or an unparseable base;
    • agents/requirements-reviewer.md (REQUIREMENTS_REVIEW: PASS|BLOCK,
      findings in the shared format);
    • overrides as "<finding>" — overridden: <rationale> lines in Open
      questions, re-checked by a fresh reviewer.
  • 0074 tdd-lint-grounding (FR-106, 107):
    • a marked mode for md_bullet_path;
    • tl_lint_grounding, which checks paths with git ls-tree against the
      integration branch. It falls back to HEAD with no integration
      branch, skips outside git, and checks only TDDs not yet on the
      integration branch;
    • deferred-discovery phrases, with backtick skipping for those phrases
      only.
  • 0075 reviewer-contracts (FR-108–110):
    • design-reviewer: a cited simulation trace, an alternatives table,
      terminology/duplication checks, a METRICS line, and Non-findings;
    • a new agents/build-reviewer.md, dispatched by file. It diffs from
      the worktree's start commit (base-sha), always applies the security
      checklist, and FAILs only on a blocker or major finding that is not
      pre-existing;
    • /build-tdds step 9 writes down the parent-dispatched fixture
      protocol;
    • tdd-author carries the trace, tables and metrics into the design PR
      body.

Design critique (design-reviewer, a fresh worker each round)

DESIGN_REVIEW: PASS on round 3 (blocker 0, major 0, minor 9, nit 4;
traced 11/11; no rubric row failing).

  • Round 1 BLOCKed on 7 majors:
    • M1: placeholder rule fails this repo's own PRD;
    • M2: override matching is fragile;
    • M3: cat-file rc 128 is ambiguous;
    • M4: 0074 relies on inline-code skipping that doesn't exist;
    • M5: FR-108 PR-body acceptance untraced;
    • M6: build-reviewer base ref unpinned;
    • M7: /prd-author stops outside git.
  • Round 2 BLOCKed on 2:
    • the id.malformed regex gave 18 false findings on the real PRD;
    • one observation contradicted another.
  • All of these were fixed. The round-3 minors and nits were folded in
    after the PASS:
    • FR-102 PR-body text check;
    • unparseable-base line copied into the PR body;
    • base ref printed for the reviewer;
    • fresh report file on resume;
    • requirement rules scoped to ## Requirements;
    • degraded-base strictness;
    • build-reviewer FAIL rule, implementer report as an input, FR-55
      scope note;
    • parent-dispatch protocol written into step 9;
    • nits.

Every round graded against the co-created rubric present in each TDD.
ADR evaluation: none. The reviewer contract is binding as
FR-104/108–110, and the parent-dispatch protocol is a skill step.

Open assumptions & waivers

  • Reviewer behaviour is unobservable by text — resolved: parent-dispatched fixture runs named in each verification plan, verdicts appended to the verify report; text checks cover contract presence only.
  • Requirements-reviewer delta — resolved: prd-lint emits ids whose block text differs from <integration>:docs/PRD.md; the reviewer gets the ids plus the whole PRD.
  • Grounding vs integration ref — resolved (revised in review): git ls-tree against the integration branch, falling back to HEAD with a note, skipped outside git; never a false pass.
  • Go-forward detection — resolved: a TDD absent from the integration branch is new and grounding-checked; merged TDDs are never checked.
  • Build-reviewer dispatch on Grok — resolved: dispatch by prompt file agents/build-reviewer.md from the plugin root.
  • python3 now required by /prd-author — resolved: degrades with a recorded "pre-pass unavailable" line; the review still runs.

UX coverage: no [UI] requirements in scope.

Refs #195

🤖 Generated with Claude Code

https://claude.ai/code/session_01NpGG21Y2VGGhTQaFr4oshB

…unding, reviewer contracts)

Designs PRD FR-102–FR-110 (PRD-rev d526c55), which folds in issue #195.
All three are new TDDs and none is superseded. Build them in sequence:
0073, then 0074, then 0075.

- 0073 requirements-review-gate (FR-102–105, plus FR-110 for this
  reviewer):
  - the interview coverage scan, with initial and final status;
  - scripts/lib/prd-lint.sh plus prd_lint.py, reusing 0070's
    requirement parser. It computes the delta against the integration
    branch, checks only inside `## Requirements`, and flags placeholders
    only on new lines. It degrades, never stops, with no git, no commits
    or an unparseable base;
  - agents/requirements-reviewer.md (REQUIREMENTS_REVIEW: PASS|BLOCK,
    findings in the shared format);
  - overrides as `"<finding>" — overridden: <rationale>` lines in Open
    questions, re-checked by a fresh reviewer.
- 0074 tdd-lint-grounding (FR-106, 107):
  - a `marked` mode for md_bullet_path;
  - tl_lint_grounding, which checks paths with `git ls-tree` against the
    integration branch. It falls back to HEAD with no integration
    branch, skips outside git, and checks only TDDs not yet on the
    integration branch;
  - deferred-discovery phrases, with backtick skipping for those phrases
    only.
- 0075 reviewer-contracts (FR-108–110):
  - design-reviewer: a cited simulation trace, an alternatives table,
    terminology/duplication checks, a METRICS line, and Non-findings;
  - a new agents/build-reviewer.md, dispatched by file. It diffs from
    the worktree's start commit (base-sha), always applies the security
    checklist, and FAILs only on a blocker or major finding that is not
    pre-existing;
  - /build-tdds step 9 writes down the parent-dispatched fixture
    protocol;
  - tdd-author carries the trace, tables and metrics into the design PR
    body.

## Design critique (design-reviewer, a fresh worker each round)
DESIGN_REVIEW: PASS on round 3 (blocker 0, major 0, minor 9, nit 4;
traced 11/11; no rubric row failing).
- Round 1 BLOCKed on 7 majors:
  - M1: placeholder rule fails this repo's own PRD;
  - M2: override matching is fragile;
  - M3: `cat-file` rc 128 is ambiguous;
  - M4: 0074 relies on inline-code skipping that doesn't exist;
  - M5: FR-108 PR-body acceptance untraced;
  - M6: build-reviewer base ref unpinned;
  - M7: /prd-author stops outside git.
- Round 2 BLOCKed on 2:
  - the id.malformed regex gave 18 false findings on the real PRD;
  - one observation contradicted another.
- All of these were fixed. The round-3 minors and nits were folded in
  after the PASS:
  - FR-102 PR-body text check;
  - unparseable-base line copied into the PR body;
  - base ref printed for the reviewer;
  - fresh report file on resume;
  - requirement rules scoped to `## Requirements`;
  - degraded-base strictness;
  - build-reviewer FAIL rule, implementer report as an input, FR-55
    scope note;
  - parent-dispatch protocol written into step 9;
  - nits.

Every round graded against the co-created rubric present in each TDD.
ADR evaluation: none. The reviewer contract is binding as
FR-104/108–110, and the parent-dispatch protocol is a skill step.

## Open assumptions & waivers
- Reviewer behaviour is unobservable by text — resolved: parent-dispatched fixture runs named in each verification plan, verdicts appended to the verify report; text checks cover contract presence only.
- Requirements-reviewer delta — resolved: prd-lint emits ids whose block text differs from `<integration>:docs/PRD.md`; the reviewer gets the ids plus the whole PRD.
- Grounding vs integration ref — resolved (revised in review): `git ls-tree` against the integration branch, falling back to HEAD with a note, skipped outside git; never a false pass.
- Go-forward detection — resolved: a TDD absent from the integration branch is new and grounding-checked; merged TDDs are never checked.
- Build-reviewer dispatch on Grok — resolved: dispatch by prompt file `agents/build-reviewer.md` from the plugin root.
- python3 now required by /prd-author — resolved: degrades with a recorded "pre-pass unavailable" line; the review still runs.

UX coverage: no [UI] requirements in scope.

Refs #195

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_01NpGG21Y2VGGhTQaFr4oshB
@cahenesy
cahenesy merged commit 4f217b3 into master Oct 8, 2026
1 check passed
@cahenesy
cahenesy deleted the docs/design/review-rigor branch October 8, 2026 18:35
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