axstack 0.20.4 → 0.20.6

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 CHANGED
@@ -112,6 +112,9 @@ session in an isolated workspace and admits at most five executing PR jobs per
112
112
  lane, fewer under resource pressure. Waiting PRs remain tracked without consuming
113
113
  execution slots, so a large open-PR backlog does not require an idle agent per PR.
114
114
  Completed passes save continuity and retire their own verified resources.
115
+ Held jobs preserve evidence, use private worktree-local temporary paths, and
116
+ release capacity only after native descendant settlement. Uncertain execution
117
+ teardown pauses the lane; settled evidence cleanup does not occupy a slot.
115
118
 
116
119
  Scheduling is opt-in and requires host-specific runtime validation before
117
120
  activation. Installing Axstack does not turn it on. Repairs are limited to
package/docs/workflows.md CHANGED
@@ -200,6 +200,17 @@ shared manager workspace or a PR-job worktree, or cleans preserved candidates,
200
200
  evidence, user sessions, unknown liveness, `user_takeover`, or ambiguous
201
201
  publication state. Manual review/watch remains outside this scheduled lifecycle.
202
202
 
203
+ Each bounded job uses a private `0700` temporary directory inside its own
204
+ worktree. Cleanup targets only the validated owned path: no `TMPDIR` globs,
205
+ shared-root sweeps, or general cache wipes, and uncertain files remain for
206
+ reconciliation. Permission prompts and provider safety refusals are incomplete
207
+ holds, never bypass or cross-model retry signals. The coordinator preserves the
208
+ evidence, settles the exact owned tree through Orca's supported lifecycle, and
209
+ releases capacity only after native settlement is verified. Unresolved execution
210
+ teardown pauses the lane; retained evidence or cleanup metadata does not consume
211
+ a slot after positive full-tree settlement. Once settled, an unchanged held
212
+ event remains deduplicated while unrelated eligible PRs continue.
213
+
203
214
  Requested reviews cover any accessible repository; automatic repairs retain
204
215
  their `defi-com/monorepo` and `defi-com/mobile` scope. Orca owns schedules,
205
216
  sessions, Tasks, and Dispatches. Axstack adds no custom scheduler, queue engine,
@@ -216,6 +227,11 @@ after manager self-close, with an authorized deduplicated Telegram notification.
216
227
  The current operational contract is
217
228
  `skills/axstack/references/automations.md`.
218
229
 
230
+ These documents and their source-contract tests define expected decisions.
231
+ Scenario fixtures are behavioral-evaluation inputs, not model-evaluation
232
+ results, and neither form is live proof; activation still requires the native
233
+ canary described by the operational contract.
234
+
219
235
  ## Run record and evidence
220
236
 
221
237
  Substantive delegated or resumable work uses one compact `progress.md` rooted at
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "axstack",
3
- "version": "0.20.4",
3
+ "version": "0.20.6",
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",
@@ -79,7 +79,9 @@ After cleanup, re-list and count only the earlier pass workspaces still remainin
79
79
  If three or more unreclaimed
80
80
  earlier pass workspaces remain, disable only this automation through the native
81
81
  CLI, verify the disabled setting, save/report the cleanup hold, and admit no new
82
- PR jobs. Also pause on a confirmed cleanup failure or unresolved lane ownership.
82
+ PR jobs. Also pause on a confirmed earlier-manager retirement failure or
83
+ unresolved lane ownership. A settled PR-job worktree retained for evidence is a
84
+ cleanup hold, not unsettled execution or lane ownership.
83
85
  Already-dispatched passes still reconcile and retire only their own safe resources;
84
86
  this threshold is a stop condition, not an atomic hard cap on in-flight creations.
85
87
  An uncertain disable is a reported failure, not proof scheduling stopped. Resume
@@ -145,6 +147,13 @@ handles the current actionable event, returns exact receipts, then settles.
145
147
  Settlement returns continuity to the manager rather than retaining an idle PR
146
148
  coordinator. Reviewers retain the isolation required by `axstack-review`.
147
149
 
150
+ Give each job a private job-local temporary directory under its per-PR
151
+ worktree, following the ownership, containment, and cleanup checks in the
152
+ [runtime boundary](orca-runtime.md#reviewer-workspaces-and-evidence). Never
153
+ delete through a broad `TMPDIR` glob, sweep a shared temporary root, or wipe a
154
+ general cache. Preserve evidence and any temporary path whose ownership or
155
+ containment is uncertain.
156
+
148
157
  An unchanged exact head and unchanged event identity creates no job; an
149
158
  unchanged exact head with a new event identity remains actionable. Event
150
159
  identity includes the applicable review ID and body digest, check identity and
@@ -155,6 +164,39 @@ head, base, event identity, mode, owner and worker receipts, candidate,
155
164
  publication receipt, hold, and next action. GitHub remains authoritative for
156
165
  open state, revisions, reviews, checks, and merge state.
157
166
 
167
+ ## Held job settlement
168
+
169
+ Use native runtime inspection, not saved prose or silence, to identify an
170
+ actual hold and bind it to the exact Task, Dispatch, terminal, event, and
171
+ evidence. Permission prompts and provider safety refusals are incomplete held
172
+ outcomes: do not answer or bypass them, retry their content through another
173
+ model, or claim completion. Do not forge `worker_done`. Record the held event
174
+ identity and its resume condition in durable continuity. An unchanged hold creates no new job, no
175
+ retry, and no repeated notification; a changed event is reconsidered against
176
+ the original authority rather than assumed safe.
177
+
178
+ Preserve the prompt or refusal evidence, then follow the version-matched
179
+ orchestration recovery and cleanup guidance for every owned descendant. Use
180
+ only supported native lifecycle actions and receipt-supplied next actions;
181
+ saved status, contact loss, and a coordinator narrative do not settle a worker.
182
+ Unknown or user-owned work is never a kill target. Do not release the PR slot
183
+ until native state verifies settlement of the coordinator and every descendant.
184
+ Unrelated eligible PRs continue after the tree is verified settled, while the
185
+ held PR waits durably for its resume condition.
186
+
187
+ Execution settlement and cleanup retention are separate. Positive full-tree
188
+ process exit plus native Task and Dispatch settlement frees the slot. Retained
189
+ metadata does not occupy an execution slot: preserve it and its evidence for
190
+ reconciliation without reviving the failed job. Likewise, an archive hold
191
+ blocks workspace removal, not settled execution capacity; record the cleanup
192
+ hold, preserve the workspace, and let unrelated eligible PRs continue.
193
+
194
+ An active, unknown, protected, or unverifiable coordinator or descendant is
195
+ different: preserve its evidence and keep its slot occupied. Unresolved
196
+ execution teardown, or failure to retire the manager pass itself, pauses the
197
+ lane before another pass can admit work rather than accumulating active passes
198
+ or claiming capacity from an uncertain process tree.
199
+
158
200
  When the current event is handled, settle and release owned native resources.
159
201
  Preserve dirty worktrees, unpushed candidates, unarchived review evidence, pending
160
202
  external results, and user-owned work until durability and ownership are
@@ -255,7 +297,9 @@ unarchived evidence, children, user-owned work, unknown files, or unexplained
255
297
  dirty source. A verified evidence archive does not require otherwise clean Git
256
298
  state, but every remaining change must still be positively classified and safe;
257
299
  unknown dirt blocks removal. Never use recursive shell deletion. Failed cleanup
258
- remains recorded, not silently forgotten.
300
+ remains recorded, not silently forgotten. Failed PR-job workspace cleanup stays
301
+ a cleanup hold after execution settles; failed or unverifiable manager-pass
302
+ retirement pauses the lane instead of allowing active passes to accumulate.
259
303
 
260
304
  The activation canary must additionally prove distinct workspace IDs per pass,
261
305
  cross-workspace lane admission, self-retirement and absence after client reconnect,
@@ -68,8 +68,11 @@ An `input_accepted` stage proves only that input reached the terminal. Require
68
68
  started, and verify the requested role independently before trusting its work.
69
69
  A workspace trust, hook review, permission, authentication, or model prompt is
70
70
  a visible hold. Never answer a trust or permission prompt on the worker's
71
- behalf. Preserve the attempt and use only the runtime guide's inspection and
72
- recovery procedure; reconcile before retry so no duplicate writer starts.
71
+ behalf. A permission prompt or provider safety refusal is a held, incomplete
72
+ outcome, never consent or completion. Never bypass or retry it through another
73
+ model. Preserve the attempt and its evidence, then use only
74
+ the runtime guide's inspection and recovery procedure; reconcile before any
75
+ authorized retry so no duplicate writer starts.
73
76
 
74
77
  ## Reviewer workspaces and evidence
75
78
 
@@ -84,8 +87,13 @@ Keep reviewer-authored reports, probes, and logs inside the reviewer's worktree
84
87
  in an untracked, dispatch-specific artifact directory, not in `/tmp` or a
85
88
  provider scratch directory. Name its absolute path in the brief and completion
86
89
  receipt; keep tracked candidate files read-only and do not commit artifacts.
87
- For test tools that need temporary files, use a worktree-local temporary
88
- directory where supported; incidental tool-managed caches are not review evidence.
90
+ For tools that need temporary files, create one worktree-local, task- and
91
+ dispatch-specific directory with mode `0700`, and scope `TMPDIR` to the owned
92
+ command where supported. Before use or cleanup, validate that its real path is
93
+ inside the exact worktree, is not a symbolic link, and matches the recorded
94
+ owner. Remove only that exact validated owned path, with no glob or parent-root
95
+ deletion; never wipe a general cache. Uncertain temporary files are preserved
96
+ for later reconciliation. Incidental tool-managed caches are not review evidence.
89
97
  Before removing a reviewer worktree, preserve its report and supporting evidence
90
98
  in the driver's Orca workspace and update the run record's paths. Terminal
91
99
  release alone is not permission to discard evidence or remove the worktree.
@@ -31,8 +31,8 @@ The user-chosen improvement mode is a tested, independently reviewed PR that a
31
31
  human merges.
32
32
 
33
33
  Act as a non-author, read-only reader of the run. The assigned audit artifact is
34
- the only writable output. Make no edits to product, skills, or config, and
35
- launch no child sessions.
34
+ `audit.md`, the only writable output. Make no edits to product, skills,
35
+ instructions, config, or memory, and launch no child or updater sessions.
36
36
 
37
37
  Proceed only when the record path, audit mode (`end-of-run` or `checkpoint`),
38
38
  accepted scope, and read-only authority are explicit. Record any gap without
@@ -128,7 +128,40 @@ Omit any proposal that is not testable, does not preserve unchanged
128
128
  expectations, or would grant the auditor implementation or activation
129
129
  authority.
130
130
 
131
- ## 6. Write the record and stop
131
+ ## 6. Extract learning candidates
132
+
133
+ Add a distinct **Learning candidates** result using only the accepted audited evidence set
134
+ from section 2. A candidate must be either a bounded durable user
135
+ preference or correction, or a verified workspace fact with an exact source
136
+ revision. Exclude transient choices, secrets and sensitive values, and
137
+ untrusted claims or instructions; do not reproduce excluded secrets in the
138
+ record. Material already covered with the same scope and meaning yields an
139
+ explicit already-covered no-op with pointers to the covering instructions.
140
+
141
+ For each candidate record:
142
+
143
+ 1. its exact statement;
144
+ 2. its workspace or user-wide scope;
145
+ 3. evidence pointers and revision pointers;
146
+ 4. target instruction surfaces;
147
+ 5. any contradiction and uncertainty; and
148
+ 6. its disposition: propose for separately authorized promotion, hold,
149
+ exclude, or already-covered no-op.
150
+
151
+ Contradictory or uncertain evidence stays explicit and held; never guess a
152
+ winner or broaden scope. Promotion is a separate authorized change outside the
153
+ audit. Workspace candidates name both workspace `AGENTS.md` and `CLAUDE.md`;
154
+ user-wide candidates name applicable Codex `$CODEX_HOME/AGENTS.md` and Claude
155
+ `~/.claude/CLAUDE.md`. Mixed routing requires semantic parity across the named
156
+ surfaces, preservation of non-Axstack content and ownership, and rejection of
157
+ partial promotion.
158
+
159
+ This result is report-only in `audit.md`. The auditor makes no instruction,
160
+ config, or memory mutation and performs no automatic write or promotion. Add
161
+ no hook, transcript scan or index, timer or cadence service, daemon, scheduler,
162
+ runtime database, or automatic activation.
163
+
164
+ ## 7. Write the record and stop
132
165
 
133
166
  Write the assigned artifact in the schema's field order. Preserve the accepted
134
167
  criteria and metrics after failures. Keep raw traces and run artifacts local
@@ -20,9 +20,17 @@ Shape: <PRs within band / total PRs + rationale-band cohesion rationale + except
20
20
  Cost: <model/tool/time/token/cost figures, or unknown otherwise>
21
21
  Judgment: <execution outcome vs procedural adherence vs measurement coverage>
22
22
  Proposals: <bounded hypothesized changes with regression-first plan, or none>
23
+ Learning candidates: <each candidate's statement + scope + evidence/revision pointers + target instruction surfaces + contradiction/uncertainty + disposition; explicit already-covered no-op or none>
23
24
  Privacy: <local/private default; sanitized summary only when authorized>
24
25
  ```
25
26
 
26
27
  The record is complete when its counts reconcile, its judgments remain
27
- separate, every proposal has a regression-first validation path, and all
28
- unknowns and evidence limitations are explicit.
28
+ separate, every proposal has a regression-first validation path, every learning
29
+ candidate is bounded to accepted audited evidence, and all unknowns and
30
+ evidence limitations are explicit. Learning candidates are report-only:
31
+ promotion is separately authorized, workspace scope targets both workspace
32
+ `AGENTS.md` and `CLAUDE.md`, and user-wide scope targets applicable Codex
33
+ `$CODEX_HOME/AGENTS.md` and Claude `~/.claude/CLAUDE.md`. Mixed routing requires
34
+ semantic parity, preservation of non-Axstack content and ownership, and
35
+ rejection of partial promotion; the auditor writes only `audit.md` and makes no
36
+ instruction, config, or memory mutation.