axstack 0.20.30 → 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.
- package/README.md +24 -23
- package/bin/axstack.js +18 -5
- package/docs/installation.md +101 -46
- package/docs/workflows.md +179 -117
- package/package.json +3 -3
- package/profiles/presets/claude-only.json +46 -46
- package/profiles/presets/codex-only.json +50 -50
- package/profiles/presets/mixed.json +59 -59
- package/skills/axstack/references/automations.md +127 -137
- package/skills/axstack/references/autopilot.md +121 -0
- package/skills/axstack/references/candidate-publication.md +13 -8
- package/skills/axstack/references/contracts.md +10 -4
- package/skills/axstack/references/diligence.md +3 -1
- package/skills/axstack/references/evidence-archive.md +38 -33
- package/skills/axstack/references/lifecycle.md +64 -50
- package/skills/axstack/references/review-manager-prompt.md +13 -11
- package/skills/axstack/references/role-roster.md +19 -9
- package/skills/axstack/references/routing.md +33 -18
- package/skills/axstack/references/run-record.md +36 -15
- package/skills/axstack/references/t3-runtime.md +234 -0
- package/skills/axstack/references/test-audit-weekly.md +62 -0
- package/skills/axstack/references/test-value.md +120 -0
- package/skills/axstack/references/ui-verification.md +5 -1
- package/skills/axstack/references/workspace-hygiene.md +102 -156
- package/skills/axstack/scripts/pr-digest.js +120 -0
- package/skills/axstack/scripts/resolve-models.js +102 -0
- package/skills/axstack-align/SKILL.md +25 -11
- package/skills/axstack-audit/SKILL.md +22 -5
- package/skills/axstack-audit/references/record.md +1 -1
- package/skills/axstack-cleanup/SKILL.md +69 -87
- package/skills/axstack-debug/SKILL.md +1 -1
- package/skills/axstack-explain/SKILL.md +1 -1
- package/skills/axstack-explain/references/visual-qa.md +2 -0
- package/skills/axstack-implement/SKILL.md +76 -26
- package/skills/axstack-improve/SKILL.md +24 -4
- package/skills/axstack-relay/SKILL.md +16 -7
- package/skills/axstack-research/SKILL.md +11 -4
- package/skills/axstack-review/SKILL.md +42 -32
- package/skills/axstack-spec/SKILL.md +23 -14
- package/skills/axstack-tickets/SKILL.md +13 -11
- package/skills/axstack-watch/SKILL.md +117 -34
- package/skills/axstack-watch/references/watch-runtime.md +61 -69
- package/src/capabilities.js +33 -69
- package/src/installer.js +9 -1
- package/src/instructions.js +9 -4
- package/src/roles.js +38 -10
- package/skills/axstack/references/orca-runtime.md +0 -183
- 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
|
|
5
|
-
never decides that a
|
|
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
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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
|
|
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-
|
|
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>`.
|
|
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
|
|
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
|
|
58
|
-
each
|
|
59
|
-
operation may reject another
|
|
60
|
-
full union classification and verified per-
|
|
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
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
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-
|
|
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-
|
|
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
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
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
|
|
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
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
2. Load
|
|
47
|
-
|
|
48
|
-
roles, or fallback models.
|
|
49
|
-
3.
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
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
|
|
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
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
and
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
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
|
|
117
|
-
|
|
118
|
-
measured host capacity; waiting PRs remain covered without reserving slots.
|
|
119
|
-
Bounded PR jobs use
|
|
120
|
-
custom scheduler, state engine
|
|
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
|
|
138
|
-
|
|
139
|
-
|
|
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
|
|
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
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
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.
|
|
@@ -5,12 +5,12 @@
|
|
|
5
5
|
- `axstack-reviewer-primary` and `axstack-reviewer-secondary` are the ordered
|
|
6
6
|
peer pair. Peer review uses both; authored review uses this table:
|
|
7
7
|
|
|
8
|
-
| Preset | Author | Reviewer (
|
|
8
|
+
| Preset | Author class | Reviewer (class/effort) |
|
|
9
9
|
| --- | --- | --- |
|
|
10
|
-
| `mixed` |
|
|
11
|
-
| `mixed` |
|
|
12
|
-
| `codex-only` |
|
|
13
|
-
| `claude-only` |
|
|
10
|
+
| `mixed` | `codex/sol` | `axstack-reviewer-secondary` (`claude/opus` medium) |
|
|
11
|
+
| `mixed` | `claude/opus` | `axstack-reviewer-primary` (`codex/sol` high) |
|
|
12
|
+
| `codex-only` | `codex/sol` | `axstack-reviewer-secondary` (`codex/luna` xhigh) |
|
|
13
|
+
| `claude-only` | `claude/opus` | `axstack-reviewer-secondary` (`claude/sonnet` high) |
|
|
14
14
|
- `axstack-advisor-astra`/`axstack-advisor-opus` advise and author candidates;
|
|
15
15
|
`axstack-arena-candidate-grok`/
|
|
16
16
|
`axstack-arena-candidate-antigravity` add families.
|
|
@@ -24,14 +24,24 @@
|
|
|
24
24
|
- `axstack-auditor`/`axstack-research-requirements`/
|
|
25
25
|
`axstack-research-code`/`axstack-research-web`/
|
|
26
26
|
`axstack-explore-execution`/`axstack-monitor`:
|
|
27
|
-
`claude
|
|
27
|
+
`claude/sonnet` high in mixed/claude-only.
|
|
28
28
|
`axstack-monitor`: standalone watch never sends; chat-run watch: bounded
|
|
29
29
|
internal reports to its Run and original driver.
|
|
30
30
|
- Sol pairs `axstack-auditor-sol`/`axstack-research-code-sol`/
|
|
31
|
-
`axstack-explore-execution-sol`: `codex/
|
|
31
|
+
`axstack-explore-execution-sol`: `codex/sol` high in
|
|
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
|
|
36
|
-
|
|
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,25 +8,40 @@ 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
|
|
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
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
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, only grok and
|
|
27
|
+
antigravity use the provider's first listed model from saved capabilities and
|
|
28
|
+
record its exact ID.
|
|
29
|
+
A Codex or Claude role with neither model nor class is an intentional absence
|
|
30
|
+
and holds.
|
|
31
|
+
Resume must reuse the saved capabilities and role snapshot with no re-resolution; changes require the user’s explicit decision.
|
|
32
|
+
An unavailable provider, model, role, mode or effort holds that role with no substitution.
|
|
21
33
|
Preset changes apply to new runs only; an active run keeps its snapshot.
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
34
|
+
Replacing a session needs an explicit user decision and revalidation.
|
|
35
|
+
Timeout, quota, auth and rejection hold affected work.
|
|
36
|
+
[Model discipline](contracts.md#model-discipline) governs optional seats,
|
|
37
|
+
auditor preflight, and required holds; [Role roster](role-roster.md) governs
|
|
38
|
+
single-provider absence and mixed Codex+Claude fan-out.
|
|
39
|
+
Bundled presets are setup inputs, not runtime readiness proof.
|
|
26
40
|
|
|
27
41
|
Load the [Role roster](role-roster.md) for configured roles and authored-review pairings.
|
|
28
42
|
|
|
29
|
-
Provenance is matched on provider/model
|
|
43
|
+
Provenance is matched on provider/model class derived from the recorded exact ID;
|
|
44
|
+
effort never maps. Missing table-row
|
|
30
45
|
provenance is unsupported and `INCOMPLETE`; report it and ask the user. Never
|
|
31
46
|
infer from slot, driver, owner, or provider. Author and owner never review.
|
|
32
47
|
|
|
@@ -46,14 +61,14 @@ step (3) for user routing: no substitution or same-provider review.
|
|
|
46
61
|
off a classified repair (explain: how; debug: what's wrong).
|
|
47
62
|
- Code quality/refactor discovery -> `axstack-improve`: rank bounded
|
|
48
63
|
candidates with evidence; report only, no source edits.
|
|
49
|
-
- Accepted worker/
|
|
64
|
+
- Accepted worker/task/run completion or bounded backlog request -> driver invokes
|
|
50
65
|
`axstack-cleanup` inline; never dispatch it.
|
|
51
66
|
- Preparation completion, watch expiry, resume, or reconciliation -> the
|
|
52
67
|
[lifecycle](lifecycle.md#native-handoff-and-resume): reconcile run record,
|
|
53
68
|
keep owner, launch no native handoff.
|
|
54
69
|
- Explicit user-requested ownership transfer -> the same lifecycle section.
|
|
55
|
-
Load the [
|
|
56
|
-
|
|
70
|
+
Load the [T3 runtime boundary](t3-runtime.md), follow its ownership-transfer
|
|
71
|
+
contract, and require explicit recipient acceptance before ownership
|
|
57
72
|
changes. Missing capability is a setup gap; never invent one.
|
|
58
73
|
- Colleague PR review -> `axstack-review`, peer mode.
|
|
59
74
|
- Codebase review -> `axstack-review` codebase mode, report only.
|
|
@@ -75,7 +90,7 @@ reason in the run record, or in the brief for tiny direct work.
|
|
|
75
90
|
Require an approved spec plus a ticket map tied to that exact spec
|
|
76
91
|
revision, with acceptance checks and dependencies in the explicitly selected
|
|
77
92
|
Markdown, GitHub Issues, or Linear store. Prepare via `axstack-align` -> `axstack-spec`
|
|
78
|
-
(one approval) -> `axstack-tickets` -> handoff, then
|
|
93
|
+
(one approval) -> `axstack-tickets` -> handoff, then continue under autopilot when eligible.
|
|
79
94
|
- **Small:** clear, bounded one-PR work. The driver captures the named
|
|
80
95
|
**small-change intent** from the current request or user-chosen existing
|
|
81
96
|
issue plus explicit acceptance checks and exclusions, snapshots it once, and
|
|
@@ -96,7 +111,7 @@ not alone a formal spec trigger. Hold affected unsafe work while reassessing.
|
|
|
96
111
|
## Lifecycle routes (mode-specific scope identity required)
|
|
97
112
|
|
|
98
113
|
- Preparation: substantial work follows the align -> spec -> tickets ->
|
|
99
|
-
handoff path above, then
|
|
114
|
+
handoff path above, then continues under autopilot when eligible; small work uses the driver-captured
|
|
100
115
|
small-change intent.
|
|
101
116
|
- Execution: with its identity present, `axstack-implement` ->
|
|
102
117
|
`axstack-review` -> `axstack-watch`.
|
|
@@ -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
|
|
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.
|
|
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
|
|
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
|
|
79
|
-
|
|
80
|
-
pointer. Record the actual
|
|
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
|
|
87
|
-
|
|
88
|
-
|
|
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
|
-
-
|
|
131
|
-
- Active PR jobs and descendants: <PR,
|
|
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,18 +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: <
|
|
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>
|
|
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
|
|
168
|
+
Release: <AGENTS.md file:line + tag-triggered workflow path + named install hosts> | not applicable (<reason>)
|
|
154
169
|
Source base: <exact revision or source identity>
|
|
155
|
-
IDs: <
|
|
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>
|
|
156
173
|
Worktrees in other repositories: <per-run repository and worktree IDs or none>
|
|
157
174
|
Evidence: <check/review/submission/audit receipt pointers>
|
|
158
|
-
Pending: <launch/acceptance/external receipts +
|
|
175
|
+
Pending: <launch/acceptance/external receipts + scheduledTaskIds + runIds + deadline>
|
|
159
176
|
Unresolved: <decision -> next owner + next action>
|
|
160
177
|
Learnings: <root cause, gotcha, or pattern -> evidence ref>
|
|
161
178
|
Resume: <commands or evidence refs bound to exact revisions>
|
|
@@ -168,6 +185,10 @@ Resume: <commands or evidence refs bound to exact revisions>
|
|
|
168
185
|
| --- | --- | --- | --- | --- | --- |
|
|
169
186
|
| <task> | <task IDs or none> | <role + session ID + worktree, or receipt ref> | <pending/in progress/complete/blocked> | <SHA + check/receipt refs> | <action + owner> |
|
|
170
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
|
+
|
|
171
192
|
Status: <active/paused/held/complete/Archived>
|
|
172
193
|
Updated: <UTC timestamp>
|
|
173
194
|
```
|