axstack 0.20.1 → 0.20.2

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
@@ -115,12 +115,13 @@ duplicate writer. A `worker_done` advances work only when its Task and Dispatch
115
115
  match the active attempt and its revision evidence verifies.
116
116
 
117
117
  Two logical native PR-manager lanes run on staggered 15-minute schedules. Each
118
- pass uses a fresh finite session in its persistent dedicated workspace. Review
118
+ pass uses a fresh finite session in a new isolated workspace. Review
119
119
  and watch each admit at most five bounded PR jobs;
120
120
  waiting PRs stay covered without reserving slots. Axstack adds no custom
121
121
  scheduler, queue engine, or decision interpreter. Sessions reconcile before
122
- admission, save durable continuity and decisions, clean only positively
123
- identified owned unused setup shells, and self-close as their final action.
122
+ admission across the whole lane, save durable continuity and decisions outside
123
+ disposable workspaces, and retire only their verified pass workspace as the
124
+ final action. Manual review/watch never inherits this cleanup lifecycle.
124
125
  Native fresh-session, overlapping-pass, recovery, and VPS resource behavior
125
126
  require a canary before activation.
126
127
 
package/docs/workflows.md CHANGED
@@ -184,19 +184,21 @@ read-only observer for standalone watches and never sends.
184
184
 
185
185
  The accepted contract has exactly two logical native manager lanes: review at
186
186
  minutes `0,15,30,45` and watch at `7,22,37,52`. Each scheduled pass uses a
187
- fresh finite session in a persistent dedicated workspace, scans complete
187
+ fresh finite session in a new isolated workspace, scans complete
188
188
  discovery pages, and admits at most five executing
189
189
  PR jobs. Waiting PRs stay covered and consume no slot after owned descendants
190
190
  settle. Each job uses one repository-parented worktree; managers never check out
191
191
  PR branches in their own workspaces.
192
192
 
193
- Every pass reconciles saved, GitHub, and native Orca state before admission. A
193
+ Every pass reconciles saved, GitHub, and native Orca state across all same-lane
194
+ workspaces before admission. A
194
195
  confirmed same-lane manager makes the new duplicate do no work or shared-record
195
196
  write and close only itself. Normal teardown settles descendants, saves durable
196
- continuity and decisions, closes only positively identified owned unused setup
197
- shell terminals, then self-closes as the final action. It never blanket-closes
198
- the workspace or cleans preserved candidates, evidence, user sessions, unknown
199
- liveness, `user_takeover`, or ambiguous publication state.
197
+ continuity and decisions outside disposable workspaces, then retires its own
198
+ verified isolated pass workspace as the final action. It never bulk-closes a
199
+ shared manager workspace or a PR-job worktree, or cleans preserved candidates,
200
+ evidence, user sessions, unknown liveness, `user_takeover`, or ambiguous
201
+ publication state. Manual review/watch remains outside this scheduled lifecycle.
200
202
 
201
203
  Requested reviews cover any accessible repository; automatic repairs retain
202
204
  their `defi-com/monorepo` and `defi-com/mobile` scope. Orca owns schedules,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "axstack",
3
- "version": "0.20.1",
3
+ "version": "0.20.2",
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",
@@ -13,13 +13,22 @@ There are exactly two logical manager lanes:
13
13
  [axstack-watch](../../axstack-watch/SKILL.md) for eligible own-PR watch or
14
14
  repair events.
15
15
 
16
- Each scheduled pass starts a fresh finite manager session in its persistent
17
- dedicated workspace; the workspace and saved continuity persist, but the
18
- manager chat does not. A manager never checks out a PR branch in that
19
- workspace. Missed slots do not replay a backlog; the next ordinary pass
16
+ Use a new isolated workspace for every scheduled pass, with one fresh finite
17
+ manager session. Configure native repo-created worktree mode against the
18
+ designated manager repository; never target an existing shared workspace.
19
+ Do not use `--reuse-session`. The scheduler creates the pass workspace before
20
+ launch; the manager must not move itself from a shared launch workspace.
21
+ Keep lane continuity and evidence outside disposable manager workspaces at
22
+ the configured durable absolute paths. A manager never checks out a PR branch
23
+ in its pass workspace. Missed slots do not replay a backlog; the next ordinary pass
20
24
  discovers current state. The two short packaged prompts sit beside this file
21
25
  and discover these rules by relative link instead of copying them.
22
26
 
27
+ Provision one explicit absolute continuity path per automation ID in the
28
+ scheduled prompt. Follow [Run record](run-record.md) for its contents; the
29
+ repository's absolute Git common directory is a valid durable root, but a pass
30
+ worktree is not. Missing or non-durable continuity configuration holds admission.
31
+
23
32
  This is prompt policy, not proof that Orca starts a fresh session or prevents
24
33
  overlapping passes. Before activation a native canary must prove fresh-session
25
34
  launch, overlapping-pass behavior, recovery after session loss, nested
@@ -29,14 +38,43 @@ effects. A firing timestamp proves neither delivery nor useful completion.
29
38
  ## Session admission
30
39
 
31
40
  Reconcile saved state, current GitHub state, and native Orca Tasks, Dispatches,
32
- sessions, and liveness in the dedicated workspace before discovery or
33
- admission. A confirmed live manager for the same lane remains authoritative.
41
+ sessions, and liveness across all workspaces belonging to the same automation
42
+ before discovery or admission; never infer lane ownership from an empty local
43
+ workspace. Bind the lane to the automation ID and pass to its native run ID,
44
+ workspace ID, and terminal identity, not a title or directory-name guess.
45
+ A confirmed live manager for the same lane remains authoritative.
34
46
  The new duplicate does no PR work, makes no shared-record write, touches
35
- nothing owned by the live manager, and closes only itself as its final action.
47
+ nothing owned by the live manager, and closes only itself as its final action
48
+ by the same guarded isolated-workspace retirement below, not a tab-only close.
36
49
  Unknown liveness blocks admission and shared-record writes; it does not
37
50
  authorize takeover, cleanup, or a duplicate manager. Preserve `user_takeover`
38
51
  and other user-owned sessions.
39
52
 
53
+ When two new passes overlap, reconcile native run ordering before either admits
54
+ work; the earlier unsettled pass retains the lane. Missing ordering or ownership
55
+ evidence holds admission, never guesses a winner. This is not an atomic lock:
56
+ activation requires an overlap canary proving only one pass admits work. Count
57
+ all unsettled PR jobs and descendants across the lane, not just this workspace.
58
+ Read every page of native runs, workers, and workspace inventory; truncated or
59
+ failed inventory holds admission and cleanup rather than implying absence.
60
+
61
+ A prior manager does not retain the lane merely because its automation run
62
+ status says failed or dispatched. Require confirmed native process exit for its
63
+ exact terminal incarnation, saved continuity, and settlement of all owned jobs
64
+ and descendants before releasing its lane ownership. Absence or saved retirement
65
+ intent alone is insufficient. Conversely a completed run row does not prove exit.
66
+ If these facts remain unknown, report the hold at the durable decision location;
67
+ do not silently stand down forever or replace a potentially live owner.
68
+
69
+ Before PR admission, reconcile old pass resources. If three or more unreclaimed
70
+ earlier pass workspaces remain, disable only this automation through the native
71
+ CLI, verify the disabled setting, save/report the cleanup hold, and admit no new
72
+ PR jobs. Also pause on a confirmed cleanup failure or unresolved lane ownership.
73
+ Already-dispatched passes still reconcile and retire only their own safe resources;
74
+ this threshold is a stop condition, not an atomic hard cap on in-flight creations.
75
+ An uncertain disable is a reported failure, not proof scheduling stopped. Resume
76
+ only after ownership/cleanup is verified and explicit activation authority exists.
77
+
40
78
  ## Discovery and coverage
41
79
 
42
80
  Resolve self on every tick with `gh api user --jq .login`; never hardcode the
@@ -176,13 +214,35 @@ and must be reconciled rather than trusted from saved status. Then save durable
176
214
  continuity, evidence locations, pending receipts, and user decisions before
177
215
  self-close. Waiting PRs still occupy zero slots once their owned trees settle.
178
216
 
179
- Cleanup is scoped to positively identified owned unused setup shells: use the
180
- version-matched native exact-terminal close operation for each such terminal only.
181
- Never blanket-close a workspace. Preserve dirty worktrees, unpushed candidates,
182
- review evidence, user-owned terminals, unknown liveness, `user_takeover`, and
183
- ambiguous publication state. Close the finite manager's own exact terminal
184
- through the native guide. Self-close is the final action; perform no record
185
- write, cleanup, or other work afterward.
217
+ Cleanup of PR-job setup shells stays scoped to positively identified owned unused
218
+ setup shells: use the native exact-terminal close operation for each only.
219
+ Preserve dirty worktrees, unpushed candidates, review evidence, user-owned
220
+ terminals, unknown liveness, `user_takeover`, and ambiguous publication state.
221
+
222
+ For the manager pass only, verify native run/workspace identity, exclusive
223
+ automation ownership, no unsettled descendants, and a fresh terminal inventory
224
+ containing only this manager and its proven unused setup shells. No other pass
225
+ may target this workspace. If an unexpected terminal or user takeover is present,
226
+ do not bulk-close; preserve the workspace and report the hold at its durable
227
+ decision location. Never bulk-close a shared manager workspace or a PR-job worktree.
228
+
229
+ After saving continuity, use the version-matched native workspace retirement:
230
+ `terminal close --worktree id:<exact-native-workspace-id> --all --json`.
231
+ Copy the complete ID from the run/workspace receipt; never use a name, branch,
232
+ path-only selector, or `active` for this destructive operation.
233
+ Self-close is the final action; perform no record write or cleanup afterward.
234
+ A failed or uncertain close is not proof of retirement. The next admitted pass
235
+ reconciles prior retirement from native state before trusting saved intent.
236
+ Retire only positively identified completed pass resources; do not kill another
237
+ live or unknown manager. Remove an old pass worktree only with native cleanup
238
+ after terminal retirement is confirmed and its Git state is clean, with no
239
+ unpushed commits, retained evidence, children, or user-owned work. Never use
240
+ recursive shell deletion. Failed cleanup remains recorded, not silently forgotten.
241
+
242
+ The activation canary must additionally prove distinct workspace IDs per pass,
243
+ cross-workspace lane admission, self-retirement and absence after client reconnect,
244
+ and bounded retained worktrees over repeated passes. A shell-only close test does
245
+ not prove agent resume-record retirement. Do not activate on source checks alone.
186
246
 
187
247
  ## Recovery and limits
188
248
 
@@ -110,7 +110,7 @@ differs from merged; human merges.
110
110
 
111
111
  ## Watch health
112
112
 
113
- Native review and watch lanes use fresh finite sessions in persistent dedicated
113
+ Native review and watch lanes use fresh finite sessions in isolated per-pass
114
114
  workspaces on staggered 15-minute schedules. Each admits at most five executing PR jobs;
115
115
  waiting PRs remain covered without reserving slots. Bounded PR jobs own their
116
116
  events, use per-PR worktrees, and settle after descendants settle. Build no
@@ -1,10 +1,12 @@
1
1
  # Review manager prompt
2
2
 
3
- You are a fresh finite review-manager session in its persistent dedicated Orca workspace. Enter
3
+ You are a fresh finite review-manager session in its isolated per-pass Orca workspace. Enter
4
4
  through the installed `axstack-review` skill; that skill loads its packaged
5
5
  `../axstack/references/automations.md` contract by relative reference. Discover
6
6
  every eligible peer-review event and invoke the skill through Orca for each
7
7
  admitted bounded PR job. Keep complete coverage separate from the five-job
8
8
  execution cap, preserve exact ownership and receipts, settle completed trees,
9
9
  and stay quiet when nothing changed. Reconcile before admission, save durable
10
- continuity, then self-close as the final action. Never check out a PR branch here.
10
+ continuity outside this workspace, then retire only this pass workspace as the
11
+ final action under the contract's ownership guards. Reconcile the whole lane,
12
+ not just this workspace. Never check out a PR branch here.
@@ -1,11 +1,12 @@
1
1
  # Watch manager prompt
2
2
 
3
- You are a fresh finite watch-manager session in its persistent dedicated Orca workspace. Enter
3
+ You are a fresh finite watch-manager session in its isolated per-pass Orca workspace. Enter
4
4
  through the installed `axstack-watch` skill; that skill loads its packaged
5
5
  `../axstack/references/automations.md` contract by relative reference. Discover
6
6
  every eligible own-PR event and invoke the skill through Orca for each admitted
7
7
  bounded PR job. Keep complete coverage separate from the five-job execution
8
8
  cap, preserve exact ownership, candidates, holds, and receipts, settle
9
9
  completed trees, and stay quiet when nothing changed. Reconcile before
10
- admission, save durable continuity, then self-close as the final action. Never
11
- check out a PR branch here.
10
+ admission, save durable continuity outside this workspace, then retire only this
11
+ pass workspace as the final action under the contract's ownership guards.
12
+ Reconcile the whole lane, not just this workspace. Never check out a PR branch here.
@@ -5,6 +5,8 @@ description: When a candidate PR needs final review, use axstack-review for conf
5
5
 
6
6
  # Review
7
7
 
8
+ Manual invocation does not enter the scheduled manager lifecycle; never close the user’s chat or workspace.
9
+
8
10
  Produce one evidence-bound verdict for an exact candidate revision using the
9
11
  review count and model routing required by its mode. Report within the
10
12
  requested authority; the human merges unless separately authorized otherwise.
@@ -5,6 +5,8 @@ description: When babysitting an existing PR, use axstack-watch to monitor or ma
5
5
 
6
6
  # Watch
7
7
 
8
+ Manual invocation does not enter the scheduled manager lifecycle; never close the user’s chat or workspace.
9
+
8
10
  Leave each adopted PR with one accountable owner, current readiness evidence,
9
11
  and user-facing updates that name its current milestone and next wake or
10
12
  condition.
@@ -71,8 +73,8 @@ Read-only checks and updates to the already-owned local record need no runtime
71
73
  load. When the watch needs a new owner or automated observation, first read
72
74
  [Watch runtime](references/watch-runtime.md) and then
73
75
  [Orca runtime](../axstack/references/orca-runtime.md). Reconcile before creating
74
- anything. Each native watch-manager pass starts a fresh finite session in one
75
- persistent dedicated workspace on its staggered 15-minute schedule, covers
76
+ anything. Each native watch-manager pass starts a fresh finite session in an
77
+ isolated per-pass workspace on its staggered 15-minute schedule, covers
76
78
  every eligible own PR, and starts only bounded actionable-event jobs. Waiting PRs reserve no execution slots and
77
79
  there is no watch deadline for manager automation. `axstack-monitor` stays an
78
80
  optional read-only observer that never sends. One read-only PR observation
@@ -14,9 +14,10 @@ stop task-owned registrations at completion, cancellation, or expiry.
14
14
  ## Native watch manager
15
15
 
16
16
  The separate native watch manager lane follows the
17
- [native PR-manager contract](../../axstack/references/automations.md). It reuses
18
- one persistent dedicated workspace while each scheduled pass uses a fresh
19
- finite session at minutes `7,22,37,52`. It scans every eligible own PR and
17
+ [native PR-manager contract](../../axstack/references/automations.md). Each pass
18
+ uses a new isolated workspace and fresh finite session at minutes `7,22,37,52`.
19
+ Continuity survives outside disposable workspaces; admission reconciles the
20
+ whole lane across workspaces. It scans every eligible own PR and
20
21
  admits at most five bounded actionable-event jobs. Waiting PRs stay covered
21
22
  without reserving slots. Each job uses its own repository-parented worktree and
22
23
  settles with all descendants; no model, per-PR timer, or polling loop waits for