axstack 0.20.14 → 0.20.16
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 +8 -5
- package/docs/installation.md +12 -7
- package/docs/workflows.md +45 -33
- package/package.json +1 -1
- package/profiles/presets/claude-only.json +1 -1
- package/profiles/presets/codex-only.json +1 -1
- package/profiles/presets/mixed.json +1 -1
- package/skills/axstack/references/automations.md +59 -137
- package/skills/axstack/references/candidate-publication.md +11 -0
- package/skills/axstack/references/lifecycle.md +22 -22
- package/skills/axstack/references/orca-runtime.md +32 -6
- package/skills/axstack/references/review-manager-prompt.md +6 -7
- package/skills/axstack/references/routing.md +8 -5
- package/skills/axstack/references/run-record.md +6 -1
- package/skills/axstack-implement/SKILL.md +6 -5
- package/skills/axstack-relay/SKILL.md +9 -8
- package/skills/axstack-review/SKILL.md +96 -8
- package/skills/axstack-spec/SKILL.md +9 -6
- package/skills/axstack-tickets/SKILL.md +6 -4
- package/skills/axstack-watch/SKILL.md +25 -9
- package/skills/axstack-watch/references/watch-runtime.md +80 -0
- package/src/capabilities.js +9 -3
package/README.md
CHANGED
|
@@ -20,7 +20,7 @@ scheduler, or runtime database to operate. Orca is the only supported runtime.
|
|
|
20
20
|
| Turn agreed scope into a specification | `axstack-spec` |
|
|
21
21
|
| Break a specification into executable tickets | `axstack-tickets` |
|
|
22
22
|
| Build an approved task with tests and independent review | `axstack-implement` |
|
|
23
|
-
| Review a pull request | `axstack-review` |
|
|
23
|
+
| Review a pull request or bounded existing code | `axstack-review` |
|
|
24
24
|
| Monitor or maintain an existing PR | `axstack-watch` |
|
|
25
25
|
| Diagnose a bug and establish a failing check | `axstack-debug` |
|
|
26
26
|
| Answer a bounded question with sources | `axstack-research` |
|
|
@@ -46,7 +46,8 @@ need to manually coordinate every agent or repeat an approval that is still vali
|
|
|
46
46
|
## Quick start
|
|
47
47
|
|
|
48
48
|
You need Bun >=1.3.14, Git, the GitHub CLI (`gh`), the `gh stack` extension,
|
|
49
|
-
and a running Orca with its `orca-cli` and `
|
|
49
|
+
and a running Orca with its `orca-cli`, `orchestration`, and `orca-linear`
|
|
50
|
+
guides available.
|
|
50
51
|
The agents selected by your preset must also be available in Orca.
|
|
51
52
|
|
|
52
53
|
Install the CLI and skills for your harness. For example, for Codex:
|
|
@@ -68,7 +69,9 @@ Then open an Orca chat and ask for the relevant skill:
|
|
|
68
69
|
$axstack-align Help me scope account recovery.
|
|
69
70
|
$axstack-implement Build the task we agreed on.
|
|
70
71
|
$axstack-review Review this pull request: <PR URL>
|
|
72
|
+
$axstack-review Find issues in <paths> at <commit SHA>.
|
|
71
73
|
$axstack-watch Monitor this PR without making changes: <PR URL>
|
|
74
|
+
$axstack-watch Watch every PR raised by this chat until all merge or close
|
|
72
75
|
```
|
|
73
76
|
|
|
74
77
|
Use `--harness claude`, `opencode`, or `antigravity` for another supported
|
|
@@ -108,13 +111,13 @@ model is unavailable. See [workflow and routing details](docs/workflows.md).
|
|
|
108
111
|
|
|
109
112
|
Manual review and watch work independently of scheduled automation.
|
|
110
113
|
For recurring peer review, Axstack defines one optional native Orca review manager.
|
|
111
|
-
Own-PR observation and authorized repair remain user-driven through `axstack-watch`.
|
|
114
|
+
Own-PR observation and authorized repair remain user-driven through `axstack-watch`. Its chat-run mode can use one optional same-host native Orca observer per Run, about every ten minutes, to report new PR events internally to the original chat. The chat alone directs repairs and publication. Activation needs a live host canary; source and install checks do not prove it is running.
|
|
112
115
|
|
|
113
116
|
The review manager uses a 15-minute schedule. Each pass uses a fresh finite
|
|
114
|
-
session in
|
|
117
|
+
session in one dedicated existing workspace and admits eligible actionable PR events within
|
|
115
118
|
measured host capacity. Waiting PRs remain tracked without consuming
|
|
116
119
|
execution slots, so a large open-PR backlog does not require an idle agent per PR.
|
|
117
|
-
Completed passes save continuity and
|
|
120
|
+
Completed passes save compact continuity and close only their own exact terminal.
|
|
118
121
|
Held jobs preserve evidence, use private worktree-local temporary paths, and
|
|
119
122
|
release capacity only after native descendant settlement. Uncertain execution
|
|
120
123
|
teardown pauses the lane; settled evidence cleanup does not occupy a slot.
|
package/docs/installation.md
CHANGED
|
@@ -6,7 +6,8 @@ does not dispatch agents, edit Orca settings, run a scheduler, or maintain a
|
|
|
6
6
|
workflow database.
|
|
7
7
|
|
|
8
8
|
Requirements: Bun >=1.3.14, Git, `gh`, the `gh stack` extension, and a running
|
|
9
|
-
Orca whose version-matched `orchestration` and `orca-
|
|
9
|
+
Orca whose version-matched `orchestration`, `orca-cli`, and `orca-linear`
|
|
10
|
+
guides are available.
|
|
10
11
|
There are no runtime dependencies. Filesystem access uses Bun-backed `node:fs`
|
|
11
12
|
and `node:fs/promises`; no other Node runtime contract is introduced.
|
|
12
13
|
|
|
@@ -83,7 +84,8 @@ axstack check [--bundle <dir>] [--instructions <file>] [--skills-dir <dir>|--har
|
|
|
83
84
|
```
|
|
84
85
|
|
|
85
86
|
The check separates Bun/Git/`gh stack` availability, resolved Orca executable,
|
|
86
|
-
runtime readiness, required
|
|
87
|
+
runtime readiness, required `orchestration`, `orca-cli`, and `orca-linear`
|
|
88
|
+
guide discovery, and bundle validity.
|
|
87
89
|
With an instruction target, it separately reports whether the marker block is
|
|
88
90
|
owned, missing, unowned, edited, or bound to a different path.
|
|
89
91
|
It must honor Orca's executable-resolution rules, including the Linux screen
|
|
@@ -227,11 +229,14 @@ not prove that a running harness reloaded them.
|
|
|
227
229
|
## Runtime guide discovery
|
|
228
230
|
|
|
229
231
|
The installed Axstack bundle does not own or copy Orca's guides. At an action
|
|
230
|
-
boundary, the skill resolves one Orca executable and loads
|
|
231
|
-
version-matched `orchestration`
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
232
|
+
boundary, the skill resolves one Orca executable and loads the operation's
|
|
233
|
+
version-matched `orchestration`, `orca-cli`, or `orca-linear` guide. Review
|
|
234
|
+
automation guidance is loaded only for the scheduled review branch. Missing
|
|
235
|
+
discovery is a setup gap, not a reason to fall back or invent commands. Guide
|
|
236
|
+
discovery does not prove an operation works; Linear documents, provider/model
|
|
237
|
+
routing, and live automation behavior need separate preflights.
|
|
238
|
+
|
|
239
|
+
Installation creates no production schedule and adds no custom scheduler. Chat-run PR watch requires a separately validated same-host native Orca automation, installed preset and effective observer model/effort, same-Run report delivery, safe original-driver wake, and own-automation stop/readback. Installed bytes alone do not activate it.
|
|
235
240
|
The optional review manager requires a separate native canary before activation;
|
|
236
241
|
installed guidance does not prove live behavior.
|
|
237
242
|
|
package/docs/workflows.md
CHANGED
|
@@ -21,6 +21,11 @@ Direct routes need no spec ceremony:
|
|
|
21
21
|
behavior; complex visuals receive exact-artifact QA where applicable.
|
|
22
22
|
- `axstack-improve` returns a small ranked set of evidenced improvement
|
|
23
23
|
candidates without editing code.
|
|
24
|
+
- Manual `axstack-review` can inspect existing code at an exact revision within
|
|
25
|
+
a named scope. Both configured peer reviewers inspect six lenses independently;
|
|
26
|
+
the driver reports validated defects and risks, improvement opportunities,
|
|
27
|
+
unverified leads, and `COMPLETE` or `INCOMPLETE` coverage. This report does
|
|
28
|
+
not approve a PR or publish findings.
|
|
24
29
|
- `axstack-debug` builds a red loop, diagnoses to root cause, escalates hard
|
|
25
30
|
bugs through adviser-directed investigator fan-out, and hands off a
|
|
26
31
|
classified repair without landing a change.
|
|
@@ -79,9 +84,12 @@ provider defaults, or installed tools, and no model is substituted silently.
|
|
|
79
84
|
|
|
80
85
|
Immediately before dispatch, delivery processing, settlement, recovery, or
|
|
81
86
|
handoff, load the shared `skills/axstack/references/orca-runtime.md`. It resolves
|
|
82
|
-
one Orca executable, loads
|
|
83
|
-
`
|
|
84
|
-
|
|
87
|
+
one Orca executable, then loads only the version-matched guide needed by the
|
|
88
|
+
operation: `orchestration` for Run/Task/Dispatch supervision, `orca-cli` for
|
|
89
|
+
worktrees, automations, handoff, and publication, and `orca-linear` for Linear
|
|
90
|
+
issues. Axstack follows current command help and named conditional references;
|
|
91
|
+
guide availability is not exercised runtime support. It does not vendor the
|
|
92
|
+
guides or restate a competing command protocol.
|
|
85
93
|
|
|
86
94
|
All subagent, delegated-worker, reviewer, and cross-harness work goes through Orca
|
|
87
95
|
orchestration via the `orca` CLI (`orca-cli` / `orchestration` guides). Do not use a
|
|
@@ -123,7 +131,10 @@ session and evidence remain valid.
|
|
|
123
131
|
- `axstack-spec` writes observable acceptance, exclusions, decisions, and one
|
|
124
132
|
user-approved revision baseline. Linear is the default authoritative store;
|
|
125
133
|
GitHub Issues and repository Markdown are explicit alternatives. A GitHub
|
|
126
|
-
baseline pins the issue URL and approved body digest.
|
|
134
|
+
baseline pins the issue URL and approved body digest. Linear document
|
|
135
|
+
operations preflight the current `orca-linear` guide and command help; a
|
|
136
|
+
missing native operation holds only that operation without MCP fallback or a
|
|
137
|
+
store switch.
|
|
127
138
|
- `axstack-tickets` maps user-visible capabilities to dependency-aware internal
|
|
128
139
|
tasks. Linear is the default selected store with access preflight; GitHub
|
|
129
140
|
Issues is an explicit external-tracker alternative and repository Markdown
|
|
@@ -135,7 +146,9 @@ session and evidence remain valid.
|
|
|
135
146
|
confirms the remote SHA before review. Local green and CI green remain
|
|
136
147
|
separate evidence.
|
|
137
148
|
- `axstack-review` gives peer PRs two isolated same-brief reviewers and authored
|
|
138
|
-
PRs one eligible cross-family/preset-mapped reviewer.
|
|
149
|
+
PRs one eligible cross-family/preset-mapped reviewer. Every reviewer runs in
|
|
150
|
+
a separate candidate-child worktree, with private evidence preserved before
|
|
151
|
+
removal. All cover security,
|
|
139
152
|
correctness, integration, requirements, design, and simplicity. Report-only
|
|
140
153
|
never publishes; authorized submission binds the exact commit.
|
|
141
154
|
- `axstack-watch` adopts an existing PR under observation-only, peer, or
|
|
@@ -174,8 +187,10 @@ keeps the current owner and a resumable record.
|
|
|
174
187
|
|
|
175
188
|
Serious security, downtime, data-loss, and major-design risks are raised in a
|
|
176
189
|
prompt immediately and hold dependent dangerous work. This is not a runtime
|
|
177
|
-
gate. An applicable `Notification policy` may use `axstack-relay
|
|
178
|
-
|
|
190
|
+
gate. An applicable `Notification policy` may use `axstack-relay` for serious
|
|
191
|
+
risk immediately or a genuine blocker needing user intervention after bounded
|
|
192
|
+
safe recovery. Questions, spec approvals, progress, CI pending, merge-ready,
|
|
193
|
+
merged, and completion stay in Orca. The relay normally delivers one-way
|
|
179
194
|
through native `hermes send`: it checks CLI lookup and the configured target,
|
|
180
195
|
binds the recipient, deduplicates on the run record, and records the returned
|
|
181
196
|
`message_id`. PR-manager notifications point the user to GitHub or a durable
|
|
@@ -185,39 +200,36 @@ authority. Delivery failure never clears the underlying hold.
|
|
|
185
200
|
Healthy watch observations remain quiet. The optional `axstack-monitor` is a
|
|
186
201
|
read-only observer for standalone watches and never sends.
|
|
187
202
|
|
|
203
|
+
## Chat-run PR watch
|
|
204
|
+
|
|
205
|
+
Use `axstack-watch` chat-run mode to watch every PR raised by this chat's Run, including later verified publications and PRs the driver explicitly adopts. One same-host native Orca automation observes about every ten minutes in fresh finite read-only sessions and reports new current-state events to the original Run. The initiating chat alone routes repairs, review, publication, and notifications. Independent PRs can repair in parallel with one writer per PR; stack ancestor changes invalidate child evidence. Unchanged complete passes stay quiet. An incomplete scan leaves readiness `UNKNOWN`.
|
|
206
|
+
|
|
207
|
+
The watch lasts until all member PRs merge or close, or you cancel it. Stop requires readback that its own automation is disabled; worker settlement and run archive are separate driver steps. Run-created implementation candidates are published and read back before independent authored review. Adopted own-PR maintenance candidates receive independent exact-local-SHA review before driver publication and remote readback. The human merges. Source and installed instructions do not prove scheduled observation, driver wake, or live activation; those require same-host native canary receipts.
|
|
208
|
+
|
|
188
209
|
## Optional native peer-review automation
|
|
189
210
|
|
|
190
211
|
The optional native review manager runs at minutes `0,15,30,45`. Each
|
|
191
|
-
scheduled pass uses a fresh finite session in
|
|
212
|
+
scheduled pass uses a fresh finite session in one dedicated existing workspace, scans complete
|
|
192
213
|
discovery pages, and admits eligible actionable PR events within measured host
|
|
193
214
|
capacity. Waiting PRs stay covered and consume no slot after
|
|
194
215
|
owned descendants settle. Each job uses one repository-parented worktree; the
|
|
195
216
|
manager never checks out PR branches in its own workspace.
|
|
196
217
|
|
|
197
|
-
Every pass reconciles saved, GitHub, and native Orca state across
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
publication
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
the full process tree exited before ownership release or guarded worktree removal.
|
|
213
|
-
Age, status, or idle state alone never authorizes cleanup. Conflicting successors,
|
|
214
|
-
identity mismatch, unknown or protected state, `user_takeover`, unexpected
|
|
215
|
-
terminals, dirty or unpushed work, and unarchived evidence hold cleanup; an
|
|
216
|
-
unchanged failure is deduplicated. Native ordering is not an atomic lock, so the
|
|
217
|
-
overlap canary remains an activation requirement.
|
|
218
|
-
|
|
219
|
-
Each bounded job uses a private `0700` temporary directory inside its own
|
|
220
|
-
worktree. Cleanup targets only the validated owned path: no `TMPDIR` globs,
|
|
218
|
+
Every pass reconciles saved, GitHub, and native Orca state across the lane before
|
|
219
|
+
admission. A confirmed same-lane manager makes the new duplicate do no work or
|
|
220
|
+
shared-record write; it closes only its own exact terminal. The pass settles
|
|
221
|
+
descendants,
|
|
222
|
+
releases worker terminals, archives private evidence and reads it back, then
|
|
223
|
+
uses `axstack-cleanup` guards to remove reviewer and PR-job worktrees. A merged
|
|
224
|
+
or closed PR does not keep a clean job worktree waiting for a user decision.
|
|
225
|
+
Dirty source, unpushed commits, `user_takeover`, unknown liveness, and ambiguous
|
|
226
|
+
publication remain cleanup holds. The manager saves compact continuity, then
|
|
227
|
+
closes its own exact terminal as the final action. Manual review and user-driven
|
|
228
|
+
`axstack-watch` remain outside this scheduled lifecycle.
|
|
229
|
+
|
|
230
|
+
Manager and job commands set `TMPDIR` to a private directory inside their owning
|
|
231
|
+
workspace. Each bounded job uses a private `0700` directory. Cleanup targets
|
|
232
|
+
only the validated owned path: no `TMPDIR` globs,
|
|
221
233
|
shared-root sweeps, or general cache wipes, and uncertain files remain for
|
|
222
234
|
reconciliation. Permission prompts and provider safety refusals are incomplete
|
|
223
235
|
holds, never bypass or cross-model retry signals. The coordinator preserves the
|
|
@@ -238,7 +250,7 @@ relative contract and invokes `axstack-review`. Bounded jobs publish ordinary
|
|
|
238
250
|
exact-head review verdicts; the human merges. Manual adopted-PR maintenance
|
|
239
251
|
uses `axstack-watch` with local-SHA review before authorized publication.
|
|
240
252
|
Exceptional security, permanent-on-chain, or architectural decisions remain actionable in GitHub or a durable user-owned conversation
|
|
241
|
-
after manager
|
|
253
|
+
after the manager session ends, with an authorized deduplicated Telegram notification.
|
|
242
254
|
The current operational contract is
|
|
243
255
|
`skills/axstack/references/automations.md`.
|
|
244
256
|
|
package/package.json
CHANGED
|
@@ -152,7 +152,7 @@
|
|
|
152
152
|
"model": "claude-sonnet-5",
|
|
153
153
|
"modeId": "bypassPermissions",
|
|
154
154
|
"thinkingOptionId": "low",
|
|
155
|
-
"notes": "Optional independent read-only observer for a standalone PR watch. Reads GitHub, feedback, and checks, persists event IDs, and wakes the owner only for a new actionable event. Never sends, authors, reviews, replies, or acts as either reusable PR manager. Healthy snapshots stay quiet."
|
|
155
|
+
"notes": "Optional independent read-only observer for a standalone PR watch. Reads GitHub, feedback, and checks, persists event IDs, and wakes the owner only for a new actionable event. Never sends, authors, reviews, replies, or acts as either reusable PR manager. Healthy snapshots stay quiet. Chat-run mode: one same-host native read-only observer per Run; fresh finite passes report precise deltas internally to the original Run/driver and may disable/read back only their own automation at verified stop. No repair, dispatch, public notification, or replacement coordinator. Effective scheduled model/effort and wake require live proof."
|
|
156
156
|
},
|
|
157
157
|
{
|
|
158
158
|
"id": "axstack-auditor",
|
|
@@ -152,7 +152,7 @@
|
|
|
152
152
|
"model": "gpt-6-sol",
|
|
153
153
|
"modeId": "full-access",
|
|
154
154
|
"thinkingOptionId": "low",
|
|
155
|
-
"notes": "Optional independent read-only observer for a standalone PR watch. Reads GitHub, feedback, and checks, persists event IDs, and wakes the owner only for a new actionable event. Never sends, authors, reviews, replies, or acts as either reusable PR manager. Healthy snapshots stay quiet."
|
|
155
|
+
"notes": "Optional independent read-only observer for a standalone PR watch. Reads GitHub, feedback, and checks, persists event IDs, and wakes the owner only for a new actionable event. Never sends, authors, reviews, replies, or acts as either reusable PR manager. Healthy snapshots stay quiet. Chat-run mode: one same-host native read-only observer per Run; fresh finite passes report precise deltas internally to the original Run/driver and may disable/read back only their own automation at verified stop. No repair, dispatch, public notification, or replacement coordinator. Effective scheduled model/effort and wake require live proof."
|
|
156
156
|
},
|
|
157
157
|
{
|
|
158
158
|
"id": "axstack-auditor",
|
|
@@ -152,7 +152,7 @@
|
|
|
152
152
|
"model": "claude-opus-5-5",
|
|
153
153
|
"modeId": "bypassPermissions",
|
|
154
154
|
"thinkingOptionId": "medium",
|
|
155
|
-
"notes": "Optional independent read-only observer for a standalone PR watch. Reads GitHub, feedback, and checks, persists event IDs, and wakes the owner only for a new actionable event. Never sends, authors, reviews, replies, or acts as either reusable PR manager. Healthy snapshots stay quiet."
|
|
155
|
+
"notes": "Optional independent read-only observer for a standalone PR watch. Reads GitHub, feedback, and checks, persists event IDs, and wakes the owner only for a new actionable event. Never sends, authors, reviews, replies, or acts as either reusable PR manager. Healthy snapshots stay quiet. Chat-run mode: one same-host native read-only observer per Run; fresh finite passes report precise deltas internally to the original Run/driver and may disable/read back only their own automation at verified stop. No repair, dispatch, public notification, or replacement coordinator. Effective scheduled model/effort and wake require live proof."
|
|
156
156
|
},
|
|
157
157
|
{
|
|
158
158
|
"id": "axstack-auditor",
|
|
@@ -8,21 +8,18 @@ automation specs and plans describe retired designs and are not instructions.
|
|
|
8
8
|
The review manager runs at minutes `0,15,30,45` and invokes
|
|
9
9
|
[axstack-review](../../axstack-review/SKILL.md) for eligible peer reviews.
|
|
10
10
|
|
|
11
|
-
Use
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
Keep lane continuity and evidence outside disposable manager workspaces at
|
|
17
|
-
the configured durable absolute paths. A manager never checks out a PR branch
|
|
18
|
-
in its pass workspace. Missed slots do not replay a backlog; the next ordinary pass
|
|
11
|
+
Use one dedicated existing Orca workspace owned by this automation. Configure
|
|
12
|
+
native existing-workspace mode with `--fresh-session`, never `--reuse-session`;
|
|
13
|
+
each pass gets a fresh finite manager session. Keep lane continuity and evidence
|
|
14
|
+
at configured durable absolute paths. A manager never checks out a PR branch
|
|
15
|
+
in its workspace. Missed slots do not replay a backlog; the next ordinary pass
|
|
19
16
|
discovers current state. The short packaged review prompt sits beside this file
|
|
20
17
|
and discovers these rules by relative link instead of copying them.
|
|
21
18
|
|
|
22
19
|
Provision one explicit absolute continuity path per automation ID in the
|
|
23
|
-
scheduled prompt.
|
|
24
|
-
|
|
25
|
-
|
|
20
|
+
scheduled prompt. The repository's absolute Git common directory is a valid
|
|
21
|
+
durable root; missing or non-durable configuration holds admission. Keep
|
|
22
|
+
continuity bounded and archive old pass history per [Run record](run-record.md).
|
|
26
23
|
|
|
27
24
|
This is prompt policy, not proof that Orca starts a fresh session or prevents
|
|
28
25
|
overlapping passes. Before activation a native canary must prove fresh-session
|
|
@@ -33,14 +30,14 @@ effects. A firing timestamp proves neither delivery nor useful completion.
|
|
|
33
30
|
## Session admission
|
|
34
31
|
|
|
35
32
|
Reconcile saved state, current GitHub state, and native Orca Tasks, Dispatches,
|
|
36
|
-
sessions, and liveness across all workspaces belonging to the
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
33
|
+
sessions, and liveness across all workspaces belonging to the lane before
|
|
34
|
+
discovery or admission; never infer lane ownership from an empty local workspace.
|
|
35
|
+
Bind the lane to the automation ID and pass to its native run ID, workspace ID,
|
|
36
|
+
and terminal identity, not a title or directory-name guess.
|
|
40
37
|
A confirmed live manager for the same lane remains authoritative.
|
|
41
38
|
The new duplicate does no PR work, makes no shared-record write, touches
|
|
42
|
-
nothing owned by the live manager, and closes only
|
|
43
|
-
|
|
39
|
+
nothing owned by the live manager, and closes only its own exact terminal as
|
|
40
|
+
its final action under the guard below.
|
|
44
41
|
Unknown liveness blocks admission and shared-record writes; it does not
|
|
45
42
|
authorize takeover, cleanup, or a duplicate manager. Preserve `user_takeover`
|
|
46
43
|
and other user-owned sessions.
|
|
@@ -54,66 +51,14 @@ Read every page of native runs, workers, and workspace inventory; truncated or
|
|
|
54
51
|
failed inventory holds admission and cleanup rather than implying absence.
|
|
55
52
|
|
|
56
53
|
A prior manager does not retain the lane merely because its automation run
|
|
57
|
-
status says failed or dispatched.
|
|
58
|
-
exact
|
|
59
|
-
|
|
60
|
-
|
|
54
|
+
status says failed or dispatched. Reconcile a surviving prior terminal using
|
|
55
|
+
exact identity and proven completion from native state before treating it as
|
|
56
|
+
live or releasing ownership. Require confirmed process exit for its exact
|
|
57
|
+
terminal incarnation, saved continuity, and settlement of all owned jobs and
|
|
58
|
+
descendants before ownership release. A completed run row alone does not prove exit.
|
|
61
59
|
If these facts remain unknown, report the hold at the durable decision location;
|
|
62
60
|
do not silently stand down forever or replace a potentially live owner.
|
|
63
61
|
|
|
64
|
-
### Guarded completed-predecessor recovery
|
|
65
|
-
|
|
66
|
-
A successor may retire a positively completed predecessor whose manager terminal
|
|
67
|
-
survived only through this narrow recovery path. Eligibility requires an exact
|
|
68
|
-
automation ID, run ID, workspace ID, and terminal incarnation match, a positive
|
|
69
|
-
completion receipt bound to that incarnation, zero active or unsettled descendants,
|
|
70
|
-
and every owned Task and Dispatch settled. A completed row or saved retirement
|
|
71
|
-
intent alone is not positive completion. Age, status, and idle state are never
|
|
72
|
-
cleanup authority. Active, unknown, protected, identity-mismatched,
|
|
73
|
-
`user_takeover`, unexpected-terminal, permission-held, or otherwise unverifiable
|
|
74
|
-
state preserves the predecessor and pauses admission; this path never takes over
|
|
75
|
-
its PR work.
|
|
76
|
-
|
|
77
|
-
Exactly one successor, selected by native run ordering, may write the cleanup
|
|
78
|
-
claim. Immediately before writing, re-read the complete lane inventory and
|
|
79
|
-
ordering; then save and read back claimant identity, predecessor identity,
|
|
80
|
-
completion, and zero-descendant continuity before the exact native workspace
|
|
81
|
-
close. A later successor reconciles that claim and performs no cleanup mutation.
|
|
82
|
-
Missing ordering or a conflicting claim holds both cleanup and admission. This
|
|
83
|
-
ordering is not an atomic lock; activation still depends on the overlap canary
|
|
84
|
-
proving that two successors cannot both mutate one predecessor.
|
|
85
|
-
|
|
86
|
-
Use the version-matched native workspace close against the receipt's complete
|
|
87
|
-
workspace ID, never an individually guessed terminal or broad selector. After
|
|
88
|
-
close, re-list native runs, workspaces, terminals, Tasks, and Dispatches and prove
|
|
89
|
-
the full predecessor process tree exited before ownership release. Save and read
|
|
90
|
-
back the exit and release receipts, then use native worktree cleanup only when the
|
|
91
|
-
workspace has no children, dirty or unknown files, unpushed commits, unarchived
|
|
92
|
-
evidence, or user-owned work. Preserve every failed or uncertain close, exit,
|
|
93
|
-
release, or removal with its exact resume condition and pause the lane. An
|
|
94
|
-
unchanged cleanup failure gets no destructive retry or duplicate notification.
|
|
95
|
-
|
|
96
|
-
Before PR admission, reconcile old pass resources and reclaim every safely
|
|
97
|
-
removable earlier pass workspace under the retirement guards below. This is
|
|
98
|
-
routine cleanup on every admitted pass; do not wait for the three-workspace
|
|
99
|
-
threshold to start cleanup. Save confirmed exit and ownership-release receipts
|
|
100
|
-
before removing each workspace. Preserve dirty, unpushed, evidence-bearing,
|
|
101
|
-
user-owned, active, or uncertain resources; the threshold never relaxes these guards.
|
|
102
|
-
Explicitly classified evidence may cease to block cleanup only after the
|
|
103
|
-
[private evidence archive](evidence-archive.md) is verified and its receipt is
|
|
104
|
-
read back from durable continuity. This never makes other dirt disposable.
|
|
105
|
-
After cleanup, re-list and count only the earlier pass workspaces still remaining.
|
|
106
|
-
If three or more unreclaimed
|
|
107
|
-
earlier pass workspaces remain, disable only this automation through the native
|
|
108
|
-
CLI, verify the disabled setting, save/report the cleanup hold, and admit no new
|
|
109
|
-
PR jobs. Also pause on a confirmed earlier-manager retirement failure or
|
|
110
|
-
unresolved lane ownership. A settled PR-job worktree retained for evidence is a
|
|
111
|
-
cleanup hold, not unsettled execution or lane ownership.
|
|
112
|
-
Already-dispatched passes still reconcile and retire only their own safe resources;
|
|
113
|
-
this threshold is a stop condition, not an atomic hard cap on in-flight creations.
|
|
114
|
-
An uncertain disable is a reported failure, not proof scheduling stopped. Resume
|
|
115
|
-
only after ownership/cleanup is verified and explicit activation authority exists.
|
|
116
|
-
|
|
117
62
|
## Discovery and coverage
|
|
118
63
|
|
|
119
64
|
Resolve self on every tick with `gh api user --jq .login`; never hardcode the
|
|
@@ -172,14 +117,17 @@ pin the observed head and base. The bounded PR coordinator loads the
|
|
|
172
117
|
review skill, launches only the reviewers that skill owns,
|
|
173
118
|
handles the current actionable event, returns exact receipts, then settles.
|
|
174
119
|
Settlement returns continuity to the manager rather than retaining an idle PR
|
|
175
|
-
coordinator. Reviewers retain the isolation required by `axstack-review
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
120
|
+
coordinator. Reviewers retain the isolation required by `axstack-review`:
|
|
121
|
+
each runs in a separate Orca child worktree, keeps its probes and evidence
|
|
122
|
+
inside that worktree, and preserves required evidence before removal.
|
|
123
|
+
|
|
124
|
+
Set `TMPDIR` for manager and job commands to a private directory inside each
|
|
125
|
+
command's owning workspace. Follow ownership, containment, and cleanup checks
|
|
126
|
+
in the [runtime boundary](orca-runtime.md#reviewer-workspaces-and-evidence).
|
|
127
|
+
Never write temporary files under `/` or another shared root. Never delete
|
|
128
|
+
through a broad `TMPDIR` glob, sweep a shared temporary root, or wipe a general
|
|
129
|
+
cache. Preserve evidence and any temporary path with uncertain ownership or
|
|
130
|
+
containment.
|
|
183
131
|
|
|
184
132
|
An unchanged exact head and unchanged event identity creates no job; an
|
|
185
133
|
unchanged exact head with a new event identity remains actionable. Event
|
|
@@ -220,12 +168,12 @@ hold, preserve the workspace, and let unrelated eligible PRs continue.
|
|
|
220
168
|
|
|
221
169
|
An active, unknown, protected, or unverifiable coordinator or descendant is
|
|
222
170
|
different: preserve its evidence and keep its slot occupied. Unresolved
|
|
223
|
-
execution teardown
|
|
224
|
-
|
|
225
|
-
or claiming capacity from an uncertain process tree.
|
|
171
|
+
execution teardown pauses the lane before another pass can admit work rather
|
|
172
|
+
than claiming capacity from an uncertain process tree.
|
|
226
173
|
|
|
227
|
-
When the current event is handled, settle and
|
|
228
|
-
|
|
174
|
+
When the current event is handled, settle the PR job and descendants, then use
|
|
175
|
+
native `worker-release` for their worker terminals. Preserve dirty source,
|
|
176
|
+
unpushed commits, unarchived review evidence, pending
|
|
229
177
|
external results, and user-owned work until durability and ownership are
|
|
230
178
|
proven. Unknown liveness, `user_takeover`, and ambiguous publication likewise
|
|
231
179
|
forbid cleanup. Here a pending external result means an unconfirmed review submission
|
|
@@ -233,12 +181,13 @@ or send outcome, not pending CI. Waiting state belongs in GitHub and the compact
|
|
|
233
181
|
record, never in an idle model, per-PR timer, or polling loop.
|
|
234
182
|
Follow the [private evidence archive](evidence-archive.md) when evidence is the
|
|
235
183
|
only local state to preserve; archive success does not relax any other guard.
|
|
236
|
-
For a
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
184
|
+
For a settled PR job, archive classified scratch through the
|
|
185
|
+
[private evidence archive](evidence-archive.md), read back its archive and
|
|
186
|
+
compact receipt, then use [axstack-cleanup](../../axstack-cleanup/SKILL.md)'s
|
|
187
|
+
exact-path guards to retire reviewer and PR-job worktrees in the same pass.
|
|
188
|
+
A merged or closed PR must never keep a job worktree waiting for a user decision;
|
|
189
|
+
resolve that hold by archive and cleanup. Preserve genuine protections: dirty
|
|
190
|
+
source, unpushed commits, `user_takeover`, unknown liveness, and ambiguous publication.
|
|
242
191
|
|
|
243
192
|
## Review authority
|
|
244
193
|
|
|
@@ -283,50 +232,23 @@ or separate model gate.
|
|
|
283
232
|
## Finite-session teardown
|
|
284
233
|
|
|
285
234
|
After admission closes, settle every owned PR job and all descendants before the
|
|
286
|
-
manager session
|
|
287
|
-
and must be reconciled
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
containing only this manager and its proven unused setup shells. No other pass
|
|
304
|
-
may target this workspace. If an unexpected terminal or user takeover is present,
|
|
305
|
-
do not bulk-close; preserve the workspace and report the hold at its durable
|
|
306
|
-
decision location. Never bulk-close a shared manager workspace or a PR-job worktree.
|
|
307
|
-
|
|
308
|
-
After saving continuity, use the version-matched native workspace retirement:
|
|
309
|
-
`terminal close --worktree id:<exact-native-workspace-id> --all --json`.
|
|
310
|
-
Copy the complete ID from the run/workspace receipt; never use a name, branch,
|
|
311
|
-
path-only selector, or `active` for this destructive operation.
|
|
312
|
-
Self-close is the final action; perform no record write or cleanup afterward.
|
|
313
|
-
A failed or uncertain close is not proof of retirement. The next admitted pass
|
|
314
|
-
reconciles prior retirement from native state before trusting saved intent.
|
|
315
|
-
Retire only positively identified completed pass resources; do not kill another
|
|
316
|
-
live or unknown manager. Remove an old pass worktree only with native cleanup
|
|
317
|
-
after terminal retirement is confirmed and it has no unpushed commits,
|
|
318
|
-
unarchived evidence, children, user-owned work, unknown files, or unexplained
|
|
319
|
-
dirty source. A verified evidence archive does not require otherwise clean Git
|
|
320
|
-
state, but every remaining change must still be positively classified and safe;
|
|
321
|
-
unknown dirt blocks removal. Never use recursive shell deletion. Failed cleanup
|
|
322
|
-
remains recorded, not silently forgotten. Failed PR-job workspace cleanup stays
|
|
323
|
-
a cleanup hold after execution settles; failed or unverifiable manager-pass
|
|
324
|
-
retirement pauses the lane instead of allowing active passes to accumulate.
|
|
325
|
-
|
|
326
|
-
The activation canary must additionally prove distinct workspace IDs per pass,
|
|
327
|
-
cross-workspace lane admission, self-retirement and absence after client reconnect,
|
|
328
|
-
and bounded retained worktrees over repeated passes. A shell-only close test does
|
|
329
|
-
not prove agent resume-record retirement. Do not activate on source checks alone.
|
|
235
|
+
manager session closes; active or unknown descendants keep their PR slot occupied
|
|
236
|
+
and must be reconciled from native state. Release settled worker terminals and
|
|
237
|
+
complete guarded evidence archival and worktree cleanup in this pass. Save
|
|
238
|
+
continuity, open decisions, and the last pass summary and read back the save.
|
|
239
|
+
Use the exact native terminal close for this pass's own terminal from its run
|
|
240
|
+
receipt: `orca terminal close --terminal <exact-handle> --json`. Terminal close
|
|
241
|
+
is the final action. Never use `--all`, a broad or name selector, or another
|
|
242
|
+
terminal in the dedicated workspace; uncertain identity or close outcome holds
|
|
243
|
+
the lane for native reconciliation, never a guessed retry.
|
|
244
|
+
Waiting PRs still occupy zero slots once their owned trees settle. A failed
|
|
245
|
+
cleanup remains a recorded hold with its exact resume condition, but does not
|
|
246
|
+
keep settled execution active.
|
|
247
|
+
|
|
248
|
+
The activation canary must prove fresh sessions in the dedicated workspace,
|
|
249
|
+
same-lane overlap admission, recovery after session loss, nested dispatch depth,
|
|
250
|
+
process and memory effects, and terminals in the dedicated workspace bounded
|
|
251
|
+
over repeated passes. Do not activate on source checks alone.
|
|
330
252
|
|
|
331
253
|
## Recovery and limits
|
|
332
254
|
|
|
@@ -29,3 +29,14 @@ its required checks complete. Review may run in parallel with CI only after the
|
|
|
29
29
|
remote confirmation. Reviewers inspect a detached immutable checkout of the
|
|
30
30
|
confirmed candidate SHA and pinned base, never only the movable branch name.
|
|
31
31
|
Any author repair creates a new revision and repeats this boundary.
|
|
32
|
+
|
|
33
|
+
## Immutable checkout shape
|
|
34
|
+
|
|
35
|
+
The immutable checkout is an Orca worktree of the already-registered repo:
|
|
36
|
+
`ORCA worktree create --repo id:<repoId> --name review-<pr>-<sha7> --json`,
|
|
37
|
+
then `git checkout --detach <candidate SHA>` inside it. Never materialize it
|
|
38
|
+
as a `git clone` into a temp directory followed by `orca repo add`; each
|
|
39
|
+
`repo add` registers a duplicate top-level repo and leaves a stale record once
|
|
40
|
+
the directory is gone. Release preparation uses a `release/<version>` worktree
|
|
41
|
+
of the same registered repo the same way. Release the checkout with
|
|
42
|
+
`ORCA worktree rm` after its receipt is recorded.
|