Skip to content

design: TDDs 0044-0047 — coverage map (FR-78) + review/build/tdd-author refinements#123

Merged
cahenesy merged 1 commit into
masterfrom
docs/design/coverage-map-and-authoring-refinements
Jun 9, 2026
Merged

design: TDDs 0044-0047 — coverage map (FR-78) + review/build/tdd-author refinements#123
cahenesy merged 1 commit into
masterfrom
docs/design/coverage-map-and-authoring-refinements

Conversation

@cahenesy

@cahenesy cahenesy commented Jun 9, 2026

Copy link
Copy Markdown
Owner

Four draft TDDs from one /tdd-author pass after the FR-78 PRD merge (PRD-rev
0aa1e28). One covers the new requirement; three are gap-closure refinements of
the how of existing FRs (no PRD change), like 0038/0043.

  • 0044 Per-requirement test-coverage map (FR-78): the final review pass emits a
    COVERAGE_MAP block (pinned/proposed/justified-no-surface/unverified-gap)
    ALONGSIDE — outside — its REVIEW_RESULT verdict, so it is structurally
    reported-not-gated (ADR 0005); the runner writes a "## Per-requirement
    coverage" section to report.md + a PR-comment pointer. Anti-false-green is
    model-independent: coverage_map_normalize downgrades a pinned row to
    unverified-gap unless its evidence both matches a ::/:
    citation shape AND the cited file is in the runner-derived git diff --name-only list (ADR 0006 grounding).
  • 0045 Review-gate lenses (FR-10, FR-15): intent-conformance
    (documented-but-unenforced is a finding; cite both sides; scoped to the TDD's
    in-scope FR/ADR set) + policy-shadow (a test of an extracted helper is not
    proof the framework calls it; no finding without a named real enforcement
    path). Lenses WITHIN gate 4, not a new gate (ADR 0005).
  • 0046 Surgical-changes build norm (FR-66, FR-74): every changed line traces to
    the requirement; no adjacent improvements; minimum code — with a carve-out
    that exempts the build's already-mandated same-commit stale-doc updates,
    failing-test-first commits, and ADR supersessions. Echoed on the rework path
    (the ADR-0008 Opus-rework wander risk).
  • 0047 tdd-author interrogation upgrades (FR-76): red-team ranking of
    load-bearing assumptions (impact x likelihood x cheapness, each "fails if
    ___") + a Real/Overblown/Unspoken(elephant) failure-mode taxonomy (recommended
    structure within the existing section, not a new linter heading).

T5 (prd-author objective-level success-metrics) was considered and DROPPED as
redundant with the per-requirement observable acceptance criterion + the FR-77
co-created evaluation rubric (YAGNI).

All four carry an identical co-created ## Evaluation rubric (FR-77). Structural
lint + scope-bound pre-passes exit 0. Also checks off a stale BLOCKERS.md 0038
rework-budget-exhausted entry (moot — 0038 landed; resumed review passed without
rework).

Design-critique gate (independent design-reviewer, fresh context, different
model): DESIGN_REVIEW: PASS. One minor finding addressed before opening this PR —
0044's coverage_map_normalize now carries the scoped-diff file-presence check
into the function spec + verification plan (previously shape-only), making the
stronger anti-false-green half model-independent. Reviewer nits (rubric criterion
wording is 0044-specific but identical per FR-77; NFR-3 noted not-in-scope for
0045) accepted as-is.

Cascade: none stale — all three refinement TDDs are additive gap-closure; the
existing implemented TDDs remain accurate build records.

Open assumptions & waivers:

  • FR-78 model false-green on pinned — resolved: pinned requires a cited
    asserting test (file::name or file:line) reproducible from the diff; the runner
    also re-checks the cited file is in the scoped diff, else downgrade. Falsifiable
    per ADR 0006.
  • T5 prd-author success-metrics redundant — waived: T5 dropped entirely (YAGNI);
    per-requirement acceptance + the FR-77 rubric already cover measurable success.
  • T2 intent-conformance over-blocks — resolved: lens scoped to the TDD's in-scope
    FR/ADR set only; severity by boundary-crossing; no new gate (ADR 0005).
  • T2 policy-shadow false positive — resolved: a finding must name the real
    enforcement path (file:line) and show the test misses it; no concrete gap → no
    finding.

🤖 Generated with Claude Code

Co-Authored-By: Claude Opus 4.8 noreply@anthropic.com

…or refinements

Four draft TDDs from one /tdd-author pass after the FR-78 PRD merge (PRD-rev
0aa1e28). One covers the new requirement; three are gap-closure refinements of
the *how* of existing FRs (no PRD change), like 0038/0043.

- 0044 Per-requirement test-coverage map (FR-78): the final review pass emits a
  COVERAGE_MAP block (pinned/proposed/justified-no-surface/unverified-gap)
  ALONGSIDE — outside — its REVIEW_RESULT verdict, so it is structurally
  reported-not-gated (ADR 0005); the runner writes a "## Per-requirement
  coverage" section to report.md + a PR-comment pointer. Anti-false-green is
  model-independent: coverage_map_normalize downgrades a `pinned` row to
  `unverified-gap` unless its evidence both matches a <file>::<name>/<file>:<line>
  citation shape AND the cited file is in the runner-derived `git diff
  --name-only` list (ADR 0006 grounding).
- 0045 Review-gate lenses (FR-10, FR-15): intent-conformance
  (documented-but-unenforced is a finding; cite both sides; scoped to the TDD's
  in-scope FR/ADR set) + policy-shadow (a test of an extracted helper is not
  proof the framework calls it; no finding without a named real enforcement
  path). Lenses WITHIN gate 4, not a new gate (ADR 0005).
- 0046 Surgical-changes build norm (FR-66, FR-74): every changed line traces to
  the requirement; no adjacent improvements; minimum code — with a carve-out
  that exempts the build's already-mandated same-commit stale-doc updates,
  failing-test-first commits, and ADR supersessions. Echoed on the rework path
  (the ADR-0008 Opus-rework wander risk).
- 0047 tdd-author interrogation upgrades (FR-76): red-team ranking of
  load-bearing assumptions (impact x likelihood x cheapness, each "fails if
  ___") + a Real/Overblown/Unspoken(elephant) failure-mode taxonomy (recommended
  structure within the existing section, not a new linter heading).

T5 (prd-author objective-level success-metrics) was considered and DROPPED as
redundant with the per-requirement observable acceptance criterion + the FR-77
co-created evaluation rubric (YAGNI).

All four carry an identical co-created ## Evaluation rubric (FR-77). Structural
lint + scope-bound pre-passes exit 0. Also checks off a stale BLOCKERS.md 0038
rework-budget-exhausted entry (moot — 0038 landed; resumed review passed without
rework).

Design-critique gate (independent design-reviewer, fresh context, different
model): DESIGN_REVIEW: PASS. One minor finding addressed before opening this PR —
0044's coverage_map_normalize now carries the scoped-diff file-presence check
into the function spec + verification plan (previously shape-only), making the
stronger anti-false-green half model-independent. Reviewer nits (rubric criterion
wording is 0044-specific but identical per FR-77; NFR-3 noted not-in-scope for
0045) accepted as-is.

Cascade: none stale — all three refinement TDDs are additive gap-closure; the
existing implemented TDDs remain accurate build records.

Open assumptions & waivers:
- FR-78 model false-green on `pinned` — resolved: `pinned` requires a cited
  asserting test (file::name or file:line) reproducible from the diff; the runner
  also re-checks the cited file is in the scoped diff, else downgrade. Falsifiable
  per ADR 0006.
- T5 prd-author success-metrics redundant — waived: T5 dropped entirely (YAGNI);
  per-requirement acceptance + the FR-77 rubric already cover measurable success.
- T2 intent-conformance over-blocks — resolved: lens scoped to the TDD's in-scope
  FR/ADR set only; severity by boundary-crossing; no new gate (ADR 0005).
- T2 policy-shadow false positive — resolved: a finding must name the real
  enforcement path (file:line) and show the test misses it; no concrete gap → no
  finding.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
@cahenesy cahenesy merged commit 65735be into master Jun 9, 2026
1 check passed
@cahenesy cahenesy deleted the docs/design/coverage-map-and-authoring-refinements branch June 9, 2026 19:02
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