axstack 0.20.31 → 0.21.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 (47) hide show
  1. package/README.md +22 -21
  2. package/bin/axstack.js +17 -5
  3. package/docs/installation.md +97 -48
  4. package/docs/workflows.md +165 -122
  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 +127 -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 +10 -8
  13. package/skills/axstack/references/diligence.md +3 -1
  14. package/skills/axstack/references/evidence-archive.md +38 -33
  15. package/skills/axstack/references/lifecycle.md +64 -50
  16. package/skills/axstack/references/review-manager-prompt.md +13 -11
  17. package/skills/axstack/references/role-roster.md +12 -2
  18. package/skills/axstack/references/routing.md +29 -25
  19. package/skills/axstack/references/run-record.md +35 -16
  20. package/skills/axstack/references/t3-runtime.md +234 -0
  21. package/skills/axstack/references/test-audit-weekly.md +62 -0
  22. package/skills/axstack/references/test-value.md +120 -0
  23. package/skills/axstack/references/ui-verification.md +5 -1
  24. package/skills/axstack/references/workspace-hygiene.md +102 -156
  25. package/skills/axstack/scripts/pr-digest.js +120 -0
  26. package/skills/axstack/scripts/resolve-models.js +94 -38
  27. package/skills/axstack-align/SKILL.md +17 -7
  28. package/skills/axstack-audit/SKILL.md +12 -3
  29. package/skills/axstack-audit/references/record.md +1 -1
  30. package/skills/axstack-cleanup/SKILL.md +69 -87
  31. package/skills/axstack-debug/SKILL.md +1 -1
  32. package/skills/axstack-explain/SKILL.md +1 -1
  33. package/skills/axstack-explain/references/visual-qa.md +2 -0
  34. package/skills/axstack-implement/SKILL.md +56 -20
  35. package/skills/axstack-improve/SKILL.md +24 -4
  36. package/skills/axstack-relay/SKILL.md +8 -6
  37. package/skills/axstack-research/SKILL.md +11 -4
  38. package/skills/axstack-review/SKILL.md +34 -30
  39. package/skills/axstack-spec/SKILL.md +18 -13
  40. package/skills/axstack-tickets/SKILL.md +7 -8
  41. package/skills/axstack-watch/SKILL.md +97 -27
  42. package/skills/axstack-watch/references/watch-runtime.md +51 -66
  43. package/src/capabilities.js +33 -69
  44. package/src/installer.js +1 -1
  45. package/src/instructions.js +9 -4
  46. package/skills/axstack/references/orca-runtime.md +0 -202
  47. package/skills/axstack/scripts/trust-path.js +0 -123
@@ -1,81 +1,70 @@
1
1
  # Native peer-review manager
2
2
 
3
- Read this for the optional native Orca peer-review automation. The historical
3
+ Read this for the optional native T3 peer-review schedule. The historical
4
4
  automation specs and plans describe retired designs and are not instructions.
5
5
 
6
+ For optional weekly test audits, use the separate packaged
7
+ [Weekly test-audit prompt](test-audit-weekly.md).
8
+ The native canary below is also required before weekly activation.
9
+
6
10
  ## Topology and schedules
7
11
 
8
- The review manager runs at minutes `0,15,30,45` and invokes
9
- [axstack-review](../../axstack-review/SKILL.md) for eligible peer reviews.
10
-
11
- Use one dedicated existing Orca workspace owned by this automation. Configure
12
- native existing-workspace mode with `--fresh-session`, never `--reuse-session`;
13
- each pass gets a fresh finite manager session. Keep lane continuity and evidence
14
- at configured durable absolute paths. A manager never checks out a PR branch
15
- in its workspace. Missed slots do not replay a backlog; the next ordinary pass
16
- discovers current state. The short packaged review prompt sits beside this file
17
- and discovers these rules by relative link instead of copying them.
18
-
19
- Provision one explicit absolute continuity path per automation ID in the
20
- scheduled prompt. The repository's absolute Git common directory is a valid
21
- durable root; missing or non-durable configuration holds admission. Follow the
22
- [Run record](run-record.md). Each pass
23
- uses the [Review-manager continuity template](run-record.md#review-manager-continuity-template),
24
- overwrites its four current-state sections, and archives superseded history once
25
- in the adjacent history file. A no-change pass appends at most one history line.
26
-
27
- This is prompt policy, not proof that Orca starts a fresh session or prevents
28
- overlapping passes. Before activation a native canary must prove fresh-session
29
- launch, overlapping-pass behavior, recovery after session loss, nested
30
- dispatch depth for coordinator-launched leaves, and total process and memory
31
- effects. A firing timestamp proves neither delivery nor useful completion.
32
-
33
- Do not write `~/.claude.json` except through the packaged `trust-path.js`
34
- preflight for an exact Orca-registered repository root or worktree before a
35
- Claude launch. The helper changes only that path's trust flag; it does not
36
- answer any dialog.
12
+ The T3 project `axstack-review-lane` uses the VPS's existing
13
+ `axatbhardwaj/axstack` clone with `origin` and `main`.
14
+ Unbound pass worktrees branch from `origin/main` and each pass fetches first.
15
+ Continuity stays at `~/.local/share/axstack/runs/review-manager/progress.md`,
16
+ outside every worktree.
17
+ A missing, non-durable or unreadable continuity path holds admission.
18
+ Follow the [Run record](run-record.md) and use the
19
+ [Review-manager continuity template](run-record.md#review-manager-continuity-template):
20
+ overwrite its four current-state sections and archive superseded history once
21
+ beside it. A no-change pass appends at most one history line.
22
+
23
+ Configure the lane thread via `t3_thread_configure` with the `axstack-owner`
24
+ binding and verify its read-back. Then `schedule_task` uses the packaged prompt,
25
+ `everyMs:900000`, `bindToCurrentThread:false`, and a stable `clientRequestId`.
26
+ Record the schedule ID, project, lane binding and pass thread/run identities.
27
+ Each pass compares its own `t3_thread_configuration` with the recorded binding.
28
+ A binding mismatch holds admission.
29
+ Read [T3 runtime](t3-runtime.md) for capability, provider/effort, prompt, dispatch,
30
+ completion and cleanup boundaries; a manager never checks out a PR branch in
31
+ its pass worktree. Missed slots do not replay a backlog.
32
+
33
+ T3 sessions are exempt from Claude trust preflight.
37
34
 
38
35
  ## Session admission
39
36
 
40
- Perform the pass-start predecessor cleanup and sweep in
41
- [Finite-session teardown](#finite-session-teardown) before discovery or admission.
42
- Reconcile saved state, current GitHub state, and native Orca Tasks, Dispatches,
43
- sessions, and liveness across all workspaces belonging to the lane before
44
- discovery or admission; never infer lane ownership from an empty local workspace.
45
- Bind the lane to the automation ID and pass to its native run ID, workspace ID,
46
- and terminal identity, not a title or directory-name guess.
37
+ Perform guarded predecessor retirement in [Finite-session teardown](#finite-session-teardown).
38
+ Lane identity requires exact thread/run identity, never a title or directory-name
39
+ guess; never infer lane ownership from an empty local workspace.
40
+ Reconcile saved state, current GitHub state, and native T3 threads, runs,
41
+ delegated tasks and liveness across the whole lane before discovery or admission.
42
+ Discovery reads every page of PRs and native threads.
43
+ A truncated or failed inventory holds admission and cleanup.
44
+ A pass never admits a PR owned by a live or uncertain earlier pass.
47
45
  A confirmed live manager for the same lane remains authoritative.
46
+ The earlier pass wins only when ordering evidence exists.
47
+ Missing ordering or ownership evidence holds admission and never guesses a winner.
48
+
48
49
  Once identified as a duplicate, the new pass does no PR work, makes no further
49
- shared-record write, touches no live or unsettled resource owned by the live
50
- manager, and closes only its own exact terminal as its final action under the
51
- guard below.
52
- A duplicate pass admits nothing and runs read-only discovery into its own pass
53
- note in its private evidence folder, recording new eligible events and the unserved count.
54
- If a duplicate pass finds the live owner's coordinator idle at its prompt, its
55
- final agent turn ended without `worker_done` for more than five minutes (nudged
56
- or not), as in [Per-PR jobs](#per-pr-jobs), record the stalled owner in its own
57
- pass note and send one deduplicated notification under the recorded
58
- `Notification policy`.
50
+ shared-record write and touches no live or unsettled resource owned by the
51
+ live manager. A duplicate pass admits nothing and runs read-only discovery
52
+ into its own pass note in its private evidence folder, recording new eligible
53
+ events and the unserved count. If a duplicate finds a stalled owner idle at its
54
+ prompt with a final turn lacking a completion receipt for more than five
55
+ minutes (nudged or not), record it in that private note and send one deduplicated
56
+ notification under the recorded `Notification policy`.
59
57
  Unknown liveness blocks admission and shared-record writes; it does not
60
- authorize takeover, cleanup, or a duplicate manager. Preserve `user_takeover`
61
- and other user-owned sessions.
62
-
63
- When two new passes overlap, reconcile native run ordering before either admits
64
- work; the earlier unsettled pass retains the lane. Missing ordering or ownership
65
- evidence holds admission, never guesses a winner. This is not an atomic lock:
66
- activation requires an overlap canary proving only one pass admits work. Count
67
- all unsettled PR jobs and descendants across the lane, not just this workspace.
68
- Read every page of native runs, workers, and workspace inventory; truncated or
69
- failed inventory holds admission and cleanup rather than implying absence.
70
-
71
- A prior manager does not retain the lane merely because its automation run
72
- status says failed or dispatched. Reconcile a surviving prior terminal using
73
- exact identity and proven completion from native state before treating it as
74
- live or releasing ownership. Require confirmed process exit for its exact
75
- terminal incarnation, saved continuity, and settlement of all owned jobs and
76
- descendants before ownership release. A completed run row alone does not prove exit.
77
- If these facts remain unknown, report the hold at the durable decision location;
78
- do not silently stand down forever or replace a potentially live owner.
58
+ permit takeover or cleanup. Preserve user-taken-over threads.
59
+ This is prompt policy, not an atomic lock: the overlap canary must demonstrate
60
+ one admission owner before activation. Count all unsettled PR jobs and descendants.
61
+
62
+ A failed scheduled run alone proves neither predecessor exit nor release.
63
+ Predecessor exit requires exact thread/run identity and terminal run evidence;
64
+ a completed run row alone does not prove the work settled.
65
+ Require reconciled continuity and settlement of every descendant before releasing ownership.
66
+ Unknown facts hold at the durable decision location; never replace a
67
+ potentially live owner.
79
68
 
80
69
  ## Discovery and coverage
81
70
 
@@ -126,40 +115,41 @@ PRs cannot starve older unserved work.
126
115
 
127
116
  ## Per-PR jobs
128
117
 
129
- At PR-job and reviewer dispatch, apply [Readable sidebar](workspace-hygiene.md#readable-sidebar).
130
118
  Include [Safe deletion](workspace-hygiene.md#safe-deletion) in PR-job briefs.
131
119
 
132
120
  The logical manager lane owns ongoing discovery and continuity across finite
133
121
  sessions; the bounded PR coordinator owns only its admitted event. Do not create a second live owner or
134
122
  writer for the same PR. Reuse an existing valid per-PR worktree, owner, and
135
- unchanged receipts before creating anything. Otherwise create one separate
136
- Orca worktree per PR job, parented to that repository's primary worktree, and
137
- pin the observed head and base. The bounded PR coordinator loads the
123
+ unchanged receipts before creating anything. Otherwise create one separate detached checkout
124
+ per PR job from its existing
125
+ host clone: `git -C <host clone> worktree add --detach <run>/checkouts/<key> <sha>`;
126
+ pin the observed head and base. A repository without a host clone is a held job. The bounded
127
+ PR coordinator loads the
138
128
  review skill, launches only the reviewers that skill owns,
139
129
  handles the current actionable event, returns exact receipts, then settles.
140
- Check the admitted coordinator soon after start and while waiting, using native
141
- terminal and Dispatch inspection. If an idle coordinator's final agent turn ended
142
- without `worker_done` and it is at its prompt, nudge it once by typed terminal
143
- input restating its brief.
144
- For this lane, the nudge is the one brief confirmation, and a second ask follows
145
- this stop rule, not an open-ended hold; see [Orca runtime](orca-runtime.md) for
146
- the confirmation boundary.
147
- If still idle because its next turn ended without `worker_done` or it stays idle
148
- at its prompt five minutes after the nudge, use native `worker-stop`, reconcile
149
- its Task, Dispatch, and descendants, and record the event unserved (INCOMPLETE,
150
- re-admissible).
151
- A started coordinator waiting on its reviewers (a live reviewer Dispatch or a
152
- running wait) is not idle and is never stopped by this rule.
153
- Once the tree is settled, continue discovery and admission;
154
- an uncertain stop or live descendant retains the slot and holds admission.
130
+ Check admitted delegated jobs with persisted `task_status` before thread reads
131
+ under [T3 runtime](t3-runtime.md). For a worker's own brief question, confirm the
132
+ brief once.
133
+ A second brief ask follows the five-minute stop rule, never an open-ended hold.
134
+ An idle final turn without a valid completion
135
+ receipt is incomplete, not successful. A started coordinator waiting on its
136
+ reviewers (a live reviewer task or running wait) is not idle and is never
137
+ stopped for waiting. Reconcile terminal failure and all descendants before
138
+ recording an event unserved and re-admissible.
139
+ Steer an idle PR job once with `t3_thread_send`.
140
+ If it is still idle without a valid completion receipt five minutes after the steer,
141
+ stop the owned job with `t3_thread_interrupt` or `task_cancel` as applicable,
142
+ reconcile the coordinator and every descendant, and record the event unserved and re-admissible.
143
+ Uncertain liveness retains the slot only within that five-minute bound;
144
+ unverified settlement after the stop holds lane admission.
155
145
  Settlement returns continuity to the manager rather than retaining an idle PR
156
- coordinator. Reviewers retain the isolation required by `axstack-review`:
157
- each runs in a separate Orca child worktree, writes probes and evidence to
158
- its private per-Dispatch run folder, and reads back evidence before removal.
146
+ coordinator. Each reviewer uses a separate driver-made detached checkout and
147
+ private evidence folder, with evidence read-back before removal.
159
148
 
160
- Set `TMPDIR` for manager and job commands to each Dispatch's 0700 private
161
- `<run dir>/evidence/<dispatch>/` folder under
162
- [Workspace hygiene](workspace-hygiene.md).
149
+ Set `TMPDIR` for manager and job commands to an owned 0700 directory under the
150
+ system temp directory, named from the dispatch key and recorded in the receipt,
151
+ following [Workspace hygiene](workspace-hygiene.md).
152
+ Evidence files stay in the private `<run dir>/evidence/<dispatch>/` folder.
163
153
  Never write temporary files under `/` or another shared root. Never delete
164
154
  through a broad `TMPDIR` glob, sweep a shared temporary root, or wipe a general
165
155
  cache. Preserve evidence and any temporary path with uncertain ownership or
@@ -169,7 +159,7 @@ An unchanged exact head and unchanged event identity creates no job; an
169
159
  unchanged exact head with a new event identity remains actionable. Event
170
160
  identity includes the applicable review ID and body digest, request identity, or other current GitHub event
171
161
  receipt. Dedupe from current GitHub state,
172
- native Orca Task and Dispatch state, and the existing compact run record; do
162
+ native T3 task and thread/run state, and the existing compact run record; do
173
163
  not create machine cursor files or a queue engine. Record enough to resume: PR,
174
164
  head, base, event identity, mode, owner and worker receipts, verdict,
175
165
  submission receipt, hold, and next action. GitHub remains authoritative for
@@ -178,16 +168,16 @@ open state, revisions, reviews, checks, and merge state.
178
168
  ## Held job settlement
179
169
 
180
170
  Use native runtime inspection, not saved prose or silence, to identify an
181
- actual hold and bind it to the exact Task, Dispatch, terminal, event, and
171
+ actual hold and bind it to the exact task, thread/run, event, and
182
172
  evidence. Permission prompts and provider safety refusals are incomplete held
183
173
  outcomes: do not answer or bypass them, retry their content through another
184
- model, or claim completion. Do not forge `worker_done`. Record the held event
174
+ model, or claim completion. Do not forge `AXSTACK-DONE`. Record the held event
185
175
  identity and its resume condition in durable continuity. An unchanged hold creates no new job, no
186
176
  retry, and no repeated notification; a changed event is reconsidered against
187
177
  the original authority rather than assumed safe.
188
178
 
189
- Preserve the prompt or refusal evidence, then follow the version-matched
190
- orchestration recovery and cleanup guidance for every owned descendant. Use
179
+ Preserve the prompt or refusal evidence, then follow the [T3 runtime](t3-runtime.md)
180
+ recovery and cleanup guidance for every owned descendant. Use
191
181
  only supported native lifecycle actions and receipt-supplied next actions;
192
182
  saved status, contact loss, and a coordinator narrative do not settle a worker.
193
183
  Unknown or user-owned work is never a kill target. Do not release the PR slot
@@ -196,7 +186,7 @@ Unrelated eligible PRs continue after the tree is verified settled, while the
196
186
  held PR waits durably for its resume condition.
197
187
 
198
188
  Execution settlement and cleanup retention are separate. Positive full-tree
199
- process exit plus native Task and Dispatch settlement frees the slot. Retained
189
+ process exit plus native task and thread/run settlement frees the slot. Retained
200
190
  metadata does not occupy an execution slot: preserve it and its evidence for
201
191
  reconciliation without reviving the failed job. Likewise, an archive hold
202
192
  blocks workspace removal, not settled execution capacity; record the cleanup
@@ -208,7 +198,7 @@ execution teardown pauses the lane before another pass can admit work rather
208
198
  than claiming capacity from an uncertain process tree.
209
199
 
210
200
  When the current event is handled, settle the PR job and descendants, then use
211
- native `worker-release` for their worker terminals. For a completed non-author
201
+ `t3_thread_organize` to settle their terminal threads after verifying terminal run evidence. For a completed non-author
212
202
  PR-job worktree with dirty source or unpushed commits, use the
213
203
  [Workspace hygiene](workspace-hygiene.md) salvage path before removal.
214
204
  Preserve review evidence not yet durable, pending external results, and user-owned
@@ -270,48 +260,48 @@ or separate model gate.
270
260
 
271
261
  ## Finite-session teardown
272
262
 
273
- At pass start, clear finished predecessor terminals of the same automation in
274
- the dedicated workspace only after proving completion, by the exact-handle
275
- fallback in [Workspace hygiene](workspace-hygiene.md).
276
- Then run the driver-start orphan sweep for repositories listed in this lane's
277
- run record plus registered repositories on this host containing eligible settled resources
278
- of any Axstack run on this host, under the same guards. The sweep is silent when nothing was removed;
279
- record sweep results and holds in the continuity record's Open holds table.
280
-
281
- After admission closes, settle every owned PR job and all descendants before the
282
- manager session closes; active or unknown descendants keep their PR slot occupied
283
- and must be reconciled from native state. Release settled worker terminals and
284
- complete guarded evidence archival and worktree cleanup in this pass. Save
285
- continuity, open decisions, and the last pass summary using the linked template;
286
- read back all four sections and the save before closing.
287
- Use the exact native terminal close for this pass's own terminal from its run
288
- receipt: `orca terminal close --terminal <exact-handle> --json`. Terminal close
289
- is the final action. Never use `--all`, a broad or name selector, or another
290
- terminal in the dedicated workspace; uncertain identity or close outcome holds
291
- the lane for native reconciliation, never a guessed retry.
292
- If its own close returns `runtime_error`, leave the terminal for the next pass;
293
- this expected close failure is not a hold.
294
- Waiting PRs still occupy zero slots once their owned trees settle. A failed
295
- cleanup remains a recorded hold with its exact resume condition, but does not
296
- keep settled execution active.
297
-
298
- The activation canary must prove fresh sessions in the dedicated workspace,
299
- same-lane overlap admission, recovery after session loss, nested dispatch depth,
300
- process and memory effects, and terminals in the dedicated workspace bounded
301
- over repeated passes. Do not activate on source checks alone.
263
+ Each pass retires settled predecessor passes and reports the retained worktree
264
+ count. Retirement requires terminal run evidence and settled descendants,
265
+ durable continuity, evidence read-back and verified salvage where needed;
266
+ follow [Workspace hygiene](workspace-hygiene.md) and [T3 runtime](t3-runtime.md).
267
+ Then run the driver-start orphan sweep under Workspace hygiene; the sweep is
268
+ silent when nothing was removed. Record sweep results and holds in continuity's
269
+ Open holds table.
270
+ The orphan sweep covers the run record's repositories plus registered repositories on this host.
271
+ `t3_thread_organize` settle/archive changes metadata only; exact guarded Git
272
+ worktree removal remains separate. Unknown, active or user-taken-over threads,
273
+ ambiguous publication and failed salvage stay preserved.
274
+ Past the authorized storage limit (default 20 retained lane worktrees), disable the schedule
275
+ with `update_scheduled_task` using `enabled:false` and hold.
276
+ Read back the disabled schedule with `list_scheduled_tasks`; uncertainty holds.
277
+
278
+ After admission closes, settle every owned PR job and all descendants before
279
+ the manager pass ends. Complete guarded evidence archival and worktree cleanup.
280
+ Save continuity, open decisions, and the last pass summary using the linked
281
+ template; read back all four sections and the save before ending the finite turn.
282
+ Waiting PRs occupy zero slots after their trees settle. Cleanup retention holds
283
+ removal, not settled execution capacity. The next pass retires this settled pass.
284
+
285
+ ## Activation canary
286
+
287
+ The canary runs two overlapping `run_scheduled_task_now` passes and proves one
288
+ admission owner per PR. The canary reviews or correctly no-ops one real PR event.
289
+ The canary reconciles a killed predecessor.
290
+ With a temporary limit equal to the current count, the canary disables the
291
+ schedule and verifies that the following interval creates zero new pass worktrees.
292
+ The previous review-manager automation is disabled, never deleted, only after all four T3 canary checks pass.
293
+ A firing timestamp proves neither delivery nor useful completion.
294
+ Source checks alone do not prove launch, overlap, recovery, or growth behavior.
302
295
 
303
296
  ## Recovery and limits
304
297
 
305
- On a lost manager session, native recovery first reconciles actual Orca
306
- workers and Dispatches, GitHub state, and the compact run record. Reuse valid
307
- unchanged receipts. Unknown ownership blocks only the affected PR, as does
308
- unknown liveness, approval, or publication outcome; recovery never copies old
309
- capability, replaces a live writer, or takes over live user work. Other
310
- unambiguous work may proceed.
298
+ On a lost manager session, reconcile native T3 workers, task status, thread/run
299
+ state, GitHub state, and the compact run record. Reuse valid unchanged receipts.
300
+ Unknown ownership blocks only the affected PR; unknown liveness, approval or
301
+ publication outcome preserves its hold. Recovery never replaces a live writer
302
+ or takes over user work. Other unambiguous work can proceed.
311
303
 
312
- Use only native schedules and Orca orchestration. Add no daemon, shell precheck,
304
+ Use only native T3 schedules and orchestration. Add no daemon, shell precheck,
313
305
  watchdog script, custom scheduler, cursor or pending sidecar, runtime database,
314
306
  workflow state machine, decision interpreter, or programmatic escalation gate.
315
- The live VPS activation, native fresh-session and overlapping-pass behavior, recovery path,
316
- nested dispatch depth for coordinator-launched leaves, and resource ceiling
317
- remain unverified until the canary succeeds.
307
+ Live VPS activation and the four canary outcomes remain unverified until exercised.
@@ -11,38 +11,51 @@ not a mode change.
11
11
 
12
12
  Advance only after the finishing phase returns its completed identity (a
13
13
  small-change intent, approved spec, matching ticket map, merge-ready or merged
14
- state) and the run record has no open hold. A hold from any phase stops the run:
15
- record its reason, owner, and resume condition, then take no dependent action.
16
- That covers tracker access, adviser or arena-seat availability, diligence
17
- FINDINGS when the phase records a hold, CI-wait timeout, readiness UNKNOWN,
18
- dismissed approval, wake or cleanup uncertainty, single-provider routing, an
19
- existing tag or version, and failed publish. Diligence FINDINGS during implement
14
+ state) and no hold affects the next action. Record each hold's reason, owner,
15
+ scope, and resume condition. Run-wide holds for authority, scope, cancellation,
16
+ or run-spanning serious risk stop the run. A task, PR, resource, or operation hold
17
+ blocks only its dependants; continue independent authorized work. Unclear impact
18
+ holds the potentially affected work until its boundary is resolved. For example,
19
+ tracker access, adviser or arena-seat availability, CI-wait timeout, readiness
20
+ UNKNOWN, dismissed approval, wake or cleanup uncertainty, single-provider routing,
21
+ an existing tag or version, and failed publish hold the work that needs them.
22
+ Diligence FINDINGS during implement
20
23
  follow its §6 repair route; at spec, tickets, or release preparation the driver
21
24
  resolves them before advancing, and only a recorded hold pauses autopilot.
22
25
 
23
26
  Record `Autopilot: on | paused (<hold>; resume: <condition>) | off (cancelled
24
- <ts>)` and the next step in the private run record. A user answer to the hold
25
- resumes after reconciliation; silence does not.
27
+ <ts>)` and the next step in `Next:`. Keep `on` for scoped holds
28
+ while independent work proceeds; use `paused` when no authorized action can
29
+ advance. A user answer to the hold resumes affected work after reconciliation;
30
+ silence does not.
31
+ The driver records each verified `Autopilot:` transition in the private run
32
+ record, which remains authoritative.
26
33
  Awaiting human spec approval records `Autopilot: paused (spec approval; resume:
27
34
  human approval)` as a decision hold eligible under the Notification policy.
28
35
 
29
36
  ## Phase sequence
30
37
 
31
38
  - Small: Align read-back, small-change intent, implement, watch in maintain
32
- mode, human merge. An opted-in Align refinement is part of read-back.
39
+ mode, human merge. An opted-in Align refinement is part
40
+ of read-back.
33
41
  - Substantial: Align, spec draft with advisers and diligence, human spec
34
42
  approval at gate 1, tickets with diligence, implement, watch in maintain mode,
35
- merge-ready, human merge. An opted-in Align refinement is part of gate 1.
43
+ merge-ready, merge under the watch §5 predicate. An opted-in Align refinement
44
+ is part of gate 1.
36
45
 
37
46
  Do not seek another phase-start instruction after a completed identity.
38
- Spec approval is always the human's decision. Every PR merge is the human's,
39
- including a release PR and each PR in a stack, bottom-up.
47
+ Spec approval is always the human's decision. Audit self-improvement PRs follow
48
+ the same merge predicate. Only the original chat-run driver with the approved
49
+ ticket map may auto-merge PRs satisfying `axstack-implement` §6's approved
50
+ ticket-map membership and `integration` base conditions. The user merges peer
51
+ PRs and PRs into `deploying` bases. Managers, workers, reviewers, automations,
52
+ and standalone watches never merge. A stack follows its guarded bottom-up rule.
40
53
 
41
54
  ## Implement into maintain watch
42
55
 
43
56
  When implement publishes the run's first PR, arm exactly one `axstack-watch`
44
- chat-run in authorized maintain mode. Use the 10-minute harness wake, with the
45
- existing Orca fallback when unavailable. Later run PRs join after verified
57
+ chat-run in authorized maintain mode. Read the [T3 runtime boundary](t3-runtime.md) and use its bound
58
+ `schedule_task` wake (`everyMs:600000`), recording the scheduledTaskId. Later run PRs join after verified
46
59
  publication readback; an explicitly adopted PR joins only with its maintenance
47
60
  snapshot. The original driver alone routes work; one author writes each
48
61
  candidate. Until a PR is merge-ready, wakes feed implement §6 step 4. After
@@ -91,13 +104,13 @@ mutation require the recorded per-run authority and their existing checks.
91
104
  ## Resume, cancel, and notify
92
105
 
93
106
  At every entry (user message, wake, compaction, or new chat), reconcile the
94
- owner, authoritative Dispatch, approved revision, PR membership, uncertain
107
+ owner, authoritative attempt, approved revision, PR membership, uncertain
95
108
  tags, wakes, publications, and completed receipts under lifecycle and
96
109
  run-record before advancing. Only the original driver advances. Wakes do not
97
110
  reset attempt budgets and do not grant approvals. Cancel sets `Autopilot: off`,
98
111
  stops new actions, and ends the watch under watch §6 with guarded settlement.
99
- Cancellation does not cancel a running author Dispatch by inference; let it
100
- report, then settle that exact Dispatch under lifecycle guards without new
112
+ Cancellation does not cancel a running author run by inference; let it
113
+ report, then settle that exact attempt under lifecycle guards without new
101
114
  publication.
102
115
 
103
116
  Use the run's recorded Notification policy through `axstack-relay`.
@@ -37,14 +37,19 @@ Any author repair creates a new revision and repeats this boundary.
37
37
 
38
38
  ## Immutable checkout shape
39
39
 
40
- The immutable checkout is an Orca worktree of the already-registered repo:
41
- `ORCA worktree create --repo id:<repoId> --name review-<pr>-<sha7> --json`,
42
- then `git checkout --detach <candidate SHA>` inside it. Never materialize it
43
- as a `git clone` into a temp directory followed by `orca repo add`; each
44
- `repo add` registers a duplicate top-level repo and leaves a stale record once
45
- the directory is gone. Release preparation uses a `release/<version>` worktree
46
- of the same registered repo the same way. Release the checkout with
47
- `ORCA worktree rm` after its receipt is recorded.
40
+ The driver creates the immutable review checkout with `git worktree add --detach <run>/checkouts/<key> <sha>` at the confirmed candidate SHA and pinned base.
41
+ Follow [T3 runtime](t3-runtime.md) for async `delegate_task` and exact attempt
42
+ identity. The checkout is disposable, made from the existing repository; never
43
+ register a duplicate repository or replace it with a movable branch checkout.
44
+ Delegated reviewers must `cd` into their separate detached checkout; tracked candidate files remain read-only and outputs go to their private evidence folder.
45
+ Snapshot driver HEAD and full status, including untracked entries, before dispatch.
46
+ After each delegated completion, compare the driver HEAD and `git status --porcelain` with their pre-dispatch values; any change holds advancement.
47
+ Each peer reviewer has a separate checkout and evidence folder with no first-pass
48
+ cross-read. Later review gets a fresh checkout.
49
+ Before removing a reviewer checkout, read back its report and supporting evidence, then use exact `git worktree remove <run>/checkouts/<key>` without force.
50
+ Verify Git worktree absence under [Workspace hygiene](workspace-hygiene.md);
51
+ reviewer retirement preserves the separate author candidate until merge or closure.
52
+ Release checks use the same driver-made SHA-pinned detached-checkout procedure.
48
53
 
49
54
  For a release PR, dispatch `axstack-diligence` under
50
55
  [Diligence](diligence.md) to check the release PR body
@@ -39,16 +39,18 @@ the revised scope and plan.
39
39
  Validate the configured provider and model at actual launch. If it is
40
40
  unavailable or exhausted, pause affected work, record the gap, and ask the
41
41
  user. Never infer a route from quota state or subscription entitlement. Every
42
- substitution requires the user's decision: configured alternatives and native
43
- fallback prose are not defaults. The only within-class exception is explicit
44
- model rejection before the first turn: Codex may retry with `--retry-of` using
45
- the next eligible version in the same class, provider, and effort, recording
46
- the failed ID, error, and fallback ID. Claude rejection holds. Timeout, quota,
47
- and auth failures hold.
42
+ substitution requires the user's decision: configured alternatives are not
43
+ defaults. Rejection, timeout, quota and auth failures hold affected work.
44
+ Read the [T3 runtime boundary](t3-runtime.md) before dispatch, receipt consumption
45
+ or recovery; resolve models from the saved capabilities snapshot and verify
46
+ requested and effective settings separately.
47
+ Optional seats follow [Role roster](role-roster.md), while required seats,
48
+ including resolved `model: null` bindings, hold without substitution except that a base auditor
49
+ preflight rejection follows [Close-out](lifecycle.md#close-out).
48
50
 
49
51
  ## Driver and adviser split
50
52
 
51
- The current chat is the driver, whatever model runs it; there is no driver
53
+ The current T3 thread is the driver, whatever model runs it; there is no driver
52
54
  profile. Record the driver's provider and model in the run record.
53
55
 
54
56
  For Align and Spec, the driver forms an independent assessment first, then
@@ -102,7 +104,7 @@ gate.
102
104
 
103
105
  - The driver owns run scope, cross-PR coordination, integration, and every
104
106
  selected external-tracker mutation. The checker reports discrepancies only.
105
- - One Orca execution host owns a run. There is no fixed active-PR count;
107
+ - One T3 host/server owns a run. There is no fixed active-PR count;
106
108
  fanout is dependency- and capacity-driven within configured host resource and
107
109
  spending limits. The driver reduces fanout when the run record shows rework,
108
110
  review backlog, or resource pressure, queues conflicting or dependent work,
@@ -1,6 +1,8 @@
1
1
  # Diligence
2
2
 
3
- Dispatch `axstack-diligence` through Orca with a pinned brief and evidence paths.
3
+ Read the [T3 runtime boundary](t3-runtime.md) before dispatch.
4
+ Dispatch `axstack-diligence` with async `delegate_task` in the driver worktree,
5
+ using a pinned brief and private evidence paths.
4
6
  It is read-only, never authors or edits, and returns `PASS` or `FINDINGS`
5
7
  with locations, observed evidence, and limits. A stale or missing receipt is
6
8
  not a pass. Keep its first pass independent of other reviewers and workers.