Skip to content

feat(write-roadmap): Step 5 KR Coverage Gate — ensure every Key Result has roadmap coverage#21

Open
felipecabargas wants to merge 1 commit into
mainfrom
worktree-feat+write-roadmap-coverage-gate
Open

feat(write-roadmap): Step 5 KR Coverage Gate — ensure every Key Result has roadmap coverage#21
felipecabargas wants to merge 1 commit into
mainfrom
worktree-feat+write-roadmap-coverage-gate

Conversation

@felipecabargas
Copy link
Copy Markdown
Owner

Summary

  • Adds Step 5 — KR Coverage Gate to write-roadmap, running automatically after Step 4 (commitment marking) and before ROADMAP.md is saved
  • The gate extracts every Key Result from the OKR input (or from the OKR file found during the Step 0 scan) and checks whether each KR has at least one roadmap theme — in any horizon — that plausibly addresses it
  • Coverage is assessed by semantic alignment, not keyword matching: a KR about reducing churn is covered by a theme on improving onboarding even if the words don't match
  • Any uncovered KR triggers a targeted question that names the specific KR rather than a generic prompt — asking what the team plans to build against it, or requesting an explicit "intentionally unaddressed" decision with a reason
  • The roadmap is not saved until every KR is covered or explicitly opted out
  • A KR Coverage table is appended to ROADMAP.md as the audit trail — KR, covering theme(s), horizon, and status (✅ Covered / ⏸ Intentionally Unaddressed + reason)
  • write-okrs is unchanged
  • Version bumped: 1.0.0 → 1.1.0

What changed

File Change
skills/write-roadmap/SKILL.md Step 5 added; "four steps" → "five steps" in prose (×2); KR Coverage table added to output format template; coverage enforcement bullet added to Key Rules
skills/write-okrs/SKILL.md Untouched

Test plan

  • Run /gambit:write-roadmap with OKRs where all KRs map naturally to roadmap themes — confirm gate passes silently and Coverage table appears at the bottom of ROADMAP.md
  • Run with a KR that has no semantic match in the roadmap — confirm a targeted question names the specific KR
  • Mark a KR as intentionally unaddressed with a reason — confirm it appears in the Coverage table with the stated reason and roadmap saves successfully
  • Verify semantic coverage: a KR about churn covered by an onboarding theme — confirm the gate accepts this without requiring keyword overlap
  • Run /gambit:write-okrs standalone — confirm it works exactly as before

🤖 Generated with Claude Code

Adds an automatic KR coverage check (v1.0.0 → v1.1.0) that runs after
themes are placed and marked (Step 4) and before ROADMAP.md is written.
The gate extracts every Key Result from the OKR input (or scanned OKR file)
and verifies that at least one roadmap theme — in any horizon — plausibly
addresses each KR by semantic alignment, not keyword matching.

Any KR with no coverage triggers a targeted question that names the specific
KR and asks what the team is planning to build against it. The roadmap is not
saved until every KR is either covered or explicitly marked as intentionally
unaddressed with a stated reason. A KR Coverage table is appended to
ROADMAP.md as the audit trail, showing each KR, which theme(s) cover it,
the horizon, and the status (Covered / Intentionally Unaddressed + reason).

write-okrs is unchanged.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
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