axstack 0.19.1 → 0.20.1

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.
@@ -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 an automation repair under
36
- [Automation sessions](automations.md), the candidate is a local immutable
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 an automation session.
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 driver/monitor/watchdog: see [Watch health](#watch-health).
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 user lifted the native-watch hold by user decision on 2026-09-16. The
113
- driver automation is a mutating owner for its PRs; `axstack-watchdog` stays
114
- independent and read-only. The driver every 15 minutes dispatches and exits;
115
- the watchdog is model-free, has no gate, and records `watchdog.log`; there is
116
- no watch deadline for automations. Build no custom scheduler and use no legacy
117
- fallback. Details live in
113
+ Native review and watch lanes use fresh finite sessions in persistent dedicated
114
+ workspaces on 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 25 role rows once. An active run keeps the exact snapshot until the user
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;
@@ -0,0 +1,10 @@
1
+ # Review manager prompt
2
+
3
+ You are a fresh finite review-manager session in its persistent 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. Reconcile before admission, save durable
10
+ continuity, then self-close as the final action. 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 25 role
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` observes only; `axstack-watchdog` sends
47
- only gate-authorized health escalations.
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,11 @@
1
+ # Watch manager prompt
2
+
3
+ You are a fresh finite watch-manager session in its persistent 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. Reconcile before
10
+ admission, save durable continuity, then self-close as the final action. Never
11
+ check out a PR 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. Outside the fixed
68
- decision-token flow below, a reply is never a receipt, decision, or authority
69
- for this session, and no persistent owner is needed to send. Every ordinary
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 a fresh review-manager session, 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 an Orca driver automation, load
20
- [Automation sessions](../axstack/references/automations.md): its reviewer briefs
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, monitor, and
75
- watchdog. The current chat does not compete with it. Workers create no children
76
- or recursive teams.
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 the Orca driver automation; the automation
80
- session is the owner for every PR it handles.
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
 
@@ -230,9 +236,9 @@ Escalate to user: yes | no — <criterion> — <reason>
230
236
  Every brief ends with the `Escalate to user` field and the reviewer answers it
231
237
  in the receipt. A reviewer may cite only a security concern, a permanent
232
238
  on-chain state change, or an architectural change in approach. Health is not a
233
- reviewer criterion. The answer is input to the PR escalation gate, not a veto
234
- and not a verdict; see
235
- [Automation sessions](../axstack/references/automations.md) for the gate.
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.
236
242
 
237
243
  ## Template: review receipt (one block per revision)
238
244
 
@@ -268,12 +274,11 @@ relay delivery fails, send the same escalation there. Failed delivery never reso
268
274
  concern. Use no private escalation script. Public installations inherit no
269
275
  private transport values or configuration.
270
276
 
271
- Under an automation session, credible serious risk found by a reviewer still
272
- raises the standing internal prompt and dependent-action hold immediately, and
273
- the gate governs only external notification: the internal prompt lands in the
274
- run record and the automation session's own Orca conversation. `escalate`
275
- opens the bound decision token, sends through `axstack-relay`, and exits
276
- 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 a durable GitHub or user-owned conversation. The authorized
280
+ `axstack-relay` notification points the user there; delivery or silence never
281
+ authorizes action.
277
282
 
278
283
  ## Publishing rule
279
284
 
@@ -322,13 +327,12 @@ to the intended commit.
322
327
  ## Automation exception
323
328
 
324
329
  For a peer PR selected under
325
- [Automation sessions](../axstack/references/automations.md), apply the same
326
- complete-review and exact-commit requirements, then run the Luna gate.
327
- `escalate` opens a bound decision token, sends its message, and exits without
328
- submitting. `proceed` permits `APPROVE` only with no validated blocker and
329
- permits `REQUEST_CHANGES` only with at least one evidenced validated blocker.
330
- `INCOMPLETE`, unavailable inputs, unresolved disagreement, or unknown GitHub
331
- 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 at its durable decision location. 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.
332
336
 
333
337
  Immediately before `gh pr review`, re-read self's reviews at the head. If one
334
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 a fresh watch-manager session, 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 the Orca driver automation, also load
25
- [Automation sessions](../axstack/references/automations.md): it is the owner
26
- for every PR it handles, and its allowlist bounds every mutation.
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 user lifted the native-watch hold by user decision: the driver
68
- every 15 minutes dispatches and exits as a mutating owner; the watchdog is
69
- model-free and read-only, has no gate, and records `watchdog.log`; there is no
70
- watch deadline for automations. The driver is the automation session itself,
71
- with no `axstack-monitor` or `axstack-owner` role row; `axstack-monitor` stays
72
- an optional read-only observer that never sends. One read-only PR observation
73
- needs neither. The publishing driver is the live owner for a status check;
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
+ every eligible own PR, and starts only 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, monitor, and watchdog. Workers create
79
- no children or recursive teams, and the adoption watcher is never the writer.
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). An
98
- automation session repairs in a per-PR child worktree created through
99
- `orca-cli`; its driver worktree never checks out a PR branch.
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 automation, the original authoring session is
111
- not a run-launched session: the repair author is the automation session
112
- (Claude/Opus) or a dispatched `axstack-author` (Sol), and the authored-review
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 automation watchdog never mutates GitHub, has no
124
- gate, and records occurrences and send receipts in `watchdog.log`; absent
125
- policy or failed relay uses the current Orca conversation and leaves every
126
- existing hold open.
129
+ The monitor never sends. The manager deduplicates authorized notifications;
130
+ absent policy or failed relay uses the recorded durable GitHub or user-owned
131
+ conversation and leaves 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 logical
144
+ manager lane's durable continuity, releases proven resources, and never waits
145
+ for merge or stops 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
- automations. In every case, stop and verify all owned registrations.
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 automation, the repair
12
- author is the automation session (Claude/Opus) or a dispatched
13
- `axstack-author` (Sol); record that repair's actual provenance before
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 an automation the escalation gate of
38
- [Automation sessions](../../axstack/references/automations.md) also runs on
39
- the local SHA. `escalate` creates a token, pins the candidate at
40
- `refs/axstack/decisions/<token>`, opens the decision token, sends its message,
41
- and exits instead of pushing. `proceed` permits publication only with no
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 a durable GitHub or user-owned conversation, and sends only
40
+ an authorized deduplicated notification. Publication remains held until the
41
+ user decides at that durable location 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
- An automation session pushes fast-forward only: run the section 3 publication
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 an automation. A
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,39 @@
2
2
 
3
3
  Read this before starting, resuming, or stopping automated PR observation.
4
4
 
5
- ## Accepted policy
6
-
7
- The PR owner remains accountable throughout a standalone watch's default
8
- 24-hour window. `axstack-monitor` and `axstack-watchdog` are independent,
9
- read-only roles, not authors, reviewers, repliers, or owners.
10
-
11
- - **Monitor:** `axstack-monitor` is an optional read-only observer that reads
12
- GitHub, all PR feedback, and latest checks on its registered cadence, persists event
13
- IDs, wakes the owner only for a new actionable event, and never sends.
14
- - **Watchdog:** for the PR automations, it is a model-free hourly shell precheck
15
- that never mutates GitHub, has no gate, and records each tick in
16
- `watchdog.log`.
17
-
18
- Healthy observations are snapshot-only and update quietly; they wake neither owner nor
19
- driver. Both roles deduplicate event IDs. Uncertain delivery is reconciled
20
- before retry. Restart reuses prior watch identity rather than registering a
21
- duplicate. The shared deadline ends earlier on completion or cancellation and
22
- is never silently renewed.
23
-
24
- ## Native Orca automations
25
-
26
- Load the version-matched Orca automation guidance through the shared
27
- [runtime boundary](../../axstack/references/orca-runtime.md). The verified
28
- native automation schema supports provider selection, but model, effort, and
29
- permission pinning are unsupported, and its schedule parser cannot preserve
30
- the accepted bounded expiry by itself. Requested role values or a post-launch
31
- self-report are not effective launch evidence.
32
-
33
- The user lifted the native-watch hold by user decision on 2026-09-16. The
34
- driver every 15 minutes dispatches and exits as the mutating owner, and the
35
- watchdog is model-free and read-only, has no gate, and records `watchdog.log`;
36
- there is no watch deadline for automations. The driver is the automation
37
- session itself, with no `axstack-monitor` or `axstack-owner` role row. Still
38
- introduce no custom scheduler or polling loop and use no legacy runtime
39
- fallback. The session-level contract lives in
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 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
20
+ admits at most five bounded actionable-event jobs. Waiting PRs stay covered
21
+ without reserving slots. Each job uses its own repository-parented worktree and
22
+ settles with all descendants; no model, per-PR timer, or polling loop waits for
23
+ CI, review, a user decision, or merge.
24
+
25
+ Load the version-matched Orca automation and orchestration guidance through the
26
+ shared [runtime boundary](../../axstack/references/orca-runtime.md). Requested
27
+ settings or source configuration are not runtime evidence. Preserve quiet
28
+ unchanged behavior, exact-head event dedupe, ownership, complete discovery,
29
+ and current authority.
30
+
31
+ Before activation, canary fresh-session launch, an overlapping scheduled pass,
32
+ session loss and recovery, nested dispatch depth for coordinator-launched leaves, and
33
+ total process and memory behavior. Until observed, those remain unverified; do
34
+ not replace them with a precheck, watchdog, custom scheduler, state engine, or
35
+ legacy fallback.
36
+
37
+ On recovery reconcile actual native workers, GitHub, and the compact run record
38
+ before admitting work. Unknown state blocks only the affected PR. At every job
39
+ end, settle owned workers, preserve unsafe or user-owned state, release proven
40
+ resources, and leave exact resumable receipts.