@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.
- package/README.md +190 -97
- package/config/skills/using-specialists-v3/SKILL.md +113 -35
- package/config/specialists/changelog-drafter.specialist.json +4 -1
- package/config/specialists/code-sanity.specialist.json +4 -2
- package/config/specialists/explorer.specialist.json +4 -2
- package/config/specialists/overthinker.specialist.json +4 -2
- package/dist/asset-contract.json +2 -2
- package/dist/index.js +194 -68
- package/dist/lib.js +45 -25
- package/dist/types/cli/serve.d.ts +1 -1
- package/dist/types/pi/session.d.ts.map +1 -1
- package/package.json +7 -5
|
@@ -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.
|
|
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
|
|
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
|
-
|
|
287
|
-
|
|
288
|
-
- `bd dep
|
|
289
|
-
- `bd
|
|
290
|
-
- `bd
|
|
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
|
-
- `
|
|
295
|
-
- `
|
|
296
|
-
-
|
|
297
|
-
- `
|
|
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. **
|
|
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
|
-
|
|
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.
|
|
929
|
-
6.
|
|
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,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
|
]
|
package/dist/asset-contract.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema_version": "1.0.0",
|
|
3
|
-
"package_version": "3.15.
|
|
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": "
|
|
43
|
+
"sha256": "974cf171eb12a81414d0f8e6d88dade52b38518a7565fd3feb5483db292b6b11"
|
|
44
44
|
},
|
|
45
45
|
{
|
|
46
46
|
"path": "config/skills/using-specialists/SKILL.md",
|