feat(store): DESIGN gate — large/architectural features need a design citing an ADR (v0.31.0)#71
Merged
Merged
Conversation
… citing an ADR (v0.31.0)
Plan M6: a large/architectural feature is a decision, not just a task.
mark_ready now refuses difficulty ∈ {large, architectural} unless the
feature's design field is non-empty AND references an ADR (ADR 0077 /
adr-64 / docs/adr/0076-… all count — ADR_REF_RE). Both fields already
existed; only the gate was missing. Small/medium untouched.
Also: mark_designing(fid, note) parks a pre-ready feature under a
'designing' label (the optional waiting room in front of the gate —
informational; the gate itself stays in mark_ready), and mark_ready
clears the label on the way to ready. The loop/skill hook that
auto-runs the due-diligence workflow from the designing state stays
deferred (the gate's error message points humans/agents at it).
7 new tests; 298 passed; ruff + format clean. v0.31.0 lockstep.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
|
👀 Quinn is reviewing — verdict (PASS / WARN / FAIL) + findings to follow. |
There was a problem hiding this comment.
QA Audit — PR #71 | feat(store): DESIGN gate — large/architectural features need a design citing an ADR (v0.31.0)
VERDICT: PASS (pending terminal CI)
CI Status
- test: in_progress ⏳
CI is still settling. Per the approve-on-green policy, this COMMENTED review promotes to APPROVED automatically once every check passes terminal-green — no manual re-review needed.
Diff Review
- 4 files, +126/-4: version bumps (0.30.0→0.31.0), DESIGN gate logic in
store.py, 7 new tests + 1 updated test intest_store.py mark_readygains a gated check forlarge/architecturalfeatures:designfield must exist AND reference an ADR. Error messages are specific and actionable.- New
mark_designing(fid, note)parks a pre-ready feature under adesigninglabel — purely informational; the hard gate lives inmark_ready ADR_REF_REregex is well-constructed: case-insensitive, coversADR 0077,ADR-77,adr/0077,docs/adr/0076-…forms
Observations
- CLAWPATCH/INFO: structural review ran (18 features mapped) but returned zero findings — the diff is contained and non-risky
- LOW: no unresolved CodeRabbit threads; no prior review on this PR
- The test suite covers all gate scenarios: no-design reject, no-ADR-ref reject, 4 accepted citation forms, small/medium bypass, park/unpark, in-flight reject — 298 passed per PR description
— Quinn, QA Engineer
|
Submitted COMMENT review on |
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.
M6 of the codified-delivery-loop plan.
mark_readyrefusesdifficulty ∈ {large, architectural}without a non-emptydesignthat references an ADR (ADR 0077,adr-64,docs/adr/0076-…—ADR_REF_RE). Error messages tell the caller exactly what to do: run due diligence, record the ADR, cite it.mark_designing(fid, note)parks a pre-ready feature under adesigninglabel — the optional waiting room in front of the gate. Informational only; the enforcement lives inmark_ready(andmark_readyclears the label going ready).due-diligenceworkflow from the designing state.7 new tests (no-design reject, no-ADR-ref reject, 4 accepted citation forms, small/medium untouched, park/unpark, in-flight reject). Full suite 298 passed; ruff +
ruff format --checkclean (with the CI-pinned 0.15.10 this time). v0.31.0 lockstep.🤖 Generated with Claude Code