feat(store): foundation-aware dependency gate (opt-in dep_gate: review)#12
Merged
Conversation
By default a dependent waits for every blocks-dependency to MERGE (done) — `br ready` excludes a feature with any open blocker, so this falls out for free and stays the safe default (dep_gate: merge). The new opt-in dep_gate: review relaxes it: a NON-foundation blocker releases its dependents once it reaches in_review (build on code that's in review, not yet merged — more parallelism). Foundation features (foundation=True) ALWAYS gate dependents on merge. - store.ready_queue(relaxed=False): the relaxed branch adds dep-blocked ready features whose every still-open blocker is a non-foundation feature at in_review, resolved in Python from `br list` labels (board_state + foundation) + `br show` deps (`_open_blockers`), since `br ready` only knows "blocker closed". - create_feature(foundation=…) + the `foundation` label + _project exposure; the board_create_feature tool + the decompose skill gain the flag (the skill already marked milestones foundation in frontmatter — now it's wired to the gate). - loop: dep_gate config → relaxed_gate → ready_queue(relaxed=…). Verified against br 0.1.23: `br list --json` carries labels; `br show` deps carry status; `br ready` waits for blockers to close. Default behaviour is unchanged. Completes the P1 concurrency-correctness batch (hot-file guard #10, health sweep #11, this). Tests: +6 (116 total) — _project foundation, create_feature labels foundation, _open_blockers filtering, ready_queue(relaxed) releases only non-foundation in_review blockers, dep_gate config, _spawn_ready passes the gate through. 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 #12 | feat(store): foundation-aware dependency gate (opt-in dep_gate: review)
VERDICT: WARN (CI still running — non-terminal; formal verdict deferred)
CI Status
- test: queued
Diff Review
- Adds opt-in
dep_gate: reviewconfig that releases dependents when non-foundation blockers reachin_review(vs defaultmergewhich waits for close). Foundation features always gate on merge. 6 files, 297 lines, +6 tests. store.py:create_featuregainsfoundationflag →LABEL_FOUNDATIONlabel;ready_queue(relaxed=…)adds dep-blocked features whose open blockers are all non-foundation +in_review; new_open_blockershelper;_projectexposesfoundation.loop.py: parsesdep_gateconfig →relaxed_gate→ passes toready_queue.__init__.py:board_create_featuregainsfoundationparam.
Observations
- LOW: clawpatch not available for this repo (not in project registry) — structural review skipped.
- LOW:
ready_queuerelaxed branch appends dep-blocked features without re-sorting by priority — they trail allbr readyfeatures regardless of priority. - No unresolved CodeRabbit threads.
- Default behavior unchanged; PR is purely additive and opt-in.
— 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.
What
The final P1 concurrency-correctness port. By default a dependent waits for every
blocks-dependency to merge (done) —br readyexcludes a feature with any open blocker, so this falls out for free and stays the safe default (dep_gate: merge).The new opt-in
dep_gate: reviewrelaxes it: a non-foundation blocker releases its dependents once it reachesin_review(build on code that's in review, not yet merged — more parallelism). Foundation features (foundation=True) always gate dependents on merge.store.ready_queue(relaxed=…)— the relaxed branch adds dep-blocked ready features whose every still-open blocker is a non-foundation feature atin_review, resolved in Python frombr listlabels (board_state + foundation) +br showdeps (_open_blockers), sincebr readyonly knows "blocker closed".create_feature(foundation=…)+ thefoundationlabel +_projectexposure; theboard_create_featuretool and thedecompose-projectskill gain the flag (the skill already marked milestones foundation in frontmatter — now it's actually wired to the gate).dep_gateconfig →relaxed_gate→ready_queue(relaxed=…).Default behaviour is unchanged — this is purely additive and opt-in.
Probed against
br 0.1.23br list --jsoncarrieslabels;br showdeps carrystatus;br readywaits for blockers to close. (Confirmed in a scratch repo before implementing.)Tests
+6 (116 total), all green:
_projectfoundation flag,create_featurelabels foundation,_open_blockersfiltering (open blocks only),ready_queue(relaxed)releases only non-foundationin_reviewblockers (foundation + merely-in_progress stay gated),dep_gateconfig,_spawn_readypasses the gate through.ruffclean.P1 batch complete
🤖 Generated with Claude Code