@jaggerxtrm/specialists 3.15.2 → 3.15.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7,7 +7,7 @@ description: >
7
7
  security checks, multi-step chains, integration-phase reconciliation,
8
8
  debugger-restitch on conflicting chains, pre-dispatch conflict-cluster
9
9
  mapping, test-failure-map epics, and questions about specialist workflow.
10
- version: 3.3
10
+ version: 3.4
11
11
  ---
12
12
 
13
13
  # Using Specialists v3
@@ -279,24 +279,75 @@ Fix three bad smells fast:
279
279
 
280
280
  What differs: orchestrator writes contract before dispatch, so specialist does less guessing and more useful work.
281
281
 
282
- ## Dependency Linking
282
+ ## Dependency Linking And Relationship Vocabulary
283
283
 
284
- Link beads with correct edge shape. The edge tells orchestrator what blocks what, what is only related, and what should auto-nest.
284
+ Link beads with correct edge shape. The edge tells orchestrator what blocks execution, what only preserves context, which bead verifies another, and which issue has been replaced. Do not overload `blocks` for follow-ups, root-cause links, verification pairs, duplicates, or restitch replacements.
285
285
 
286
- - `bd dep add <issue> <depends-on>`: issue depends on depends-on; depends-on blocks issue. Use this for hard sequencing. [source: bd dep --help]
287
- - `bd dep <blocker> --blocks <blocked>`: reverse phrasing of same edge; blocker-first reads better when thinking in blockers. [source: bd dep --help; CLAUDE.md lines 62-64]
288
- - `bd dep relate <a> <b>`: non-blocking `relates_to` link. Use for context, not order. [source: bd dep --help; CLAUDE.md lines 64, 200-204]
289
- - `bd create --parent <epic-id>`: epic-child edge; auto-names child `.1`, `.2`, and adds parent edge. Use for chain members that must live under epic. [source: CLAUDE.md lines 49-50, 154-156; bd create --help]
290
- - `bd create --deps discovered-from:<id>`: follow-up work discovered from source bead. Use when one bead reveals new tracked work. [source: CLAUDE.md lines 50, 62-65; bd create --help]
286
+ Core commands:
287
+
288
+ - `bd dep add <issue> <depends-on>`: issue depends on depends-on; depends-on blocks issue. Default type is `blocks`. Use only for hard sequencing. [source: bd dep add --help]
289
+ - `bd dep <blocker> --blocks <blocked>`: reverse phrasing of the same hard sequencing edge. [source: bd dep --help]
290
+ - `bd dep add <issue> <other> --type <type>`: store a typed relationship. Supported types: `blocks`, `tracks`, `related`, `parent-child`, `discovered-from`, `until`, `caused-by`, `validates`, `relates-to`, `supersedes`. [source: bd dep add --help]
291
+ - `bd dep relate <a> <b>` / `bd dep unrelate <a> <b>`: bidirectional non-blocking `relates_to` link. Use for context, not order. [source: bd dep --help]
292
+ - `bd create --parent <epic-id>`: epic-child edge; auto-names child `.1`, `.2`, … and adds parent ownership. Use for chain members that must live under an epic. [source: bd create --help]
293
+ - `bd create --deps discovered-from:<id>` or `bd dep add <new> <source> --type discovered-from`: follow-up work discovered from a source bead.
294
+ - `bd duplicate <new> --of <canonical>`: close duplicate issue and point at canonical. Use when two beads describe the same required work.
295
+ - `bd duplicates` / `bd find-duplicates --status open --method mechanical --json`: cheap duplicate prefilter before dispatching parallel chains. For semantic clustering, use the `issue-triage` skill path (mechanical prefilter + bv graph signals + explorer/GitNexus overlap + overthinker recommendations), not `bd --method ai`.
296
+ - `bd supersede <old> --with <new>` or `bd dep add <new> <old> --type supersedes`: mark a replacement when a better-scoped fix bead replaces an obsolete/abandoned one.
297
+ - `bd dep cycles`, `bd dep tree <id>`, and `bd graph <id>`: sanity-check the execution graph before merge/publication.
298
+
299
+ Relationship vocabulary for specialist chains:
300
+
301
+ | Relationship | Reach for it when | Example command |
302
+ | --- | --- | --- |
303
+ | `blocks` | Hard must-happen-before sequencing: planner before executor, implementation before reviewer, restitch before publish. | `bd dep add <impl> <plan> --type blocks` |
304
+ | `tracks` | A local bead mirrors upstream or cross-project work whose status matters but is not owned here. | `bd dep add <local> external:xtrm-tools:<capability> --type tracks` |
305
+ | `related` | Loose topical association when no direction or scheduling effect is intended. Prefer `bd dep relate` for bidirectional relation. | `bd dep add <a> <b> --type related` |
306
+ | `parent-child` | Epic owns child chains. Prefer `bd create --parent <epic>` so IDs and parentage stay canonical. | `bd create --parent <epic> --title "Impl auth retry" ...` |
307
+ | `discovered-from` | Reviewer, debugger, explorer, or test-runner surfaces new follow-up work from a run. | `bd dep add <follow-up> <reviewer-bead> --type discovered-from` |
308
+ | `until` | Time-bounded or event-bounded precondition that blocks only until a stated condition lands. | `bd dep add <chain> <precondition> --type until` |
309
+ | `caused-by` | Failure bead points to the root-cause bead/cluster that explains it. Makes test-failure-map epics navigable. | `bd dep add <failing-test> <root-cause> --type caused-by` |
310
+ | `validates` | Reviewer, test-runner, code-sanity, or security-auditor bead verifies an implementation/debugger bead. | `bd dep add <review> <impl> --type validates` |
311
+ | `relates-to` | Bidirectional context edge for conflict clusters, sibling designs, or rebuttal patterns. Prefer dedicated relate command. | `bd dep relate <chain-a> <chain-b>` |
312
+ | `supersedes` | New fix/design/restitch bead replaces an older bead that should no longer be executed or merged. Prefer `bd supersede`. | `bd supersede <old> --with <new>` |
313
+
314
+ Worked high-value patterns:
315
+
316
+ ```bash
317
+ # Reviewer discovers a separate follow-up during review. Do not block the impl.
318
+ bd create --title "Follow up: tighten retry metrics" --type task --priority 3 --description "..."
319
+ bd dep add <follow-up> <review> --type discovered-from
320
+
321
+ # Test-failure-map root cause: many failures point at one underlying issue.
322
+ bd create --title "Root cause: stale fixture factory" --type bug --priority 2 --description "..."
323
+ bd dep add <failing-test-bead> <root-cause> --type caused-by
324
+
325
+ # Verification bead validates implementation. This is not a hard prerequisite edge.
326
+ bd dep add <test-runner-bead> <impl> --type validates
327
+ bd dep add <reviewer-bead> <impl> --type validates
328
+
329
+ # Replacement bead supersedes an abandoned or wrongly scoped implementation.
330
+ bd create --title "Restitch auth retry onto integration state" --type task --priority 2 --description "..."
331
+ bd supersede <old-impl> --with <restitch>
332
+
333
+ # Before merging an epic or integration branch, prove the graph is sane.
334
+ bd dep cycles
335
+ bd graph <epic> --compact
336
+ ```
291
337
 
292
338
  Use each form for a different reason:
293
339
 
294
- - `add` / `--blocks` for must-happen-before dependency.
295
- - `relate` for soft linkage with no schedule effect.
296
- - `--parent` for epic ownership and child naming.
297
- - `discovered-from:` for spawned follow-up beads.
340
+ - `blocks` / `--blocks` for must-happen-before dependency only.
341
+ - `validates` for review, test, sanity, and security evidence.
342
+ - `discovered-from` for spawned follow-up beads.
343
+ - `caused-by` for failure-to-root-cause attribution.
344
+ - `relates-to` / `bd dep relate` for soft linkage with no schedule effect.
345
+ - `parent-child` / `--parent` for epic ownership and child naming.
346
+ - `supersedes` / `bd supersede` for replacement work; `duplicate` for same-work issues.
347
+
348
+ Cross-repo consistency: keep this vocabulary aligned with the xtrm-tools `issue-triage` and `planning` skills; all three should use the same relationship names when creating or rewiring issue graphs.
298
349
 
299
- What differs: orchestrator chooses edge type deliberately, so graph stays correct for chain execution, epic publish, and follow-up traceability.
350
+ What differs: orchestrator chooses edge type deliberately, so graph stays correct for chain execution, epic publish, duplicate cleanup, root-cause navigation, verification evidence, and follow-up traceability.
300
351
 
301
352
  ## Bead Contract By Bead Type
302
353
 
@@ -537,11 +588,25 @@ Before dispatching N parallel chains, build the file-overlap matrix:
537
588
 
538
589
  For each cluster of overlapping chains, choose **one** of:
539
590
 
540
- 1. **Serial dispatch** — execute chains in dependency order, each waits for previous to land. Slowest but cleanest.
541
- 2. **Unified bead** — collapse all chains into one bead/executor pass. Larger reviewer scope but no merge conflicts.
542
- 3. **Parallel dispatch + debugger restitch at integration** — dispatch in parallel, plan for ~40% conflict rate (empirical), budget debugger-restitch passes during integration.
591
+ 1. **Serial dispatch** — execute chains in dependency order, each waits for previous to land. Slowest but cleanest. Encode the order with `blocks`, not notes.
592
+ 2. **Unified bead** — collapse all chains into one bead/executor pass. Larger reviewer scope but no merge conflicts. Mark obsolete split beads with `bd supersede <old> --with <unified>`.
593
+ 3. **Parallel dispatch + debugger restitch at integration** — dispatch in parallel, plan for ~40% conflict rate (empirical), budget debugger-restitch passes during integration. Link overlapping siblings with `bd dep relate <chain-a> <chain-b>` so the future restitch has visible context without creating fake blockers.
594
+
595
+ Example graph rewiring:
596
+
597
+ ```bash
598
+ # soft conflict-cluster context; does not change schedule
599
+ bd dep relate <chain-a> <chain-b>
600
+
601
+ # serializing because both chains edit src/cli/update.ts
602
+ bd dep add <chain-b> <chain-a> --type blocks
603
+
604
+ # replacing scattered duplicate/split beads with one unified implementation
605
+ bd supersede <old-chain-a> --with <unified-chain>
606
+ bd supersede <old-chain-b> --with <unified-chain>
607
+ ```
543
608
 
544
- Default heuristic: if 3+ chains touch the same file, **serial-dispatch them**. Conflict-resolution time at integration usually exceeds the time saved by parallel dispatch.
609
+ Default heuristic: if 3+ chains touch the same file, **serial-dispatch them**. Conflict-resolution time at integration usually exceeds the time saved by parallel dispatch. Before launching a large wave, run mechanical duplicate prefiltering and semantic clustering through `issue-triage` (or its core path: `bd find-duplicates --method mechanical` + `bv --robot-triage/alerts` + explorer/GitNexus overlap + overthinker recommendations); merge or supersede duplicate work before specialists spend tokens on it.
545
610
 
546
611
  ## Pre-Epic: Test-Failure-Map Pattern
547
612
 
@@ -560,11 +625,17 @@ Use when:
560
625
  - `CONSTRAINTS:` READ_ONLY, no source/test edits, no fix attempts.
561
626
  3. **Dispatch test-runner / explorer / debugger** for this bead READ_ONLY (or fill inline by reading the log).
562
627
  4. **Build the cluster table**: cluster name | files (counts) | representative error | root-cause hypothesis | likely-owner area | targeted validation command. Save in bead notes.
563
- 5. **Plan fix chains** off the cluster table:
628
+ 5. **Wire root-cause relationships** so the graph is navigable:
629
+ ```bash
630
+ bd dep add <failure-cluster-bead> <root-cause-bead> --type caused-by
631
+ bd dep add <test-runner-bead> <fix-bead> --type validates
632
+ ```
633
+ Use `caused-by` for attribution, not `blocks`; use `validates` for the evidence-producing test bead.
634
+ 6. **Plan fix chains** off the cluster table:
564
635
  - One chain per cluster, file scopes disjoint where possible.
565
636
  - Order by leverage (largest cluster first), then by simplicity.
566
637
  - Debugger when root cause unclear; executor when bead constraint is concrete.
567
- 6. **Save the topology insight as `bd remember`** — patterns about where a codebase's test fragility concentrates are reusable.
638
+ 7. **Save the topology insight as `bd remember`** — patterns about where a codebase's test fragility concentrates are reusable.
568
639
 
569
640
  ### Why this beats dispatch-blind
570
641
 
@@ -587,26 +658,28 @@ bd update <task> --claim
587
658
 
588
659
  # 2. Optional discovery when path is unknown
589
660
  bd create --title "Explore auth refresh path" --type task --priority 2 --description "PROBLEM: token refresh retry path is undocumented and likely drifts on failure handling. SUCCESS: evidence-backed plan names exact files, symbols, and risk. SCOPE: src/auth/refresh.ts, src/cli/login.ts, tests/unit/auth/*.test.ts. NON_GOALS: no implementation, no broad audit. CONSTRAINTS: READ_ONLY, cite files/symbols/flows, stay within live repo evidence. VALIDATION: findings cite code path and recommended sequence. OUTPUT: tracked discovery plan with stop condition."
590
- bd dep add <explore> <task>
661
+ bd dep add <explore> <task> --type discovered-from
591
662
  specialists run explorer --bead <explore> --context-depth 3
592
663
  specialists result <explore-job>
593
664
 
594
665
  # 3. Implementation
595
666
  bd create --title "Implement token refresh retry" --type task --priority 2 --description "PROBLEM: login fails after transient token refresh error because retry path returns before backoff and clear error state. SUCCESS: retry waits once, preserves session on success, and surfaces final failure clearly. SCOPE: src/auth/refresh.ts, src/cli/login.ts, tests/unit/auth/refresh.test.ts. NON_GOALS: no auth redesign, no storage migration, no UI refresh. CONSTRAINTS: preserve existing token format, keep backward-compatible error text, avoid broad retry changes elsewhere. VALIDATION: add regression test for transient failure then success; run targeted auth tests. OUTPUT: changed files, test evidence, residual risks."
596
- bd dep add <impl> <explore-or-task>
667
+ bd dep add <impl> <explore-or-task> --type blocks
597
668
  specialists run executor --bead <impl> --context-depth 3
598
669
  specialists result <exec-job>
599
670
 
600
671
  # 4. Advisory passes when diff smells risky
601
672
  bd create --title "Sanity check token retry diff" --type task --priority 2 --description "PROBLEM: auth retry diff has control-flow and state-handling smell that could hide bug. SUCCESS: findings identify concrete simplification or confirm clean shape. SCOPE: executor diff in auth refresh and login flow. NON_GOALS: no edits, no merge gate decision. CONSTRAINTS: READ_ONLY, keep feedback cheap, cite exact lines or symbols. VALIDATION: findings name concrete improvement or say OK. OUTPUT: FINDINGS with severity or OK with caveats."
673
+ bd dep add <sanity-bead> <impl> --type validates
602
674
  specialists run code-sanity --bead <sanity-bead> --job <exec-job> --context-depth 3
603
675
 
604
676
  bd create --title "Security scan token retry diff" --type task --priority 2 --description "PROBLEM: auth refresh code touches secrets and session handling, so security regression is possible. SUCCESS: findings isolate real risk surface or confirm no obvious issue. SCOPE: executor diff in auth, token storage, and login path. NON_GOALS: no edits, no package updates, no destructive scans, no live exploit tests. CONSTRAINTS: LOW permissions, scan-only, recommendations only. VALIDATION: findings cite auth/secrets/input surface and why it matters. OUTPUT: recommendations for executor to apply in separate bead."
677
+ bd dep add <security-bead> <impl> --type validates
605
678
  specialists run security-auditor --bead <security-bead> --job <exec-job> --context-depth 3
606
679
 
607
680
  # 5. Final review
608
681
  bd create --title "Review token refresh retry" --type task --priority 2 --description "PROBLEM: verify executor output against auth retry requirements. SUCCESS: PASS only if retry behavior, error handling, and tests satisfy contract. SCOPE: executor job, diff, acceptance criteria, and target auth files. NON_GOALS: do not rewrite unless explicitly asked. CONSTRAINTS: code-review mindset; findings first; verify security and sanity findings were handled. VALIDATION: inspect targeted checks and regression coverage. OUTPUT: PASS/PARTIAL/FAIL with file/line findings."
609
- bd dep add <review> <impl>
682
+ bd dep add <review> <impl> --type validates
610
683
  specialists run reviewer --bead <review> --job <exec-job> --context-depth 3
611
684
  specialists result <review-job>
612
685
 
@@ -621,7 +694,7 @@ sp merge <impl>
621
694
  bd close <task> --reason "Reviewer PASS; merged."
622
695
  ```
623
696
 
624
- Edit-capable specialists with `--bead` auto-provision a worktree. `--worktree` is accepted for clarity but usually unnecessary. Use `--job <exec-job>` for reviewer/fix passes that must enter existing executor workspace.
697
+ Edit-capable specialists with `--bead` auto-provision a clean git worktree. This does **not** provision ignored project dependency artifacts (`node_modules/`, `.venv/`, build caches). If validation tools are missing inside that worktree, have the specialist run the repo's standard bootstrap command (`make bootstrap`, `just setup`, `npm ci`, `uv sync`, etc.) or report that bootstrap is required; do not solve it by tracking dependency directories. `--worktree` is accepted for clarity but usually unnecessary. Use `--job <exec-job>` for reviewer/fix passes that must enter existing executor workspace.
625
698
 
626
699
  What differs: orchestrator carries full bead contract inline, so downstream specialists inherit the actual job shape, not a title.
627
700
 
@@ -634,8 +707,7 @@ Use epic when multiple implementation chains publish together.
634
707
  bd create --title "Epic: auth refresh hardening" --type epic --priority 2 --description "PROBLEM: login and refresh flow have retry drift, weak error surfacing, and unclear follow-up ownership. SUCCESS: epic closes with stable retry behavior, tests, docs, and clean publish. SCOPE: src/auth/*, src/cli/login.ts, tests/unit/auth/*, docs/auth-refresh.md. NON_GOALS: no auth provider swap, no storage migration, no unrelated session revamp. CONSTRAINTS: preserve token format, keep login compatible, sequence risky fixes before merge, use child beads for parallelizable slices. VALIDATION: targeted tests, code-sanity or security pass if risk appears, final reviewer PASS. OUTPUT: merged chain set with notes on remaining gaps."
635
708
 
636
709
  # Planner bead
637
- bd create --title "Plan auth refresh split" --type task --priority 2 --description "PROBLEM: epic needs disjoint chains before executor starts. SUCCESS: child beads, dependency edges, and file ownership split are explicit. SCOPE: auth refresh epic area. NON_GOALS: no code changes. CONSTRAINTS: keep chains disjoint, identify security-sensitive slice, name review order. VALIDATION: plan names beads and edges. OUTPUT: parallel-ready plan with risk notes."
638
- bd dep add <plan> <epic>
710
+ bd create --parent <epic> --title "Plan auth refresh split" --type task --priority 2 --description "PROBLEM: epic needs disjoint chains before executor starts. SUCCESS: child beads, dependency edges, and file ownership split are explicit. SCOPE: auth refresh epic area. NON_GOALS: no code changes. CONSTRAINTS: keep chains disjoint, identify security-sensitive slice, name review order. VALIDATION: plan names beads and edges. OUTPUT: parallel-ready plan with risk notes."
639
711
  specialists run planner --bead <plan> --context-depth 3
640
712
 
641
713
  # Parallel impl beads
@@ -646,6 +718,8 @@ specialists run executor --bead <impl-a> --context-depth 3
646
718
  specialists run executor --bead <impl-b> --context-depth 3
647
719
 
648
720
  # Per-chain review
721
+ bd dep add <review-a> <impl-a> --type validates
722
+ bd dep add <review-b> <impl-b> --type validates
649
723
  specialists run reviewer --bead <review-a> --job <exec-a-job> --context-depth 3
650
724
  specialists run reviewer --bead <review-b> --job <exec-b-job> --context-depth 3
651
725
 
@@ -655,6 +729,7 @@ sp finalize <review-a-job>
655
729
  sp finalize <review-b-job>
656
730
 
657
731
  # Publish
732
+ bd dep cycles # stop if relationship rewiring introduced a cycle
658
733
  sp epic status <epic> # verify derived state shows merge_ready
659
734
  sp epic merge <epic> # batch publish all chains in dependency order with tsc gate per merge
660
735
  ```
@@ -675,7 +750,7 @@ reviewer -> PASS | PARTIAL | FAIL
675
750
 
676
751
  - `PASS`: verify expected commit/diff. If reviewer's PASS appeared in its streaming output, auto-finalize already closed the chain — go straight to `sp merge` / `sp epic merge`. If PASS arrived via `sp resume`, run `sp finalize <any-chain-job-id>` first to cascade-close any waiting keep-alive members, then publish.
677
752
  - `PARTIAL`: resume same executor/debugger with exact findings, then re-review (`sp resume <reviewer-job>`).
678
- - `FAIL`: stop and decide whether to replace chain, re-scope bead, or ask operator if judgment is required.
753
+ - `FAIL`: stop and decide whether to replace chain, re-scope bead, or ask operator if judgment is required. If replacing a bad chain with a narrower one, use `bd supersede <failed-impl> --with <replacement>`; if reviewer discovered separate follow-up work, use `bd dep add <follow-up> <reviewer-bead> --type discovered-from`.
679
754
 
680
755
  Prefer resume over new fix executor when original job is waiting and context is healthy:
681
756
 
@@ -764,8 +839,8 @@ Several specialists default to over-cautious verdicts when an evidence gate look
764
839
  ### Overthinker
765
840
 
766
841
  - "Hold for operator decision" without specifying what decision is needed → push: "Cite file/line evidence for why this is a product decision rather than a mechanical resolution."
767
- - "Close as superseded by X" without verification → push: "Read the current state of `<file>` and check whether feature Y from this bead is actually present."
768
- - "Run separate small beads" or "run one big bead" without rationale → push: "Pick one and explain operationally — cost difference, conflict expectations, reviewer scope."
842
+ - "Close as superseded by X" without verification → push: "Read the current state of `<file>` and check whether feature Y from this bead is actually present." If verified, record it structurally with `bd supersede <old> --with <new>` instead of burying the replacement in notes.
843
+ - "Run separate small beads" or "run one big bead" without rationale → push: "Pick one and explain operationally — cost difference, conflict expectations, reviewer scope." If one big bead wins, mark replaced split beads with `bd supersede`; if the small beads remain parallel siblings, link overlap with `bd dep relate`, not `blocks`.
769
844
 
770
845
  ### Reviewer
771
846
 
@@ -891,6 +966,7 @@ sp merge <chain-root-bead>
891
966
  Batch publish all chains in an epic in dependency order with tsc gate between each:
892
967
 
893
968
  ```bash
969
+ bd dep cycles
894
970
  sp epic status <epic-id>
895
971
  sp epic merge <epic-id>
896
972
  ```
@@ -922,11 +998,12 @@ Use when `sp merge` / `sp epic merge` is not the right path: chains forked from
922
998
  3. For each non-overlapping chain (security/critical first, then test-baseline, then features):
923
999
  - `git merge --squash <chain-branch>`
924
1000
  - Restore noise files (see "Chain noise filter checklist" below)
925
- - **Advisory passes** before commit: if the staged diff smells overcomplicated/duplicative/type-risky, dispatch `code-sanity --job <last-exec-job-of-chain>`; if it touches auth/secrets/input/agent-config, dispatch `security-auditor --job <last-exec-job-of-chain>`. Apply findings or document why skipped.
1001
+ - **Advisory passes** before commit: if the staged diff smells overcomplicated/duplicative/type-risky, dispatch `code-sanity --job <last-exec-job-of-chain>`; if it touches auth/secrets/input/agent-config, dispatch `security-auditor --job <last-exec-job-of-chain>`. Link those beads with `bd dep add <advisory-bead> <chain-bead> --type validates`. Apply findings or document why skipped.
926
1002
  - `git commit -m "<type>(<scope>): <summary> (<bead-id>)"` — one squash commit per chain.
927
- 4. For each overlapping chain, switch to the **debugger-restitch** pattern (next section).
928
- 5. After all chains land, run E2E smoke phase (below) before declaring done.
929
- 6. Operator FF-merges integration main when satisfied.
1003
+ 4. For each overlapping chain, add `bd dep relate <overlap-a> <overlap-b>` if not already linked, then switch to the **debugger-restitch** pattern (next section).
1004
+ 5. Before publication, run `bd dep cycles`; fix any accidental cycle before `sp epic merge` or operator FF-merge.
1005
+ 6. After all chains land, run E2E smoke phase (below) before declaring done.
1006
+ 7. Operator FF-merges integration → main when satisfied.
930
1007
 
931
1008
  ### Chain noise filter checklist
932
1009
 
@@ -950,7 +1027,7 @@ If a chain commits its own `.beads` symlink (older bd-in-worktree behavior), `rm
950
1027
 
951
1028
  When chain X conflicts with already-landed chain Y on shared files, raw `git cherry-pick` will revert Y's work. The debugger-restitch pattern preserves both, but only when the debugger gets an explicit "preserve already-landed work" contract.
952
1029
 
953
- 1. **Reopen X**: `bd reopen <X> --reason="integration stitch onto post-Y state"`.
1030
+ 1. **Reopen X**: `bd reopen <X> --reason="integration stitch onto post-Y state"`. If the old X chain is no longer publishable, create a restitch bead and mark replacement explicitly: `bd supersede <X> --with <X-restitch>`. Link X and Y with `bd dep relate <X-restitch> <Y>` for conflict context; use `caused-by` only when a concrete failure bead is attributable to Y's already-landed change.
954
1031
  2. **Strengthen the bead contract** with these fields:
955
1032
  - `## CRITICAL CONSTRAINTS:` heading at the top.
956
1033
  - "Fork off `integration/<date>-orchestrator`. Verify with `git log integration/...$..HEAD` empty before any commits."
@@ -969,13 +1046,13 @@ When chain X conflicts with already-landed chain Y on shared files, raw `git che
969
1046
  git diff integration/<date>...feature/<X>-debugger -- <key-files>
970
1047
  ```
971
1048
  Confirm the debugger's diff is **additive** — no reverts of Y's lines.
972
- 5. **Advisory passes**: before landing the restitch, dispatch `code-sanity --job <debugger-job>` if the restitch added control-flow complexity, and `security-auditor --job <debugger-job>` if it touched a sensitive surface. Restitched diffs are higher-risk than fresh executor diffs because the debugger had to thread around already-landed work.
1049
+ 5. **Advisory passes**: before landing the restitch, dispatch `code-sanity --job <debugger-job>` if the restitch added control-flow complexity, and `security-auditor --job <debugger-job>` if it touched a sensitive surface. Link each advisory bead back with `bd dep add <advisory> <X-restitch-or-X> --type validates`. Restitched diffs are higher-risk than fresh executor diffs because the debugger had to thread around already-landed work.
973
1050
  6. **Land via FF or cherry-pick the named commit** (NOT the checkpoint commit). Look for the commit with the proper `<type>(<scope>):` message; ignore `checkpoint(debugger):` commits above it.
974
1051
  7. **Verify tests** before marking done.
975
1052
 
976
1053
  ### Failure mode to watch for
977
1054
 
978
- If the debugger forks off the OLD baseline (pre-Y) instead of integration, its commit will revert Y. Symptom: `git diff integration..feature/<X>-debugger -- <Y's-file>` shows DELETIONS of Y's symbols. Fix: resume the debugger with explicit "cd to a fresh worktree forked from `integration/<date>-orchestrator`" instruction. Re-verify with `git log integration..HEAD` empty.
1055
+ If the debugger forks off the OLD baseline (pre-Y) instead of integration, its commit will revert Y. Symptom: `git diff integration..feature/<X>-debugger -- <Y's-file>` shows DELETIONS of Y's symbols. Fix: resume the debugger with explicit "cd to a fresh worktree forked from `integration/<date>-orchestrator`" instruction. Re-verify with `git log integration..HEAD` empty. If the bad restitch became a tracked bead, supersede it with the corrected restitch bead so nobody merges the obsolete chain.
979
1056
 
980
1057
  ## E2E Smoke Phase
981
1058
 
@@ -1049,6 +1126,7 @@ Then choose one action:
1049
1126
  | `sp merge` refuses with "non-terminal chain jobs" after reviewer PASS | Auto-finalize did not fire (PASS arrived via `sp resume`, not streaming) | `sp finalize <any-chain-job-id>` — cascades to close every waiting keep-alive member |
1050
1127
  | `sp epic merge` says epic is "in terminal state 'failed'" | Prior `sp epic merge` hit a transient error (rebase conflict, dirty worktree) and persisted a soft `failed` marker | Clear the original conflict source, then re-run `sp epic merge` — it retries fresh, only `merged`/`abandoned` truly block |
1051
1128
  | `sp epic merge` says "rebase failed: unstaged changes" in a worktree | bd auto-export or other tooling left uncommitted changes inside the worktree | `cd .worktrees/<bead>/<bead>-executor && git stash push -u -m epic-merge-prep`, then re-run from main repo |
1129
+ | Validation fails with `command not found`, `vitest: not found`, missing Python tools, or `ERR_MODULE_NOT_FOUND` in a fresh worktree | Normal git worktree behavior: ignored dependency dirs (`node_modules/`, `.venv/`) are not copied into new worktrees | Run the repo's standard bootstrap inside that worktree (`make bootstrap`, `just setup`, `npm ci`, `uv sync`, etc.) or report bootstrap-required. Do not track dependency artifacts. |
1052
1130
  | `sp ps` shows old terminal jobs after a session | Default dashboard keeps unresolved terminal problems visible until acknowledged | `sp clean --ps --dry-run`, then `sp clean --ps` to soft-hide from default ps; use `sp ps --include-cleaned`/`--all` for audit history |
1053
1131
  | Reviewer keeps returning PARTIAL on functional contracts already met | Reviewer demanding tool-event evidence — typically obsoleted after the gate relaxation, but if it persists check the executor's `gitnexus_detect_changes` ran and use the rebuttal pattern (see Specialist Rebuttal As Routine) | Rebut with cited evidence; second FAIL = escalate |
1054
1132
  | Multiple `sp run` background launches drop silently under shell parallelism | Known launch-ceremony race | Re-check `sp ps` after each dispatch and retry the missing one; serialize when reliability matters |
@@ -26,7 +26,10 @@
26
26
  "interactive": false,
27
27
  "max_retries": 0,
28
28
  "mode": "auto",
29
- "requires_worktree": false
29
+ "requires_worktree": false,
30
+ "extensions": {
31
+ "serena": false
32
+ }
30
33
  },
31
34
  "mandatory_rules": {
32
35
  "template_sets": [
@@ -26,14 +26,16 @@
26
26
  "permission_required": "READ_ONLY",
27
27
  "interactive": true,
28
28
  "thinking_level": "low",
29
- "max_retries": 0
29
+ "max_retries": 0,
30
+ "extensions": {
31
+ "serena": false
32
+ }
30
33
  },
31
34
  "mandatory_rules": {
32
35
  "template_sets": [
33
36
  "explorer-readonly",
34
37
  "gitnexus-required",
35
38
  "code-quality-defaults",
36
- "serena-cheatsheet",
37
39
  "per-turn-handoff-schema",
38
40
  "bead-id-verbatim"
39
41
  ]
@@ -23,13 +23,15 @@
23
23
  "output_type": "analysis",
24
24
  "permission_required": "READ_ONLY",
25
25
  "max_retries": 0,
26
- "interactive": true
26
+ "interactive": true,
27
+ "extensions": {
28
+ "serena": false
29
+ }
27
30
  },
28
31
  "mandatory_rules": {
29
32
  "template_sets": [
30
33
  "explorer-readonly",
31
34
  "gitnexus-required",
32
- "serena-cheatsheet",
33
35
  "per-turn-handoff-schema",
34
36
  "bead-id-verbatim"
35
37
  ]
@@ -24,13 +24,15 @@
24
24
  "output_type": "synthesis",
25
25
  "permission_required": "READ_ONLY",
26
26
  "interactive": true,
27
- "max_retries": 0
27
+ "max_retries": 0,
28
+ "extensions": {
29
+ "serena": false
30
+ }
28
31
  },
29
32
  "mandatory_rules": {
30
33
  "template_sets": [
31
34
  "overthinker-4phase",
32
35
  "research-tool-routing",
33
- "serena-cheatsheet",
34
36
  "per-turn-handoff-schema",
35
37
  "bead-id-verbatim"
36
38
  ]
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "schema_version": "1.0.0",
3
- "package_version": "3.15.2",
3
+ "package_version": "3.15.4",
4
4
  "shipped_skills": [
5
5
  {
6
6
  "path": "config/skills/memory-audit-transaction/SKILL.md",
@@ -40,7 +40,7 @@
40
40
  },
41
41
  {
42
42
  "path": "config/skills/using-specialists-v3/SKILL.md",
43
- "sha256": "c8aa5dccd55fe6a461e66202a6829a3f1b9f9b4dc8c54f5c4f2847eb585b30f1"
43
+ "sha256": "974cf171eb12a81414d0f8e6d88dade52b38518a7565fd3feb5483db292b6b11"
44
44
  },
45
45
  {
46
46
  "path": "config/skills/using-specialists/SKILL.md",