axstack 0.20.31 → 0.22.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.
Files changed (50) hide show
  1. package/README.md +25 -23
  2. package/bin/axstack.js +17 -5
  3. package/docs/installation.md +104 -51
  4. package/docs/workflows.md +176 -131
  5. package/package.json +3 -3
  6. package/profiles/presets/claude-only.json +23 -23
  7. package/profiles/presets/codex-only.json +10 -10
  8. package/profiles/presets/mixed.json +24 -24
  9. package/skills/axstack/references/automations.md +136 -137
  10. package/skills/axstack/references/autopilot.md +30 -17
  11. package/skills/axstack/references/candidate-publication.md +13 -8
  12. package/skills/axstack/references/contracts.md +13 -12
  13. package/skills/axstack/references/design-lens.md +3 -3
  14. package/skills/axstack/references/diligence.md +3 -1
  15. package/skills/axstack/references/evidence-archive.md +38 -33
  16. package/skills/axstack/references/lifecycle.md +64 -50
  17. package/skills/axstack/references/review-manager-prompt.md +13 -11
  18. package/skills/axstack/references/role-roster.md +12 -2
  19. package/skills/axstack/references/routing.md +33 -25
  20. package/skills/axstack/references/run-record.md +35 -16
  21. package/skills/axstack/references/t3-runtime.md +237 -0
  22. package/skills/axstack/references/test-audit-weekly.md +62 -0
  23. package/skills/axstack/references/test-value.md +120 -0
  24. package/skills/axstack/references/ui-verification.md +5 -1
  25. package/skills/axstack/references/workspace-hygiene.md +102 -156
  26. package/skills/axstack/scripts/pr-digest.js +120 -0
  27. package/skills/axstack/scripts/resolve-models.js +102 -38
  28. package/skills/axstack-align/SKILL.md +19 -56
  29. package/skills/axstack-audit/SKILL.md +12 -3
  30. package/skills/axstack-audit/references/record.md +1 -1
  31. package/skills/axstack-brainstorm/SKILL.md +24 -0
  32. package/skills/axstack-brainstorm/references/arena.md +56 -0
  33. package/skills/axstack-cleanup/SKILL.md +69 -87
  34. package/skills/axstack-debug/SKILL.md +1 -1
  35. package/skills/axstack-explain/SKILL.md +1 -1
  36. package/skills/axstack-explain/references/visual-qa.md +2 -0
  37. package/skills/axstack-implement/SKILL.md +56 -20
  38. package/skills/axstack-improve/SKILL.md +24 -4
  39. package/skills/axstack-relay/SKILL.md +8 -6
  40. package/skills/axstack-research/SKILL.md +11 -4
  41. package/skills/axstack-review/SKILL.md +34 -30
  42. package/skills/axstack-spec/SKILL.md +18 -13
  43. package/skills/axstack-tickets/SKILL.md +7 -8
  44. package/skills/axstack-watch/SKILL.md +97 -27
  45. package/skills/axstack-watch/references/watch-runtime.md +51 -66
  46. package/src/capabilities.js +33 -69
  47. package/src/installer.js +1 -1
  48. package/src/instructions.js +9 -4
  49. package/skills/axstack/references/orca-runtime.md +0 -202
  50. package/skills/axstack/scripts/trust-path.js +0 -123
@@ -1,17 +1,18 @@
1
1
  # Private evidence archive
2
2
 
3
3
  Use this only when local review or coordinator evidence is the last reason a
4
- finished Orca-owned worktree cannot be retired. It archives evidence; it
5
- never decides that a terminal or worktree is safe to remove and never performs
4
+ finished T3-owned worktree cannot be retired. It archives evidence; it
5
+ never decides that a thread or worktree is safe to remove and never performs
6
6
  native cleanup.
7
7
 
8
8
  ## Eligibility
9
9
 
10
- First prove the exact repository, PR or Run/Task, 40-character head SHA, Dispatch,
11
- workspace, terminal incarnation, Orca ownership, descendant settlement,
12
- and liveness from current native state. A manual chat, genuine `user_takeover`,
13
- an active or unknown task terminal, an unsettled descendant, ambiguous
14
- publication, or an unknown file remains protected. Completed non-author
10
+ Follow [T3 runtime](t3-runtime.md). First prove exact projectId, attempt key,
11
+ repository, PR or run/task identity, 40-character head SHA, threadId/runId or
12
+ taskId/childThreadId/childRunId, checkout path, ownership, descendant settlement
13
+ and liveness from current native state. A user-created or user-taken-over thread,
14
+ an active or unknown run, an unsettled descendant, ambiguous publication, or an
15
+ unknown file remains protected. Completed non-author
15
16
  worktrees with dirty source or unpushed commits use the
16
17
  [Workspace hygiene](workspace-hygiene.md) salvage path before removal; this
17
18
  archive helper never treats source changes as evidence-only cleanup.
@@ -24,7 +25,7 @@ continues to block cleanup.
24
25
  ## Archive and verify
25
26
 
26
27
  Choose a configured absolute private archive root outside every disposable
27
- worktree and outside public Orca artifacts. The root must be owned for this
28
+ worktree and outside public artifacts. The root must be owned for this
28
29
  purpose and inaccessible to group/other users. From the installed `axstack`
29
30
  skill directory, run:
30
31
 
@@ -33,12 +34,17 @@ bun scripts/archive-evidence.js \
33
34
  --source-root <absolute-worktree-or-evidence-root> \
34
35
  --archive-root <absolute-private-archive-root> \
35
36
  --repo <owner/repository> --pr <number> --head <40-character-sha> \
36
- --dispatch <exact-dispatch-id> \
37
+ --dispatch <exact-native-run-id> \
37
38
  --file <classified-relative-file> [--file <classified-relative-file> ...]
38
39
  ```
39
40
 
40
41
  For a supervised resource without a PR identity, replace `--pr <number>` with
41
- `--run <exact-run-id> --task <exact-task-id>`. The two identity forms are
42
+ `--run <exact-native-run-id> --task <exact-native-task-or-thread-id>`.
43
+ Pass the delegated childRunId or launched runId to `--dispatch`, never the colon-separated attempt key.
44
+ For non-PR archives use that same native run ID for `--run` and the delegated
45
+ taskId or launched writer threadId for `--task`. Record the full attempt key and
46
+ its native identity mapping in the durable receipt; helper identity labels add
47
+ no runtime. The two identity forms are
42
48
  mutually exclusive; never invent a PR number. Existing PR archives retain their
43
49
  path, manifest bytes, and receipt interface.
44
50
 
@@ -49,26 +55,25 @@ bytes, and emits a JSON receipt containing the archive directory, manifest path,
49
55
  manifest hash, and file count. Repeating the same command verifies the immutable
50
56
  archive and returns the same receipt; it does not overwrite it.
51
57
 
52
- Record the receipt plus the exact repo/PR or Run/Task/head/Dispatch/workspace/terminal
58
+ Record the receipt plus the exact repo/PR or run/task/head/attempt/checkout/thread/run
53
59
  identities in durable lane continuity, then read the continuity and archive
54
60
  manifest back before cleanup. If either readback differs or is unavailable,
55
61
  preserve the worktree.
56
62
 
57
- For a reviewer checkout with another Dispatch's scratch, archive and read back
58
- each Dispatch's complete file set independently. The installed helper's retire
59
- operation may reject another Dispatch's scratch as unclassified dirt. After
60
- full union classification and verified per-Dispatch archives, use
63
+ For a reviewer checkout with another task's scratch, archive and read back
64
+ each task's complete file set independently. The installed helper's retire
65
+ operation may reject another task's scratch as unclassified dirt. After
66
+ full union classification and verified per-task archives, use
61
67
  [axstack-cleanup](../../axstack-cleanup/SKILL.md)'s exact per-prefix dry-run and
62
68
  clean recovery; never force, use a broad target, or treat archive success as
63
69
  removal authority.
64
70
 
65
71
  ## Native retirement
66
72
 
67
- Retire descendants before their parent. For each positively identified unused
68
- setup shell, use the native exact-terminal close operation, then re-list native
69
- state and require exit proof for that exact terminal incarnation. A task
70
- terminal, manual chat, unexpected terminal, failed close, or uncertain exit
71
- remains protected.
73
+ Retire descendants before their parent under [Workspace hygiene](workspace-hygiene.md).
74
+ Require terminal run evidence and read back private receipts before thread archival.
75
+ Use `t3_thread_organize` archive only for an eligible exact thread; metadata
76
+ archival does not remove a Git worktree or authorize evidence deletion.
72
77
 
73
78
  After receipt and continuity readback, invoke the same installed helper with
74
79
  the same identity and complete `--file` set, plus the recorded manifest hash:
@@ -78,7 +83,7 @@ bun scripts/archive-evidence.js \
78
83
  --source-root <absolute-worktree-or-evidence-root> \
79
84
  --archive-root <absolute-private-archive-root> \
80
85
  --repo <owner/repository> --pr <number> --head <40-character-sha> \
81
- --dispatch <exact-dispatch-id> \
86
+ --dispatch <exact-native-run-id> \
82
87
  --file <classified-relative-file> [--file <classified-relative-file> ...] \
83
88
  --operation retire --manifest-hash <recorded-64-character-sha256>
84
89
  ```
@@ -95,7 +100,7 @@ Record the retirement receipt's `removed`, `alreadyAbsent`, and `pending` file
95
100
  sets. A repeat invocation reconciles already absent files without changing the
96
101
  manifest. A partial or failed invocation preserves the archive; resolve its
97
102
  exact hold and retry the same operation until `pending` is empty. The verified
98
- multiple-Dispatch recovery above uses only axstack-cleanup's exact per-prefix
103
+ multiple-task recovery above uses only axstack-cleanup's exact per-prefix
99
104
  path. Never replace either path with a shell loop, broad deletion, force, or a
100
105
  waiver.
101
106
 
@@ -105,14 +110,14 @@ useful-work and publication checks, evidence classification, and removal
105
110
  authority remain driver decisions; archive or retirement success proves none of
106
111
  them.
107
112
 
108
- Before native worktree removal, verify the effective **Archive Script**
109
- provenance. An unknown hook or a required hook whose provenance is not trusted
110
- holds removal. Record its native outcome as exactly `unconfigured`, `passed`,
111
- `failed`, or `unknown`; only `unconfigured` or a trusted `passed` outcome may
112
- advance, while `failed` and `unknown` preserve the resource.
113
-
114
- Only then use the version-matched Orca guide's native worktree cleanup operation
115
- with the exact workspace identity. Never use shell recursive deletion and never
116
- treat archive success as ownership, settlement, exit, or cleanup proof. Record
117
- and verify native absence before advancing continuity; failure or uncertainty
118
- preserves the resource.
113
+ Before archival and exact Git worktree removal, verify any effective removal
114
+ hook provenance.
115
+ An unknown removal hook or a required hook whose provenance is not trusted holds removal; preserve the worktree.
116
+
117
+ After preservation and salvage checks, archive the exact eligible T3 thread
118
+ with `t3_thread_organize`, then remove its exact recorded checkout path using
119
+ `git worktree remove <path>` without force. Verify absence with
120
+ `git worktree list --porcelain`; retire only eligible local-only branches with
121
+ `git branch -d` under workspace hygiene. Never use shell recursive deletion or
122
+ treat archive success as ownership, settlement, liveness or cleanup proof.
123
+ Failure or uncertainty preserves the resource.
@@ -16,7 +16,7 @@ binding state and receipts to exact revisions.
16
16
  Workers launch no recursive teams.
17
17
  - Reviewers: peer = two configured roles with the same brief and isolated first
18
18
  pass; authored = one eligible role from author provenance. Each uses a
19
- separate Orca child worktree and private per-Dispatch evidence folder. Owner and author never review.
19
+ separate driver-made detached checkout and private per-attempt evidence folder. Owner and author never review.
20
20
  - Automation review manager and monitors: see
21
21
  [Review automation health](#review-automation-health).
22
22
  - Auditor (`axstack-auditor`): report-only; never edits, merges, activates, or
@@ -40,18 +40,17 @@ Preparation completion/watch expiry writes a record. Ordinary resume
40
40
  reconciles it, keeps the current owner, and launches no native handoff.
41
41
  Only an explicit user request to transfer ownership enters this branch.
42
42
 
43
- 1. Reconcile the [Run record](run-record.md) with Orca Tasks, Dispatches,
44
- sessions, Git revisions, forge, pending receipts, and timer expiries; live
45
- owners and authoritative Dispatches beat stale state.
46
- 2. Load the [Orca runtime boundary](orca-runtime.md), then follow its
47
- version-matched runtime-owned handoff guidance. Never guess calls, paths,
48
- roles, or fallback models. Guide discovery does not prove capability.
49
- 3. If the native capability is missing, report the exact setup gap and
50
- keep the current owner; no replacement or ownership transfer launches.
51
- Read-only reconciliation may continue.
52
- 4. Record recipient/pending receipt before launch. If uncertain, reconcile the
53
- actual workspace/session before retry and block duplicates.
54
- 5. Launch is not ownership. Record the recipient's explicit acceptance receipt
43
+ 1. Reconcile the [Run record](run-record.md) with T3 threads, runs, Git revisions,
44
+ forge state, pending receipts and scheduled-task expiries; live owners and
45
+ current attempt identities beat stale state.
46
+ 2. Load [T3 runtime](t3-runtime.md) for native resume and transfer. Keep the same
47
+ owner, author, attempt and worktree on ordinary resume; never guess tools,
48
+ roles, paths or fallback models. Capability discovery is not execution proof.
49
+ 3. Missing capability holds transfer with the current owner retained; read-only
50
+ reconciliation may continue. Record the recipient and pending receipt before
51
+ launch; reconcile exact-title thread inventory and Git worktrees before retry
52
+ to block duplicates.
53
+ 4. Launch is not ownership. Record the recipient's explicit acceptance receipt
55
54
  before changing ownership; current owner remains accountable until then. A
56
55
  prior owner seeing a different valid accepted owner stops.
57
56
 
@@ -62,7 +61,7 @@ receipts/timers, unresolved decisions, next action, and transfer status.
62
61
 
63
62
  Store receipt references, not raw output, in the [Run record](run-record.md).
64
63
 
65
- - Session receipt: actual agent/workspace IDs, requested provider/model and
64
+ - Session receipt: actual projectId, threadId/runId or taskId/childThreadId/childRunId, attempt key and checkout path, requested provider/model and
66
65
  role; reuse on resume.
67
66
  - Acceptance receipt: sender/recipient, accepted scope/authority, timestamp,
68
67
  and ownership session receipt.
@@ -77,30 +76,43 @@ Store receipt references, not raw output, in the [Run record](run-record.md).
77
76
 
78
77
  ## Execution tracking
79
78
 
80
- The driver consumes native Orca completion and escalation deliveries for the
81
- active Run. A driver turn does not end while a Dispatch is unsettled unless one
82
- completion wait from the orchestration guide is armed (background where the
83
- harness supports it, foreground otherwise) and re-armed on timeout; sleep or
84
- poll loops are forbidden. An explicitly invoked phase dispatches its configured
85
- roles through Orca and closes with the lifecycle close-out; in-chat execution
86
- covers only ordinary reading, writing, and local checks. Heartbeat deliveries
87
- are acknowledged with no user-facing text. Process each whole delivery before
88
- acknowledgment and validate its Task, Dispatch, sender, authority, revisions,
89
- and receipts before advancing the run record. Duplicate deliveries are
90
- deduplicated by runtime identity. Healthy unchanged passes are silent.
91
- After accepting worker, Task, or Run completion, the driver
92
- invokes [axstack-cleanup](../../axstack-cleanup/SKILL.md) inline; it never
93
- dispatches cleanup work.
94
-
95
- Detect completed-but-unadvanced work, failed sessions, unresolved launch
96
- receipts, and stalls through the version-matched orchestration guide. Never
97
- duplicate a writer; idle is not complete. `input_accepted`, `turn_started`,
98
- session liveness, delivery, and verified advancement are distinct evidence.
99
- On `consumer_fenced`, reconcile the active coordinator rather than borrowing an
100
- identity. Respect settlement protection including `user_takeover`.
101
-
102
- Axstack creates no execution heartbeat or substitute scheduler. See
103
- [Review automation health](#review-automation-health).
79
+ Follow [T3 runtime](t3-runtime.md) for native completion, questions, launch
80
+ recovery and run-watch waits. Delegated notifications wake the driver; a launched
81
+ writer sends its marker with `t3_thread_send` using `mode: queue` to the recorded driver thread.
82
+ Delegated completion requires persisted `task_status` before `t3_thread_read`, terminal `completed`, `result_available`, `hasPendingChildRuns:false`, and final `AXSTACK-DONE`.
83
+ Writer completion requires `AXSTACK-DONE` plus terminal `t3_thread_wait` on the recorded run and candidate checks: non-empty diff, clean tree, and named red/green logs.
84
+ Completion must match the current attempt key and candidate SHA; an older attempt never completes a newer one.
85
+ Process the whole delivery before advancement, validating sender, scope,
86
+ authority, revisions and artifacts. Deduplicate by native task/thread/run identity.
87
+ A question marker stays incomplete; failure, interruption, permission prompts
88
+ and refusals hold with preserved evidence. Receipt messages alone are progress.
89
+ Healthy unchanged passes are silent.
90
+ An explicitly invoked phase dispatches its configured roles through T3 and
91
+ closes with the lifecycle close-out; in-chat execution covers only ordinary
92
+ reading, writing and local checks.
93
+
94
+ For a required change with an empty base-to-head diff or missing named artifact,
95
+ retain the incomplete state, return to the same author once, and hold on repeat.
96
+ Dispatch each unblocked dependent after verifying scope, authority, owner,
97
+ revisions and dependencies in the same driver turn; record why others are not
98
+ ready. An unreachable predecessor holds. Update one `Next:` line on each
99
+ transition with owner, last receipt time, next action and hold; reconcile it for
100
+ status questions. Stale receipts remain evidence only.
101
+
102
+ End a driver turn with an unsettled launched thread only while the bound run watch is armed; each wake reconciles all unsettled runs.
103
+ Use terminal `t3_thread_wait` and the recorded watch as the runtime contract
104
+ requires, re-arming waits on timeout; sleep or poll loops are forbidden. Delete the watch by exact ID and
105
+ verify absence once nothing remains unsettled. After each delegated completion,
106
+ verify the driver's HEAD and status unchanged before advancing. Input acceptance,
107
+ run start, effective configuration, terminal success and verified advancement
108
+ are distinct evidence. Detect completed-but-unadvanced work, failed runs,
109
+ unresolved launch receipts and stalls through native state. Idle is not complete; never duplicate a writer. Reconcile
110
+ thread/run identity mismatches rather than borrowing identities. Retain a
111
+ user-taken-over thread without cleanup commands.
112
+
113
+ After accepting task or run completion, the driver invokes
114
+ [axstack-cleanup](../../axstack-cleanup/SKILL.md) inline; it never dispatches cleanup work.
115
+ Axstack creates no heartbeat or substitute scheduler.
104
116
  Tracking grants no merge, release, model-substitution, or scope authority.
105
117
 
106
118
  ## Deadline (one rule for every owned timer)
@@ -113,12 +125,12 @@ differs from merged; human merges.
113
125
 
114
126
  ## Review automation health
115
127
 
116
- The native review manager uses fresh finite sessions in one dedicated existing
117
- Orca workspace on a 15-minute schedule. It admits actionable PR events within
118
- measured host capacity; waiting PRs remain covered without reserving slots.
119
- Bounded PR jobs use per-PR worktrees and settle after descendants. Build no
120
- custom scheduler, state engine, or legacy fallback. See
121
- [Review manager](automations.md).
128
+ The native review manager uses fresh finite T3 pass threads from its dedicated
129
+ lane project on a 15-minute T3 scheduled task. It admits actionable PR events
130
+ within measured host capacity; waiting PRs remain covered without reserving slots.
131
+ Bounded PR jobs use driver-made detached checkouts and settle after descendants.
132
+ Build no custom scheduler, state engine or legacy fallback. See
133
+ [Review manager](automations.md) for binding, canary, capacity and schedule health.
122
134
 
123
135
  ## Audit hook (close-out and meaningful checkpoints)
124
136
 
@@ -131,16 +143,18 @@ nothing without tested independent review.
131
143
 
132
144
  ## Close-out
133
145
 
134
- PRs merge by forge state; close out: (1) settle every worker
135
- terminal; (2) compact record with counts and denominators—user
146
+ PRs merge by forge state; close out: (1) settle every T3 worker run and archive eligible threads; (2) compact record with counts and denominators—user
136
147
  interventions/deviations from plan/repairs; (3) `axstack-auditor`: settle
137
- non-zero/requested, else `counts zero`; an unavailable auditor leaves close-out
138
- pending, never skipped silently; (4) release merged run worktrees and branches;
139
- use `axstack-cleanup`, remove the run's own automations under
148
+ non-zero/requested, else `counts zero`. A base auditor preflight rejection
149
+ (no delegated task started) records `auditor: UNKNOWN (unlaunchable)` with the
150
+ attempted route and error as the archive receipt; no substitution. A launched
151
+ auditor task must settle; (4) release merged run worktrees and branches;
152
+ use `axstack-cleanup`, remove the run's own scheduled tasks under
140
153
  [Workspace hygiene](workspace-hygiene.md), and close selected external-tracker tickets;
141
154
  (5) mark the
142
155
  [Run record](run-record.md) `Archived`. `Archived`—one each:
143
156
  settlement receipt; compact record path; auditor decision plus settlement
144
- receipt or `counts zero`; automation, release, and ticket receipts; archive timestamp.
157
+ receipt, `counts zero`, or the unlaunchable UNKNOWN archive receipt; scheduled-task,
158
+ release, and ticket receipts; archive timestamp.
145
159
  `active`/receipt-incomplete record: close-out pending, never done. One-step
146
160
  lookups exempt.
@@ -1,13 +1,15 @@
1
1
  # Review manager prompt
2
2
 
3
- You are a fresh finite review-manager session in the automation's dedicated
4
- existing Orca workspace. Enter through the installed `axstack-review` skill; that skill loads its packaged
5
- `../axstack/references/automations.md` contract by relative reference. Discover
6
- every eligible peer-review event and invoke the skill through Orca for each
7
- admitted bounded PR job. Keep complete coverage and admit actionable events
8
- within measured host capacity, preserve exact ownership and receipts, settle
9
- completed trees, and stay quiet when nothing changed. Reconcile before admission,
10
- save durable continuity using `run-record.md#review-manager-continuity-template`
11
- and read it back, then exact close of your own terminal as
12
- the final action under the contract. Reconcile the whole lane, not just this
13
- workspace. Never check out a PR branch here.
3
+ You are a fresh finite T3 review-manager pass in project `axstack-review-lane`
4
+ on the VPS's existing `axatbhardwaj/axstack` clone. Fetch first; this unbound
5
+ pass worktree starts from `origin/main`. Enter through installed `axstack-review`,
6
+ which loads `../axstack/references/automations.md` relatively. Read that contract
7
+ and [T3 runtime](t3-runtime.md). Verify your configuration against the recorded
8
+ `axstack-owner` binding before admission. Reconcile the whole lane, discover
9
+ all eligible peer-review events and admit within measured host capacity.
10
+ Use host-clone detached per-PR checkouts; preserve exact ownership and receipts.
11
+ Retire settled predecessors, report retained worktree count, and disable the
12
+ schedule and hold past its authorized limit. Save and read back continuity at
13
+ `~/.local/share/axstack/runs/review-manager/progress.md` using
14
+ `run-record.md#review-manager-continuity-template`; settle descendants and end
15
+ the finite turn. Stay quiet when unchanged. Never check out a PR branch here.
@@ -32,6 +32,16 @@
32
32
  mixed/codex-only; intentionally absent in claude-only. Dispatch each
33
33
  independently from its Sonnet seat on the same bounded brief without
34
34
  cross-reading. The driver reconciles findings per claim, never averages.
35
- Record intentional absence and continue with Sonnet alone; a configured
36
- but unavailable seat holds only its affected work.
35
+ Record intentional absence and continue with Sonnet alone.
36
+ - Optional seats: `axstack-arena-candidate-grok`,
37
+ `axstack-arena-candidate-antigravity`, `axstack-research-web-google`,
38
+ `axstack-research-x`, `axstack-checker`, `axstack-research-code-sol`,
39
+ `axstack-explore-execution-sol`, `axstack-auditor-sol`.
40
+ Always dispatch optional seats when configured and available. Only a
41
+ launch failure, trust/login prompt, or prompt block makes one absent:
42
+ fence the attempt, record `absent (<reason>)`, name it once in the next
43
+ read-back, and skip it without a relay or substitution. An uncertain
44
+ dispatch is reconciled, not called absent. A mixed fan-out still includes
45
+ at least one Codex and one Claude seat; otherwise hold that fan-out.
46
+ Intentional absences in codex-only and claude-only remain unchanged.
37
47
  - `axstack-debug-investigator-1..4` probe L1 briefs.
@@ -8,31 +8,37 @@ Driver entry sweep follows [Workspace hygiene](workspace-hygiene.md).
8
8
  Presets: `mixed`, `codex-only`, `claude-only`. For new runs, use
9
9
  `profiles.preset` from `.axstack-manifest.json` at the actually loaded
10
10
  skills root, or an explicit user selection in the run record. Missing or contradictory sources are
11
- a setup gap: hold. Never infer from live profiles or `list_profiles`, harness,
11
+ a setup gap: hold. Never infer from live profiles, harness,
12
12
  tools, credentials, quota, subscription, or default to `mixed`.
13
13
 
14
- At start, snapshot all 32 role IDs with provider/modelClass/model/mode/effort; absent
15
- or unconfigured roles are recorded explicitly; never default.
16
- Such a role holds only its work. Later installed or changed roles need an
17
- explicit user decision to enter the snapshot. Live profiles
18
- are authoritative at snapshot time and for availability; bundled presets are setup
19
- inputs, not runtime proof.
20
- For each role record class, resolved exact ID, source (catalog, transcript, or
21
- pin), and time. Codex classes resolve through
22
- `skills/axstack/scripts/resolve-models.js` with an explicit catalog
23
- path; missing or malformed catalog holds. Claude classes start as `alias,
24
- unresolved` until transcript read-back. Resume must reuse the snapshot and
25
- never re-resolve it.
26
-
14
+ At start, snapshot all role IDs from installed `skills/axstack/roles.json`,
15
+ including provider/modelClass/model/mode/effort and intentional absences.
16
+ Absent or unconfigured roles are recorded explicitly; such a role holds only
17
+ its work under the required/optional seat rules.
18
+ Later installed or changed roles need an explicit user decision to enter the snapshot.
19
+ For each role record class, resolved exact ID, source (`capabilities`), and time.
20
+ Read the [T3 runtime boundary](t3-runtime.md) before dispatch, receipt consumption
21
+ or recovery; use its permitted-write role split, completion checks and run watch.
22
+ Resolve Codex and Claude classes with
23
+ `skills/axstack/scripts/resolve-models.js --provider <provider> --capabilities <path>`
24
+ using saved T3 capabilities JSON; missing or malformed capabilities holds.
25
+ Claude exact IDs come from capabilities, replacing transcript read-back.
26
+ Use an explicit model as given; for `model:null` without a class, grok uses the
27
+ provider's first listed model from saved capabilities and records its exact ID.
28
+ For `model:null` without a class, Antigravity must select the first listed model
29
+ whose ID ends with `-<effort>` from saved capabilities and record its exact ID.
30
+ Missing effort-suffix matches hold resolution for Antigravity.
31
+ A Codex or Claude role with neither model nor class is an intentional absence
32
+ and holds.
33
+ Resume must reuse the saved capabilities and role snapshot with no re-resolution; changes require the user’s explicit decision.
34
+ An unavailable provider, model, role, mode or effort holds that role with no substitution.
27
35
  Preset changes apply to new runs only; an active run keeps its snapshot.
28
- Changing it or replacing a session needs an explicit user decision and
29
- revalidation. Unavailable models, efforts, roles, or overrides hold only affected
30
- work; no automatic fallback, quota routing, subscription inference, or silent
31
- provider/model/effort substitution. Only
32
- explicit model rejection before the first turn permits Codex `--retry-of` with
33
- the next eligible ID in the same class, provider, and effort. Fence the failed
34
- Dispatch and record tried ID, error, and fallback ID in the snapshot and reply.
35
- Timeout, quota, auth, and other failures hold; Claude rejection holds.
36
+ Replacing a session needs an explicit user decision and revalidation.
37
+ Timeout, quota, auth and rejection hold affected work.
38
+ [Model discipline](contracts.md#model-discipline) governs optional seats,
39
+ auditor preflight, and required holds; [Role roster](role-roster.md) governs
40
+ single-provider absence and mixed Codex+Claude fan-out.
41
+ Bundled presets are setup inputs, not runtime readiness proof.
36
42
 
37
43
  Load the [Role roster](role-roster.md) for configured roles and authored-review pairings.
38
44
 
@@ -46,6 +52,8 @@ step (3) for user routing: no substitution or same-provider review.
46
52
 
47
53
  ## Direct routes (no spec ceremony)
48
54
 
55
+ - Validate an approach -> `axstack-brainstorm`: inline, report-only independent
56
+ candidates; light arena always, judges only at Rung 2; return to the caller.
49
57
  - Bounded research -> `axstack-research`: verify primary sources and code,
50
58
  cite limits, and fan out distinct questions.
51
59
  - Understand a system or gap -> `axstack-explain`:
@@ -57,14 +65,14 @@ step (3) for user routing: no substitution or same-provider review.
57
65
  off a classified repair (explain: how; debug: what's wrong).
58
66
  - Code quality/refactor discovery -> `axstack-improve`: rank bounded
59
67
  candidates with evidence; report only, no source edits.
60
- - Accepted worker/Task/Run completion or bounded backlog request -> driver invokes
68
+ - Accepted worker/task/run completion or bounded backlog request -> driver invokes
61
69
  `axstack-cleanup` inline; never dispatch it.
62
70
  - Preparation completion, watch expiry, resume, or reconciliation -> the
63
71
  [lifecycle](lifecycle.md#native-handoff-and-resume): reconcile run record,
64
72
  keep owner, launch no native handoff.
65
73
  - Explicit user-requested ownership transfer -> the same lifecycle section.
66
- Load the [Orca runtime boundary](orca-runtime.md), follow the runtime-owned
67
- handoff guide, and require explicit recipient acceptance before ownership
74
+ Load the [T3 runtime boundary](t3-runtime.md), follow its ownership-transfer
75
+ contract, and require explicit recipient acceptance before ownership
68
76
  changes. Missing capability is a setup gap; never invent one.
69
77
  - Colleague PR review -> `axstack-review`, peer mode.
70
78
  - Codebase review -> `axstack-review` codebase mode, report only.
@@ -40,14 +40,26 @@ The driver is the sole record writer. Workers send concise receipts; they do
40
40
  not edit `progress.md`. This is a prompt contract, not a lock or runtime
41
41
  coordination mechanism. Each task names the actual owner session and worktree,
42
42
  or a receipt pointer containing both; a role label alone is insufficient.
43
+ Read the [T3 runtime boundary](t3-runtime.md) for native identity and receipt checks.
44
+ Record driver threadId, projectId, host, T3 version, installed Axstack SHA,
45
+ capabilities JSON path and scheduledTaskIds for every watch and manager schedule.
46
+ Per dispatch record key, mechanism, requested target and read-back,
47
+ taskId/childThreadId/childRunId or threadId/runId/worktree/branch/base SHA,
48
+ checkout path with candidate/base SHAs, evidence folder, scope/authority,
49
+ owner, pending receipts, hold and Next.
50
+ Each dispatch row must record the provider/model echo, configuration read-back, and post-completion HEAD/porcelain check result.
43
51
 
44
52
  Update before dispatch and after each verified transition. On resume,
45
- reconcile the record with actual Orca sessions and Dispatches, exact revisions, forge/PR
53
+ reconcile the record with actual T3 threads and runs, exact revisions, forge/PR
46
54
  state, and the approved intent. Prevent a duplicate writer, mark approval or
47
55
  evidence for an older revision stale, and distinguish task completion from a
48
56
  capability being merged.
57
+ Maintain one `Next:` line after each accepted receipt or hold transition. It
58
+ names the driver or task owner, last receipt time, next concrete action, and
59
+ any hold with its affected dependency and resume condition. Use it to answer
60
+ status questions after reconciling current evidence.
49
61
 
50
- The record is derived progress, not authority. Orca sessions and Dispatches, Git revisions,
62
+ The record is derived progress, not authority. T3 threads and runs, Git revisions,
51
63
  forge/PR state, and the approved spec remain sources of truth. The driver
52
64
  verifies exact SHAs and receipts before recording a transition; a worker claim
53
65
  alone is not verification.
@@ -63,7 +75,7 @@ About 60 lines is the normal budget, not a truncation rule. Open holds and
63
75
  watermarks are never dropped to meet that budget.
64
76
 
65
77
  Before changing `Driver` or a task `Owner`, verify that the prior driver is
66
- inactive against actual Orca session and Dispatch state, or that an explicit accepted transfer
78
+ inactive against actual T3 thread and run state, or that an explicit accepted transfer
67
79
  permits reassignment. Idle alone never reassigns ownership.
68
80
  Uncertain state or a live conflict holds the transfer; never overwrite the
69
81
  field to seize control. A prior driver that sees a different valid accepted
@@ -75,18 +87,17 @@ The driver records `paused` on a user request or a hold; idle alone is neither.
75
87
 
76
88
  ## Handoff and resumption
77
89
 
78
- Keep handoff state in this same record, never a second wrapper record. Before a
79
- native handoff launch, add the intended recipient and a pending launch-receipt
80
- pointer. Record the actual agent/workspace receipt once verified, then the
90
+ Keep handoff state in this same record, never a second wrapper record. Before an
91
+ explicit transfer, add the intended recipient and a pending acceptance-receipt
92
+ pointer. Record the actual thread/worktree identity once verified, then the
81
93
  recipient's explicit acceptance receipt before changing ownership. Preserve
82
94
  pending external receipt pointers and timer expiries so an uncertain launch,
83
95
  send, or watch can be looked up before any retry.
84
96
 
85
97
  Resume from compact pointers to commands or evidence, not copied transcripts.
86
- For chat-run watch, record the chosen wake mechanism and its identity or command
87
- (including the workspace for an Orca fallback),
88
- member PR publication/adoption receipts, exact driver session, observation/report
89
- IDs, disposition, wake and stop receipts in this same record. The driver alone writes it; a later same-Run publication joins the membership only after remote readback. Reconcile named sessions, revisions, PR state, watches, and deliveries before
98
+ For chat-run watch, record the bound T3 schedule and scheduledTaskId,
99
+ member PR publication/adoption receipts, exact driver threadId/runId, observation/report
100
+ IDs, disposition, wake and stop receipts in this same record. The driver alone writes it; a later same-Run publication joins the membership only after remote readback. Reconcile named threads/runs, revisions, PR state, watches, and deliveries before
90
101
  creating or redelivering anything. Outside the bounded driver-start orphan
91
102
  sweep, touch only this run; no unscoped global sweep, runtime database, or
92
103
  scheduler follows from the record.
@@ -127,8 +138,8 @@ in the adjacent history file, not below this template.
127
138
  # Review-manager continuity
128
139
 
129
140
  ## Lane state
130
- - Automation ID, native run ID, workspace and exact terminal receipt: <IDs>
131
- - Active PR jobs and descendants: <PR, Task/Dispatch, owner, revision, state>
141
+ - scheduledTaskId, threadId/runId, workspace and exact terminal receipt: <IDs>
142
+ - Active PR jobs and descendants: <PR, taskId/childThreadId/runId, owner, revision, state>
132
143
 
133
144
  ## Open holds
134
145
  - <PR or lane, reason, evidence, owner, resume condition; or none>
@@ -144,20 +155,24 @@ in the adjacent history file, not below this template.
144
155
 
145
156
  ```text
146
157
  Run: <UTCdate>-<slug>[-<collision suffix>]
147
- Driver: <session ID> (sole writer)
158
+ Driver: <threadId/runId> (sole writer)
148
159
  Goal: <bounded task goal>
149
160
  Scope: <repo + accepted bounds>
150
161
  Authority: <who authorized which mutation>
151
162
  Intent: <approved spec rev | small-change intent | adopted snapshot | peer/read-only mode>
152
163
  Routing: <preset + source + snapshot ref>
153
164
  Notification policy: <none | transport/target label/host/instructions path>
154
- Autopilot: on | paused (<hold>; resume: <condition>) | off (cancelled <ts>); next: <step>
165
+ Autopilot: on | paused (<hold>; resume: <condition>) | off (cancelled <ts>)
166
+ Next: <owner; last receipt time; next action; hold or none>
167
+ PR digest watermarks: <repo -> absolute path inside this private run record> | none
155
168
  Release: <AGENTS.md file:line + tag-triggered workflow path + named install hosts> | not applicable (<reason>)
156
169
  Source base: <exact revision or source identity>
157
- IDs: <repo/project + workspace/agent receipt pointers>
170
+ IDs: <projectId + driver threadId/runId + dispatch identity receipt pointers>
171
+ Runtime: <host + T3 version + installed Axstack SHA + capabilities JSON path>
172
+ Schedules: <scheduledTaskIds of every watch and manager schedule>
158
173
  Worktrees in other repositories: <per-run repository and worktree IDs or none>
159
174
  Evidence: <check/review/submission/audit receipt pointers>
160
- Pending: <launch/acceptance/external receipts + timer execution heartbeat actual ID + handshake + deadline>
175
+ Pending: <launch/acceptance/external receipts + scheduledTaskIds + runIds + deadline>
161
176
  Unresolved: <decision -> next owner + next action>
162
177
  Learnings: <root cause, gotcha, or pattern -> evidence ref>
163
178
  Resume: <commands or evidence refs bound to exact revisions>
@@ -170,6 +185,10 @@ Resume: <commands or evidence refs bound to exact revisions>
170
185
  | --- | --- | --- | --- | --- | --- |
171
186
  | <task> | <task IDs or none> | <role + session ID + worktree, or receipt ref> | <pending/in progress/complete/blocked> | <SHA + check/receipt refs> | <action + owner> |
172
187
 
188
+ | Dispatch key | Provider/model echo | Configuration read-back | Completion receipt | Post-completion HEAD/porcelain check result |
189
+ | --- | --- | --- | --- | --- |
190
+ | <key> | <actual provider/model + evidence ref> | <options/runtimeMode + evidence ref> | <marker + IDs + evidence ref> | <compared HEAD/status + pass/hold + evidence ref> |
191
+
173
192
  Status: <active/paused/held/complete/Archived>
174
193
  Updated: <UTC timestamp>
175
194
  ```