@jaggerxtrm/specialists 3.18.0 → 3.18.1
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/config/mandatory-rules/executor-delivery.md +4 -0
- package/config/mandatory-rules/test-runner-execution-scope.md +4 -0
- package/config/skills/using-specialists-v3/SKILL.md +80 -20
- package/dist/asset-contract.json +2 -2
- package/dist/index.js +919 -53
- package/dist/lib.js +177 -9
- package/dist/types/cli/doctor.d.ts.map +1 -1
- package/dist/types/cli/feed.d.ts.map +1 -1
- package/dist/types/cli/format-helpers.d.ts.map +1 -1
- package/dist/types/cli/merge.d.ts.map +1 -1
- package/dist/types/cli/ps.d.ts.map +1 -1
- package/dist/types/cli/run.d.ts +19 -0
- package/dist/types/cli/run.d.ts.map +1 -1
- package/dist/types/cli/status.d.ts.map +1 -1
- package/dist/types/pi/session.d.ts +1 -0
- package/dist/types/pi/session.d.ts.map +1 -1
- package/dist/types/specialist/dead-job-audit.d.ts +20 -0
- package/dist/types/specialist/dead-job-audit.d.ts.map +1 -0
- package/dist/types/specialist/launch.d.ts +8 -0
- package/dist/types/specialist/launch.d.ts.map +1 -1
- package/dist/types/specialist/observability-db.d.ts +1 -1
- package/dist/types/specialist/observability-sqlite.d.ts +76 -0
- package/dist/types/specialist/observability-sqlite.d.ts.map +1 -1
- package/dist/types/specialist/pr-drift-refresh.d.ts +17 -0
- package/dist/types/specialist/pr-drift-refresh.d.ts.map +1 -0
- package/dist/types/specialist/runner.d.ts +3 -0
- package/dist/types/specialist/runner.d.ts.map +1 -1
- package/dist/types/specialist/status-load.d.ts.map +1 -1
- package/dist/types/specialist/supervisor.d.ts +10 -0
- package/dist/types/specialist/supervisor.d.ts.map +1 -1
- package/dist/types/specialist/timeline-events.d.ts +2 -0
- package/dist/types/specialist/timeline-events.d.ts.map +1 -1
- package/docs/design/roadmap/specialists-roadmap.md +69 -1
- package/package.json +2 -2
|
@@ -3,3 +3,7 @@ name: executor-delivery
|
|
|
3
3
|
kind: mandatory-rule
|
|
4
4
|
---
|
|
5
5
|
Make smallest correct change. Keep scope tight, update only needed files, then verify scope.
|
|
6
|
+
|
|
7
|
+
Scope allowlist (EVAL-13, mercury-market-data-i2kb): parse the bead's SCOPE section into an explicit path allowlist BEFORE the first edit. Before any commit or push, run `git diff --cached --name-only` and refuse to proceed if any staged path is outside the allowlist — do not silently drag in `.serena/project.yml`, `AGENTS.md`, `CLAUDE.md`, `CHANGELOG.md`, or an unrelated "chore added agent .md" commit from a dirty tree. If a needed change is outside allowlist, stop, ask the orchestrator to widen SCOPE, and do not proceed on assumption.
|
|
8
|
+
|
|
9
|
+
Never close the anchor bead (EVAL-10, mercury-market-data-i2kb): the anchor bead's closure is a post-verification concern — judge PASS + deploy-monitor window clean must land first. You may append notes ("code complete", "tests pass locally") and mark subtask nodes. `bd close <anchor>` is reserved for the orchestrator on evidence.
|
|
@@ -3,3 +3,7 @@ name: test-runner-execution-scope
|
|
|
3
3
|
kind: mandatory-rule
|
|
4
4
|
---
|
|
5
5
|
Run only requested tests. Exact command input wins over manifest fallback. If fallback is used, label it clearly as fallback. Report failures with root cause, owner classification, and next-recipient hints; do not expand scope.
|
|
6
|
+
|
|
7
|
+
Bash-pytest fallback on tool-call-parse failure (EVAL-11): if the underlying model returns a tool-call parse error (observed against Kimi during mmd-sprint 2026-07-03), do NOT fail the run. Fall back to invoking the same command directly via bash (`pytest <args>`, `npm test <args>`, etc.), label the result `fallback:bash` in the final envelope, and record the parse-error signature in notes so the orchestrator can steer subsequent runs off the failing backend. A tool-call-parse error is a model-runtime bug, not a test failure.
|
|
8
|
+
|
|
9
|
+
Pyright must match the CI invocation (EVAL-15, mercury-market-data-3ele): for Python repos, run pyright the way CI runs it (`npx pyright@<version>` matching the pinned version and the venv activation state the CI job uses). If CI activates `venv/` before pyright, activate it here too; if CI does not, do not activate it here. A local pyright pass under a different environment is not evidence — it hides `NaTType | Unknown` and similar stub-visibility drift that only shows up when the environments diverge.
|
|
@@ -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.7
|
|
11
11
|
---
|
|
12
12
|
|
|
13
13
|
# Using Specialists v3
|
|
@@ -215,6 +215,7 @@ Do small deterministic edits directly when scope is already obvious and delegati
|
|
|
215
215
|
12. Drive routine stages autonomously once task is clear. Escalate only for human judgment, destructive actions, repeated crashes, or reviewer `FAIL`.
|
|
216
216
|
13. The orchestrator NEVER edits code directly. Conflict resolution, even mechanical, goes through a debugger or executor specialist. Manual conflict resolution always escalates to the operator. (Exception: epics that explicitly restructure the specialists themselves — bootstrapping via the specialists they restructure is circular. Such epics are operator-authorized manual-orchestrator-direct work and must say so up-front.)
|
|
217
217
|
14. Before dispatching any chain whose work depends on prior chain output, verify git state per the Git State Precondition section: `git status` clean, HEAD contains prior chain commits, no orphaned worktrees. Stale-base dispatch produces guaranteed debugger-restitch loops downstream.
|
|
218
|
+
15. Never dispatch a specialist against a bead tagged `contract:draft` (`bd state <id> contract` returns `draft` or nothing). Promote it first — see Draft Beads And The Promotion Gate. A draft is a sanctioned capture format, not a shortcut around bead quality.
|
|
218
219
|
|
|
219
220
|
## Escalation Matrix
|
|
220
221
|
|
|
@@ -238,6 +239,7 @@ Do small deterministic edits directly when scope is already obvious and delegati
|
|
|
238
239
|
| `npm publish` | Never | Always |
|
|
239
240
|
| Dependency bump | Auto for security-patch bumps | Major/minor bumps escalate |
|
|
240
241
|
| Config file schema-changing edit | Never | Always |
|
|
242
|
+
| Dispatch against `contract:draft` bead | Never (rule #15) | Always — promote first: explore + rewrite full 7-section contract + `bd set-state <id> contract=ready --reason "..."` |
|
|
241
243
|
|
|
242
244
|
## Live Registry And Help
|
|
243
245
|
|
|
@@ -300,6 +302,58 @@ Fix three bad smells fast:
|
|
|
300
302
|
|
|
301
303
|
What differs: orchestrator writes contract before dispatch, so specialist does less guessing and more useful work.
|
|
302
304
|
|
|
305
|
+
## Draft Beads And The Promotion Gate
|
|
306
|
+
|
|
307
|
+
Full 7-section contracts are expensive to write for an idea you won't touch for weeks. Demanding that rigor for every captured thought is exactly what produces the other failure mode: skipping the bead entirely, or writing a one-liner. There is a third, sanctioned option — but it is a capture format, not an escape hatch.
|
|
308
|
+
|
|
309
|
+
**Draft state.** Tag a bead `contract:draft` at creation:
|
|
310
|
+
|
|
311
|
+
```bash
|
|
312
|
+
bd create --title "..." --labels contract:draft --type task --priority 3 \
|
|
313
|
+
--description "PROBLEM: <2+ real sentences — why this matters, not a title restated>
|
|
314
|
+
SCOPE: <rough guess — 'somewhere in src/auth/, needs investigation' is fine>
|
|
315
|
+
SUCCESS: TBD — needs exploration
|
|
316
|
+
NON_GOALS: TBD — needs exploration
|
|
317
|
+
CONSTRAINTS: TBD — needs exploration
|
|
318
|
+
VALIDATION: TBD — needs exploration
|
|
319
|
+
OUTPUT: TBD — needs exploration"
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
**No one-liners, ever — draft or not.** A draft still requires a real PROBLEM (why this exists, in prose) and a rough SCOPE. Every other section must be present and say `TBD — needs exploration` explicitly. A bare title, or a description that just restates the title, is never a valid bead — draft state lowers the bar on *completeness*, not on *honesty about what's missing*.
|
|
323
|
+
|
|
324
|
+
**The promotion gate (rule #15).** No specialist may be dispatched against a `contract:draft` bead. Before dispatch, the orchestrator must:
|
|
325
|
+
|
|
326
|
+
1. Re-read the bead (`bd show <id>`).
|
|
327
|
+
2. Actually explore — the same Phase 2 evidence-gathering the `planning` skill requires before writing a real contract (`gitnexus_query`/`gitnexus_context`/`gitnexus_impact`, or Serena symbol reads).
|
|
328
|
+
3. Rewrite the bead in place to the full 7-section contract (`bd update <id> --description "..."`), replacing every `TBD` with real content grounded in what was just found.
|
|
329
|
+
4. Flip the state: `bd set-state <id> contract=ready --reason "Explored via <what>; rewrote to full contract"`.
|
|
330
|
+
|
|
331
|
+
Check before any dispatch: `bd state <id> contract` — if it returns `draft` or nothing, stop and promote. This is a hard refuse (Escalation Matrix), not a warning — a stale draft wastes a full specialist turn on a contract the executor will have to guess at, which is the exact failure this rule exists to prevent.
|
|
332
|
+
|
|
333
|
+
**Current enforcement is a bridge.** This is orchestrator-discipline-enforced today, not yet a hard `sp run` pre-dispatch check — see `specialists-roadmap.md` §5.3 for the planned real enforcement (same class as the existing C1 cwd-mismatch hard-refuse). Follow the rule anyway; do not treat the absence of a hook as license to dispatch against a draft.
|
|
334
|
+
|
|
335
|
+
What differs: orchestrator has a sanctioned way to capture backlog ideas cheaply without either over-scoping them immediately or letting them decay into unusable one-liners.
|
|
336
|
+
|
|
337
|
+
## Bead Title Convention (canonical)
|
|
338
|
+
|
|
339
|
+
Every bead dispatched to a specialist gets a title in the form:
|
|
340
|
+
|
|
341
|
+
```text
|
|
342
|
+
<specialist-role>: <concise task description>
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
Examples: `explorer: map auth refresh path`, `executor: implement token refresh retry`, `reviewer: verify token refresh retry`, `seconder: sanity check token retry diff`, `security-auditor: scan token retry diff`, `test-runner: refresh <epic> failure map`.
|
|
346
|
+
|
|
347
|
+
Why: `bd list`, `bd ready`, `bd query`, and `sp ps` all show titles inline — a role-prefixed title makes the board scannable at a glance (which role owns which open work) without opening each bead. It also disambiguates same-named chains dispatched to different roles against the same parent (e.g. a `seconder:` and a `security-auditor:` bead both `validates`-linked to the same `executor:` bead).
|
|
348
|
+
|
|
349
|
+
Rules:
|
|
350
|
+
|
|
351
|
+
- Prefix with the exact specialist name from `specialists list --full` (`explorer`, `debugger`, `executor`, `reviewer`, `seconder`, `security-auditor`, `test-runner`, `test-engineer`, `obligations-scanner`, `planner`, `overthinker`, `researcher`, `sync-docs`, `changelog-keeper`, `specialists-creator`), not a role synonym.
|
|
352
|
+
- Root task/epic beads that are not themselves dispatched to a single specialist (the umbrella bead a chain is built under) are exempt — keep those descriptive without a role prefix, e.g. `Epic: auth refresh hardening`, `Fix token refresh retry`.
|
|
353
|
+
- Combine with the nesting default above: a role-prefixed title on a `--parent`-nested bead gives both a scannable title and a scannable ID (`bd-x.2` = `seconder: ...`).
|
|
354
|
+
|
|
355
|
+
What differs: orchestrator can `bd list`/`sp ps` and immediately tell which role owns which open work, instead of opening each bead to find out.
|
|
356
|
+
|
|
303
357
|
## SCRUTINY taxonomy (Iron-style)
|
|
304
358
|
|
|
305
359
|
`SCRUTINY` is a chain-property from canon §2.2, not reviewer input and not a quality tier. Every substantive bead must declare it at creation. It modulates chain structure only; quality stays invariant. New beads without it are invalid unless read-only / none-chain work.
|
|
@@ -363,13 +417,15 @@ Core commands:
|
|
|
363
417
|
- `bd dep <blocker> --blocks <blocked>`: reverse phrasing of the same hard sequencing edge. [source: bd dep --help]
|
|
364
418
|
- `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]
|
|
365
419
|
- `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]
|
|
366
|
-
- `bd create --parent <
|
|
420
|
+
- `bd create --parent <bead-id>`: hierarchical child edge; auto-names child `<parent>.1`, `<parent>.2`, … and nests recursively — a child's own child becomes `<parent>.1.1`. `<bead-id>` can be an epic, a plain task, or an already-nested child; bd does not restrict `--parent` by issue type (`bd create --help` describes it generically as "Parent issue ID for hierarchical child"). [source: bd create --help]
|
|
367
421
|
- `bd create --deps discovered-from:<id>` or `bd dep add <new> <source> --type discovered-from`: follow-up work discovered from a source bead.
|
|
368
422
|
- `bd duplicate <new> --of <canonical>`: close duplicate issue and point at canonical. Use when two beads describe the same required work.
|
|
369
423
|
- `bd duplicates` / `bd find-duplicates --status open --method ai --json`: find exact or semantic duplicates before dispatching parallel chains.
|
|
370
424
|
- `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.
|
|
371
425
|
- `bd dep cycles`, `bd dep tree <id>`, and `bd graph <id>`: sanity-check the execution graph before merge/publication.
|
|
372
426
|
|
|
427
|
+
**Default to nesting, not loose beads.** When a chain is dispatched to service an existing bead — a top-level task, an epic, or an already-nested child like `bd-x.1` — create the new bead with `bd create --parent <that-bead>` so it inherits the next sequential child ID (`bd-x.1`, or `bd-x.1.1` if the parent is itself a child). This applies uniformly, not only under epics — the common failure mode is orchestrators treating `--parent` as epic-only and defaulting every explorer/executor/reviewer/seconder/security bead spawned mid-chain to a loose top-level bead linked solely by a typed dep. `--parent` (hierarchy/ID) and a typed `bd dep add ... --type <blocks|validates|discovered-from>` edge (semantic relationship) are independent flags — combine both when the relationship needs naming beyond parentage. Only skip `--parent` when the new bead is a genuine standalone sibling concern, not work done on behalf of the bead it services.
|
|
428
|
+
|
|
373
429
|
Relationship vocabulary for specialist chains:
|
|
374
430
|
|
|
375
431
|
| Relationship | Reach for it when | Example command |
|
|
@@ -377,7 +433,7 @@ Relationship vocabulary for specialist chains:
|
|
|
377
433
|
| `blocks` | Hard must-happen-before sequencing: planner before executor, implementation before reviewer, restitch before publish. | `bd dep add <impl> <plan> --type blocks` |
|
|
378
434
|
| `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` |
|
|
379
435
|
| `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` |
|
|
380
|
-
| `parent-child` |
|
|
436
|
+
| `parent-child` | Any bead spawns tracked child work — epic owning chains, a task spawning its explorer/executor/reviewer, or an already-nested child spawning its own sub-chain. Prefer `bd create --parent <bead>` (not only `<epic>`) so IDs nest and parentage stays canonical instead of drifting into loose top-level beads. | `bd create --parent <bead-id> --title "executor: Impl auth retry" ...` |
|
|
381
437
|
| `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` |
|
|
382
438
|
| `until` | Time-bounded or event-bounded precondition that blocks only until a stated condition lands. | `bd dep add <chain> <precondition> --type until` |
|
|
383
439
|
| `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` |
|
|
@@ -416,7 +472,7 @@ Use each form for a different reason:
|
|
|
416
472
|
- `discovered-from` for spawned follow-up beads.
|
|
417
473
|
- `caused-by` for failure-to-root-cause attribution.
|
|
418
474
|
- `relates-to` / `bd dep relate` for soft linkage with no schedule effect.
|
|
419
|
-
- `parent-child` / `--parent` for epic ownership
|
|
475
|
+
- `parent-child` / `--parent` for hierarchy and child naming — use for any bead spawned to do work on behalf of another bead, not only epic ownership. Nests recursively: a chain dispatched from an already-nested child (e.g. `bd-x.1`) becomes `bd-x.1.1`, not a new loose top-level bead.
|
|
420
476
|
- `supersedes` / `bd supersede` for replacement work; `duplicate` for same-work issues.
|
|
421
477
|
|
|
422
478
|
Cross-repo consistency: keep this vocabulary aligned with the xtrm-tools triaging skill and sibling triage bead `xtrm-drkk`; both should use the same relationship names when rewiring issue graphs.
|
|
@@ -698,7 +754,7 @@ Use when:
|
|
|
698
754
|
### Step-by-step
|
|
699
755
|
|
|
700
756
|
1. **Run the suite once**, save the full log. Do not interpret yet.
|
|
701
|
-
2. **File one mapping bead** (e.g., `test-runner: refresh <epic> failure map`) with contract:
|
|
757
|
+
2. **File one mapping bead** titled per the Bead Title Convention (e.g., `test-runner: refresh <epic> failure map`) with contract:
|
|
702
758
|
- `PROBLEM:` exact command + exit status + raw failure count.
|
|
703
759
|
- `SUCCESS:` cluster table grouping every failure by **likely shared root cause and file scope**, plus recommended fix-chain order.
|
|
704
760
|
- `SCOPE:` the log file path + bounded test files involved.
|
|
@@ -736,29 +792,29 @@ Use for one implementation branch.
|
|
|
736
792
|
bd create --title "Fix token refresh retry" --type task --priority 2 --description "PROBLEM: login and refresh flow have a retry bug when transient token refresh fails before backoff clears stale state. SUCCESS: token refresh retries once, login survives transient failure, and terminal failure stays clear. SCOPE: src/auth/refresh.ts, src/cli/login.ts, tests/unit/auth/refresh.test.ts. NON_GOALS: no auth provider redesign, no storage migration, no UI changes. CONSTRAINTS: preserve token format, keep error text backward-compatible, avoid broad retry changes outside auth flow. VALIDATION: add regression test for fail-then-succeed path and run targeted auth tests. OUTPUT: changed files, test proof, residual risks."
|
|
737
793
|
bd update <task> --claim
|
|
738
794
|
|
|
739
|
-
# 2. Optional discovery when path is unknown
|
|
740
|
-
bd create --title "
|
|
795
|
+
# 2. Optional discovery when path is unknown — nested under task (bd-x.1) + typed edge for relationship semantics
|
|
796
|
+
bd create --parent <task> --title "explorer: map 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."
|
|
741
797
|
bd dep add <explore> <task> --type discovered-from
|
|
742
798
|
specialists run explorer --bead <explore> --context-depth 3
|
|
743
799
|
specialists result <explore-job>
|
|
744
800
|
|
|
745
|
-
# 3. Implementation
|
|
746
|
-
bd create --title "
|
|
801
|
+
# 3. Implementation — nested under task (bd-x.2)
|
|
802
|
+
bd create --parent <task> --title "executor: 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."
|
|
747
803
|
bd dep add <impl> <explore-or-task> --type blocks
|
|
748
804
|
specialists run executor --bead <impl> --context-depth 3
|
|
749
805
|
specialists result <exec-job>
|
|
750
806
|
|
|
751
|
-
# 4. Advisory passes when diff smells risky
|
|
752
|
-
bd create --title "
|
|
807
|
+
# 4. Advisory passes when diff smells risky — nested under impl (bd-x.2.1, bd-x.2.2), since they service impl's diff specifically
|
|
808
|
+
bd create --parent <impl> --title "seconder: 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."
|
|
753
809
|
bd dep add <sanity-bead> <impl> --type validates
|
|
754
810
|
specialists run seconder --bead <sanity-bead> --job <exec-job> --context-depth 3
|
|
755
811
|
|
|
756
|
-
bd create --title "
|
|
812
|
+
bd create --parent <impl> --title "security-auditor: 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."
|
|
757
813
|
bd dep add <security-bead> <impl> --type validates
|
|
758
814
|
specialists run security-auditor --bead <security-bead> --job <exec-job> --context-depth 3
|
|
759
815
|
|
|
760
|
-
# 5. Final review
|
|
761
|
-
bd create --title "
|
|
816
|
+
# 5. Final review — nested under impl (bd-x.2.3)
|
|
817
|
+
bd create --parent <impl> --title "reviewer: verify 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."
|
|
762
818
|
bd dep add <review> <impl> --type validates
|
|
763
819
|
specialists run reviewer --bead <review> --job <exec-job> --context-depth 3
|
|
764
820
|
specialists result <review-job>
|
|
@@ -789,18 +845,20 @@ Use epic when multiple implementation chains publish together.
|
|
|
789
845
|
# Epic bead
|
|
790
846
|
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, seconder or security pass if risk appears, final reviewer PASS. OUTPUT: merged chain set with notes on remaining gaps."
|
|
791
847
|
|
|
792
|
-
# Planner bead
|
|
793
|
-
bd create --parent <epic> --title "
|
|
848
|
+
# Planner bead — bd-epic.1
|
|
849
|
+
bd create --parent <epic> --title "planner: 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."
|
|
794
850
|
specialists run planner --bead <plan> --context-depth 3
|
|
795
851
|
|
|
796
|
-
# Parallel impl beads
|
|
797
|
-
bd create --parent <epic> --title "
|
|
798
|
-
bd create --parent <epic> --title "
|
|
852
|
+
# Parallel impl beads — bd-epic.2, bd-epic.3
|
|
853
|
+
bd create --parent <epic> --title "executor: impl auth retry" --type task --priority 2 --description "PROBLEM: transient refresh failure breaks login flow. SUCCESS: retry path succeeds after one transient failure and preserves session state. SCOPE: src/auth/refresh.ts, tests/unit/auth/refresh.test.ts. NON_GOALS: no UI changes, no storage migration, no unrelated retry framework edits. CONSTRAINTS: preserve error text, keep backoff bounded, avoid side effects outside auth flow. VALIDATION: regression test for fail-then-succeed path. OUTPUT: code diff, test proof, residual risk list."
|
|
854
|
+
bd create --parent <epic> --title "executor: impl login handoff" --type task --priority 2 --description "PROBLEM: login CLI does not surface refresh outcome clearly enough for operators. SUCCESS: login shows clear success/failure handoff and no stale token state. SCOPE: src/cli/login.ts, tests/unit/cli/login.test.ts. NON_GOALS: no auth protocol redesign. CONSTRAINTS: preserve CLI flags and error codes, keep output terse. VALIDATION: CLI regression test. OUTPUT: login diff and test evidence."
|
|
799
855
|
|
|
800
856
|
specialists run executor --bead <impl-a> --context-depth 3
|
|
801
857
|
specialists run executor --bead <impl-b> --context-depth 3
|
|
802
858
|
|
|
803
|
-
# Per-chain review
|
|
859
|
+
# Per-chain review — nested under each impl (bd-epic.2.1, bd-epic.3.1)
|
|
860
|
+
bd create --parent <impl-a> --title "reviewer: verify auth retry" --type task --priority 2 --description "..."
|
|
861
|
+
bd create --parent <impl-b> --title "reviewer: verify login handoff" --type task --priority 2 --description "..."
|
|
804
862
|
bd dep add <review-a> <impl-a> --type validates
|
|
805
863
|
bd dep add <review-b> <impl-b> --type validates
|
|
806
864
|
specialists run reviewer --bead <review-a> --job <exec-a-job> --context-depth 3
|
|
@@ -1250,6 +1308,8 @@ Then choose one action:
|
|
|
1250
1308
|
## What Orchestrator Does Differently Because Of This Skill
|
|
1251
1309
|
|
|
1252
1310
|
- Writes bead contract before dispatch.
|
|
1311
|
+
- Nests specialist-dispatch beads under the bead they service via `--parent`, regardless of whether that bead is an epic, a task, or already a nested child — never defaults to loose top-level beads.
|
|
1312
|
+
- Titles every specialist-dispatch bead `<specialist-role>: <task>` so `bd list`/`sp ps` are scannable by role at a glance.
|
|
1253
1313
|
- Chooses edge type before creating chain.
|
|
1254
1314
|
- Uses specialist role by job shape, not by habit.
|
|
1255
1315
|
- Keeps fix loops alive with resume, not re-spawn.
|
package/dist/asset-contract.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema_version": "1.0.0",
|
|
3
|
-
"package_version": "3.18.
|
|
3
|
+
"package_version": "3.18.1",
|
|
4
4
|
"shipped_skills": [
|
|
5
5
|
{
|
|
6
6
|
"path": "config/skills/memory-audit-transaction/SKILL.md",
|
|
@@ -44,7 +44,7 @@
|
|
|
44
44
|
},
|
|
45
45
|
{
|
|
46
46
|
"path": "config/skills/using-specialists-v3/SKILL.md",
|
|
47
|
-
"sha256": "
|
|
47
|
+
"sha256": "3f2f24c27f563c40b77293f3e7033ccd35b4e1d6dd21e46f86e5c88bba40c523"
|
|
48
48
|
},
|
|
49
49
|
{
|
|
50
50
|
"path": "config/skills/using-specialists/SKILL.md",
|