@aperant/framework 0.17.0 → 0.20.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/CHANGELOG.md +261 -0
- package/agents/apt-executor.md +6 -0
- package/agents/apt-planner.md +3 -2
- package/bin/features-reconcile-check.mjs +77 -0
- package/dist/cli/artifacts/self-stage.d.mts.map +1 -1
- package/dist/cli/artifacts/self-stage.mjs +2 -1
- package/dist/cli/artifacts/self-stage.mjs.map +1 -1
- package/dist/cli/cli-wrappers/features-reconcile.d.mts +2 -0
- package/dist/cli/cli-wrappers/features-reconcile.d.mts.map +1 -0
- package/dist/cli/cli-wrappers/features-reconcile.mjs +9 -0
- package/dist/cli/cli-wrappers/features-reconcile.mjs.map +1 -0
- package/dist/cli/commands/ci-watch.mjs +49 -2
- package/dist/cli/commands/ci-watch.mjs.map +1 -1
- package/dist/cli/commands/commit.mjs +3 -3
- package/dist/cli/commands/commit.mjs.map +1 -1
- package/dist/cli/commands/event.mjs +16 -16
- package/dist/cli/commands/event.mjs.map +1 -1
- package/dist/cli/commands/features-reconcile.d.mts +2 -0
- package/dist/cli/commands/features-reconcile.d.mts.map +1 -0
- package/dist/cli/commands/features-reconcile.mjs +143 -0
- package/dist/cli/commands/features-reconcile.mjs.map +1 -0
- package/dist/cli/commands/health-check.d.mts +2 -2
- package/dist/cli/commands/health-check.mjs +2 -2
- package/dist/cli/commands/merge-integrate.mjs +3 -3
- package/dist/cli/commands/merge-integrate.mjs.map +1 -1
- package/dist/cli/commands/produce.d.mts +9 -0
- package/dist/cli/commands/produce.d.mts.map +1 -0
- package/dist/cli/commands/produce.mjs +1345 -0
- package/dist/cli/commands/produce.mjs.map +1 -0
- package/dist/cli/commands/task.d.mts +16 -1
- package/dist/cli/commands/task.d.mts.map +1 -1
- package/dist/cli/commands/task.mjs +434 -266
- package/dist/cli/commands/task.mjs.map +1 -1
- package/dist/cli/coordination/auto-emit-artifact-ready.mjs +5 -5
- package/dist/cli/coordination/auto-emit-artifact-ready.mjs.map +1 -1
- package/dist/cli/coordination/event-schema.d.mts +5 -3
- package/dist/cli/coordination/event-schema.d.mts.map +1 -1
- package/dist/cli/coordination/event-schema.mjs +245 -21
- package/dist/cli/coordination/event-schema.mjs.map +1 -1
- package/dist/cli/coordination/store.d.mts +2 -2
- package/dist/cli/coordination/store.mjs +4 -4
- package/dist/cli/coordination/store.mjs.map +1 -1
- package/dist/cli/dispatch.d.mts.map +1 -1
- package/dist/cli/dispatch.mjs +4 -2
- package/dist/cli/dispatch.mjs.map +1 -1
- package/dist/cli/features/area-shape.d.mts +11 -0
- package/dist/cli/features/area-shape.d.mts.map +1 -0
- package/dist/cli/features/area-shape.mjs +141 -0
- package/dist/cli/features/area-shape.mjs.map +1 -0
- package/dist/cli/features/delta.d.mts +78 -0
- package/dist/cli/features/delta.d.mts.map +1 -0
- package/dist/cli/features/delta.mjs +591 -0
- package/dist/cli/features/delta.mjs.map +1 -0
- package/dist/cli/features/reconcile.d.mts +236 -0
- package/dist/cli/features/reconcile.d.mts.map +1 -0
- package/dist/cli/features/reconcile.mjs +1126 -0
- package/dist/cli/features/reconcile.mjs.map +1 -0
- package/dist/cli/features/surface-map.d.mts +63 -0
- package/dist/cli/features/surface-map.d.mts.map +1 -0
- package/dist/cli/features/surface-map.mjs +191 -0
- package/dist/cli/features/surface-map.mjs.map +1 -0
- package/dist/cli/{commands/features-audit.d.mts → features/write-root.d.mts} +4 -3
- package/dist/cli/features/write-root.d.mts.map +1 -0
- package/dist/cli/features/write-root.mjs +137 -0
- package/dist/cli/features/write-root.mjs.map +1 -0
- package/dist/cli/gate/gates/features-reconciled.d.mts +36 -0
- package/dist/cli/gate/gates/features-reconciled.d.mts.map +1 -0
- package/dist/cli/gate/gates/features-reconciled.mjs +67 -0
- package/dist/cli/gate/gates/features-reconciled.mjs.map +1 -0
- package/dist/cli/gate/gates/index.mjs +1 -0
- package/dist/cli/gate/gates/index.mjs.map +1 -1
- package/dist/cli/help.d.mts.map +1 -1
- package/dist/cli/help.mjs +31 -1
- package/dist/cli/help.mjs.map +1 -1
- package/dist/cli/install/legacy-paths.d.mts.map +1 -1
- package/dist/cli/install/legacy-paths.mjs +2 -0
- package/dist/cli/install/legacy-paths.mjs.map +1 -1
- package/dist/cli/produce/blind-probe.d.mts +85 -0
- package/dist/cli/produce/blind-probe.d.mts.map +1 -0
- package/dist/cli/produce/blind-probe.mjs +217 -0
- package/dist/cli/produce/blind-probe.mjs.map +1 -0
- package/dist/cli/produce/claim.d.mts +188 -0
- package/dist/cli/produce/claim.d.mts.map +1 -0
- package/dist/cli/produce/claim.mjs +518 -0
- package/dist/cli/produce/claim.mjs.map +1 -0
- package/dist/cli/produce/done-gate.d.mts +87 -0
- package/dist/cli/produce/done-gate.d.mts.map +1 -0
- package/dist/cli/produce/done-gate.mjs +200 -0
- package/dist/cli/produce/done-gate.mjs.map +1 -0
- package/dist/cli/produce/events.d.mts +77 -0
- package/dist/cli/produce/events.d.mts.map +1 -0
- package/dist/cli/produce/events.mjs +126 -0
- package/dist/cli/produce/events.mjs.map +1 -0
- package/dist/cli/produce/evidence-oracle.d.mts +63 -0
- package/dist/cli/produce/evidence-oracle.d.mts.map +1 -0
- package/dist/cli/produce/evidence-oracle.mjs +122 -0
- package/dist/cli/produce/evidence-oracle.mjs.map +1 -0
- package/dist/cli/produce/ledger.d.mts +140 -0
- package/dist/cli/produce/ledger.d.mts.map +1 -0
- package/dist/cli/produce/ledger.mjs +272 -0
- package/dist/cli/produce/ledger.mjs.map +1 -0
- package/dist/cli/produce/probe-family.d.mts +53 -0
- package/dist/cli/produce/probe-family.d.mts.map +1 -0
- package/dist/cli/produce/probe-family.mjs +160 -0
- package/dist/cli/produce/probe-family.mjs.map +1 -0
- package/dist/cli/produce/projection.d.mts +55 -0
- package/dist/cli/produce/projection.d.mts.map +1 -0
- package/dist/cli/produce/projection.mjs +97 -0
- package/dist/cli/produce/projection.mjs.map +1 -0
- package/dist/cli/produce/run-id.d.mts +42 -0
- package/dist/cli/produce/run-id.d.mts.map +1 -0
- package/dist/cli/produce/run-id.mjs +79 -0
- package/dist/cli/produce/run-id.mjs.map +1 -0
- package/dist/cli/produce/saga.d.mts +180 -0
- package/dist/cli/produce/saga.d.mts.map +1 -0
- package/dist/cli/produce/saga.mjs +290 -0
- package/dist/cli/produce/saga.mjs.map +1 -0
- package/dist/cli/produce/scheduler.d.mts +165 -0
- package/dist/cli/produce/scheduler.d.mts.map +1 -0
- package/dist/cli/produce/scheduler.mjs +399 -0
- package/dist/cli/produce/scheduler.mjs.map +1 -0
- package/dist/cli/produce/setpoint.d.mts +52 -0
- package/dist/cli/produce/setpoint.d.mts.map +1 -0
- package/dist/cli/produce/setpoint.mjs +113 -0
- package/dist/cli/produce/setpoint.mjs.map +1 -0
- package/dist/cli/produce/verification-ttl.d.mts +75 -0
- package/dist/cli/produce/verification-ttl.d.mts.map +1 -0
- package/dist/cli/produce/verification-ttl.mjs +169 -0
- package/dist/cli/produce/verification-ttl.mjs.map +1 -0
- package/dist/cli/release-notes/ship-autodraft.mjs +2 -2
- package/dist/cli/roadmap/{conductor-view.d.mts → showrunner-view.d.mts} +3 -3
- package/dist/cli/roadmap/showrunner-view.d.mts.map +1 -0
- package/dist/cli/roadmap/{conductor-view.mjs → showrunner-view.mjs} +7 -7
- package/dist/cli/roadmap/showrunner-view.mjs.map +1 -0
- package/dist/cli/variant/gallery.d.mts.map +1 -1
- package/dist/cli/variant/gallery.mjs +7 -3
- package/dist/cli/variant/gallery.mjs.map +1 -1
- package/dist/plugin/.claude-plugin/plugin.json +2 -1
- package/dist/plugin/agents/apt-executor.md +6 -0
- package/dist/plugin/agents/apt-planner.md +3 -2
- package/dist/plugin/skills/apt/SKILL.md +112 -38
- package/dist/plugin/skills/apt-close-task/SKILL.md +2 -2
- package/dist/plugin/skills/apt-debug/SKILL.md +22 -24
- package/dist/plugin/skills/apt-execute/SKILL.md +35 -26
- package/dist/plugin/skills/apt-fan-out/SKILL.md +4 -4
- package/dist/plugin/skills/apt-handoff/SKILL.md +1 -1
- package/dist/plugin/skills/apt-mockup/SKILL.md +1 -1
- package/dist/plugin/skills/apt-plan/SKILL.md +5 -5
- package/dist/plugin/skills/apt-plan/adapters/{conductor.md → showrunner.md} +16 -16
- package/dist/plugin/skills/apt-produce/SKILL.md +606 -0
- package/dist/plugin/skills/apt-quick/SKILL.md +27 -33
- package/dist/plugin/skills/apt-review/SKILL.md +14 -11
- package/dist/plugin/skills/apt-run/SKILL.md +132 -3
- package/dist/plugin/skills/apt-ship/SKILL.md +29 -5
- package/dist/plugin/skills/apt-spar/SKILL.md +5 -3
- package/dist/plugin/skills/apt-watch-ci/SKILL.md +6 -4
- package/dist/schemas/feature-registry.d.ts.map +1 -1
- package/dist/schemas/feature-registry.js +34 -3
- package/dist/schemas/feature-registry.js.map +1 -1
- package/dist/types/config.d.ts +8 -5
- package/dist/types/config.d.ts.map +1 -1
- package/package.json +4 -4
- package/prompts/{conductor-framework-context.md → showrunner-framework-context.md} +1 -1
- package/prompts/{conductor-status-check.md → showrunner-status-check.md} +1 -1
- package/prompts/{conductor-sub-agent.md → showrunner-sub-agent.md} +6 -6
- package/prompts/{conductor-system.md → showrunner-system.md} +8 -8
- package/skills/apt/SKILL.md +112 -38
- package/skills/apt-close-task/SKILL.md +2 -2
- package/skills/apt-debug/SKILL.md +22 -24
- package/skills/apt-execute/SKILL.md +35 -26
- package/skills/apt-fan-out/SKILL.md +4 -4
- package/skills/apt-handoff/SKILL.md +1 -1
- package/skills/apt-mockup/SKILL.md +1 -1
- package/skills/apt-plan/SKILL.md +5 -5
- package/skills/apt-plan/adapters/{conductor.md → showrunner.md} +16 -16
- package/skills/apt-produce/SKILL.md +606 -0
- package/skills/apt-quick/SKILL.md +27 -33
- package/skills/apt-review/SKILL.md +14 -11
- package/skills/apt-run/SKILL.md +132 -3
- package/skills/apt-ship/SKILL.md +29 -5
- package/skills/apt-spar/SKILL.md +5 -3
- package/skills/apt-watch-ci/SKILL.md +6 -4
- package/src/cli/artifacts/self-stage.mjs +2 -1
- package/src/cli/cli-wrappers/features-reconcile.mjs +9 -0
- package/src/cli/commands/ci-watch.mjs +51 -2
- package/src/cli/commands/commit.mjs +3 -3
- package/src/cli/commands/event.mjs +16 -16
- package/src/cli/commands/features-reconcile.mjs +157 -0
- package/src/cli/commands/health-check.mjs +2 -2
- package/src/cli/commands/merge-integrate.mjs +3 -3
- package/src/cli/commands/produce.mjs +1466 -0
- package/src/cli/commands/task.mjs +482 -285
- package/src/cli/coordination/auto-emit-artifact-ready.mjs +5 -5
- package/src/cli/coordination/event-schema.d.ts +4 -2
- package/src/cli/coordination/event-schema.mjs +276 -21
- package/src/cli/coordination/store.mjs +4 -4
- package/src/cli/dispatch.mjs +4 -2
- package/src/cli/features/area-shape.mjs +140 -0
- package/src/cli/features/delta.mjs +625 -0
- package/src/cli/features/reconcile.mjs +1169 -0
- package/src/cli/features/surface-map.mjs +192 -0
- package/src/cli/features/write-root.mjs +140 -0
- package/src/cli/gate/gates/features-reconciled.mjs +70 -0
- package/src/cli/gate/gates/index.mjs +1 -0
- package/src/cli/help.mjs +31 -1
- package/src/cli/install/legacy-paths.mjs +2 -0
- package/src/cli/produce/blind-probe.mjs +245 -0
- package/src/cli/produce/claim.mjs +543 -0
- package/src/cli/produce/done-gate.mjs +238 -0
- package/src/cli/produce/events.mjs +131 -0
- package/src/cli/produce/evidence-oracle.mjs +133 -0
- package/src/cli/produce/ledger.mjs +284 -0
- package/src/cli/produce/probe-family.mjs +168 -0
- package/src/cli/produce/projection.mjs +105 -0
- package/src/cli/produce/run-id.mjs +84 -0
- package/src/cli/produce/saga.mjs +303 -0
- package/src/cli/produce/scheduler.mjs +423 -0
- package/src/cli/produce/setpoint.mjs +122 -0
- package/src/cli/produce/verification-ttl.mjs +191 -0
- package/src/cli/release-notes/ship-autodraft.mjs +2 -2
- package/src/cli/roadmap/showrunner-view.d.ts +10 -0
- package/src/cli/roadmap/{conductor-view.mjs → showrunner-view.mjs} +6 -6
- package/src/cli/variant/gallery.mjs +7 -3
- package/templates/aperant-claude-md-appendix.md +2 -2
- package/workflows/scan-features.md +17 -11
- package/dist/cli/cli-wrappers/features-audit.d.mts +0 -2
- package/dist/cli/cli-wrappers/features-audit.d.mts.map +0 -1
- package/dist/cli/cli-wrappers/features-audit.mjs +0 -8
- package/dist/cli/cli-wrappers/features-audit.mjs.map +0 -1
- package/dist/cli/commands/features-audit.d.mts.map +0 -1
- package/dist/cli/commands/features-audit.mjs +0 -293
- package/dist/cli/commands/features-audit.mjs.map +0 -1
- package/dist/cli/features/registry-audit.d.mts +0 -56
- package/dist/cli/features/registry-audit.d.mts.map +0 -1
- package/dist/cli/features/registry-audit.mjs +0 -264
- package/dist/cli/features/registry-audit.mjs.map +0 -1
- package/dist/cli/roadmap/conductor-view.d.mts.map +0 -1
- package/dist/cli/roadmap/conductor-view.mjs.map +0 -1
- package/src/cli/cli-wrappers/features-audit.mjs +0 -8
- package/src/cli/commands/features-audit.mjs +0 -302
- package/src/cli/features/registry-audit.mjs +0 -254
- package/src/cli/roadmap/conductor-view.d.ts +0 -10
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/types/config.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aperant/framework",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.20.0",
|
|
4
4
|
"description": "AI coding framework — composable skills for planning, executing, verifying, and reviewing code with any LLM provider. Works as Claude Code commands, Codex tasks, or programmatically.",
|
|
5
5
|
"author": "Mikalsen AI <hello@mikalsen.ai>",
|
|
6
6
|
"type": "module",
|
|
@@ -44,9 +44,9 @@
|
|
|
44
44
|
"types": "./src/cli/coordination/event-schema.d.ts",
|
|
45
45
|
"import": "./src/cli/coordination/event-schema.mjs"
|
|
46
46
|
},
|
|
47
|
-
"./roadmap/
|
|
48
|
-
"types": "./src/cli/roadmap/
|
|
49
|
-
"import": "./src/cli/roadmap/
|
|
47
|
+
"./roadmap/showrunner-view": {
|
|
48
|
+
"types": "./src/cli/roadmap/showrunner-view.d.ts",
|
|
49
|
+
"import": "./src/cli/roadmap/showrunner-view.mjs"
|
|
50
50
|
},
|
|
51
51
|
"./design/scan": {
|
|
52
52
|
"import": "./src/cli/design/scan.mjs"
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Showrunner — Tap-on-Shoulder Status Check Template
|
|
2
2
|
|
|
3
3
|
> NOTE: Phase 1 does not inject this prompt. It is the canonical template that Phase 3's tap-on-shoulder protocol will consume. The `{request_id}` substitution is the only dynamic value.
|
|
4
4
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Showrunner Sub-Agent — Reviewer System Prompt
|
|
2
2
|
|
|
3
|
-
You are a **
|
|
3
|
+
You are a **showrunner sub-agent reviewer**: a single-pass parallel reviewer spawned by the Showrunner's sub-agent queue (via the sparring engine) to evaluate a fleet event and recommend whether the Showrunner should log an intent.
|
|
4
4
|
|
|
5
5
|
## Identity
|
|
6
6
|
|
|
7
7
|
- You run on a **frontier model** (Anthropic Opus 4.7 1M, OpenAI GPT-5.4/5.5 frontier, Google Gemini latest frontier). Cheap-model fallback is forbidden.
|
|
8
|
-
- You have **no project filesystem access**. You do not call Read, Glob, or Grep. You see only the event payload, the prior context the
|
|
8
|
+
- You have **no project filesystem access**. You do not call Read, Glob, or Grep. You see only the event payload, the prior context the Showrunner handed you, and the cross-check tool.
|
|
9
9
|
- You return a structured `findings` blob (severity / title / body / ref) — the same shape the sparring engine's lens reviewers return.
|
|
10
10
|
|
|
11
11
|
## Your one tool: `crossCheck`
|
|
@@ -20,7 +20,7 @@ If your evaluation depends on an agent's self-reported claim ("I finished the sp
|
|
|
20
20
|
|
|
21
21
|
## What to evaluate
|
|
22
22
|
|
|
23
|
-
The
|
|
23
|
+
The Showrunner hands you:
|
|
24
24
|
|
|
25
25
|
- The triggering event (e.g. `phase.changed{ to: 'idle' }`, `artifact.ready`, `budget.exceeded`).
|
|
26
26
|
- The enrolled terminal's tier (A / B / C) and current autonomy setting.
|
|
@@ -29,8 +29,8 @@ The Conductor hands you:
|
|
|
29
29
|
Recommend one of:
|
|
30
30
|
|
|
31
31
|
1. **No-op** — the event is routine; no intent needed. (severity: `low`, title: `routine event`)
|
|
32
|
-
2. **Suggest** — the
|
|
33
|
-
3. **Escalate** — the event signals an error / blocked state / security concern. The
|
|
32
|
+
2. **Suggest** — the Showrunner should log an intent suggesting a follow-up action. Include the action and reasoning. (severity: `medium`, title: `<suggested action>`)
|
|
33
|
+
3. **Escalate** — the event signals an error / blocked state / security concern. The Showrunner should surface this prominently. (severity: `high`, title: `<concern>`)
|
|
34
34
|
4. **Cross-check failed** — you called `crossCheck` and the claim did not verify. (severity: `high`, title: `cross-check failed: <claim>`)
|
|
35
35
|
|
|
36
36
|
## Output shape
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Showrunner — Master Orchestrator
|
|
2
2
|
|
|
3
3
|
You orchestrate up to 12 parallel agent terminals. You do not write code.
|
|
4
4
|
You think a lot. You output little. You replace human babysitting.
|
|
@@ -41,7 +41,7 @@ For each task you take responsibility for, drive ALL phases yourself:
|
|
|
41
41
|
- known architecture (use `getRoadmap`, `getTaskState`)
|
|
42
42
|
4. Decide:
|
|
43
43
|
- **Approve** → `sendToTerminal('/apt:execute\r')` to that terminal
|
|
44
|
-
- **Realign** → `sendToTerminal('[
|
|
44
|
+
- **Realign** → `sendToTerminal('[Showrunner realignment] <terse note>\r')`.
|
|
45
45
|
Wait for fresh `artifact.ready`. Re-review. Loop up to 3 attempts.
|
|
46
46
|
After 3, escalate (respawn or surface to human).
|
|
47
47
|
- **Reject** → `sendToTerminal('abort\r')`; spawn replacement if task
|
|
@@ -65,14 +65,14 @@ Run multiple terminals in parallel. Track each by terminal_id.
|
|
|
65
65
|
You are the only thing standing between agents and silent failure. Catch:
|
|
66
66
|
|
|
67
67
|
- **Idle**: terminal `phase.changed{to:'idle'}` with no fresh artifact
|
|
68
|
-
for > 5 min after a /apt:* dispatch. Poll: `sendToTerminal('[
|
|
68
|
+
for > 5 min after a /apt:* dispatch. Poll: `sendToTerminal('[showrunner]
|
|
69
69
|
status: phase? blocker?\r')`. If still idle after another 5 min,
|
|
70
70
|
escalate (realign with explicit next step, or respawn).
|
|
71
71
|
- **Slacking**: agent reports completion but artifacts don't exist on
|
|
72
72
|
disk OR don't match the spec. Use `crossCheck` + `reviewPlan` to verify.
|
|
73
73
|
Never trust self-reports.
|
|
74
74
|
- **Looping**: same `phase.changed` toggling > 6 times in 10 min. Send
|
|
75
|
-
`[
|
|
75
|
+
`[Showrunner realignment] You are looping. State the blocker and stop.\r`
|
|
76
76
|
- **Cost runaway**: a terminal's `budget.exceeded` event arrives. Halt
|
|
77
77
|
that terminal with `sendToTerminal('exit\r')` after persisting state.
|
|
78
78
|
|
|
@@ -108,7 +108,7 @@ Write (use when needed, no human approval gating):
|
|
|
108
108
|
|
|
109
109
|
## Framework knowledge
|
|
110
110
|
|
|
111
|
-
The auto-injected `
|
|
111
|
+
The auto-injected `showrunner-framework-context` block at the very top of
|
|
112
112
|
this system prompt lists every `/apt:*` skill you can dispatch into a
|
|
113
113
|
sub-terminal. Consult it BEFORE deciding which skill to send.
|
|
114
114
|
|
|
@@ -144,13 +144,13 @@ enforces required fields per op (see `coordination/event-schema.mjs`).
|
|
|
144
144
|
Locked op set:
|
|
145
145
|
`terminal.enrolled` `terminal.unenrolled` `phase.changed` `awaiting-input`
|
|
146
146
|
`input-rescinded` `artifact.ready` `heartbeat` `budget.exceeded`
|
|
147
|
-
`
|
|
147
|
+
`showrunner.intent` `showrunner.cross_check` `showrunner.realignment`
|
|
148
148
|
|
|
149
149
|
Reserved meanings:
|
|
150
150
|
- `phase.changed.to` ∈ {busy, idle} ONLY (PTY state). NEVER use for plan
|
|
151
151
|
completion.
|
|
152
152
|
- `artifact.ready{kind:'plan'}` IS the plan-completion signal. Auto-
|
|
153
|
-
emitted by `apt-tools commit` when planner runs under a
|
|
153
|
+
emitted by `apt-tools commit` when planner runs under a Showrunner PTY
|
|
154
154
|
(`APERANT_TERMINAL_ID` set).
|
|
155
155
|
|
|
156
156
|
Every action you take appends an audit envelope. The framework writes
|
|
@@ -177,7 +177,7 @@ The chat thread is a control surface, not a journal.
|
|
|
177
177
|
|
|
178
178
|
On first turn in a NEW thread (no prior assistant messages), one line:
|
|
179
179
|
|
|
180
|
-
`
|
|
180
|
+
`Showrunner ready. Goal?`
|
|
181
181
|
|
|
182
182
|
Nothing else. No greeting paragraph. No tool list. The user knows what
|
|
183
183
|
you are.
|
package/skills/apt/SKILL.md
CHANGED
|
@@ -17,7 +17,7 @@ execution_modes:
|
|
|
17
17
|
- plan-mode
|
|
18
18
|
- plan-only
|
|
19
19
|
- research
|
|
20
|
-
allowed-tools: "Bash, Read, Grep, Glob,
|
|
20
|
+
allowed-tools: "Bash, Read, Grep, Glob, Task"
|
|
21
21
|
argument-hint: "[free-text task or /apt <skill> …]"
|
|
22
22
|
gates: []
|
|
23
23
|
---
|
|
@@ -234,12 +234,19 @@ Resolve the track, then create a fresh task record before invoking the skill.
|
|
|
234
234
|
- `plan` → `STANDARD`
|
|
235
235
|
- everything else with `task_context: create-new` → `STANDARD`
|
|
236
236
|
|
|
237
|
-
Then run:
|
|
237
|
+
Then run the deterministic allocator (NOT raw `task create`):
|
|
238
238
|
|
|
239
239
|
```bash
|
|
240
|
-
node packages/framework/bin/apt-tools.mjs task
|
|
240
|
+
node packages/framework/bin/apt-tools.mjs task ensure . --description "{slug}" --intent create-new --track {track} --autonomy {autonomy} [--scope {scope}]
|
|
241
241
|
```
|
|
242
242
|
|
|
243
|
+
`task ensure --intent create-new` is idempotent (re-running the same
|
|
244
|
+
input returns the SAME task + worktree, `reused: true`) and resolves the
|
|
245
|
+
effective autonomy from `config.autonomy.default` BEFORE provisioning the
|
|
246
|
+
worktree — so allocation is host-agnostic and never depends on this prose
|
|
247
|
+
being followed. The `allocation_intent` here is `create-new` because the
|
|
248
|
+
skill's `task_context` is `create-new` (the four-value taxonomy maps 1:1).
|
|
249
|
+
|
|
243
250
|
**Security note:** Do NOT interpolate `{skill_args}` directly into `--description "..."`. `skill_args` is verbatim user input and can contain double-quote characters that break out of the argument boundary and inject extra flags (e.g. `--autonomy`, `--scope`). The task slug is sufficient as the description; `skill_args` is passed to the skill separately after the task record is created.
|
|
244
251
|
|
|
245
252
|
(Use `--scope framework` only when the user is on a framework-scoped task —
|
|
@@ -300,29 +307,41 @@ The router emitted a `classify` envelope. This is the main routing path —
|
|
|
300
307
|
all free-text input and every flag-override (--quick/--deep/--debug) lands
|
|
301
308
|
here.
|
|
302
309
|
|
|
303
|
-
###
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
325
|
-
|
|
310
|
+
### allocation_intent — the single LLM bit (decide FIRST, before picking a skill)
|
|
311
|
+
|
|
312
|
+
The ONLY allocation judgment you make on the free-text path is a single
|
|
313
|
+
schema-bounded `allocation_intent ∈ {create-new | require-existing |
|
|
314
|
+
self-managed | none}` (the SAME four-value taxonomy as skill `task_context`).
|
|
315
|
+
**Fail-closed default is `none`** — when in doubt, allocate nothing. There is
|
|
316
|
+
no separate prose-only brainstorm gate that can bypass allocation; the
|
|
317
|
+
brainstorm decision is just the `none` outcome of this one judgment.
|
|
318
|
+
|
|
319
|
+
Map the user's input to one bit:
|
|
320
|
+
|
|
321
|
+
- **`none`** — vision / exploration / investigation / status / help. The user
|
|
322
|
+
wants to *explore a vision* or *ask a question*, not commit to a work item.
|
|
323
|
+
Allocate NOTHING (no task, no worktree) and dispatch to `apt:discuss
|
|
324
|
+
--brainstorm` (or the picked investigative skill). Signals — any one →
|
|
325
|
+
`none`:
|
|
326
|
+
- Vision statements: *"here's what I want to build"*, *"my goal is..."*, *"the idea is..."*
|
|
327
|
+
- Open invitations: *"let's think about"*, *"let's brainstorm"*, *"help me figure out"*, *"what's the best way..."*
|
|
328
|
+
- Paragraph-shaped input describing an outcome or direction, not a single work item
|
|
329
|
+
- Explicit "before we plan, let's explore / think / brainstorm..."
|
|
330
|
+
|
|
331
|
+
How to hand off:
|
|
332
|
+
```
|
|
333
|
+
[APT] allocation_intent=none (brainstorm/investigation) — routing to /apt:discuss --brainstorm
|
|
334
|
+
```
|
|
335
|
+
Then invoke `/apt:discuss --brainstorm` with the user's input and stop.
|
|
336
|
+
|
|
337
|
+
- **`self-managed`** — the picked skill owns its own task/worktree lifecycle
|
|
338
|
+
(e.g. `apt:run`, `apt:pr-review`). Allocate nothing here; let the skill do it.
|
|
339
|
+
- **`require-existing`** — the user is continuing an existing task. Do NOT mint;
|
|
340
|
+
resolve the active task (Step 2 uses `task ensure --intent require-existing`).
|
|
341
|
+
- **`create-new`** — concrete work item / specific deliverable that needs a
|
|
342
|
+
fresh task + worktree. Examples: *"add OAuth login"*, *"fix the view-tracking
|
|
343
|
+
bug"*, *"migrate reports to JSONB"*. Continue to Step 0; Step 2 provisions
|
|
344
|
+
deterministically via `task ensure --intent create-new`.
|
|
326
345
|
|
|
327
346
|
### Step 0a: Flag-override fast path (envelope.track is set)
|
|
328
347
|
|
|
@@ -332,6 +351,15 @@ carries `track`, `primary_skill`, `spawn_agent`, `agent`, and `options`.
|
|
|
332
351
|
**Skip Step 0b and Step 0c — go straight to Step 1.** These were locked
|
|
333
352
|
by the user typing `--quick` / `--deep` / `--debug`, not by the host LLM.
|
|
334
353
|
|
|
354
|
+
**allocation_intent (flag-override is deterministic — no LLM judgment):**
|
|
355
|
+
map `primary_skill` → `allocation_intent`:
|
|
356
|
+
- `quick` → `create-new`
|
|
357
|
+
- `debug` → `create-new`
|
|
358
|
+
- `plan` → `create-new` (STANDARD / DEEP)
|
|
359
|
+
- a skill whose `task_context` is `self-managed` (e.g. `run`) → `self-managed`
|
|
360
|
+
|
|
361
|
+
Step 2 forwards this bit to `task ensure --intent <bit>`.
|
|
362
|
+
|
|
335
363
|
### Step 0b: Classify the skill (envelope.skills[] inline pick)
|
|
336
364
|
|
|
337
365
|
When `classification.source: "host-model-deferred"` (free-text path),
|
|
@@ -405,15 +433,31 @@ Map choice: full auto → `execution_mode = "auto"`, step by step → `"step"`,
|
|
|
405
433
|
|
|
406
434
|
If `needs_autonomy_prompt` is false (user passed --yolo/--autonomous), skip this — use `execution_mode` from route result.
|
|
407
435
|
|
|
408
|
-
### Step 2: Register Task
|
|
436
|
+
### Step 2: Register Task (deterministic allocation)
|
|
437
|
+
|
|
438
|
+
Forward the `allocation_intent` decided above (Step 0a flag-override map,
|
|
439
|
+
or the free-text bit from the allocation_intent section) to the
|
|
440
|
+
deterministic, idempotent allocator — NOT raw `task create`:
|
|
409
441
|
|
|
410
442
|
```bash
|
|
411
|
-
node packages/framework/bin/apt-tools.mjs task
|
|
443
|
+
node packages/framework/bin/apt-tools.mjs task ensure . --description "{task_description}" --intent {allocation_intent} --track {track} --autonomy {autonomy}
|
|
412
444
|
```
|
|
413
445
|
|
|
446
|
+
- `--intent create-new` provisions a fresh task + worktree, idempotent on
|
|
447
|
+
re-run (`reused: true` returns the SAME task/worktree — re-issuing `/apt`
|
|
448
|
+
never duplicates). Effective autonomy is resolved from
|
|
449
|
+
`config.autonomy.default` BEFORE the worktree hook, so a
|
|
450
|
+
`from_branch: current` base is not spuriously deferred.
|
|
451
|
+
- `--intent require-existing` resolves the active task WITHOUT minting
|
|
452
|
+
(returns `requires_input` on ambiguity — fall back to the
|
|
453
|
+
skill-passthrough resolution chain prompt).
|
|
454
|
+
- `--intent none` / `--intent self-managed` allocate nothing
|
|
455
|
+
(`allocated: false`) — you should already have dispatched per the
|
|
456
|
+
allocation_intent section above and not reached Step 2.
|
|
457
|
+
|
|
414
458
|
Parse `task_id`, `task_dir`, and (if present) `worktree.worktree_path` / `worktree.branch` / `worktree.base_branch` from the result.
|
|
415
459
|
|
|
416
|
-
**Task-level worktree isolation:** when `task_isolation.worktree_per_task` is enabled (check via `host_capabilities.worktrees` + `task_isolation` in the route result) and `task
|
|
460
|
+
**Task-level worktree isolation:** when `task_isolation.worktree_per_task` is enabled (check via `host_capabilities.worktrees` + `task_isolation` in the route result) and `task ensure` returns a `worktree` block, every subsequent Bash call AND every spawned agent in this pipeline MUST use `worktree_path` as its working directory. Print:
|
|
417
461
|
|
|
418
462
|
```
|
|
419
463
|
[APT] Working in isolated worktree: {worktree_path}
|
|
@@ -424,7 +468,7 @@ Important nuances:
|
|
|
424
468
|
- `task_dir` is an **absolute path** under the main repo's `.aperant/tasks/{task-id}/`. All spec/plan/progress artifacts live there and are shared across worktrees.
|
|
425
469
|
- `apt-tools` commands still receive the **project root** as `<project-dir>` — they coordinate state through the main repo's `.aperant/`. The worktree only affects *code editing* cwd.
|
|
426
470
|
- When spawning an agent, set its `cwd` (or prefix its Bash calls with `cd {worktree_path} &&`) to the worktree for code reads/edits. Pass `worktree_path` in the agent's context so it knows where code work happens.
|
|
427
|
-
- Planner artifact safety: do **not** spawn `apt-planner` with host-level worktree isolation that gives it a separate copied repo. The planner must write `spec.md` and `implementation_plan.json` to the absolute main-repo `task_dir` from `task
|
|
471
|
+
- Planner artifact safety: do **not** spawn `apt-planner` with host-level worktree isolation that gives it a separate copied repo. The planner must write `spec.md` and `implementation_plan.json` to the absolute main-repo `task_dir` from `task ensure`; `.aperant/tasks/**` is gitignored, so artifacts written under a disposable worktree can be invisible to git and lost when that worktree is cleaned.
|
|
428
472
|
- If no `worktree` block is returned, proceed in the project root as before.
|
|
429
473
|
|
|
430
474
|
### Step 3: Spawn Planner Agent
|
|
@@ -482,14 +526,44 @@ tally output. Skip silently if tokens tally errors — never block the
|
|
|
482
526
|
pipeline on telemetry.
|
|
483
527
|
|
|
484
528
|
**If `spawn_agent` is false (QUICK or DEBUG):**
|
|
485
|
-
Both QUICK and DEBUG resolve here (single-shot, no spawned phase agent).
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
529
|
+
Both QUICK and DEBUG resolve here (single-shot, no spawned phase agent).
|
|
530
|
+
|
|
531
|
+
**The router itself CANNOT edit code.** Its frontmatter `allowed-tools` is
|
|
532
|
+
`Bash, Read, Grep, Glob, Task` — it has NO `Write` / `Edit` tool. This is the
|
|
533
|
+
load-bearing boundary (ID-05): the router can classify, allocate
|
|
534
|
+
(`task ensure`), and dispatch, but it can never edit a file on `main`.
|
|
535
|
+
|
|
536
|
+
So do NOT edit inline. **INVOKE the `apt:quick` / `apt:debug` SKILL** (per
|
|
537
|
+
`primary_skill`) AFTER Step 2's `task ensure --intent create-new` has
|
|
538
|
+
provisioned the worktree. Invoking the skill establishes that skill's OWN
|
|
539
|
+
`allowed-tools` scope (`apt-quick` / `apt-debug` both carry
|
|
540
|
+
`Read, Write, Edit, Bash, Grep, Glob`), which RE-GRANTS the edit affordance —
|
|
541
|
+
but only once a worktree exists, so editing can never land on `main` through
|
|
542
|
+
the router. Pass `task_id`, `task_dir`, AND `worktree_path` into the invoked
|
|
543
|
+
skill's context (thread `worktree_path` the same way the `spawn_agent: true`
|
|
544
|
+
branch threads it into the planner). This is a SKILL invocation, NOT a `Task`
|
|
545
|
+
sub-agent spawn — QUICK/DEBUG stay single-agent/single-context, so the Fast
|
|
546
|
+
Path Guarantee is preserved. No phase marker. (If Step 2 returned no `worktree`
|
|
547
|
+
block, pass `worktree_path` as "none" and the skill proceeds in the project
|
|
548
|
+
root.)
|
|
549
|
+
|
|
550
|
+
> **inline vs skill-scope (read this).** "Inline" here means the OLD behavior:
|
|
551
|
+
> the router editing within its own `/apt` turn under the router's allowlist.
|
|
552
|
+
> That is gone — the router has no edit tool. "Skill-scope" is the NEW
|
|
553
|
+
> behavior: a genuine `apt:quick` / `apt:debug` invocation whose own
|
|
554
|
+
> `allowed-tools` re-grants `Write, Edit` for the edit work, after the worktree
|
|
555
|
+
> exists.
|
|
556
|
+
>
|
|
557
|
+
> **Residual (host-runtime, not CI-provable — founder smoke-test gate).**
|
|
558
|
+
> Whether Claude Code treats a nested skill's `allowed-tools` as a REPLACEMENT
|
|
559
|
+
> (re-grants edit — design holds) or as an INTERSECTION/ceiling (the parent
|
|
560
|
+
> router allowlist caps the child — Fast Path breaks) is a host-implementation
|
|
561
|
+
> property that cannot be unit-tested from the framework. CI proves the
|
|
562
|
+
> frontmatter/prose structure; a founder in-app smoke-test is the residual gate.
|
|
563
|
+
> **Fallback if the smoke-test shows breakage:** revert ONLY the
|
|
564
|
+
> router-frontmatter line (re-add `Write, Edit`). The host-agnostic
|
|
565
|
+
> `task ensure` boundary (ID-02) still fixes the on-`main`-edit bug; the
|
|
566
|
+
> allowed-tools removal is hardening, not the fix.
|
|
493
567
|
|
|
494
568
|
### Step 4: Chain Pipeline (based on selected option)
|
|
495
569
|
|
|
@@ -185,7 +185,7 @@ Flags:
|
|
|
185
185
|
Per ledger entry `{ task_id, scope, phase_id, closed_at, pr_number }`:
|
|
186
186
|
|
|
187
187
|
0. **Enumerate the ledger first.** Run `apt-tools task close-merged . --narrate-only [--task <id>]`. The envelope's `closed[]` is the read-only list of pending narration rows (each carries `narration_pending: true`); state.json is not mutated. When `closed[]` is empty, exit early with `{status: 'ok', narrated: [], skipped: [], remaining: 0}` — there is nothing to drain.
|
|
188
|
-
1. Run `apt-tools features-
|
|
188
|
+
1. Run `apt-tools features-reconcile . --gc` to prune feature-registry receipts that are merged to origin/main and older than 30 days. Receipt GC is close-task's ONLY registry role — the registry WRITE happened at ship time (`/apt:ship` §0.0 materialize), so there is no post-merge registry write to drift main. If the subprocess exits non-zero, skip the entry with `reason: 'features-gc-failed'` — never block narration on registry GC.
|
|
189
189
|
2. When `phase_id` is non-null, spawn `apt-team-docs-narrator` (background, fire-and-forget) using the same shape as §2.5: `subagent_type: apt-team-docs-narrator`, `run_in_background: true`, `description: Narrate shipped phase {phase_id}`, `prompt: Run in phase-ship mode with --phase {phase_id} --scope {scope}.`. When `phase_id` is null, skip the spawn with `reason: 'no-phase-id'` (quick tasks have no phase to narrate).
|
|
190
190
|
3. On successful spawn (or successful no-phase skip), drain the row via `apt-tools task narration-drain . --task <task_id>` which acquires `withFileLock(state.json)` and removes the matching `pending_narration[]` entry. On spawn failure, leave the row in place with `reason: 'narrator-spawn-failed'` so the user can re-invoke.
|
|
191
191
|
|
|
@@ -198,7 +198,7 @@ Emit a summary envelope:
|
|
|
198
198
|
"status": "ok",
|
|
199
199
|
"command": "close-task-narrate-only",
|
|
200
200
|
"narrated": [{ "task_id": "<id>", "phase_id": "<p|null>", "scope": "<s>" }],
|
|
201
|
-
"skipped": [{ "task_id": "<id>", "reason": "no-phase-id|features-
|
|
201
|
+
"skipped": [{ "task_id": "<id>", "reason": "no-phase-id|features-gc-failed|narrator-spawn-failed" }],
|
|
202
202
|
"remaining": <ledger.length>
|
|
203
203
|
}
|
|
204
204
|
```
|
|
@@ -42,7 +42,7 @@ reproduction, so loading this appendix is non-trivial.
|
|
|
42
42
|
- **apt-tools path:** `node packages/framework/bin/apt-tools.mjs` or the locally installed `apt-tools` binary
|
|
43
43
|
- **Constitution:** Read `AGENTS.md` in the project root if it exists
|
|
44
44
|
- **Debug sessions:** `.aperant/debug/{session-id}/DEBUG.md`
|
|
45
|
-
- **Task-level worktree isolation:** A worktree is provisioned at session start by `task
|
|
45
|
+
- **Task-level worktree isolation:** A worktree is provisioned at session start by `task ensure` (track-agnostic — DEBUG gets one too; parsed + banner-announced in §1a) when `task_isolation.worktree_per_task` is enabled. Read-only investigation (Sections 2-3 Observe / Hypothesize — `git log`, `git diff`, Grep, Read) may run from EITHER cwd; they only read. But once code changes begin — Section 4 (Checkpoint), Section 5b (Execute Test — the minimal change), Section 6b (Implement Fix + commit) — run those Bash commands with `cd {worktree_path} &&` so the fix + checkpoint commits land on the worktree's task branch. Use the `worktree_path` the router passed in skill context or that §1a parsed from `task ensure`'s envelope. `apt-tools` calls always take the project root as `<project-dir>`. If no `worktree` block was returned, proceed in the project root as before.
|
|
46
46
|
</your_environment>
|
|
47
47
|
|
|
48
48
|
<state_files>
|
|
@@ -71,35 +71,25 @@ If resuming, read DEBUG.md and skip to the current phase (observe/hypothesize/te
|
|
|
71
71
|
|
|
72
72
|
### 1a. Resolve canonical task id (idempotent — new sessions only)
|
|
73
73
|
|
|
74
|
-
DEBUG now produces a canonical state.active_tasks record so `/apt:ship` can find the task via the lite ship profile once the fix is committed.
|
|
74
|
+
DEBUG now produces a canonical state.active_tasks record so `/apt:ship` can find the task via the lite ship profile once the fix is committed. Idempotency is owned by the deterministic allocator `apt-tools task ensure --intent create-new` (NOT raw `task create`) — re-running returns the SAME task + worktree (`reused: true`), so the old `task get` guard dance is gone.
|
|
75
75
|
|
|
76
76
|
Two invocation paths converge here:
|
|
77
77
|
|
|
78
|
-
- **Router path** (`/apt` → `/apt:debug`): the router has already
|
|
79
|
-
|
|
78
|
+
- **Router path** (`/apt` → `/apt:debug`): the router has already run `task ensure --intent create-new` and injected `task_id` (+ `worktree_path`) into your skill context. Re-affirm idempotently with the same id and adopt `task_id` as `{session-id}`:
|
|
79
|
+
```bash
|
|
80
|
+
apt-tools task ensure . --description "$ARGUMENTS" --intent create-new --track DEBUG --id {task_id}
|
|
81
|
+
```
|
|
82
|
+
The `--id {task_id}` makes ensure resolve to the EXACT record the router just provisioned (`reused: true`) — no second task, no second worktree.
|
|
80
83
|
|
|
81
|
-
|
|
84
|
+
- **Direct path** (`/apt:debug foo`): no `task_id` in context — allocate now:
|
|
85
|
+
```bash
|
|
86
|
+
apt-tools task ensure . --description "$ARGUMENTS" --intent create-new --track DEBUG
|
|
87
|
+
```
|
|
88
|
+
Parse the generated `task_id` from the envelope and adopt it as `{session-id}`. ensure is keyed on the normalized description + scope, so a retry returns the SAME canonical id (replacing the legacy `debug-YYYYMMDD-HHmm` form).
|
|
82
89
|
|
|
83
|
-
|
|
84
|
-
```bash
|
|
85
|
-
apt-tools task get . --id {task_id}
|
|
86
|
-
```
|
|
87
|
-
- If exit 0 AND the returned record has `track === "DEBUG"` → reuse, skip the create call. Adopt `task_id` as `{session-id}`.
|
|
88
|
-
- Else (record missing OR wrong track) → call:
|
|
89
|
-
```bash
|
|
90
|
-
apt-tools task create . --description "$ARGUMENTS" --track DEBUG --id {task_id}
|
|
91
|
-
```
|
|
92
|
-
Adopt the id as `{session-id}`.
|
|
93
|
-
|
|
94
|
-
2. **If no `task_id` in skill context** (direct path):
|
|
95
|
-
```bash
|
|
96
|
-
apt-tools task create . --description "$ARGUMENTS" --track DEBUG
|
|
97
|
-
```
|
|
98
|
-
Parse the generated `task_id` from the envelope and adopt it as `{session-id}`. The canonical id replaces the legacy `debug-YYYYMMDD-HHmm` form.
|
|
90
|
+
The debug working dir at `.aperant/debug/{session-id}/` stays — that working artifact is preserved (per spec §3 R7). The canonical task record at `.aperant/tasks/{task-id}/` is created in parallel by `task ensure`, and both share the same id.
|
|
99
91
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
**Worktree isolation (both paths).** `task create` provisions a worktree when `task_isolation.worktree_per_task` is enabled (track-agnostic — DEBUG gets one too). Parse `worktree.worktree_path`, `worktree.branch`, and `worktree.base_branch` from the `task create` envelope (direct path); on the router path the orchestrator already passed `worktree_path` into your skill context — use that. When a `worktree` block is present, print the banner:
|
|
92
|
+
**Worktree isolation (both paths).** `task ensure --intent create-new` provisions a worktree when `task_isolation.worktree_per_task` is enabled (track-agnostic — DEBUG gets one too). Parse `worktree.worktree_path`, `worktree.branch`, and `worktree.base_branch` from the `task ensure` envelope (direct path); on the router path the orchestrator already passed `worktree_path` into your skill context — use that. When a `worktree` block is present, print the banner:
|
|
103
93
|
|
|
104
94
|
```
|
|
105
95
|
[APT] Working in isolated worktree: {worktree_path}
|
|
@@ -301,6 +291,14 @@ Document the root cause clearly:
|
|
|
301
291
|
cd {worktree_path} && node packages/framework/bin/apt-tools.mjs commit "fix: {concise description of fix}" --files {changed-files}
|
|
302
292
|
```
|
|
303
293
|
|
|
294
|
+
After the commit, emit the registry delta (one non-blocking command):
|
|
295
|
+
|
|
296
|
+
```bash
|
|
297
|
+
node packages/framework/bin/apt-tools.mjs features-reconcile . --draft --task-id {task-id} || true
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
Stage `.aperant/features/deltas/` with the commit; fill any `needs-disposition` field (usually `no-semantic-change` + a one-line reason).
|
|
301
|
+
|
|
304
302
|
### 6c. Update Status
|
|
305
303
|
|
|
306
304
|
```markdown
|
|
@@ -373,38 +373,47 @@ node packages/framework/bin/apt-tools.mjs audit pending-artifacts . --stage
|
|
|
373
373
|
- **`unknown[]` non-empty** → HARD STOP. A path under `.aperant/` is not classified. Treat as a planner gap — the subtask touched state that the contract does not know about. Write the decision to `{task_dir}/execution-decisions.md` (decision class: `classification-gap`), then either extend `packages/framework/src/cli/artifacts/classification.mjs` inline (if the subtask already modifies framework code) or open a follow-up task (if the drift is orthogonal). Do NOT proceed to the next subtask until the envelope returns `clean`.
|
|
374
374
|
- **Envelope status == `clean`** → proceed to 3e-features.
|
|
375
375
|
|
|
376
|
-
### 3e-features.
|
|
376
|
+
### 3e-features. Feature-Registry Delta Emit
|
|
377
377
|
|
|
378
|
-
After the subtask commits,
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
executor commits introduce a new feature surface without registering it.
|
|
378
|
+
After the subtask commits, emit this subtask's registry DELTA — semantic
|
|
379
|
+
capture happens HERE, while the build context is still in your window.
|
|
380
|
+
`/apt:ship` §0.0 materializes all pending deltas into the area JSONs +
|
|
381
|
+
a receipt later; you only record what changed and what it means.
|
|
383
382
|
|
|
384
383
|
```bash
|
|
385
|
-
node packages/framework/bin/apt-tools.mjs features-
|
|
386
|
-
--task-id "$TASK_ID"
|
|
387
|
-
--diff-files "$(git diff --name-only HEAD^ HEAD | tr '\n' ',')" \
|
|
388
|
-
--apply-stubs
|
|
384
|
+
node packages/framework/bin/apt-tools.mjs features-reconcile . \
|
|
385
|
+
--draft --task-id "$TASK_ID" --subtask-id "{subtask.id}"
|
|
389
386
|
```
|
|
390
387
|
|
|
388
|
+
Then ENRICH the scaffold at `.aperant/features/deltas/{task-id}-{subtask.id}.json`:
|
|
389
|
+
|
|
390
|
+
- Fill every `needs-disposition` files[] entry with a real disposition
|
|
391
|
+
(`upsert` | `remove` | `wiring-transition` | `no-semantic-change` — the
|
|
392
|
+
last REQUIRES a one-line `reason`). Added qualifying files MUST register
|
|
393
|
+
(added + no-semantic-change is a validation error).
|
|
394
|
+
- Assign any `area: null` (the hooks/ipc/services junk drawers no longer
|
|
395
|
+
exist — pick the owning product area).
|
|
396
|
+
- Replace draft upsert stubs with real feature groups: `sub_features[]`
|
|
397
|
+
entries carrying `wired` / `handler` / `test_hint` per
|
|
398
|
+
`FeatureRegistrySchema`.
|
|
399
|
+
- A wired-state change is `disposition: "wiring-transition"` plus a
|
|
400
|
+
`patch-sub-feature` operation carrying `expected_from` (the prior
|
|
401
|
+
`wired` value).
|
|
402
|
+
|
|
403
|
+
Stage the delta with the commit:
|
|
404
|
+
`git add .aperant/features/deltas/ && git commit --amend --no-edit`.
|
|
405
|
+
|
|
391
406
|
Notes:
|
|
392
|
-
- `--task-id $TASK_ID` (BUG-025b)
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
|
|
400
|
-
-
|
|
401
|
-
|
|
402
|
-
opted out via `/apt:setup` Batch 7 get a no-op — the command still
|
|
403
|
-
succeeds.
|
|
404
|
-
- Pre-existing flag-drift findings are never emitted here — they're the
|
|
405
|
-
reviewer's job. The post-step is append-only on internal state.
|
|
406
|
-
- If the audit fails (exit code != 0), log the failure and continue; don't
|
|
407
|
-
block subtask completion on a features-registry glitch.
|
|
407
|
+
- `--task-id "$TASK_ID"` (BUG-025b) redirects the delta write to the active
|
|
408
|
+
task's worktree `.aperant/features/deltas/` when you run from the
|
|
409
|
+
main-repo cwd; it is ALSO the per-writer delta filename, so it is always
|
|
410
|
+
required.
|
|
411
|
+
- The write is skipped (`policy-opt-out`) when the user opted
|
|
412
|
+
`.aperant/features/*.json` out of `auto-update` via `/apt:setup` Batch 7.
|
|
413
|
+
- Non-blocking: if the reconcile scaffold fails (exit code != 0), log the
|
|
414
|
+
failure and continue; don't block subtask completion on a registry
|
|
415
|
+
glitch. The ship-time `features-reconciled` gate + the always-on CI
|
|
416
|
+
check catch real gaps.
|
|
408
417
|
|
|
409
418
|
### 3e-gate. Per-Task Review Gate (R7)
|
|
410
419
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: apt:fan-out
|
|
3
|
-
description: "Cross-task fan-out — spawn N apt-executor workers from one
|
|
3
|
+
description: "Cross-task fan-out — spawn N apt-executor workers from one Showrunner terminal, each in its own worktree"
|
|
4
4
|
apt-skill-version: {{APT_VERSION}}
|
|
5
5
|
stage: execute
|
|
6
6
|
intent: x-fan-out
|
|
@@ -19,7 +19,7 @@ argument-hint: "apt:fan-out --tasks <id,id,id> [--phases <m/p,m/p>] [--unblocked
|
|
|
19
19
|
gates: []
|
|
20
20
|
---
|
|
21
21
|
<objective>
|
|
22
|
-
Run N pre-planned Aperant tasks concurrently from one
|
|
22
|
+
Run N pre-planned Aperant tasks concurrently from one Showrunner terminal. This skill is a thin orchestrator over the generalized wave engine (`unit_kind: "task"` path, see ADR-0003) and the existing primitives: `apt-tools worktree create --task`, `apt-tools lock claim`, `apt-tools event append`, and the `parallelization.max_tasks` quota. No daemon, no job queue, no in-skill scheduling. The host CLI's main thread is the Showrunner (ADR-0001); each spawned apt-executor subagent runs in its own worktree (ADR-0002).
|
|
23
23
|
|
|
24
24
|
This is the "I have 16 unblocked tasks in this phase, run them all" surface. It replaces the old workaround of opening 16 sibling terminals manually.
|
|
25
25
|
</objective>
|
|
@@ -160,7 +160,7 @@ call `integrate` with the batch's task list (or `--batch ${batch_id}` to recover
|
|
|
160
160
|
it from the worker rows):
|
|
161
161
|
|
|
162
162
|
```bash
|
|
163
|
-
git -C "$
|
|
163
|
+
git -C "$showrunner_root" fetch origin "$base_branch"
|
|
164
164
|
node packages/framework/bin/apt-tools.mjs merge integrate . --tasks ${task_ids_csv}
|
|
165
165
|
# OR recover the task list from the batch's worker rows:
|
|
166
166
|
node packages/framework/bin/apt-tools.mjs merge integrate . --batch ${batch_id}
|
|
@@ -213,7 +213,7 @@ Mix SHIPPED / BLOCKED / in-flight variants in the same rail. Below the panel, em
|
|
|
213
213
|
|
|
214
214
|
## Design references
|
|
215
215
|
|
|
216
|
-
- **ADR-0001** — Host CLI main thread is the
|
|
216
|
+
- **ADR-0001** — Host CLI main thread is the Showrunner; no daemon, no in-skill queue.
|
|
217
217
|
- **ADR-0002** — One worktree per task; workers run independent feature branches.
|
|
218
218
|
- **ADR-0003** — Wave engine accepts `unit_kind: "task"` so cross-task fan-out reuses the same primitives as intra-task subtask waves.
|
|
219
219
|
|
|
@@ -23,7 +23,7 @@ Compact the current conversation into a HANDOFF document so a different agent
|
|
|
23
23
|
|
|
24
24
|
Writes the handoff to `.aperant/handoffs/{id}/HANDOFF.md` (or `{task_dir}/handoffs/{id}/HANDOFF.md` when inside a routed task) so the artifact lives with the repo, survives across machines, and is discoverable by `/apt:resume` and team-status tooling.
|
|
25
25
|
|
|
26
|
-
**Use when:** an agent decides to transfer the work mid-flight. Examples — sender hit context-budget cap, the next phase needs a different model (e.g. Codex for a heavy refactor), a fan-out
|
|
26
|
+
**Use when:** an agent decides to transfer the work mid-flight. Examples — sender hit context-budget cap, the next phase needs a different model (e.g. Codex for a heavy refactor), a fan-out Showrunner is sharding scope to peers, or a planning agent is handing a locked plan to an executor.
|
|
27
27
|
|
|
28
28
|
**Do NOT use when:**
|
|
29
29
|
- The human operator wants to stop — use `/apt:pause` (it stashes uncommitted work and updates `CONTINUE_INDEX.md`).
|
|
@@ -58,7 +58,7 @@ Text-first design stays in `apt:design`. This skill never edits `DESIGN.md` or `
|
|
|
58
58
|
**Writes:**
|
|
59
59
|
- `{task_dir}/mockups/iteration-NNN.html` — One file per iteration, zero-padded 3-digit (`iteration-001.html`, `iteration-002.html`, ...). Promoted from a picked variant when the first render used `--variants`.
|
|
60
60
|
- `{task_dir}/mockups/iteration-NNN-variant-<letter>.html` — One per variant in a `--variants` run (letters `a..e` for `N=2..5`)
|
|
61
|
-
- `{task_dir}/mockups/iteration-NNN-gallery.html` — Generated by `apt-tools variant-gallery`; iframes the N variants side-by-side with the pick command spelled out.
|
|
61
|
+
- `{task_dir}/mockups/iteration-NNN-gallery.html` — Generated by `apt-tools variant-gallery`; iframes the N variants side-by-side with the pick command spelled out, and each variant card links to its full HTML file (opens in a new tab).
|
|
62
62
|
- `{task_dir}/mockups/iteration-NNN-archive/` — After `--pick <letter>`, the losing variants and the gallery move here (preserved, not deleted, so the user can review what was rejected).
|
|
63
63
|
- `{task_dir}/mockups/mockup_final.html` — On `--accept`, a byte-identical copy of the latest `iteration-NNN.html` so iteration history is preserved.
|
|
64
64
|
- `{task_dir}/mockups/mockup_log.md` — Append-only log: one entry per turn with iteration number, mode, user prompt, and (when relevant) variant style seeds.
|