@jaggerxtrm/specialists 3.17.0 → 3.18.0
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 +268 -134
- package/config/mandatory-rules/json-only-final-output.md +13 -0
- package/config/mandatory-rules/service-skills-diff-scan-mandatory.md +26 -0
- package/config/mandatory-rules/service-skills-gitnexus-triage.md +5 -0
- package/config/skills/setup-specialists/SKILL.md +556 -0
- package/config/skills/specialists-creator/SKILL.md +132 -4
- package/config/skills/specialists-creator/scripts/audit-spec-uniformity.mjs +1 -1
- package/config/specialists/bare.specialist.json +3 -3
- package/config/specialists/changelog-drafter.specialist.json +5 -4
- package/config/specialists/changelog-keeper.specialist.json +7 -6
- package/config/specialists/debugger.specialist.json +2 -2
- package/config/specialists/executor.specialist.json +2 -2
- package/config/specialists/explorer.specialist.json +4 -4
- package/config/specialists/memory-processor.specialist.json +3 -3
- package/config/specialists/node-coordinator.specialist.json +3 -3
- package/config/specialists/obligations-scanner.specialist.json +67 -17
- package/config/specialists/overthinker.specialist.json +3 -3
- package/config/specialists/planner.specialist.json +4 -4
- package/config/specialists/quant-methodologist.specialist.json +145 -0
- package/config/specialists/quant-researcher.specialist.json +144 -0
- package/config/specialists/researcher.specialist.json +5 -5
- package/config/specialists/reviewer.specialist.json +1 -1
- package/config/specialists/seconder.specialist.json +2 -2
- package/config/specialists/security-auditor.specialist.json +2 -2
- package/config/specialists/service-skills-sync.specialist.json +90 -75
- package/config/specialists/specialists-creator.specialist.json +4 -4
- package/config/specialists/sync-docs.specialist.json +4 -4
- package/config/specialists/test-engineer.specialist.json +3 -3
- package/config/specialists/test-runner.specialist.json +7 -7
- package/config/specialists/transcriber.specialist.json +3 -3
- package/config/specialists/xt-merge.specialist.json +4 -4
- package/dist/asset-contract.json +21 -2
- package/dist/index.js +25704 -16376
- package/dist/lib.js +9849 -6147
- package/dist/types/cli/console/components.d.ts +83 -0
- package/dist/types/cli/console/components.d.ts.map +1 -0
- package/dist/types/cli/console/config-source.d.ts +58 -0
- package/dist/types/cli/console/config-source.d.ts.map +1 -0
- package/dist/types/cli/console/forensic.d.ts +11 -0
- package/dist/types/cli/console/forensic.d.ts.map +1 -0
- package/dist/types/cli/console/git.d.ts +28 -0
- package/dist/types/cli/console/git.d.ts.map +1 -0
- package/dist/types/cli/console/help.d.ts +2 -0
- package/dist/types/cli/console/help.d.ts.map +1 -0
- package/dist/types/cli/console/log.d.ts +13 -0
- package/dist/types/cli/console/log.d.ts.map +1 -0
- package/dist/types/cli/console/repo-config.d.ts +26 -0
- package/dist/types/cli/console/repo-config.d.ts.map +1 -0
- package/dist/types/cli/console/repo-discovery.d.ts +12 -0
- package/dist/types/cli/console/repo-discovery.d.ts.map +1 -0
- package/dist/types/cli/console/runtime.d.ts +12 -0
- package/dist/types/cli/console/runtime.d.ts.map +1 -0
- package/dist/types/cli/console/subscribe-prototype.d.ts +18 -0
- package/dist/types/cli/console/subscribe-prototype.d.ts.map +1 -0
- package/dist/types/cli/console/theme.d.ts +91 -0
- package/dist/types/cli/console/theme.d.ts.map +1 -0
- package/dist/types/cli/console/types.d.ts +231 -0
- package/dist/types/cli/console/types.d.ts.map +1 -0
- package/dist/types/cli/console/view-model.d.ts +252 -0
- package/dist/types/cli/console/view-model.d.ts.map +1 -0
- package/dist/types/cli/console.d.ts +2 -0
- package/dist/types/cli/console.d.ts.map +1 -0
- package/dist/types/cli/db.d.ts.map +1 -1
- package/dist/types/cli/doctor.d.ts.map +1 -1
- package/dist/types/cli/edit.d.ts.map +1 -1
- package/dist/types/cli/epic.d.ts.map +1 -1
- package/dist/types/cli/feed.d.ts.map +1 -1
- package/dist/types/cli/forensic.d.ts +2 -0
- package/dist/types/cli/forensic.d.ts.map +1 -0
- package/dist/types/cli/format-helpers.d.ts +4 -2
- package/dist/types/cli/format-helpers.d.ts.map +1 -1
- package/dist/types/cli/help.d.ts.map +1 -1
- package/dist/types/cli/init.d.ts +10 -0
- package/dist/types/cli/init.d.ts.map +1 -1
- package/dist/types/cli/list.d.ts.map +1 -1
- package/dist/types/cli/log.d.ts.map +1 -1
- package/dist/types/cli/metrics.d.ts +2 -0
- package/dist/types/cli/metrics.d.ts.map +1 -0
- package/dist/types/cli/ps.d.ts.map +1 -1
- package/dist/types/cli/result.d.ts.map +1 -1
- package/dist/types/cli/run.d.ts +1 -0
- package/dist/types/cli/run.d.ts.map +1 -1
- package/dist/types/cli/script.d.ts +3 -0
- package/dist/types/cli/script.d.ts.map +1 -1
- package/dist/types/cli/serve.d.ts.map +1 -1
- package/dist/types/cli/setup.d.ts +19 -1
- package/dist/types/cli/setup.d.ts.map +1 -1
- package/dist/types/cli/status.d.ts.map +1 -1
- package/dist/types/cli/version-check.d.ts +1 -0
- package/dist/types/cli/version-check.d.ts.map +1 -1
- package/dist/types/index.d.ts +1 -1
- package/dist/types/pi/session.d.ts +11 -1
- package/dist/types/pi/session.d.ts.map +1 -1
- package/dist/types/server.d.ts +15 -0
- package/dist/types/server.d.ts.map +1 -1
- package/dist/types/specialist/benchmarks.d.ts +37 -0
- package/dist/types/specialist/benchmarks.d.ts.map +1 -0
- package/dist/types/specialist/chain-identity.d.ts +7 -1
- package/dist/types/specialist/chain-identity.d.ts.map +1 -1
- package/dist/types/specialist/control.d.ts.map +1 -1
- package/dist/types/specialist/forensic-events.d.ts +138 -0
- package/dist/types/specialist/forensic-events.d.ts.map +1 -0
- package/dist/types/specialist/forensic-renderer.d.ts +34 -0
- package/dist/types/specialist/forensic-renderer.d.ts.map +1 -0
- package/dist/types/specialist/git-diff-evidence.d.ts +28 -0
- package/dist/types/specialist/git-diff-evidence.d.ts.map +1 -0
- package/dist/types/specialist/global-config.d.ts +389 -0
- package/dist/types/specialist/global-config.d.ts.map +1 -0
- package/dist/types/specialist/launch.d.ts +1 -0
- package/dist/types/specialist/launch.d.ts.map +1 -1
- package/dist/types/specialist/live-aggregates.d.ts +46 -0
- package/dist/types/specialist/live-aggregates.d.ts.map +1 -0
- package/dist/types/specialist/loader.d.ts +50 -1
- package/dist/types/specialist/loader.d.ts.map +1 -1
- package/dist/types/specialist/model-chain.d.ts +7 -0
- package/dist/types/specialist/model-chain.d.ts.map +1 -0
- package/dist/types/specialist/model-probes.d.ts +28 -0
- package/dist/types/specialist/model-probes.d.ts.map +1 -0
- package/dist/types/specialist/node-contract.d.ts +18 -18
- package/dist/types/specialist/node-supervisor.d.ts.map +1 -1
- package/dist/types/specialist/observability-db.d.ts +1 -1
- package/dist/types/specialist/observability-db.d.ts.map +1 -1
- package/dist/types/specialist/observability-sqlite.d.ts +25 -0
- package/dist/types/specialist/observability-sqlite.d.ts.map +1 -1
- package/dist/types/specialist/preset-resolver.d.ts +56 -0
- package/dist/types/specialist/preset-resolver.d.ts.map +1 -0
- package/dist/types/specialist/prometheus-projection.d.ts +25 -0
- package/dist/types/specialist/prometheus-projection.d.ts.map +1 -0
- package/dist/types/specialist/runner.d.ts +26 -1
- package/dist/types/specialist/runner.d.ts.map +1 -1
- package/dist/types/specialist/schema.d.ts +163 -54
- package/dist/types/specialist/schema.d.ts.map +1 -1
- package/dist/types/specialist/script-runner.d.ts +5 -1
- package/dist/types/specialist/script-runner.d.ts.map +1 -1
- package/dist/types/specialist/snapshot-diff.d.ts +8 -0
- package/dist/types/specialist/snapshot-diff.d.ts.map +1 -0
- package/dist/types/specialist/source-queue.d.ts +13 -0
- package/dist/types/specialist/source-queue.d.ts.map +1 -0
- package/dist/types/specialist/supervisor.d.ts +15 -1
- package/dist/types/specialist/supervisor.d.ts.map +1 -1
- package/dist/types/specialist/timeline-events.d.ts +68 -1
- package/dist/types/specialist/timeline-events.d.ts.map +1 -1
- package/dist/types/tools/specialist/resume_specialist.tool.d.ts +4 -4
- package/dist/types/tools/specialist/specialist_status.tool.d.ts +1 -1
- package/dist/types/tools/specialist/steer_specialist.tool.d.ts +4 -4
- package/dist/types/tools/specialist/use_specialist.tool.d.ts +16 -16
- package/docs/ARCHITECTURE.md +1176 -0
- package/docs/TODO.md +9 -0
- package/docs/architecture.md +11 -0
- package/docs/archive/2026-03-13-bd-decision-context-template-plan.md +96 -0
- package/docs/archive/AGENT-HANDOFF.md +351 -0
- package/docs/archive/PARITY-ANALYSIS.md +296 -0
- package/docs/archive/SPECIALISTS_REFACTOR.md.md +30 -0
- package/docs/archive/cc-programmatic.md +216 -0
- package/docs/archive/claude-agent-sdk.md +594 -0
- package/docs/archive/decision-specialist-directory.md +41 -0
- package/docs/archive/discoveries.md +148 -0
- package/docs/archive/executor-benchmark-protocol.md +198 -0
- package/docs/archive/future-features.md +66 -0
- package/docs/archive/gzrx-completion-critique.md +183 -0
- package/docs/archive/gzrx-research-notes.md +401 -0
- package/docs/archive/gzrx-tool-catalog.md +760 -0
- package/docs/archive/iron-review-hardening-qa-chain-substrate.md +322 -0
- package/docs/archive/iron-review-hardening.html +1004 -0
- package/docs/archive/issuetracking.md +312 -0
- package/docs/archive/qa-v3.0.2.md +220 -0
- package/docs/archive/restructure.md +231 -0
- package/docs/archive/script-specialists.md +1254 -0
- package/docs/archive/spec-v3.md +792 -0
- package/docs/archive/specialist-stats.md +127 -0
- package/docs/archive/specialists-friction-audit.md +1347 -0
- package/docs/archive/specialists-runtime-critique.md +170 -0
- package/docs/archive/specialists-service-evaluation.md +713 -0
- package/docs/archive/specialists-substrate-alignment.md +255 -0
- package/docs/archive/substrate-review.md +1288 -0
- package/docs/archive/test-writer-specialist.md +254 -0
- package/docs/archive/using-specialists-v3-improvements-2026-05-09.md +600 -0
- package/docs/archive/xtrm-specialists-analysis.md +314 -0
- package/docs/authoring.md +701 -0
- package/docs/background-jobs.md +203 -0
- package/docs/bare-specialists.md +83 -0
- package/docs/benchmarks/executor-benchmark-runner.md +66 -0
- package/docs/bootstrap.md +161 -0
- package/docs/cli-reference.md +1645 -0
- package/docs/deploying-alongside.md +155 -0
- package/docs/design/README.md +36 -0
- package/docs/design/darth-feedor-migration.md +290 -0
- package/docs/design/roadmap/README.md +32 -0
- package/docs/design/roadmap/chain-templates/README.md +146 -0
- package/docs/design/roadmap/chain-templates/code-quick.formula.json +27 -0
- package/docs/design/roadmap/chain-templates/code-standard.formula.json +126 -0
- package/docs/design/roadmap/chain-templates/code-with-advisors.formula.json +128 -0
- package/docs/design/roadmap/chain-templates/code-with-tests.formula.json +76 -0
- package/docs/design/roadmap/chain-templates/debug.formula.json +128 -0
- package/docs/design/roadmap/chain-templates/doc-sync.formula.json +28 -0
- package/docs/design/roadmap/chain-templates/memory-hygiene.formula.json +27 -0
- package/docs/design/roadmap/chain-templates/planning.formula.json +27 -0
- package/docs/design/roadmap/chain-templates/premortem.formula.json +26 -0
- package/docs/design/roadmap/chain-templates/release-prep.formula.json +36 -0
- package/docs/design/roadmap/chain-templates/research-only.formula.json +28 -0
- package/docs/design/roadmap/chain-templates/restitch.formula.json +125 -0
- package/docs/design/roadmap/chain-templates/security-deep.formula.json +161 -0
- package/docs/design/roadmap/chain-templates/test-only.formula.json +52 -0
- package/docs/design/roadmap/chain-templates/triage.formula.json +35 -0
- package/docs/design/roadmap/history/handoff-from-substrate-design.md +87 -0
- package/docs/design/roadmap/history/substrate-reconciliation.md +105 -0
- package/docs/design/roadmap/specialists-roadmap.md +1193 -0
- package/docs/design/sp-console-subscribe-via-materializer.md +231 -0
- package/docs/design/sp-console-tui-mock-v2.html +293 -0
- package/docs/design/sp-console-tui-mock.html +120 -0
- package/docs/design/sp-console-tui.md +340 -0
- package/docs/design/specialist-agentops-suite.md +323 -0
- package/docs/design/substrate/channels.md +14 -0
- package/docs/design/substrate/devops-platform-engineering-prd.md +446 -0
- package/docs/design/substrate/html-design-example.md +339 -0
- package/docs/design/xtrm-tiers-architecture.svg +132 -0
- package/docs/devops/dependency-verdict-materialization.md +46 -0
- package/docs/epic-readiness.md +75 -0
- package/docs/examples/mercury-atomic-summarizer.specialist.json +26 -0
- package/docs/examples/smoke-echo-text-expected-keys.specialist.json +25 -0
- package/docs/examples/smoke-echo.specialist.json +25 -0
- package/docs/features.md +1577 -0
- package/docs/hooks.md +81 -0
- package/docs/installation.md +142 -0
- package/docs/manifest.md +184 -0
- package/docs/mcp-servers.md +73 -0
- package/docs/mcp-tools.md +71 -0
- package/docs/nodes.md +231 -0
- package/docs/observability-metrics.md +152 -0
- package/docs/operator/sp-console-v2-walkthrough.md +410 -0
- package/docs/overrides-guide.md +306 -0
- package/docs/pi-rpc-boundary.md +118 -0
- package/docs/pi-session.md +195 -0
- package/docs/release.md +22 -0
- package/docs/skills.md +132 -0
- package/docs/specialists/handoff-schema.md +181 -0
- package/docs/specialists-catalog.md +99 -0
- package/docs/specialists-service-install.md +226 -0
- package/docs/specialists-service.md +363 -0
- package/docs/surface-ownership.md +138 -0
- package/docs/upgrade-notes/kan-90-global-user-config.md +114 -0
- package/docs/upgrade-notes/kan-91-expanded-overrides.md +261 -0
- package/docs/workflow.md +114 -0
- package/docs/worktree.md +71 -0
- package/docs/worktrees.md +309 -0
- package/package.json +6 -3
|
@@ -0,0 +1,322 @@
|
|
|
1
|
+
# Iron Review Hardening — DevOps QA Chain Extension
|
|
2
|
+
|
|
3
|
+
> **⚠ ARCHIVED — superseded 2026-05-30 / further evolved 2026-05-31.** This document is preserved for historical / archeological reference only. Its content was first absorbed into the canonical chain-templates design (2026-05-30) as a "QA overlay" §3.2, then **restructured the same day to drop the overlay framing** (Iron + QA are canonical pipeline, not opt-in overlays — neither lives at §3.2 anymore), then **further revised 2026-05-31** with the seconder fusion (code-sanity + reviewer phase-1 → single dual-verdict step) which changes the chain position of `test-engineer`. The `test-engineer` role and behavioral-validation contract are preserved unchanged; only the chain position around them moved.
|
|
4
|
+
>
|
|
5
|
+
> For current canonical guidance, consult:
|
|
6
|
+
> - [`docs/design/chain-templates.md`](../design/chain-templates.md) **§2** — the canonical pipeline (writer → seconder → test-engineer → test-runner → security-auditor? → obligations-scanner → reviewer)
|
|
7
|
+
> - [`docs/design/chain-templates.md`](../design/chain-templates.md) **§2.3** — roles table (test-engineer + test-runner + seconder definitions, ambidextrous test-engineer note)
|
|
8
|
+
> - [`docs/design/chain-templates.md`](../design/chain-templates.md) **§2.5** — behavioral-validation contract (test-engineer JSON output schema, test-runner failure-routing matrix)
|
|
9
|
+
> - [`docs/design/chain-templates.md`](../design/chain-templates.md) **§3.14** `code-with-tests` and **§3.15** `test-only` — the two templates that consume `test-engineer` in different positions
|
|
10
|
+
> - [`docs/design/chain-templates.md`](../design/chain-templates.md) **§3.16** — ambidextrous-roles pattern (test-engineer × 2 positions; mode-agnostic system_prompt + position-injection mechanism for pre-substrate vs substrate)
|
|
11
|
+
> - [`docs/design/roadmap/specialists-roadmap.md`](../design/roadmap/specialists-roadmap.md) **Opp 14** — implementation track for `test-engineer` + `test-runner` upgrade (this archived doc's downstream implementation)
|
|
12
|
+
>
|
|
13
|
+
> Companion `chain-templates.html` exists as an editorial snapshot in `substrate.html` style but is **not maintained going forward** — the MD is the only living source.
|
|
14
|
+
>
|
|
15
|
+
> Implementation tracking remains: epic `unitAI-sfwe1` (test-engineer + test-runner upgrade), task `unitAI-f9kku` (chain_template formula integration), related epic `unitAI-4e194` (seconder fusion + reviewer phase-2-only refactor — sibling work that changes the gate immediately before test-engineer).
|
|
16
|
+
>
|
|
17
|
+
> ---
|
|
18
|
+
>
|
|
19
|
+
> **Original status:** draft design · sibling to `iron-review-hardening.html`
|
|
20
|
+
> **Original tracking:** `unitAI-3cdtf` (closed — design absorbed into canonical)
|
|
21
|
+
> **Original scope:** future `test-engineer` specialist, upgraded `test-runner` handback, and
|
|
22
|
+
> planning/test-planning integration for devops-oriented autonomous chains.
|
|
23
|
+
|
|
24
|
+
## Why this exists
|
|
25
|
+
|
|
26
|
+
`iron-review-hardening.html` hardens the review pipeline around Jane Street Iron
|
|
27
|
+
concepts: scrutiny profiles, mandatory seconders, ddiff re-review, obligations
|
|
28
|
+
tracking, and release checklists. That makes review stricter, but it still leaves
|
|
29
|
+
one gap in autonomous specialist chains:
|
|
30
|
+
|
|
31
|
+
> Who turns a production diff into the **right behavioral tests, smoke/E2E
|
|
32
|
+
> checks, and telemetry assertions** before the reviewer sees it?
|
|
33
|
+
|
|
34
|
+
The answer should not be the generic executor and should not be `test-runner`.
|
|
35
|
+
The future role is **`test-engineer`**:
|
|
36
|
+
|
|
37
|
+
- `planner` + xtrm `test-planning` define expected coverage before implementation.
|
|
38
|
+
- `executor` / `debugger` change production behavior.
|
|
39
|
+
- `test-engineer` reads the actual diff and writes tests/smoke checks/telemetry
|
|
40
|
+
assertions.
|
|
41
|
+
- `test-runner` executes exact commands and classifies failures.
|
|
42
|
+
- failures route back to `test-engineer` when the test/harness is wrong, or back
|
|
43
|
+
to `debugger` / `executor` when source behavior is wrong.
|
|
44
|
+
- Iron gates (`code-sanity`, `obligations-scanner`, `security-auditor`,
|
|
45
|
+
`reviewer`) consume the resulting evidence.
|
|
46
|
+
|
|
47
|
+
This is devops-oriented because autonomous runs are only debuggable when they
|
|
48
|
+
produce the right logs, telemetry, health checks, and end-to-end proof. Static
|
|
49
|
+
checks such as `pyright`, `tsc`, lint, schema validation, or `ruff` remain useful
|
|
50
|
+
build evidence; they are **not** substitutes for smoke/E2E behavior when the
|
|
51
|
+
bead changes a shell, boundary, agent, hook, deploy, MCP, or operational path.
|
|
52
|
+
|
|
53
|
+
## Inputs from xtrm planning/test-planning
|
|
54
|
+
|
|
55
|
+
The xtrm planning skills now require two contracts in every implementation bead:
|
|
56
|
+
|
|
57
|
+
1. **Logging / telemetry contract** — events, fields/format, emission points,
|
|
58
|
+
redaction rules, and artifact/query location.
|
|
59
|
+
2. **Smoke / E2E contract** — commands or live checks that exercise the integrated
|
|
60
|
+
path, plus fallbacks/follow-up beads when live boundaries are unavailable.
|
|
61
|
+
|
|
62
|
+
The xtrm `test-planning` skill now treats testing as more than unit coverage:
|
|
63
|
+
|
|
64
|
+
- core: unit/property/example tests;
|
|
65
|
+
- boundary: live-contract or fixture-backed contract tests;
|
|
66
|
+
- shell: integration + smoke tests;
|
|
67
|
+
- operational / agentic: smoke + E2E + telemetry assertions.
|
|
68
|
+
|
|
69
|
+
It also defines **chain mode**: after implementation, a test-focused specialist
|
|
70
|
+
reads the actual diff and produces concrete test-writing plus `test-runner`
|
|
71
|
+
contracts. In specialists, that chain-mode role should be implemented as
|
|
72
|
+
`test-engineer`.
|
|
73
|
+
|
|
74
|
+
## Old Iron chain vs QA-extended Iron chain
|
|
75
|
+
|
|
76
|
+
### Current Iron hardening chain
|
|
77
|
+
|
|
78
|
+
```text
|
|
79
|
+
executor/debugger
|
|
80
|
+
→ code-sanity # mandatory seconder for production diffs
|
|
81
|
+
→ security-auditor? # mandatory on sensitive surfaces
|
|
82
|
+
→ obligations-scanner # TODO/FIXME/HACK/XXX/TEMP/WIP/NOTE(release)
|
|
83
|
+
→ reviewer # scrutiny-aware, ddiff-aware, Release Checklist
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### QA-extended chain
|
|
87
|
+
|
|
88
|
+
```text
|
|
89
|
+
planner + test-planning # before implementation: expected coverage contract
|
|
90
|
+
→ executor/debugger # production change + static verification
|
|
91
|
+
→ test-engineer # writes/updates tests, fixtures, smoke checks, telemetry assertions
|
|
92
|
+
→ test-runner # runs exact commands, classifies failures, captures artifacts
|
|
93
|
+
→ fix loop # test-engineer OR debugger/executor based on failure owner
|
|
94
|
+
→ code-sanity # Iron seconder
|
|
95
|
+
→ security-auditor? # sensitive-surface scan
|
|
96
|
+
→ obligations-scanner # Iron obligations gate
|
|
97
|
+
→ reviewer # release gate; consumes QA + Iron evidence
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
For small docs-only or static-analysis-only beads, `test-engineer` can be skipped
|
|
101
|
+
with an explicit reason. For shell/boundary/operational/devops work, skipping
|
|
102
|
+
behavioral QA is an escalation event unless the bead explicitly defers it with a
|
|
103
|
+
follow-up.
|
|
104
|
+
|
|
105
|
+
## Role boundaries
|
|
106
|
+
|
|
107
|
+
| Role | Owns | Must not do |
|
|
108
|
+
|---|---|---|
|
|
109
|
+
| `planner` | Phase-level decomposition; initial test strategy via xtrm `test-planning`; bd test issues | Write final tests from an unknown future diff |
|
|
110
|
+
| `executor` | Production implementation from a clear bead contract; static lint/typecheck | Own full behavioral validation or broad test writing |
|
|
111
|
+
| `debugger` | Root-cause fixes for symptoms/failing tests; targeted repro verification | Run broad suites or redesign unrelated tests |
|
|
112
|
+
| `test-engineer` | Plan-from-actual-diff, write/update tests/fixtures/smoke scripts/telemetry assertions, emit exact `test-runner` commands | Patch production source by default; decide release readiness |
|
|
113
|
+
| `test-runner` | Execute exact commands, classify failures, capture log/telemetry artifacts | Write tests; fix source; silently expand scope |
|
|
114
|
+
| `code-sanity` | Iron seconder: cheap implementation quality/simplicity/type-safety pass | Validate product behavior or test coverage |
|
|
115
|
+
| `obligations-scanner` | Iron obligations marker scan | Act as a test gate |
|
|
116
|
+
| `security-auditor` | Security scan for sensitive surfaces | Bless release or write fixes |
|
|
117
|
+
| `reviewer` | Final PASS/PARTIAL/FAIL and Release Checklist | Write the missing tests itself |
|
|
118
|
+
|
|
119
|
+
## `test-engineer` specialist contract
|
|
120
|
+
|
|
121
|
+
Recommended default name: **`test-engineer`**. `test-planner` is too weak because
|
|
122
|
+
this role should write tests, not only plan them.
|
|
123
|
+
|
|
124
|
+
Recommended posture:
|
|
125
|
+
|
|
126
|
+
- permission: `MEDIUM` (test editing requires writes);
|
|
127
|
+
- phase: `post-impl`;
|
|
128
|
+
- worktree: enter the executor/debugger workspace via `--job <impl-job>`;
|
|
129
|
+
- edit scope: tests, fixtures, smoke scripts, test harness support, telemetry
|
|
130
|
+
assertions; production-source edits only with explicit bead permission;
|
|
131
|
+
- skills: should load or embed the xtrm `test-planning` contract;
|
|
132
|
+
- output: structured handoff to `test-runner` and reviewer.
|
|
133
|
+
|
|
134
|
+
Required inputs:
|
|
135
|
+
|
|
136
|
+
- implementation bead and its original test plan/test bead;
|
|
137
|
+
- actual changed files and diff;
|
|
138
|
+
- existing test style and fixture conventions;
|
|
139
|
+
- planning-time logging/telemetry contract;
|
|
140
|
+
- planning-time smoke/E2E contract;
|
|
141
|
+
- any prior `test-runner` failure output on retry.
|
|
142
|
+
|
|
143
|
+
Required output:
|
|
144
|
+
|
|
145
|
+
```json
|
|
146
|
+
{
|
|
147
|
+
"status": "tests_written|blocked|source_bug_suspected",
|
|
148
|
+
"files_changed": ["tests/..."],
|
|
149
|
+
"coverage_map": [
|
|
150
|
+
{"impl_path": "src/...", "test_path": "tests/...", "critical_path": "..."}
|
|
151
|
+
],
|
|
152
|
+
"smoke_e2e_commands": ["..."],
|
|
153
|
+
"telemetry_assertions": [
|
|
154
|
+
{"event": "...", "fields": ["..."], "query_or_grep": "...", "redaction": "..."}
|
|
155
|
+
],
|
|
156
|
+
"test_runner_commands": ["..."],
|
|
157
|
+
"known_deferred_paths": [
|
|
158
|
+
{"path": "...", "reason": "...", "follow_up_bead": "..."}
|
|
159
|
+
],
|
|
160
|
+
"source_bug_suspicions": ["..."]
|
|
161
|
+
}
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
If `test-engineer` discovers the implementation is not testable without a source
|
|
165
|
+
change, it should report `source_bug_suspected` or create a follow-up. It should
|
|
166
|
+
not quietly patch production code and blur ownership.
|
|
167
|
+
|
|
168
|
+
## Upgraded `test-runner` contract
|
|
169
|
+
|
|
170
|
+
`test-runner` remains LOW permission and does not write files. Its contract needs
|
|
171
|
+
to become a better peer for `test-engineer`:
|
|
172
|
+
|
|
173
|
+
- prefer exact commands supplied by `test-engineer` / orchestrator;
|
|
174
|
+
- run smoke/E2E/live-contract checks when requested, not only manifest suites;
|
|
175
|
+
- capture requested log/telemetry artifacts or grep/query evidence;
|
|
176
|
+
- classify failures by owner:
|
|
177
|
+
- `test_engineer` — bad expectation, bad fixture, bad harness, flaky test shape;
|
|
178
|
+
- `debugger_or_executor` — source regression or unhandled behavior;
|
|
179
|
+
- `infrastructure` — missing service, network, credentials, unavailable DB;
|
|
180
|
+
- `pre_existing` — failure already present outside the chain scope;
|
|
181
|
+
- return enough evidence for routing without requiring the orchestrator to parse
|
|
182
|
+
raw logs.
|
|
183
|
+
|
|
184
|
+
Current tension to resolve in implementation: the existing pre-script auto-runs a
|
|
185
|
+
manifest-wide suite, while `test-runner-execution-scope` says “run only requested
|
|
186
|
+
tests.” For this QA chain, the preferred behavior is:
|
|
187
|
+
|
|
188
|
+
1. if exact commands are supplied, run them verbatim;
|
|
189
|
+
2. if no exact commands are supplied, run a safe manifest-detected smoke/default
|
|
190
|
+
and clearly label it as fallback;
|
|
191
|
+
3. never silently expand a pinned test scope.
|
|
192
|
+
|
|
193
|
+
## Feedback routing matrix
|
|
194
|
+
|
|
195
|
+
| `test-runner` finding | Next recipient | Example instruction |
|
|
196
|
+
|---|---|---|
|
|
197
|
+
| Test expectation wrong | `test-engineer` | “Expected JSON field was renamed by accepted implementation; update assertion only.” |
|
|
198
|
+
| Fixture/harness broken | `test-engineer` | “Fixture omits required env var; fix setup/teardown, then rerun same command.” |
|
|
199
|
+
| Required telemetry missing | `debugger` or `executor` | “Implementation never emits `component=runner event=job_finished`; add source instrumentation.” |
|
|
200
|
+
| Source behavior regression | `debugger` | “Smoke command exits 0 but produced stale state; root-cause before edits.” |
|
|
201
|
+
| New source feature untested | `test-engineer` | “Diff added retry fallback; add failure-path test + log assertion.” |
|
|
202
|
+
| Infrastructure unavailable | orchestrator / reviewer note | “Prometheus unavailable; mark infra failure and use recorded fallback if defined.” |
|
|
203
|
+
| Pre-existing unrelated failure | reviewer note | “Classify as pre-existing; do not block this chain unless critical path overlap exists.” |
|
|
204
|
+
|
|
205
|
+
## Channel model extension
|
|
206
|
+
|
|
207
|
+
The Iron channel design already lets specialists wake on messages instead of the
|
|
208
|
+
orchestrator hand-carrying state. QA adds two more message kinds before the Iron
|
|
209
|
+
gates:
|
|
210
|
+
|
|
211
|
+
```text
|
|
212
|
+
executor/debugger posts: turn(diff)
|
|
213
|
+
test-engineer wakes on: turn(diff)
|
|
214
|
+
test-engineer posts: qa_plan_and_tests + test_runner_commands
|
|
215
|
+
test-runner wakes on: qa_plan_and_tests
|
|
216
|
+
test-runner posts: test_verdict
|
|
217
|
+
|
|
218
|
+
if test_verdict.owner == test_engineer:
|
|
219
|
+
test-engineer wakes, fixes tests, posts qa_plan_and_tests Δ
|
|
220
|
+
test-runner reruns exact commands
|
|
221
|
+
|
|
222
|
+
if test_verdict.owner == debugger_or_executor:
|
|
223
|
+
debugger/executor wakes, fixes source, posts turn(Δ)
|
|
224
|
+
test-engineer revalidates affected tests
|
|
225
|
+
|
|
226
|
+
when test_verdict is clean:
|
|
227
|
+
code-sanity/security/obligations/reviewer proceed
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
This keeps ddiff semantics intact: reviewer should see the final test evidence and
|
|
231
|
+
only re-review the delta after PARTIAL. Prior clean test-runner evidence carries
|
|
232
|
+
forward unless the new diff touches the tested path or invalidates an artifact.
|
|
233
|
+
|
|
234
|
+
## Release Checklist additions
|
|
235
|
+
|
|
236
|
+
The reviewer’s Release Checklist should gain QA evidence lines when the chain
|
|
237
|
+
includes behavioral work:
|
|
238
|
+
|
|
239
|
+
```text
|
|
240
|
+
- [ ] test-engineer required: yes|no|not-required (reason)
|
|
241
|
+
- [ ] test-engineer completed: yes|no|N/A
|
|
242
|
+
- [ ] test-runner commands executed: yes|no|N/A
|
|
243
|
+
- [ ] smoke/E2E evidence present: yes|no|N/A
|
|
244
|
+
- [ ] telemetry/log assertions present: yes|no|N/A
|
|
245
|
+
- [ ] failures classified and routed: yes|no|N/A
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
For `SCRUTINY: low` docs/test-only diffs, these can be `not-required` with a
|
|
249
|
+
reason. For `SCRUTINY: high|critical`, absence of behavioral QA evidence should
|
|
250
|
+
be a PARTIAL unless the bead is static-only.
|
|
251
|
+
|
|
252
|
+
## DevOps-specific examples
|
|
253
|
+
|
|
254
|
+
### Hook or MCP change
|
|
255
|
+
|
|
256
|
+
```text
|
|
257
|
+
executor changes hook/MCP behavior
|
|
258
|
+
→ test-engineer adds temp-repo smoke harness and asserts stdout/stderr/log event
|
|
259
|
+
→ test-runner runs exact smoke command
|
|
260
|
+
→ obligations/code-sanity/reviewer consume artifact paths
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
Required evidence:
|
|
264
|
+
|
|
265
|
+
- command exit code;
|
|
266
|
+
- expected file or tool result;
|
|
267
|
+
- structured log line with component, event, outcome, duration;
|
|
268
|
+
- redaction proof if the path touches secrets/config.
|
|
269
|
+
|
|
270
|
+
### Deploy or health-check change
|
|
271
|
+
|
|
272
|
+
```text
|
|
273
|
+
deployer/executor updates deploy envelope
|
|
274
|
+
→ test-engineer adds dry-run/preflight smoke + rollback/cleanup assertion
|
|
275
|
+
→ test-runner classifies any service unavailable error as infra unless source changed it
|
|
276
|
+
→ reviewer checks Release Checklist + telemetry evidence
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
Required evidence:
|
|
280
|
+
|
|
281
|
+
- pre-validate and post-validate command output;
|
|
282
|
+
- health-check result;
|
|
283
|
+
- rollback/failure-mode path or explicit deferred bead;
|
|
284
|
+
- log/metric query path.
|
|
285
|
+
|
|
286
|
+
### Agent chain behavior change
|
|
287
|
+
|
|
288
|
+
```text
|
|
289
|
+
executor changes specialist orchestration
|
|
290
|
+
→ test-engineer writes a minimal fake-chain/e2e smoke
|
|
291
|
+
→ test-runner runs it and captures job/feed/result evidence
|
|
292
|
+
→ reviewer verifies code-sanity OK + obligations CLEAN + QA evidence
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
Required evidence:
|
|
296
|
+
|
|
297
|
+
- job state transitions;
|
|
298
|
+
- feed/result output shape;
|
|
299
|
+
- no orphaned worktree/process state;
|
|
300
|
+
- telemetry proving start/end/failure events.
|
|
301
|
+
|
|
302
|
+
## Implementation beads implied by this design
|
|
303
|
+
|
|
304
|
+
1. **Define chain contract** — convert this design into `using-specialists-v3` and
|
|
305
|
+
any channel/handoff schema docs.
|
|
306
|
+
2. **Add `test-engineer` specialist** — MEDIUM, post-impl, test-edit scoped,
|
|
307
|
+
with output schema above.
|
|
308
|
+
3. **Upgrade `test-runner`** — exact-command-first, owner routing, telemetry
|
|
309
|
+
artifact capture, no silent broadening.
|
|
310
|
+
4. **Reviewer checklist update** — include QA evidence fields for behavioral work.
|
|
311
|
+
5. **Smoke/eval** — prove: test-engineer writes tests → test-runner fails →
|
|
312
|
+
failure routes back to test-engineer; source bug routes to debugger/executor.
|
|
313
|
+
|
|
314
|
+
## Design decision summary
|
|
315
|
+
|
|
316
|
+
- Name the new role **`test-engineer`**, not `test-planner`, because it writes
|
|
317
|
+
tests from the actual diff.
|
|
318
|
+
- Keep `test-runner` as LOW-permission execution/classification only.
|
|
319
|
+
- Keep Iron gates separate; QA evidence feeds reviewer but does not replace
|
|
320
|
+
code-sanity, obligations, security, or final review.
|
|
321
|
+
- Treat logs/telemetry as testable product behavior for devops/agent paths.
|
|
322
|
+
- Treat smoke/E2E as mandatory for integrated behavior; static checks are not enough.
|