axstack 0.14.0 → 0.14.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/package.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Read this when the current session is the native Orca PR **driver** or its
|
|
4
4
|
**watchdog**. The approved contract is
|
|
5
|
-
`docs/specs/pr-automations.md` revision
|
|
5
|
+
`docs/specs/pr-automations.md` revision 5; this reference restates the parts an
|
|
6
6
|
automation session must execute and does not widen them.
|
|
7
7
|
|
|
8
8
|
Pair A/B is retired for this contract; its artefacts remain untouched.
|
|
@@ -127,32 +127,33 @@ The driver performs this order and exits:
|
|
|
127
127
|
Claude Code trusts a folder per git toplevel and stops at its "Quick safety
|
|
128
128
|
check" dialog otherwise, and the driver never answers that dialog for a
|
|
129
129
|
worker. So workers run in a fixed pool: every allowlisted project has
|
|
130
|
-
exactly
|
|
131
|
-
created once, parented to the project's primary worktree, and trusted once
|
|
130
|
+
exactly five slot worktrees, `slot-1` through `slot-5`, its Orca child
|
|
131
|
+
worktrees created once, parented to the project's primary worktree, and trusted once
|
|
132
132
|
by the user through that dialog. The driver never creates or removes a
|
|
133
133
|
worktree and never writes `~/.claude.json`. A slot is free when no live
|
|
134
134
|
dispatch marker names it, it is not in `retained_slots[]`, no terminal is
|
|
135
135
|
listed in it, and its tree is clean; no free slot in the project defers the
|
|
136
136
|
PR to `deferred[]` like a budget, not a hold. Taking a slot fetches the head into the project clone,
|
|
137
137
|
checks the slot out detached at the pinned head, and verifies HEAD equals
|
|
138
|
-
it; the marker's worktree is the slot path.
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
138
|
+
it; the marker's worktree is the slot path. The worker is launched by Orca
|
|
139
|
+
itself — `worker-start --agent claude --model claude-opus-5 --effort medium`
|
|
140
|
+
on that slot — so the runtime owns the process: `worker-release` ends it and
|
|
141
|
+
`worker-show` proves it exited, which is what returns the slot to the pool.
|
|
142
|
+
Never pre-create the worker's terminal or hand a terminal handle to
|
|
143
|
+
`worker-start`: a reused handle is a resource Orca labels `external`, one it
|
|
144
|
+
can neither stop nor prove exited, so every such slot ends retained. After
|
|
145
|
+
`worker-start` run `worker-show` on the receipt's dispatch id and require
|
|
146
|
+
`projection.resource.state == owned`; anything else is a launch Orca does not
|
|
147
|
+
own: apply the runtime-refusal recovery rules under "Safety holds" (the
|
|
148
|
+
`worker-list` row's `nextAction` argv verbatim; `none` means inspect and
|
|
149
|
+
retain), append a `worker not owned` health line and a `retained_slots[]`
|
|
150
|
+
entry for the slot, defer the PR, and record no marker. Orca's per-agent default arguments supply
|
|
151
|
+
`--dangerously-skip-permissions`; the brief loads the skill files it needs by
|
|
152
|
+
path. If `worker-start` reports a failed stage or a visible hold (the "Quick
|
|
153
|
+
safety check" trust dialog) the slot is not trusted: name the slot in a health
|
|
154
|
+
line, defer the PR, dispatch nothing, never answer the dialog. Project
|
|
155
|
+
customizations load as they would for the user; the allowlist is defi-com
|
|
156
|
+
only and the user accepted that surface on 2026-09-18.
|
|
156
157
|
|
|
157
158
|
Every selected PR receives one dispatch marker with task id, dispatch id,
|
|
158
159
|
worktree, head, `started_at`, reservation (`verdict` or `repair`), and trigger:
|