axstack 0.20.6 → 0.20.7

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
@@ -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
+ One natively ordered successor may recover an exact positively completed
204
+ predecessor whose terminal survived, but only after matching its automation,
205
+ run, workspace, and terminal incarnation and proving zero unsettled descendants.
206
+ It saves and reads back the cleanup claim before exact native close, then proves
207
+ the full process tree exited before ownership release or guarded worktree removal.
208
+ Age, status, or idle state alone never authorizes cleanup. Conflicting successors,
209
+ identity mismatch, unknown or protected state, `user_takeover`, unexpected
210
+ terminals, dirty or unpushed work, and unarchived evidence hold cleanup; an
211
+ unchanged failure is deduplicated. Native ordering is not an atomic lock, so the
212
+ overlap canary remains an activation requirement.
213
+
203
214
  Each bounded job uses a private `0700` temporary directory inside its own
204
215
  worktree. Cleanup targets only the validated owned path: no `TMPDIR` globs,
205
216
  shared-root sweeps, or general cache wipes, and uncertain files remain for
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "axstack",
3
- "version": "0.20.6",
3
+ "version": "0.20.7",
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",
@@ -66,6 +66,38 @@ intent alone is insufficient. Conversely a completed run row does not prove exit
66
66
  If these facts remain unknown, report the hold at the durable decision location;
67
67
  do not silently stand down forever or replace a potentially live owner.
68
68
 
69
+ ### Guarded completed-predecessor recovery
70
+
71
+ A successor may retire a positively completed predecessor whose manager terminal
72
+ survived only through this narrow recovery path. Eligibility requires an exact
73
+ automation ID, run ID, workspace ID, and terminal incarnation match, a positive
74
+ completion receipt bound to that incarnation, zero active or unsettled descendants,
75
+ and every owned Task and Dispatch settled. A completed row or saved retirement
76
+ intent alone is not positive completion. Age, status, and idle state are never
77
+ cleanup authority. Active, unknown, protected, identity-mismatched,
78
+ `user_takeover`, unexpected-terminal, permission-held, or otherwise unverifiable
79
+ state preserves the predecessor and pauses admission; this path never takes over
80
+ its PR work.
81
+
82
+ Exactly one successor, selected by native run ordering, may write the cleanup
83
+ claim. Immediately before writing, re-read the complete lane inventory and
84
+ ordering; then save and read back claimant identity, predecessor identity,
85
+ completion, and zero-descendant continuity before the exact native workspace
86
+ close. A later successor reconciles that claim and performs no cleanup mutation.
87
+ Missing ordering or a conflicting claim holds both cleanup and admission. This
88
+ ordering is not an atomic lock; activation still depends on the overlap canary
89
+ proving that two successors cannot both mutate one predecessor.
90
+
91
+ Use the version-matched native workspace close against the receipt's complete
92
+ workspace ID, never an individually guessed terminal or broad selector. After
93
+ close, re-list native runs, workspaces, terminals, Tasks, and Dispatches and prove
94
+ the full predecessor process tree exited before ownership release. Save and read
95
+ back the exit and release receipts, then use native worktree cleanup only when the
96
+ workspace has no children, dirty or unknown files, unpushed commits, unarchived
97
+ evidence, or user-owned work. Preserve every failed or uncertain close, exit,
98
+ release, or removal with its exact resume condition and pause the lane. An
99
+ unchanged cleanup failure gets no destructive retry or duplicate notification.
100
+
69
101
  Before PR admission, reconcile old pass resources and reclaim every safely
70
102
  removable earlier pass workspace under the retirement guards below. This is
71
103
  routine cleanup on every admitted pass; do not wait for the three-workspace