axstack 0.20.10 → 0.20.12

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/docs/workflows.md CHANGED
@@ -50,8 +50,8 @@ role.
50
50
 
51
51
  | Preset | Author | Ordered peer reviewers | Astra / Fable advisers | Auditor |
52
52
  | --- | --- | --- | --- | --- |
53
- | `mixed` | Sol medium | Sol medium; Opus medium | Astra high / Fable high | Luna max |
54
- | `codex-only` | Sol medium | Sol medium; Luna xhigh | Astra high / unavailable | Luna max |
53
+ | `mixed` | Sol medium | Sol medium; Opus medium | Astra high / Fable high | Luna xhigh |
54
+ | `codex-only` | Sol medium | Sol medium; Luna xhigh | Astra high / unavailable | Luna xhigh |
55
55
  | `claude-only` | Opus medium | Opus medium; Sonnet xhigh | unavailable / Fable high | Sonnet xhigh |
56
56
 
57
57
  The installed `<skills-dir>/axstack/roles.json` adds the selected preset name:
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "axstack",
3
- "version": "0.20.10",
3
+ "version": "0.20.12",
4
4
  "description": "Axstack installer and setup CLI: installs owned chat skills and role data, configures supported harness settings, and checks Orca capabilities.",
5
5
  "keywords": [
6
6
  "claude-code",
@@ -124,7 +124,7 @@
124
124
  "provider": "codex",
125
125
  "model": "gpt-6-luna",
126
126
  "modeId": "full-access",
127
- "thinkingOptionId": "max",
127
+ "thinkingOptionId": "xhigh",
128
128
  "notes": "Independent visual explanation reviewer: checks the exact artifact for source fidelity and rendered behavior where warranted. Any artifact change invalidates its review. Validate configured availability at launch; hold affected work without fallback."
129
129
  },
130
130
  {
@@ -160,7 +160,7 @@
160
160
  "provider": "codex",
161
161
  "model": "gpt-6-luna",
162
162
  "modeId": "full-access",
163
- "thinkingOptionId": "max",
163
+ "thinkingOptionId": "xhigh",
164
164
  "notes": "Read-only end-of-run and checkpoint auditor. Collects scope and outcome evidence with counts and denominators and reports PASS, FAIL, or UNKNOWN without inventing numbers. Never edits, merges, activates, or audits itself."
165
165
  },
166
166
  {
@@ -124,7 +124,7 @@
124
124
  "provider": "codex",
125
125
  "model": "gpt-6-luna",
126
126
  "modeId": "full-access",
127
- "thinkingOptionId": "max",
127
+ "thinkingOptionId": "xhigh",
128
128
  "notes": "Independent visual explanation reviewer: checks the exact artifact for source fidelity and rendered behavior where warranted. Any artifact change invalidates its review. Validate configured availability at launch; hold affected work without fallback."
129
129
  },
130
130
  {
@@ -160,7 +160,7 @@
160
160
  "provider": "codex",
161
161
  "model": "gpt-6-luna",
162
162
  "modeId": "full-access",
163
- "thinkingOptionId": "max",
163
+ "thinkingOptionId": "xhigh",
164
164
  "notes": "Read-only end-of-run and checkpoint auditor. Collects scope and outcome evidence with counts and denominators and reports PASS, FAIL, or UNKNOWN without inventing numbers. Never edits, merges, activates, or audits itself."
165
165
  },
166
166
  {
@@ -238,6 +238,12 @@ or send outcome, not pending CI. Waiting state belongs in GitHub and the compact
238
238
  record, never in an idle model, per-PR timer, or polling loop.
239
239
  Follow the [private evidence archive](evidence-archive.md) when evidence is the
240
240
  only local state to preserve; archive success does not relax any other guard.
241
+ For a completed PR-job, including one whose PR remains open, archive classified
242
+ reviewer scratch through the [private evidence archive](evidence-archive.md),
243
+ read back the archive and compact receipt, then follow
244
+ [axstack-cleanup](../../axstack-cleanup/SKILL.md)'s exact-path guards to retire
245
+ the reviewer checkout before merge. This does not release active jobs or manager
246
+ pass workspaces.
241
247
 
242
248
  ## Review and repair authority
243
249
 
@@ -307,6 +313,8 @@ terminals, unknown liveness, `user_takeover`, and ambiguous publication state.
307
313
  Never classify all dirt as evidence. If explicitly classified evidence is the
308
314
  last retention reason, apply and verify the [private evidence archive](evidence-archive.md),
309
315
  update durable continuity, and read it back before native retirement.
316
+ Completed PR-job reviewer scratch uses axstack-cleanup after archive and readback;
317
+ it never changes manager pass preservation or retirement guards.
310
318
 
311
319
  For the manager pass only, verify native run/workspace identity, exclusive
312
320
  automation ownership, no unsettled descendants, and a fresh terminal inventory
@@ -1,14 +1,14 @@
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 automation-owned worktree cannot be retired. It archives evidence; it
4
+ finished Orca-owned worktree cannot be retired. It archives evidence; it
5
5
  never decides that a terminal or worktree is safe to remove and never performs
6
6
  native cleanup.
7
7
 
8
8
  ## Eligibility
9
9
 
10
10
  First prove the exact repository, PR or Run/Task, 40-character head SHA, Dispatch,
11
- workspace, terminal incarnation, automation ownership, descendant settlement,
11
+ workspace, terminal incarnation, Orca ownership, descendant settlement,
12
12
  and liveness from current native state. A manual chat, `user_takeover`, an
13
13
  active or unknown task terminal, an unsettled descendant, unpushed commits,
14
14
  dirty source, ambiguous publication, or an unknown file remains protected.
@@ -51,6 +51,14 @@ identities in durable lane continuity, then read the continuity and archive
51
51
  manifest back before cleanup. If either readback differs or is unavailable,
52
52
  preserve the worktree.
53
53
 
54
+ For a reviewer checkout with another Dispatch's scratch, archive and read back
55
+ each Dispatch's complete file set independently. The installed helper's retire
56
+ operation may reject another Dispatch's scratch as unclassified dirt. After
57
+ full union classification and verified per-Dispatch archives, use
58
+ [axstack-cleanup](../../axstack-cleanup/SKILL.md)'s exact per-prefix dry-run and
59
+ clean recovery; never force, use a broad target, or treat archive success as
60
+ removal authority.
61
+
54
62
  ## Native retirement
55
63
 
56
64
  Retire descendants before their parent. For each positively identified unused
@@ -83,10 +91,12 @@ to matching listed files and never removes directories.
83
91
  Record the retirement receipt's `removed`, `alreadyAbsent`, and `pending` file
84
92
  sets. A repeat invocation reconciles already absent files without changing the
85
93
  manifest. A partial or failed invocation preserves the archive; resolve its
86
- exact hold and retry the same operation until `pending` is empty. Never replace
87
- this operation with a shell loop, broad deletion, force, or a waiver.
94
+ exact hold and retry the same operation until `pending` is empty. The verified
95
+ multiple-Dispatch recovery above uses only axstack-cleanup's exact per-prefix
96
+ path. Never replace either path with a shell loop, broad deletion, force, or a
97
+ waiver.
88
98
 
89
- Re-read Git and native state after successful retirement. Any remaining or
99
+ Re-read Git and native state after successful evidence removal. Any remaining or
90
100
  uncertain dirt holds worktree removal. Settlement, liveness/no-writer proof,
91
101
  useful-work and publication checks, evidence classification, and removal
92
102
  authority remain driver decisions; archive or retirement success proves none of
@@ -78,8 +78,9 @@ authorized retry so no duplicate writer starts.
78
78
 
79
79
  Give each reviewer a separate Orca-managed child worktree under the candidate's
80
80
  worktree, including report-only reviews and rechecks; never share the author's
81
- checkout or another reviewer's checkout. Reuse that reviewer's own child only
82
- after its previous Dispatch has settled. Use the runtime-owned worktree guide,
81
+ checkout or another reviewer's checkout. A later review gets a fresh Orca-managed
82
+ child worktree after the prior settled review's evidence and cleanup are
83
+ reconciled. Use the runtime-owned worktree guide,
83
84
  not a raw Git worktree or temporary clone. Before dispatch, verify a detached
84
85
  checkout of the exact candidate SHA and the pinned base in that child.
85
86
 
@@ -95,8 +96,13 @@ owner. Remove only that exact validated owned path, with no glob or parent-root
95
96
  deletion; never wipe a general cache. Uncertain temporary files are preserved
96
97
  for later reconciliation. Incidental tool-managed caches are not review evidence.
97
98
  Before removing a reviewer worktree, preserve its report and supporting evidence
98
- in the driver's Orca workspace and update the run record's paths. Terminal
99
- release alone is not permission to discard evidence or remove the worktree.
99
+ in the private evidence archive outside the disposable checkout, verify manifest
100
+ readback, and update the run record's paths. A settled reviewer Dispatch can be
101
+ cleaned before PR merge through [axstack-cleanup](../../axstack-cleanup/SKILL.md)
102
+ only after its classification, readback, and removal guards pass. Preserve
103
+ active or unknown review evidence and unique evidence whose bytes must survive;
104
+ uncertain ownership or evidence holds. Terminal release alone is not permission
105
+ to discard evidence or remove the worktree.
100
106
 
101
107
  ## Consume, settle, and recover
102
108
 
@@ -25,7 +25,7 @@ immediately before an actual auditor profile or session dispatch. Ordinary
25
25
  audit reading and record writing do not load it, and the auditor never
26
26
  dispatches.
27
27
 
28
- Core owns the `axstack-auditor` profile (codex/gpt-6-luna max) and its
28
+ Core owns the `axstack-auditor` profile (codex/gpt-6-luna xhigh) and its
29
29
  invocation. This skill governs what that auditor reads, measures, and proposes.
30
30
  The user-chosen improvement mode is a tested, independently reviewed PR that a
31
31
  human merges.
@@ -34,8 +34,8 @@ Never clean a manual chat, the current driver, `user_takeover`, an active or
34
34
  unknown worker, an unsettled descendant, or a resource with ambiguous ownership.
35
35
  Preserve dirty or unknown files, unpushed commits, unmerged useful work,
36
36
  ambiguous publication, and evidence that has not been durably preserved. Do not
37
- force, bulk-clean, override a hook failure, edit a runtime database, or add a
38
- scheduler, daemon, or state machine.
37
+ force native removal, bulk-clean, override a hook failure, edit a runtime
38
+ database, or add a scheduler, daemon, or state machine.
39
39
 
40
40
  ## Reconcile each candidate
41
41
 
@@ -57,13 +57,68 @@ Classify exact evidence files individually. Save the compact cleanup decision
57
57
  and identities in the private run record or another configured durable private
58
58
  location outside disposable worktrees. When the evidence archive applies, use
59
59
  its helper with either the existing PR identity or the non-PR Run and Task
60
- identity; never invent a PR number. Read back both the durable record and the
61
- archive manifest, including hashes and exact identities, before removing any
62
- source copy or workspace.
60
+ identity; never invent a PR number. Read back the durable record and, when an
61
+ archive is used, its manifest, including hashes and exact identities, before
62
+ removing any source copy or workspace.
63
63
 
64
64
  Archive success proves only preservation of the listed bytes. It does not prove
65
65
  settlement, exit, ownership, a clean worktree, publication, or removal safety.
66
66
 
67
+ For a settled reviewer Dispatch, the reviewer worktree can be retired while its
68
+ PR remains open, before merge, after its report and supporting evidence are
69
+ archived privately and read back. Generated reviewer scratch is disposable
70
+ after a compact durable receipt is written outside the review worktree and read
71
+ back. Bind that receipt to the exact repository, Run,
72
+ Task, Dispatch, reviewer workspace and terminal, exact head SHA and base SHA,
73
+ review verdict, coverage and limitations, test and CI result pointers, and the
74
+ user authorization and scope for cleanup. A raw reviewer report may be discarded
75
+ after its verdict and limitations are compacted into that read-back receipt;
76
+ use the private evidence archive for the report and supporting evidence. Verify
77
+ each Dispatch archive and manifest readback independently. Preserve the separate
78
+ author candidate with useful unmerged work; reviewer cleanup never removes it.
79
+
80
+ Use only a named run-owned scratch prefix recorded with the Dispatch. Multiple
81
+ Dispatches in the same reviewer worktree are recovery for missed earlier
82
+ cleanup; after independent archives and readback, use per-prefix removal. Two or
83
+ more review passes in the same reviewer worktree may leave distinct prefixes;
84
+ each named run-owned scratch prefix must belong to an accepted settled Dispatch
85
+ in the Run. Require `git status --porcelain=v1 -z --untracked-files=all`
86
+ to show all dirt as untracked files inside a run-owned scratch prefix. Prove
87
+ every remaining untracked file individually belongs to one of those named
88
+ run-owned scratch prefixes; any tracked, staged, unmerged or unpushed work,
89
+ dirty source, or dirt outside them holds. Check ignored files across the whole
90
+ worktree too; unknown or ignored content holds. Validate that
91
+ the detached checkout still matches the reviewed head and check local commits
92
+ against recorded remote refs; unknown divergence holds. Validate that
93
+ the exact reviewed scratch prefix names the recorded directory inside the exact
94
+ reviewer worktree, never a repository-root target or symlink. Inspect every
95
+ descendant for symlinks, hard links, special files, unknown content, user-owned
96
+ files, or ignored files; any mismatch holds. Active or `user_takeover` terminals
97
+ also hold.
98
+
99
+ For each prefix, list the exact scoped path and all descendants with their
100
+ types, confirm each belongs to generated reviewer scratch, and record that
101
+ inventory. For each prefix, perform an exact-path dry-run and exact-path deletion
102
+ separately. Dry-run the exact scoped path from the reviewer worktree root with
103
+ `git clean -nd -- <exact reviewed scratch prefix>`
104
+ with the concrete reviewed relative prefix substituted for the angle-bracket
105
+ notation. Compare its sole target to the classified directory; an empty,
106
+ partial, or different result holds. Immediately before each deletion, including
107
+ each next deletion, re-read the compact receipt, complete Git status with
108
+ whole-worktree dirt and ignored files, every remaining prefix inventory, and
109
+ native ownership and liveness. Compare these reads against the expected
110
+ post-deletion state: previously deleted proven prefixes and their files are
111
+ absent, while remaining classified prefixes and outside content still match.
112
+ Only unexpected changes hold. Then run
113
+ `git clean -fd -- <same exact prefix>` with the identical concrete path, record
114
+ that path and outcome, and repeat for the next proven prefix. Recheck clean Git status
115
+ after the last deletion. Require final clean Git status before native
116
+ exact-workspace removal without force. Use no unresolved variable as a destructive target.
117
+ Never use `-x`, a
118
+ glob, a repository-root target, extra force, or broad clean.
119
+ This scratch decision does not waive any other preservation or native removal
120
+ guard.
121
+
67
122
  ## Apply distinct native operations
68
123
 
69
124
  Treat these operations as separate decisions and receipts:
@@ -81,15 +136,27 @@ Treat these operations as separate decisions and receipts:
81
136
  3. **Worktree removal.** Re-read Git status, branch/upstream divergence,
82
137
  unpushed commits, forge merge/publication state, children, terminals, and
83
138
  archived evidence immediately before the native exact-workspace removal.
84
- When archived evidence is the last dirt, use the evidence archive helper's
85
- manifest-bound retirement operation and require an empty pending set; never
86
- unlink through prose or a shell loop. Verify the effective Archive Script
139
+ When archived evidence is the last dirt for one Dispatch, use the evidence
140
+ archive helper's manifest-bound retirement operation and require an empty
141
+ pending set. If multiple Dispatch scratch prefixes remain in one checkout,
142
+ the helper may reject the other Dispatch's files as unclassified; after
143
+ independently verified per-Dispatch archives and full union classification,
144
+ use the exact per-prefix dry-run and clean above. Never unlink through prose
145
+ or a shell loop. Verify the effective Archive Script
87
146
  provenance before native removal: an unknown or required-but-untrusted hook
88
147
  holds. Record its native outcome as `unconfigured`, `passed`, `failed`, or
89
148
  `unknown`; only `unconfigured` or trusted `passed` may advance. Account for
90
149
  branch-deletion side effects explicitly, then re-list both native workspaces
91
- and Git refs. A failed or unknown hook outcome or uncertain response preserves
92
- the resource; never force or substitute shell deletion.
150
+ and Git refs. Read back each remaining local review ref against its recorded
151
+ name and tip. Any branch with unknown origin, unique commits, an active
152
+ worktree, or a remote counterpart must be preserved. Only when provenance
153
+ proves a ref was created for the removed reviewer checkout and its tip is
154
+ already reachable from the preserved author candidate or confirmed remote PR
155
+ head, permit
156
+ exact-ref expected-old ref deletion and read back its absence. Never delete
157
+ the author branch or use generic force. A failed or unknown hook outcome or
158
+ uncertain response preserves the resource; never force or substitute shell
159
+ deletion.
93
160
  4. **Chat archival.** Attempt it only if the version-matched runtime guide
94
161
  advertises a distinct supported operation and the scoped chat is eligible.
95
162
  Otherwise record chat archival as unsupported. Process exit, worker release,
@@ -163,7 +163,11 @@ For each PR:
163
163
  1. Dispatch `axstack-author` under §§3-5 and consume its strict-TDD receipt.
164
164
  2. Publish through candidate-publication and read back the exact SHA.
165
165
  3. Dispatch and consume the authored-mode `axstack-review` selected from actual
166
- author provenance.
166
+ author provenance. After each settled review, run `axstack-cleanup` for its
167
+ exact reviewer resources before PR merge, preserving and reading back the
168
+ private evidence archive before eligible worktree retirement. A later review
169
+ uses a fresh child checkout. Keep the author candidate until merge and
170
+ Close-out; a cleanup hold preserves only the affected reviewer resource.
167
171
  4. Route the verdict. `APPROVE` at that head plus `axstack-watch` §5's full
168
172
  predicate—required checks, all feedback, approvals, mergeability, and
169
173
  exact-revision receipts—records `merge-ready`. With required checks pending,
@@ -187,7 +191,7 @@ all-merged event—two per run—and (c) serious risk; never progress.
187
191
  Merge-ready is the human boundary: the user merges, bottom-up for a stack. The
188
192
  driver resumes on the user's next message or `/axstack-watch`; no Orca merge
189
193
  wake exists today. Re-read forge state: record forge-merged PRs as `merged`;
190
- changed heads or feedback return to step 1; release nothing before Close-out.
194
+ changed heads or feedback return to step 1; retain useful author work before Close-out.
191
195
  Run Close-out once only after every required PR is forge-merged and acceptance
192
196
  passes. It settles workers, records counts, makes the auditor decision and
193
197
  settlement, releases worktrees, closes eligible tickets, and archives the run.