Skip to content

feat(store): foundation-aware dependency gate (opt-in dep_gate: review)#12

Merged
mabry1985 merged 1 commit into
mainfrom
feat/foundation-dep-gate
Jun 13, 2026
Merged

feat(store): foundation-aware dependency gate (opt-in dep_gate: review)#12
mabry1985 merged 1 commit into
mainfrom
feat/foundation-dep-gate

Conversation

@mabry1985

Copy link
Copy Markdown
Member

What

The final P1 concurrency-correctness port. 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=…) — 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 and the decompose-project skill gain the flag (the skill already marked milestones foundation in frontmatter — now it's actually wired to the gate).
  • loop: dep_gate config → relaxed_gateready_queue(relaxed=…).

Default behaviour is unchanged — this is purely additive and opt-in.

Probed against br 0.1.23

br list --json carries labels; br show deps carry status; br ready waits for blockers to close. (Confirmed in a scratch repo before implementing.)

Tests

+6 (116 total), all green: _project foundation flag, create_feature labels foundation, _open_blockers filtering (open blocks only), ready_queue(relaxed) releases only non-foundation in_review blockers (foundation + merely-in_progress stay gated), dep_gate config, _spawn_ready passes the gate through. ruff clean.

P1 batch complete

🤖 Generated with Claude Code

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>
@protoquinn

protoquinn Bot commented Jun 13, 2026

Copy link
Copy Markdown

👀 Quinn is reviewing — verdict (PASS / WARN / FAIL) + findings to follow.

@mabry1985
mabry1985 merged commit f24034b into main Jun 13, 2026
1 check passed
@mabry1985
mabry1985 deleted the feat/foundation-dep-gate branch June 13, 2026 06:32

@protoquinn protoquinn Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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: review config that releases dependents when non-foundation blockers reach in_review (vs default merge which waits for close). Foundation features always gate on merge. 6 files, 297 lines, +6 tests.
  • store.py: create_feature gains foundation flag → LABEL_FOUNDATION label; ready_queue(relaxed=…) adds dep-blocked features whose open blockers are all non-foundation + in_review; new _open_blockers helper; _project exposes foundation.
  • loop.py: parses dep_gate config → relaxed_gate → passes to ready_queue.
  • __init__.py: board_create_feature gains foundation param.

Observations

  • LOW: clawpatch not available for this repo (not in project registry) — structural review skipped.
  • LOW: ready_queue relaxed branch appends dep-blocked features without re-sorting by priority — they trail all br ready features regardless of priority.
  • No unresolved CodeRabbit threads.
  • Default behavior unchanged; PR is purely additive and opt-in.

— Quinn, QA Engineer

@protoquinn

protoquinn Bot commented Jun 13, 2026

Copy link
Copy Markdown

Submitted COMMENT review on protoLabsAI/projectBoard-plugin#12. CI is still queued — the formal PASS/FAIL verdict will land on re-dispatch once checks settle.

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