axstack 0.19.0 → 0.20.0
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 +6 -6
- package/docs/installation.md +2 -2
- package/docs/workflows.md +26 -30
- package/package.json +1 -1
- package/profiles/presets/claude-only.json +1 -10
- package/profiles/presets/codex-only.json +1 -10
- package/profiles/presets/mixed.json +1 -10
- package/skills/axstack/references/automations.md +167 -474
- package/skills/axstack/references/candidate-publication.md +3 -3
- package/skills/axstack/references/lifecycle.md +7 -7
- package/skills/axstack/references/orca-runtime.md +20 -1
- package/skills/axstack/references/review-manager-prompt.md +9 -0
- package/skills/axstack/references/routing.md +3 -3
- package/skills/axstack/references/watch-manager-prompt.md +10 -0
- package/skills/axstack-relay/SKILL.md +3 -22
- package/skills/axstack-review/SKILL.md +35 -24
- package/skills/axstack-watch/SKILL.md +35 -25
- package/skills/axstack-watch/references/repair-publication.md +10 -12
- package/skills/axstack-watch/references/watch-runtime.md +35 -50
|
@@ -32,8 +32,8 @@ Any author repair creates a new revision and repeats this boundary.
|
|
|
32
32
|
|
|
33
33
|
## Automation repair exception
|
|
34
34
|
|
|
35
|
-
For
|
|
36
|
-
[
|
|
35
|
+
For a manager PR repair under
|
|
36
|
+
[Native PR managers](automations.md), the candidate is a local immutable
|
|
37
37
|
commit SHA in the per-PR child worktree, not a published remote ref. The
|
|
38
38
|
reviewer confirms that exact local SHA with `git rev-parse` in the worktree
|
|
39
39
|
instead of remote equality, and inspects a detached checkout of it with the
|
|
@@ -42,4 +42,4 @@ it as the expected-old remote SHA rather than requiring it to equal the
|
|
|
42
42
|
candidate. Remote equality is re-checked at the publication readback of the
|
|
43
43
|
watch skill's repair-publication reference immediately before the fast-forward
|
|
44
44
|
push. Ordinary workflows keep the remote confirmation above; the
|
|
45
|
-
exception never applies outside
|
|
45
|
+
exception never applies outside a manager PR job.
|
|
@@ -17,7 +17,8 @@ binding state and receipts to exact revisions.
|
|
|
17
17
|
`axstack-reviewer-secondary` sessions with identical brief and isolated first
|
|
18
18
|
pass; authored = one eligible configured reviewer from actual author
|
|
19
19
|
provenance. Owner and author never review.
|
|
20
|
-
- Automation
|
|
20
|
+
- Automation review/watch managers and optional monitor: see
|
|
21
|
+
[Watch health](#watch-health).
|
|
21
22
|
- Auditor (`axstack-auditor`): report-only; never edits, merges, activates, or
|
|
22
23
|
audits itself.
|
|
23
24
|
|
|
@@ -109,12 +110,11 @@ differs from merged; human merges.
|
|
|
109
110
|
|
|
110
111
|
## Watch health
|
|
111
112
|
|
|
112
|
-
The
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
fallback. Details live in
|
|
113
|
+
The native review and watch managers reuse separate dedicated workspaces on
|
|
114
|
+
staggered 15-minute schedules. Each admits at most five executing PR jobs;
|
|
115
|
+
waiting PRs remain covered without reserving slots. Bounded PR jobs own their
|
|
116
|
+
events, use per-PR worktrees, and settle after descendants settle. Build no
|
|
117
|
+
custom scheduler, state engine, or legacy fallback. Details live in
|
|
118
118
|
[Watch runtime](../../axstack-watch/references/watch-runtime.md).
|
|
119
119
|
|
|
120
120
|
## Audit hook (close-out and meaningful checkpoints)
|
|
@@ -26,7 +26,7 @@ Read `roles.json` from the installed shared root `skills/axstack/`. The installe
|
|
|
26
26
|
shape is `{ "version": 1, "preset": "<name>", "roles": [...] }`. Bundled
|
|
27
27
|
profiles are setup inputs shaped as
|
|
28
28
|
`{ "version": 1, "roles": [...] }`. A new run records the selected preset and
|
|
29
|
-
all
|
|
29
|
+
all 24 role rows once. An active run keeps the exact snapshot until the user
|
|
30
30
|
explicitly changes it.
|
|
31
31
|
|
|
32
32
|
Select the requested role by stable ID. A missing or null model holds only that role;
|
|
@@ -71,6 +71,25 @@ a visible hold. Never answer a trust or permission prompt on the worker's
|
|
|
71
71
|
behalf. Preserve the attempt and use only the runtime guide's inspection and
|
|
72
72
|
recovery procedure; reconcile before retry so no duplicate writer starts.
|
|
73
73
|
|
|
74
|
+
## Reviewer workspaces and evidence
|
|
75
|
+
|
|
76
|
+
Give each reviewer a separate Orca-managed child worktree under the candidate's
|
|
77
|
+
worktree, including report-only reviews and rechecks; never share the author's
|
|
78
|
+
checkout or another reviewer's checkout. Reuse that reviewer's own child only
|
|
79
|
+
after its previous Dispatch has settled. Use the runtime-owned worktree guide,
|
|
80
|
+
not a raw Git worktree or temporary clone. Before dispatch, verify a detached
|
|
81
|
+
checkout of the exact candidate SHA and the pinned base in that child.
|
|
82
|
+
|
|
83
|
+
Keep reviewer-authored reports, probes, and logs inside the reviewer's worktree
|
|
84
|
+
in an untracked, dispatch-specific artifact directory, not in `/tmp` or a
|
|
85
|
+
provider scratch directory. Name its absolute path in the brief and completion
|
|
86
|
+
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.
|
|
89
|
+
Before removing a reviewer worktree, preserve its report and supporting evidence
|
|
90
|
+
in the driver's Orca workspace and update the run record's paths. Terminal
|
|
91
|
+
release alone is not permission to discard evidence or remove the worktree.
|
|
92
|
+
|
|
74
93
|
## Consume, settle, and recover
|
|
75
94
|
|
|
76
95
|
Process a whole delivery before acknowledgment. Accept `worker_done` only when
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# Review manager prompt
|
|
2
|
+
|
|
3
|
+
You are the reusable review manager in your dedicated Orca workspace. Enter
|
|
4
|
+
through the installed `axstack-review` skill; that skill loads its packaged
|
|
5
|
+
`../axstack/references/automations.md` contract by relative reference. Discover
|
|
6
|
+
every eligible peer-review event and invoke the skill through Orca for each
|
|
7
|
+
admitted bounded PR job. Keep complete coverage separate from the five-job
|
|
8
|
+
execution cap, preserve exact ownership and receipts, settle completed trees,
|
|
9
|
+
and stay quiet when nothing changed. Never check out a PR branch here.
|
|
@@ -11,7 +11,7 @@ only with exactly one unambiguous preset; missing or contradictory sources are
|
|
|
11
11
|
a setup gap: hold. Never infer from live profiles or `list_profiles`, harness,
|
|
12
12
|
tools, credentials, quota, subscription, or default to `mixed`.
|
|
13
13
|
|
|
14
|
-
At run start, capture one **routing snapshot**: the complete map of all
|
|
14
|
+
At run start, capture one **routing snapshot**: the complete map of all 24 role
|
|
15
15
|
IDs with provider/model/mode/effort, absent or unconfigured roles recorded
|
|
16
16
|
explicitly, and no invented provider default. An absent or unconfigured role
|
|
17
17
|
holds only that role's work, not the run. A role installed or changed later
|
|
@@ -43,8 +43,8 @@ Role IDs:
|
|
|
43
43
|
`axstack-arena-judge-fable` judge them. `axstack-auditor` audits;
|
|
44
44
|
`axstack-checker` reports discrepancies.
|
|
45
45
|
- `axstack-explainer` authors explanations; `axstack-explainer-review`
|
|
46
|
-
reviews them. `axstack-monitor`
|
|
47
|
-
|
|
46
|
+
reviews them. `axstack-monitor` is an optional read-only standalone-watch
|
|
47
|
+
observer that never sends.
|
|
48
48
|
- `axstack-debug-investigator-1..4` each probe one L1 brief.
|
|
49
49
|
|
|
50
50
|
Provenance is matched on provider/model ID; effort never maps. Missing table-row
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# Watch manager prompt
|
|
2
|
+
|
|
3
|
+
You are the reusable watch manager in your dedicated Orca workspace. Enter
|
|
4
|
+
through the installed `axstack-watch` skill; that skill loads its packaged
|
|
5
|
+
`../axstack/references/automations.md` contract by relative reference. Discover
|
|
6
|
+
every eligible own-PR event and invoke the skill through Orca for each admitted
|
|
7
|
+
bounded PR job. Keep complete coverage separate from the five-job execution
|
|
8
|
+
cap, preserve exact ownership, candidates, holds, and receipts, settle
|
|
9
|
+
completed trees, and stay quiet when nothing changed. Never check out a PR
|
|
10
|
+
branch here.
|
|
@@ -64,9 +64,9 @@ listing all pass.
|
|
|
64
64
|
## Preserve identity and authority
|
|
65
65
|
|
|
66
66
|
Delivery is one-way; no session polls Telegram. Hermes does not route a reply
|
|
67
|
-
back to the sending session; its own agent answers replies.
|
|
68
|
-
decision
|
|
69
|
-
|
|
67
|
+
back to the sending session; its own agent answers replies. A reply is never a
|
|
68
|
+
receipt, decision, or authority for this session, and no persistent owner is
|
|
69
|
+
needed to send. Every ordinary
|
|
70
70
|
message must say where the user acts: the current Orca conversation, the Orca
|
|
71
71
|
worktree, or the GitHub PR. Do not invent reply commands.
|
|
72
72
|
|
|
@@ -76,25 +76,6 @@ authority. Delivery is transport evidence only. Revalidate any user decision
|
|
|
76
76
|
that arrives through an authorized channel against the current task and
|
|
77
77
|
existing action boundaries before acting; silence never grants permission.
|
|
78
78
|
|
|
79
|
-
## Decision tokens
|
|
80
|
-
|
|
81
|
-
An automation escalation is the narrow exception defined by
|
|
82
|
-
[Automation sessions](../axstack/references/automations.md). The PR agent opens
|
|
83
|
-
an immutable-bound decision token, sends one message with the exact
|
|
84
|
-
`/axstack-decide approve <token>` and `/axstack-decide reject <token>` replies,
|
|
85
|
-
records the send receipt, and
|
|
86
|
-
exits without waiting. The Hermes script decides by validating the private
|
|
87
|
-
channel and updating only an open token file; Hermes never performs the bound
|
|
88
|
-
GitHub or Git action. The driver consumes the file on a later tick, revalidates
|
|
89
|
-
all bound state, marks an approval spent before acting, performs only that
|
|
90
|
-
action, and records its receipt.
|
|
91
|
-
|
|
92
|
-
This does not create a reply channel for the sending agent: Hermes pushes the
|
|
93
|
-
decision to the file through the fixed `axstack-decide` script, and the driver
|
|
94
|
-
reads that file. Delivery is one-way; no session polls Telegram. Token creation,
|
|
95
|
-
decision, and consumption keep their separate writers and authority; a message
|
|
96
|
-
receipt alone authorizes nothing.
|
|
97
|
-
|
|
98
79
|
## Reconcile, deliver, and record
|
|
99
80
|
|
|
100
81
|
Before any new send, check the caller's run record for an existing receipt
|
|
@@ -9,6 +9,12 @@ Produce one evidence-bound verdict for an exact candidate revision using the
|
|
|
9
9
|
review count and model routing required by its mode. Report within the
|
|
10
10
|
requested authority; the human merges unless separately authorized otherwise.
|
|
11
11
|
|
|
12
|
+
When the current session is the reusable review manager, load
|
|
13
|
+
[Native PR managers](../axstack/references/automations.md) and follow only its
|
|
14
|
+
discovery, admission, recovery, and settlement branch. Do not review a PR,
|
|
15
|
+
materialize `axstack-owner`, or check out a PR branch in the manager workspace.
|
|
16
|
+
Each admitted bounded PR coordinator re-enters this skill in peer mode.
|
|
17
|
+
|
|
12
18
|
Before reviewing, load [Standing contracts](../axstack/references/contracts.md),
|
|
13
19
|
then [Lifecycle and receipts](../axstack/references/lifecycle.md) so its required
|
|
14
20
|
audit edge remains active. Load [Shared routing](../axstack/references/routing.md)
|
|
@@ -16,8 +22,8 @@ to select the mode and scope identity, and apply the shared
|
|
|
16
22
|
[PR-shape policy](../axstack/references/pr-shape.md). For an owned candidate,
|
|
17
23
|
load and verify the
|
|
18
24
|
[candidate-publication boundary](../axstack/references/candidate-publication.md).
|
|
19
|
-
When the caller is
|
|
20
|
-
[
|
|
25
|
+
When the caller is a bounded review-manager PR job, load
|
|
26
|
+
[Native PR managers](../axstack/references/automations.md): its reviewer briefs
|
|
21
27
|
carry the required escalation field and every eligible peer PR takes a binding
|
|
22
28
|
`APPROVE` or `REQUEST_CHANGES` verdict under the automation exception below.
|
|
23
29
|
|
|
@@ -71,13 +77,13 @@ fallback.
|
|
|
71
77
|
Before dispatch, read [Orca runtime](../axstack/references/orca-runtime.md).
|
|
72
78
|
Standalone peer review or watch adoption then materializes `axstack-owner`,
|
|
73
79
|
reusing a live owner when one exists. Once materialized, that owner is the sole
|
|
74
|
-
coordinator: only the owner launches the writer, reviewers,
|
|
75
|
-
|
|
76
|
-
|
|
80
|
+
coordinator: only the owner launches the writer, reviewers, and optional
|
|
81
|
+
monitor. The current chat does not compete with it. Leaf workers create no
|
|
82
|
+
recursive teams.
|
|
77
83
|
|
|
78
84
|
Automation exception — Standalone owner: no separate `axstack-owner` is
|
|
79
|
-
materialized when the caller is
|
|
80
|
-
|
|
85
|
+
materialized when the caller is a bounded manager PR job; that PR coordinator
|
|
86
|
+
owns the event and settles after its skill-owned reviewers settle.
|
|
81
87
|
|
|
82
88
|
## Review the candidate
|
|
83
89
|
|
|
@@ -94,7 +100,10 @@ session is the owner for every PR it handles.
|
|
|
94
100
|
mode, and all six angles.
|
|
95
101
|
2. **Materialize the mode-required review.** Immediately before dispatch, read
|
|
96
102
|
[Orca runtime](../axstack/references/orca-runtime.md), then apply exactly one
|
|
97
|
-
branch
|
|
103
|
+
branch below. For every reviewer, apply
|
|
104
|
+
[Reviewer workspaces and evidence](../axstack/references/orca-runtime.md#reviewer-workspaces-and-evidence)
|
|
105
|
+
before launch; report-only scope does not waive checkout isolation or
|
|
106
|
+
worktree-local artifacts.
|
|
98
107
|
- **Peer:** exactly two independent final reviewers,
|
|
99
108
|
`axstack-reviewer-primary` and `axstack-reviewer-secondary`, materialized
|
|
100
109
|
from the routing snapshot. Send both the identical six-angle brief with no
|
|
@@ -216,6 +225,8 @@ no merge authority.
|
|
|
216
225
|
|
|
217
226
|
```text
|
|
218
227
|
Candidate: <PR URL> rev <sha> (immutable checkout)
|
|
228
|
+
Workspace: <Orca worktree ID + absolute path>
|
|
229
|
+
Evidence: <worktree-local report and probe paths>
|
|
219
230
|
Mode: <peer | authored> Actual author: <session/model evidence | n/a>
|
|
220
231
|
Scope: <spec rev or linked issue + ticket + current base + exclusions>
|
|
221
232
|
Angles: <all six; identical brief for peer reviewers>
|
|
@@ -225,15 +236,17 @@ Escalate to user: yes | no — <criterion> — <reason>
|
|
|
225
236
|
Every brief ends with the `Escalate to user` field and the reviewer answers it
|
|
226
237
|
in the receipt. A reviewer may cite only a security concern, a permanent
|
|
227
238
|
on-chain state change, or an architectural change in approach. Health is not a
|
|
228
|
-
reviewer criterion. The answer is
|
|
229
|
-
|
|
230
|
-
|
|
239
|
+
reviewer criterion. The answer is escalation input, not a veto or verdict; see
|
|
240
|
+
[Native PR managers](../axstack/references/automations.md) for the manager-chat
|
|
241
|
+
hold.
|
|
231
242
|
|
|
232
243
|
## Template: review receipt (one block per revision)
|
|
233
244
|
|
|
234
245
|
```text
|
|
235
246
|
Mode: <peer | authored>
|
|
236
247
|
Reviewer: <reviewer role + provider/model/effort receipt> session <id> rev <candidate sha> base <current base>
|
|
248
|
+
Workspace: <Orca worktree ID + absolute path>
|
|
249
|
+
Evidence: <worktree-local report and probe paths>
|
|
237
250
|
Verdict: <APPROVE | REQUEST_CHANGES | INCOMPLETE>
|
|
238
251
|
Coverage: <angles + acceptance + executable evidence checked>
|
|
239
252
|
Limitations: <unverified boundaries + why>
|
|
@@ -261,12 +274,11 @@ relay delivery fails, send the same escalation there. Failed delivery never reso
|
|
|
261
274
|
concern. Use no private escalation script. Public installations inherit no
|
|
262
275
|
private transport values or configuration.
|
|
263
276
|
|
|
264
|
-
Under
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
without waiting; `proceed` never overrides a validated blocking finding.
|
|
277
|
+
Under a manager PR job, credible serious risk found by a reviewer raises the
|
|
278
|
+
standing internal prompt and dependent-action hold immediately in the compact
|
|
279
|
+
run record and reusable manager's Orca conversation. The authorized
|
|
280
|
+
`axstack-relay` notification points the user there; delivery or silence never
|
|
281
|
+
authorizes action.
|
|
270
282
|
|
|
271
283
|
## Publishing rule
|
|
272
284
|
|
|
@@ -315,13 +327,12 @@ to the intended commit.
|
|
|
315
327
|
## Automation exception
|
|
316
328
|
|
|
317
329
|
For a peer PR selected under
|
|
318
|
-
[
|
|
319
|
-
complete-review and exact-commit requirements
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
state submits nothing.
|
|
330
|
+
[Native PR managers](../axstack/references/automations.md), apply the same
|
|
331
|
+
complete-review and exact-commit requirements. A serious-risk escalation holds
|
|
332
|
+
submission in the reusable manager conversation. Otherwise `APPROVE` requires
|
|
333
|
+
no validated blocker and `REQUEST_CHANGES` requires at least one evidenced
|
|
334
|
+
validated blocker. `INCOMPLETE`, unavailable inputs, unresolved disagreement,
|
|
335
|
+
or unknown GitHub state submits nothing.
|
|
325
336
|
|
|
326
337
|
Immediately before `gh pr review`, re-read self's reviews at the head. If one
|
|
327
338
|
already exists, skip submission and record its id. Otherwise re-check head,
|
|
@@ -14,6 +14,13 @@ Its required edge loads [Shared lifecycle](../axstack/references/lifecycle.md),
|
|
|
14
14
|
including the end-of-run audit hook. Reach other references only at the steps
|
|
15
15
|
that name them.
|
|
16
16
|
|
|
17
|
+
When the current session is the reusable watch manager, load
|
|
18
|
+
[Native PR managers](../axstack/references/automations.md) and follow only its
|
|
19
|
+
discovery, admission, recovery, and settlement branch. Do not adopt or repair a
|
|
20
|
+
PR, materialize `axstack-owner`, or check out a PR branch in the manager
|
|
21
|
+
workspace. Each admitted bounded PR coordinator re-enters this skill in its
|
|
22
|
+
recorded mode.
|
|
23
|
+
|
|
17
24
|
Preserve any explicitly named PR, repository, or peer scope. For broad
|
|
18
25
|
discovery of the user's own PRs (such as “my” or “our” PRs), run
|
|
19
26
|
`gh api user --jq .login` on the execution host, then select open PRs authored
|
|
@@ -21,9 +28,9 @@ by that login in the named or current repository. Never hardcode or guess the
|
|
|
21
28
|
username; a missing or failed authenticated-login lookup is a concrete blocker.
|
|
22
29
|
The authenticated human login selects PRs. Runtime session IDs coordinate work
|
|
23
30
|
only and establish neither human identity nor write, reply, or merge authority.
|
|
24
|
-
When the session is
|
|
25
|
-
[
|
|
26
|
-
|
|
31
|
+
When the session is a bounded watch-manager PR job, also load
|
|
32
|
+
[Native PR managers](../axstack/references/automations.md): the bounded PR
|
|
33
|
+
coordinator owns that event and its allowlist bounds every mutation.
|
|
27
34
|
|
|
28
35
|
## 1. Adopt and reconcile
|
|
29
36
|
|
|
@@ -64,21 +71,20 @@ Read-only checks and updates to the already-owned local record need no runtime
|
|
|
64
71
|
load. When the watch needs a new owner or automated observation, first read
|
|
65
72
|
[Watch runtime](references/watch-runtime.md) and then
|
|
66
73
|
[Orca runtime](../axstack/references/orca-runtime.md). Reconcile before creating
|
|
67
|
-
anything. The
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
watch deadline for
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
needs neither. The publishing driver is the live owner for a status check;
|
|
74
|
+
anything. The native watch manager reuses one dedicated workspace on its
|
|
75
|
+
staggered 15-minute schedule, covers every eligible own PR, and starts only
|
|
76
|
+
bounded actionable-event jobs. Waiting PRs reserve no execution slots and
|
|
77
|
+
there is no watch deadline for manager automation. `axstack-monitor` stays an
|
|
78
|
+
optional read-only observer that never sends. One read-only PR observation
|
|
79
|
+
needs neither. The bounded PR coordinator is the live owner for its event;
|
|
74
80
|
materialize no `axstack-owner` and start no automation for a read-only check.
|
|
75
81
|
|
|
76
82
|
For standalone adoption, materialize `axstack-owner` only when no live owner
|
|
77
83
|
exists. Once it exists, the current chat is not a competing coordinator. Only
|
|
78
|
-
the owner launches the writer, reviewers,
|
|
79
|
-
no
|
|
84
|
+
the owner launches the writer, reviewers, and optional monitor. Leaf workers
|
|
85
|
+
create no recursive teams, and the adoption watcher is never the writer.
|
|
80
86
|
|
|
81
|
-
A live watch has verified role and timer receipts, handshakes, watched scope,
|
|
87
|
+
A standalone live watch has verified role and timer receipts, handshakes, watched scope,
|
|
82
88
|
wake ownership, and a common expiry. A missing runtime capability is a setup gap,
|
|
83
89
|
not a reason to invent a call or create a duplicate registration. Native
|
|
84
90
|
wake-ups drive observation; never poll or keep a model active between events.
|
|
@@ -94,9 +100,9 @@ A healthy unchanged observation produces no user-facing message.
|
|
|
94
100
|
|
|
95
101
|
Observation-only and peer wakes produce a read-only report and stop. For an
|
|
96
102
|
authorized maintenance wake that may require a repair or public reply, read and
|
|
97
|
-
follow [Repair and publication](references/repair-publication.md).
|
|
98
|
-
|
|
99
|
-
|
|
103
|
+
follow [Repair and publication](references/repair-publication.md). A manager PR
|
|
104
|
+
job repairs in its per-PR child worktree created through `orca-cli`;
|
|
105
|
+
the manager workspace never checks out a PR branch.
|
|
100
106
|
|
|
101
107
|
### Feedback routing
|
|
102
108
|
|
|
@@ -107,9 +113,9 @@ snapshot. Missing, stale, or materially changed identity holds repair routing
|
|
|
107
113
|
while monitoring continues. Accepted fixes return to the same original author
|
|
108
114
|
session only when the run itself launched that session and evidence allows,
|
|
109
115
|
then receive refreshed review under the authored mode rule before publication.
|
|
110
|
-
For an adopted own PR under the
|
|
111
|
-
not a run-launched session: the repair author is the
|
|
112
|
-
|
|
116
|
+
For an adopted own PR under the manager, the original authoring session is
|
|
117
|
+
not a run-launched session: the repair author is the manager PR coordinator or
|
|
118
|
+
a dispatched `axstack-author`, and the authored-review
|
|
113
119
|
pairing follows the recorded actual provenance of that repair, not the PR's
|
|
114
120
|
historical author. Unknown, mixed, or unsupported author provenance
|
|
115
121
|
that cannot establish the eligible configured reviewer is an exact gap to
|
|
@@ -120,10 +126,9 @@ the current revision, and a recorded hold or next owner where work remains.
|
|
|
120
126
|
|
|
121
127
|
When a new actionable event is eligible under a recorded `Notification policy`,
|
|
122
128
|
the owner may use the optional [axstack-relay](../axstack-relay/SKILL.md).
|
|
123
|
-
The monitor never sends. The
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
existing hold open.
|
|
129
|
+
The monitor never sends. The manager deduplicates authorized notifications;
|
|
130
|
+
absent policy or failed relay uses its current Orca conversation and leaves
|
|
131
|
+
every existing hold open.
|
|
127
132
|
|
|
128
133
|
## 5. State readiness precisely
|
|
129
134
|
|
|
@@ -134,9 +139,14 @@ observed state distinct from merged, and the human merges by default.
|
|
|
134
139
|
|
|
135
140
|
## 6. End and preserve continuity
|
|
136
141
|
|
|
142
|
+
A bounded manager PR job ends as soon as its current event and every owned
|
|
143
|
+
descendant settle. It returns exact receipts and remaining state to the
|
|
144
|
+
reusable manager, releases proven resources, and never waits for merge or stops
|
|
145
|
+
the manager's recurring schedule.
|
|
146
|
+
|
|
137
147
|
End a standalone watch early when all required PRs merge, at cancellation, or
|
|
138
|
-
at its shared default 24 h deadline. There is no watch deadline for
|
|
139
|
-
|
|
148
|
+
at its shared default 24 h deadline. There is no watch deadline for manager
|
|
149
|
+
automation. In every case, stop and verify all owned registrations.
|
|
140
150
|
|
|
141
151
|
At every end condition, leave the compact state below in the private run record
|
|
142
152
|
and report it in the current chat, even when work remains. Expiry grants neither
|
|
@@ -8,9 +8,9 @@ and peer modes stop with a report before this branch.
|
|
|
8
8
|
Re-read the accepted maintenance snapshot, writable ownership, publication
|
|
9
9
|
authority, remote head and base, and current feedback. Route an accepted fix to
|
|
10
10
|
the original author session only when the run itself launched that session and
|
|
11
|
-
evidence permits. For an adopted own PR under the
|
|
12
|
-
|
|
13
|
-
|
|
11
|
+
evidence permits. For an adopted own PR under the manager, the repair author is
|
|
12
|
+
the manager PR coordinator or a dispatched `axstack-author`; record that
|
|
13
|
+
repair's actual provenance before
|
|
14
14
|
selecting the reviewer, because the authored-review pairing follows the actual
|
|
15
15
|
provenance of the repair, never the PR's historical author. A missing,
|
|
16
16
|
stale, or materially changed boundary holds the repair while read-only
|
|
@@ -34,13 +34,11 @@ required by the authored review rule in `axstack-review`.
|
|
|
34
34
|
Publication stays held until the current authored review receipt covers the
|
|
35
35
|
exact new revision and base, all six angles, applicable acceptance, the reply
|
|
36
36
|
body identities, and every affected boundary, with no unresolved material
|
|
37
|
-
finding or urgent hold. Under
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
unresolved validated blocking finding, and a push before the gate settles is
|
|
43
|
-
forbidden.
|
|
37
|
+
finding or urgent hold. Under a manager PR job, a serious-risk escalation
|
|
38
|
+
preserves the local candidate and exact context, records the hold in the
|
|
39
|
+
compact record and reusable manager conversation, and sends only an authorized
|
|
40
|
+
deduplicated notification. Publication remains held until the user decides in
|
|
41
|
+
that conversation and all exact inputs are revalidated.
|
|
44
42
|
|
|
45
43
|
## 3. Revalidate immediately before publication
|
|
46
44
|
|
|
@@ -57,9 +55,9 @@ Use `gh stack` for the adopted PR only, preserving unrelated stack entries.
|
|
|
57
55
|
Bind the operation to the exact reviewed revision, then verify the submission
|
|
58
56
|
receipt and remote state.
|
|
59
57
|
|
|
60
|
-
|
|
58
|
+
Manager automation pushes fast-forward only: run the section 3 publication
|
|
61
59
|
readback immediately before the push, then `git push` to the PR branch with no
|
|
62
|
-
lease or force, and no `gh stack` sync or restack from
|
|
60
|
+
lease or force, and no `gh stack` sync or restack from a manager. A
|
|
63
61
|
non-fast-forward remote is a recorded hold, never a rewrite.
|
|
64
62
|
|
|
65
63
|
If the send outcome is unknown, inspect remote IDs, bodies, and actor before any
|
|
@@ -2,53 +2,38 @@
|
|
|
2
2
|
|
|
3
3
|
Read this before starting, resuming, or stopping automated PR observation.
|
|
4
4
|
|
|
5
|
-
##
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
[Automation sessions](../../axstack/references/automations.md).
|
|
41
|
-
|
|
42
|
-
## Preserve the contract under automation
|
|
43
|
-
|
|
44
|
-
An automation session preserves its 15-minute driver and hourly model-free
|
|
45
|
-
watchdog cadences, quiet healthy behavior, deduplication, handshake, watched
|
|
46
|
-
scope, and wake owner. Test restart, duplicate ticks, cancellation,
|
|
47
|
-
session-reuse fallback, and final cleanup before enabling.
|
|
48
|
-
A firing timestamp proves neither delivery nor work advancement. An unrequested
|
|
49
|
-
fallback session reconciles ownership and never becomes owner silently.
|
|
50
|
-
|
|
51
|
-
At every end condition, stop all task-owned registrations, verify runtime
|
|
52
|
-
cleanup receipts, and capture remaining work as resumable state. Removing watch
|
|
53
|
-
coverage, weakening role discipline, or changing the deadline requires a
|
|
54
|
-
material specification revision; it is not an implementation workaround.
|
|
5
|
+
## Standalone watch
|
|
6
|
+
|
|
7
|
+
A standalone PR owner remains accountable through the default 24-hour window.
|
|
8
|
+
`axstack-monitor` is an optional independent read-only observer: it reads the
|
|
9
|
+
current GitHub state, persists event IDs, wakes the owner only for a new
|
|
10
|
+
actionable event, and never sends or mutates. Healthy observations update
|
|
11
|
+
quietly. Reuse prior watch identity rather than registering a duplicate, and
|
|
12
|
+
stop task-owned registrations at completion, cancellation, or expiry.
|
|
13
|
+
|
|
14
|
+
## Native watch manager
|
|
15
|
+
|
|
16
|
+
The separate native watch manager follows the
|
|
17
|
+
[native PR-manager contract](../../axstack/references/automations.md). It reuses
|
|
18
|
+
one dedicated workspace at minutes `7,22,37,52`, scans every eligible own PR,
|
|
19
|
+
and admits at most five bounded actionable-event jobs. Waiting PRs stay covered
|
|
20
|
+
without reserving slots. Each job uses its own repository-parented worktree and
|
|
21
|
+
settles with all descendants; no model, per-PR timer, or polling loop waits for
|
|
22
|
+
CI, review, a user decision, or merge.
|
|
23
|
+
|
|
24
|
+
Load the version-matched Orca automation and orchestration guidance through the
|
|
25
|
+
shared [runtime boundary](../../axstack/references/orca-runtime.md). Requested
|
|
26
|
+
settings or source configuration are not runtime evidence. Preserve quiet
|
|
27
|
+
unchanged behavior, exact-head event dedupe, ownership, complete discovery,
|
|
28
|
+
and current authority.
|
|
29
|
+
|
|
30
|
+
Before activation, canary same-session reuse, a busy scheduled tick, session
|
|
31
|
+
loss and recovery, nested dispatch depth for coordinator-launched leaves, and
|
|
32
|
+
total process and memory behavior. Until observed, those remain unverified; do
|
|
33
|
+
not replace them with a precheck, watchdog, custom scheduler, state engine, or
|
|
34
|
+
legacy fallback.
|
|
35
|
+
|
|
36
|
+
On recovery reconcile actual native workers, GitHub, and the compact run record
|
|
37
|
+
before admitting work. Unknown state blocks only the affected PR. At every job
|
|
38
|
+
end, settle owned workers, preserve unsafe or user-owned state, release proven
|
|
39
|
+
resources, and leave exact resumable receipts.
|