axstack 0.34.3 → 0.35.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 CHANGED
@@ -22,7 +22,7 @@ coordination. You can start at the phase you need.
22
22
  ## Prerequisites
23
23
 
24
24
  Axstack supports only Linux hosts. You need Bun >=1.3.14, Git, the GitHub
25
- CLI (`gh`) with `gh stack`, and T3 Code `0.0.46-nightly.20261003.2610` or newer
25
+ CLI (`gh`), and T3 Code `0.0.46-nightly.20261003.2610` or newer
26
26
  on PATH. The providers selected by your preset must be available inside T3.
27
27
 
28
28
  Choose one explicit preset (each contains all role IDs): [mixed](profiles/presets/mixed.json)
package/bin/axstack.js CHANGED
@@ -51,7 +51,7 @@ Usage:
51
51
  Commands:
52
52
  install Validate a skill bundle, then copy owned skills and selected role
53
53
  data and record ownership hashes.
54
- check Probe Bun, Git, gh stack, and the T3 Code version floor.
54
+ check Probe Bun, Git, gh, and the T3 Code version floor.
55
55
  Driver preflight verifies MCP readiness inside a T3 thread.
56
56
  uninstall Remove only unchanged Axstack-owned assets. User edits survive.
57
57
 
@@ -1,12 +1,14 @@
1
1
  # Getting started
2
2
 
3
+ Linux is the only supported host OS.
4
+
3
5
  Install Axstack, check your host, then ask for one bounded task in T3 Code.
4
6
  For the mental model, read [concepts](concepts.md); for other journeys, use
5
7
  [guides](guides.md).
6
8
 
7
9
  ## Prepare your host
8
10
 
9
- You need Bun >=1.3.14, Git, the GitHub CLI with its `gh stack` extension, and
11
+ You need Bun >=1.3.14, Git, the GitHub CLI, and
10
12
  T3 Code `0.0.46-nightly.20261003.2610` or newer. These executables must be on PATH.
11
13
  The providers required by your chosen preset must be available inside T3.
12
14
  See [installation](installation.md) for harness paths and
@@ -24,21 +26,21 @@ axstack check --harness codex
24
26
  ```
25
27
 
26
28
  Installation writes owned skills and instructions, preserving unrelated content,
27
- and fetches the pinned archify tool for explicit viewer requests. Reload the harness's skills in T3 after
28
- installation. Use the [installation reference](installation.md) for other
29
+ and fetches the pinned archify tool for explicit viewer requests. Reload the
30
+ harness's skills in T3 after installation. Use the [installation reference](installation.md) for other
29
31
  harnesses, source installs or conflicts.
30
32
 
31
- A successful check exits 0. Its five capability rows mean:
33
+ A successful check exits 0. Its four capability rows mean:
32
34
 
33
35
  | Row | Meaning |
34
36
  | --- | --- |
35
37
  | `bun` | The running Bun version meets the floor. |
36
38
  | `git` | Git's version command succeeds. |
37
39
  | `gh` | The GitHub CLI's version command succeeds. |
38
- | `gh stack` | The extension's actual help command succeeds. |
39
40
  | `t3` | T3's version command succeeds and meets the floor. |
40
41
 
41
- With this harness target, check also validates the archify record/copy/SHA and
42
+ The `gh stack` extension is needed only for preexisting native stacks; ordinary
43
+ PRs/chains use Git and `gh pr`. With this harness target, check also validates the archify record/copy/SHA and
42
44
  reports the owned instruction binding. Missing Chrome is a warning. Any reported
43
45
  gap exits 1; follow [troubleshooting](installation.md#exit-codes-and-troubleshooting) before
44
46
  starting a task.
package/docs/guides.md CHANGED
@@ -12,7 +12,7 @@ Invoke `$axstack-spec Write the agreed specification.` to record observable
12
12
  acceptance, exclusions and a revision for your approval. After approval,
13
13
  `$axstack-tickets Map the approved work into tasks.` prepares the dependency map.
14
14
  `$axstack-implement Build the approved tasks.` carries it through authors,
15
- exact-revision review and repairs. The driver publishes through `gh stack`
15
+ exact-revision review and repairs. The driver publishes through scoped Git push and `gh pr create/edit`
16
16
  and records each candidate and its evidence.
17
17
 
18
18
  ## Small fix
@@ -134,10 +134,9 @@ messages under the accepted fleet risk.
134
134
 
135
135
  ## Chat-run watch activation
136
136
 
137
- A bound T3 schedule resumes the driver thread on a 30-minute fallback while
138
- native PR watches are armed and work and release are settled.
139
- Unsettled work or release, unavailable or unarmed native watches for any open
140
- member, or failed re-arming restore five minutes. Human-only waits use 60 minutes
137
+ A bound T3 schedule wakes the driver thread on a normal 30-minute cadence.
138
+ Unavailable or unarmed native watches for any open member, failed re-arming,
139
+ or a resumed question run restore five minutes. Human-only waits use 60 minutes
141
140
  under [Chat-run watch runtime](../skills/axstack-watch/references/watch-runtime.md#chat-run-watch).
142
141
  A T3 "stopped watching" notice triggers a PR re-check and native re-arm in that same turn.
143
142
  The run record holds the schedule ID and driver thread.
@@ -1,11 +1,13 @@
1
1
  # Installation
2
2
 
3
+ Linux is the only supported host OS.
4
+
3
5
  Axstack's Bun CLI installs owned chat skills plus one selected role snapshot and
4
6
  checks host capabilities. T3 Code is the only supported active runtime. The CLI
5
7
  does not dispatch agents, edit T3 settings, run a scheduler, or maintain a
6
8
  workflow database.
7
9
 
8
- Requirements: Bun >=1.3.14, Git, `gh`, the `gh stack` extension, and a running
10
+ Requirements: Bun >=1.3.14, Git, `gh`, and a running
9
11
  T3 Code `0.0.46-nightly.20261003.2610` or newer. The driver is a T3 thread
10
12
  with the `t3-code` MCP. See the [T3 runtime boundary](../skills/axstack/references/t3-runtime.md).
11
13
  Axstack has no runtime package dependencies. Filesystem access uses Bun-backed
@@ -121,14 +123,14 @@ role store and no T3 configuration merge.
121
123
  axstack check [--bundle <dir>] [--instructions <file>] [--skills-dir <dir>|--harness <name>]
122
124
  ```
123
125
 
124
- The capability report has five rows:
126
+ The capability report has four rows; `gh stack` is required only for preexisting
127
+ legacy native-stack operations, which probe `gh stack --help` separately:
125
128
 
126
129
  | Row | What it checks |
127
130
  | --- | --- |
128
131
  | `bun` | The `bun` row reports the already-validated running version, because Bun below 1.3.14 exits 1 before any row is printed. |
129
132
  | `git` | `git --version` succeeds. |
130
133
  | `gh` | `gh --version` succeeds. |
131
- | `gh stack` | `gh stack --help` succeeds, rather than merely finding an extension name. |
132
134
  | `t3` | `t3 --version` succeeds and its output meets the T3 version floor. |
133
135
 
134
136
  `--bundle` additionally validates the bundle and reports its skill-file count
package/docs/workflows.md CHANGED
@@ -151,8 +151,7 @@ later installation changes without re-resolution.
151
151
 
152
152
  Peer roles use the stable IDs `axstack-reviewer-primary` and
153
153
  `axstack-reviewer-peer`; their provider/class mappings come only from the
154
- selected preset. The mixed cross-provider peer pair is Sol high followed by
155
- Opus medium. The mixed peer coordinator and review-lane binding
154
+ selected preset and the ordered reviewer table above. The mixed peer coordinator and review-lane binding
156
155
  `axstack-owner` uses Sol high and never reviews. `axstack-reviewer-secondary`
157
156
  is used in the authored mapping and, alongside `axstack-reviewer-primary`,
158
157
  in codebase findings mode.
@@ -235,7 +234,7 @@ for explicit ownership transfer.
235
234
  - `axstack-implement` uses strict behavioral RED, GREEN, then refactor. The
236
235
  narrow accepted structure-preserving route uses old-green and the same check
237
236
  new-green. One author writes and returns a local receipt without pushing. The
238
- owner reconciles it, publishes the unchanged commits through `gh stack`, and
237
+ owner reconciles it, publishes the unchanged commits through scoped Git push and `gh pr create/edit`, and
239
238
  confirms the remote SHA before review. Local green and CI green remain
240
239
  separate evidence. Authors apply the shared
241
240
  [test-value gate](../skills/axstack/references/test-value.md) to each new or
@@ -251,7 +250,7 @@ for explicit ownership transfer.
251
250
  authorized-maintenance scope. A changed head or comment is an event, not
252
251
  repair authority. Within an implementation run, fixes return to the original
253
252
  author and follow its publish-before-review loop. Manual adopted-PR repair
254
- reviews the exact local SHA and reply bodies before `gh stack` publication
253
+ reviews the exact local SHA and reply bodies before scoped Git push and `gh pr create/edit` publication
255
254
  and remote readback.
256
255
  - `axstack-audit` separates execution outcome, procedure, and measurement
257
256
  coverage with evidenced denominators; it proposes but never self-edits.
@@ -394,7 +393,8 @@ that authored or repaired `merge-base..head` commits. Team approval also needs a
394
393
  counted non-author collaborator review at the current head. Axstack automation
395
394
  votes never count. Unknown or mixed provenance and manually authored PRs need a
396
395
  merge card. New heads need fresh authored review, diligence, and CI. A collaborator
397
- approval carries over only across an unchanged stable patch-id rebase, recorded
396
+ approval carries over only across an unchanged stable patch-id rebase, base-update
397
+ merge or base-only retarget, recorded
398
398
  for both heads, while the forge still counts it.
399
399
 
400
400
  Base classification uses repository docs and workflows, never the branch name
@@ -484,12 +484,35 @@ Personal and work PRs remain eligible whatever files they change, including
484
484
  branch-protection or ruleset config, `CODEOWNERS`, `AGENTS.md`, and non-clean
485
485
  revert lines such as `Revert: steps`.
486
486
 
487
- For a `gh stack`, only the bottom member's base must be eligible.
487
+ For a legacy native `gh stack`, only the bottom member's base must be eligible.
488
488
  Each other member's base must be the next-lower member's branch at its reviewed head.
489
489
  Every member must meet every other term.
490
- A stack holds until every member of its approved plan (the ticket map or the
490
+ A legacy native stack holds until every member of its approved plan (the ticket map or the
491
491
  adopted stack's recorded members) is published.
492
- Reviewed members are never retargeted to become eligible.
492
+ Reviewed legacy native-stack members are never retargeted to become eligible.
493
+
494
+ New work uses ordinary PRs/chains under [PR chains](../skills/axstack/references/pr-chain.md).
495
+ Record chain/native identity and direct dependencies; unknown or mixed routing
496
+ holds affected operations. Children start from reviewed parents and merge
497
+ parent/base updates without rewriting existing commits. Immediately invalidate
498
+ affected child readiness, then refresh next ready children as needed, batching
499
+ ancestor changes. A ready parent with independently deliverable approved scope
500
+ can integrate before its children are published or ready. Only ready roots
501
+ merge into integration targets; children never merge into open parent branches.
502
+
503
+ Each root uses `gh pr merge <n> --merge --match-head-commit <sha>` under the full
504
+ watch predicate, with merge commits enabled, no merge queue and auto-delete off.
505
+ After confirmed parent merge, prove actual head equals reviewed head and is an
506
+ ancestor of the integration result; reread direct child head/old base, change
507
+ only base and read back unchanged head/new base. Unknown outcomes require lookup
508
+ before retry; rewritten, squash/rebase or closed-unmerged parents hold dependents.
509
+ The latest integration tip must enter child history before its merge. Retargeting
510
+ or a base update requires fresh applicable review, diligence, shape, CI and
511
+ approval evaluation bound to PR/head/base branch/base SHA. Branch retirement
512
+ checks unpublished dependencies, active authors and complete open-PR inventory;
513
+ unknown consumers hold deletion, not independent parent integration. Existing
514
+ native stacks retain their full-stack, linear-history and no-retarget path.
515
+ Singleton eligibility and user-only categories are unchanged.
493
516
 
494
517
  Never auto-merge PRs authored by anyone other than the user or the user's agents.
495
518
  Test sources stay eligible.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "axstack",
3
- "version": "0.34.3",
3
+ "version": "0.35.0",
4
4
  "description": "Axstack installer and setup CLI: installs owned chat skills and role data, configures supported harness settings, and checks T3 Code capabilities.",
5
5
  "keywords": [
6
6
  "claude-code",
@@ -210,10 +210,12 @@ through a broad `TMPDIR` glob, sweep a shared temporary root, or wipe a general
210
210
  cache. Preserve evidence and any temporary path with uncertain ownership or
211
211
  containment.
212
212
 
213
- An unchanged exact head and unchanged event identity creates no job; an
213
+ An unchanged exact head, base branch identity, base SHA and event identity
214
+ creates no job; an
214
215
  unchanged exact head with a new event identity remains actionable. Event
215
216
  identity includes the applicable review ID and body digest, request identity, or other current GitHub event
216
- receipt. Dedupe from current GitHub state,
217
+ receipt. A base-only retarget or base update is a new evidence identity under
218
+ [PR chains](pr-chain.md). Dedupe from current GitHub state,
217
219
  native T3 task and thread/run state, and the existing compact run record; do
218
220
  not create machine cursor files or a queue engine. Record enough to resume: PR,
219
221
  head, base, event identity, mode, owner and worker receipts, verdict,
@@ -89,7 +89,7 @@ Never require a manual `axstack-watch` invocation.
89
89
  The driver remains the single owner and sole run-record writer.
90
90
  Never create a per-PR session or an ownership hand-off.
91
91
  Read the [T3 runtime boundary](t3-runtime.md) and use its bound
92
- `schedule_task` wake (`everyMs:300000`), recording the scheduledTaskId.
92
+ `schedule_task` wake (`everyMs:1800000`), recording the scheduledTaskId.
93
93
  Follow [Native PR links and watches](t3-runtime.md#native-pr-links-and-watches)
94
94
  alongside that bound schedule.
95
95
  Apply [Chat-run watch runtime](../../axstack-watch/references/watch-runtime.md#chat-run-watch)
@@ -97,7 +97,8 @@ cadence conditions before ending the turn.
97
97
  An explicitly adopted PR joins only with its maintenance snapshot.
98
98
  The original driver alone routes work; one author writes each
99
99
  candidate. Until a PR is merge-ready, wakes feed implement §6 step 4. After
100
- merge-ready, watch §5 maintenance repairs feedback, rebases when the base moves,
100
+ merge-ready, watch §5 maintenance repairs feedback, updates the base under
101
+ [PR chains](pr-chain.md),
101
102
  keeps CI green, and checks approvals without re-requesting human review.
102
103
 
103
104
  Maintain is the default mode for run-created PRs.
@@ -168,20 +169,9 @@ instructions, always win.
168
169
 
169
170
  Follow [Provider bindings](t3-runtime.md#preflight-and-binding) for driver account re-selection on start, resume and run-watch wakes.
170
171
 
171
- Use the run's recorded Notification policy through `axstack-relay`.
172
- Decision holds, including spec and npm approval, are always eligible.
173
- Relay eligibility is limited to user-decision holds, serious-risk holds, the
174
- 60-minute blocked ping, unresolved-rating notice and capped peer PR milestones
175
- under the Notification policy.
176
- Under the recorded Notification policy, `verification not proven` is a
177
- user-decision hold. The 60-minute blocked ping is a notification-only category
178
- under the Notification policy. The unresolved-rating notice is a notification-only
179
- category under the Notification policy, deduplicated per comment and head.
180
- The unresolved-rating notice grants no reply authority.
181
- The unresolved-rating notice never clears the hold.
182
- Never send routine merge-ready or merged relays
183
- for own PRs. Notifications for peer PRs are unchanged, including at most two
184
- merge-ready/merged milestones per run, deduplicated across implementation and release.
172
+ Follow [Watch notifications](../../axstack-watch/SKILL.md#4-route-each-wake)
173
+ under the recorded Notification policy. Decision holds, including spec and npm
174
+ approval, are always eligible.
185
175
  Across implementation and release, peer PR merge-ready and merged notifications
186
176
  together are capped at two per run; deduplicate by purpose and revision. Healthy ticks stay
187
177
  quiet. A failed or uncertain delivery preserves the underlying hold. A relay
@@ -1,25 +1,27 @@
1
1
  # Candidate publication
2
2
 
3
- This is the author-to-review boundary for an owned candidate. The author stops
4
- after returning its revision-bound implementation receipt and does not push.
5
- Within recorded PR-scoped publication authority, the owner reconciles that
6
- receipt against the actual local candidate SHA and base. The owner does not edit
7
- the author's candidate; required code changes return to the author.
3
+ For an owned candidate, the author returns its revision-bound implementation
4
+ receipt and stops without pushing. Under recorded PR-scoped publication authority,
5
+ the owner reconciles author receipt with actual local candidate SHA/base. The owner
6
+ does not edit the candidate; code changes return to its author.
8
7
 
9
8
  Before publication, dispatch `axstack-diligence` under
10
9
  [Diligence](diligence.md) to check the author receipt against its evidence
11
10
  folder: red/green logs exist, and counts, SHAs, and paths match. Resolve
12
11
  `FINDINGS` with the same author before publishing.
13
12
 
14
- Publish the existing commits through `gh stack`. Prefer a fast-forward push.
15
- Before a history rewrite, confirm the expected-old remote SHA and use lease
16
- protection; a mismatch holds publication. If the push outcome is ambiguous,
13
+ Follow [PR chains](pr-chain.md) for recorded membership and base-bound evidence.
14
+ For ordinary PRs, use `git push origin HEAD:refs/heads/<owned branch>` and
15
+ `gh pr create` or `gh pr edit` with the actual parent or integration base.
16
+ Never use routine force push for ordinary PRs. For legacy native `gh stack`,
17
+ prefer a fast-forward push of existing commits, preserving unrelated entries.
18
+ Before a history rewrite, confirm expected-old remote SHA and use a narrowly
19
+ justified lease; a mismatch holds publication. If push outcome is ambiguous,
17
20
  inspect remote state before retrying.
18
21
 
19
- Before reviewer dispatch, read the remote ref back and confirm that it resolves
20
- to the candidate SHA; also pin the current base.
21
- Before reviewer dispatch, refresh the PR body counts and base from the confirmed
22
- candidate SHA and current base under [PR shape](pr-shape.md).
22
+ Before reviewer dispatch, read the remote ref back, confirm its SHA equals candidate SHA, pin
23
+ current base and refresh PR body counts and base from confirmed candidate SHA
24
+ and that base under [PR shape](pr-shape.md).
23
25
  After every push, before post-push diligence or merge-ready, compare the PR body's
24
26
  stated head SHA with `Confirmed remote SHA` and record `PR body head SHA: <sha or none>`.
25
27
  Accept `none` for a PR body without a stated head SHA.
@@ -32,6 +34,7 @@ Record:
32
34
 
33
35
  ```text
34
36
  Candidate: <sha>
37
+ Base branch: <branch>
35
38
  Base: <sha>
36
39
  Remote ref: <branch>
37
40
  Expected-old remote SHA: <sha | absent>
@@ -41,11 +44,8 @@ PR: <url>
41
44
  CI: <run ID or URL and triggered/pending/completed status>
42
45
  ```
43
46
 
44
- Local green is not CI green: immediately after publication CI is pending until
45
- its required checks complete. Review may run in parallel with CI only after the
46
- remote confirmation. Reviewers inspect a detached immutable checkout of the
47
- confirmed candidate SHA and pinned base, never only the movable branch name.
48
- Any author repair creates a new revision and repeats this boundary.
47
+ Local green is not CI green: CI is pending after publication until required checks complete. Review may run alongside CI only after remote confirmation. Follow [Immutable checkout shape](#immutable-checkout-shape) for review.
48
+ Author repairs create new revisions and repeat this boundary.
49
49
  After verified publication readback, follow
50
50
  [Native PR links and watches](t3-runtime.md#native-pr-links-and-watches).
51
51
 
@@ -67,18 +67,17 @@ step, subject to recorded release authority and human npm stage approval.
67
67
  ## Immutable checkout shape
68
68
 
69
69
  The driver creates the immutable review checkout with `git worktree add --detach <run>/checkouts/<key> <sha>` at the confirmed candidate SHA and pinned base.
70
- Follow [T3 runtime](t3-runtime.md) for async `delegate_task` and exact attempt
71
- identity. The checkout is disposable, made from the existing repository; never
72
- register a duplicate repository or replace it with a movable branch checkout.
70
+ Follow [T3 runtime](t3-runtime.md) for async `delegate_task`.
71
+ Bind disposable checkout to exact attempt identity.
72
+ Use the existing repository; never register a duplicate or use a movable branch.
73
73
  Delegated reviewers must `cd` into their separate detached checkout; tracked candidate files remain read-only and outputs go to their private evidence folder.
74
- Snapshot driver HEAD and full status, including untracked entries, before dispatch.
74
+ Snapshot driver HEAD and full status (including untracked) before dispatch.
75
75
  After each delegated completion, compare the driver HEAD and `git status --porcelain` with their pre-dispatch values; any change holds advancement.
76
- Each peer reviewer has a separate checkout and evidence folder with no first-pass
77
- cross-read. Later review gets a fresh checkout.
76
+ Peer reviewers have separate checkouts/evidence without first-pass cross-read.
77
+ Later review gets a fresh checkout.
78
78
  Before removing a reviewer checkout, read back its report and supporting evidence, then use exact `git worktree remove <run>/checkouts/<key>` without force.
79
- Verify Git worktree absence under [Workspace hygiene](workspace-hygiene.md);
80
- reviewer retirement preserves the separate author candidate until merge or closure.
81
- Release checks use the same driver-made SHA-pinned detached-checkout procedure.
79
+ Verify absence under [Workspace hygiene](workspace-hygiene.md); retain the author
80
+ candidate until merge/closure. Release checks use same driver-made SHA-pinned detached-checkout procedure.
82
81
 
83
82
  For a release PR, dispatch `axstack-diligence` under
84
83
  [Diligence](diligence.md) to check the release PR body
@@ -125,12 +125,11 @@ remain a serious-risk hold.
125
125
  - One T3 host/server owns a run. No fixed active-PR count; fanout is dependency-
126
126
  and capacity-driven within host resource and spending limits. Reduce fanout for
127
127
  recorded rework, review backlog, or resource pressure. Queue conflicts and
128
- dependencies; use `gh stack` for dependent PRs. Routine shape, split, fanout, and
128
+ dependencies; follow [PR chains](pr-chain.md). Routine shape, split, fanout, and
129
129
  exception choices within approved scope are autonomous driver decisions; size alone never
130
130
  requires user approval.
131
131
  - Exactly one writer per candidate; one persistent accountable PR owner. Each PR has one theme and measured size under [PR shape](pr-shape.md). Report unknown capacity
132
- metrics; never a telemetry prerequisite or blocker. Parent changes invalidate
133
- affected child evidence; refresh it against the new parent.
132
+ metrics; never a telemetry prerequisite or blocker. PR chains owns child evidence invalidation and refresh.
134
133
  - Own PRs default to automatic merge under [watch §5](../../axstack-watch/SKILL.md).
135
134
  Review approval and reviewer votes alone never grant mutation or merge authority.
136
135
  User merges are bottom-up for a stack.
@@ -24,7 +24,7 @@ binding state and receipts to exact revisions.
24
24
 
25
25
  Prefer parallel independent bounded work; no redundant workers. Fanout is dependency- and
26
26
  capacity-driven within host/spending limits. [PR shape](pr-shape.md) covers
27
- theme/size; queue dependencies through `gh stack`.
27
+ theme/size; queue dependencies under [PR chains](pr-chain.md).
28
28
 
29
29
  ## Ownership
30
30
 
@@ -70,7 +70,7 @@ Store receipt references, not raw output, in the [Run record](run-record.md).
70
70
  role; reuse on resume.
71
71
  - Acceptance receipt: sender/recipient, accepted scope/authority, timestamp,
72
72
  and ownership session receipt.
73
- - Review receipt: mode, provenance, reviewer, SHA/base,
73
+ - Review receipt: mode, provenance, reviewer, PR/head/base branch/base SHA,
74
74
  verdict (`APPROVE | REQUEST_CHANGES | INCOMPLETE`), coverage, limitations and
75
75
  findings. Changed code needs a new receipt. Codebase: revision/scope,
76
76
  `COMPLETE | INCOMPLETE` coverage, no PR verdict.
@@ -0,0 +1,51 @@
1
+ # Ordinary PR chains
2
+
3
+ Record ordinary-chain or legacy-native-stack identity and direct dependencies.
4
+ Ordinary PRs/chains are default. Unknown/mixed identity holds
5
+ affected operations. Use `gh stack` only for legacy-native-stack operations,
6
+ probe `gh stack --help` first. Preserve publication, linear-history, full-stack
7
+ merge, pinning and no-retarget rules under
8
+ [watch §5](../../axstack-watch/SKILL.md#5-state-readiness-precisely).
9
+ No automatic live unstacking. Singleton eligibility unchanged.
10
+
11
+ Children start from reviewed parent. For ordinary chains, merge parent
12
+ or base into owned child preserving existing commits. Immediately
13
+ invalidate affected child readiness. Refresh next ready children and direct
14
+ dependencies as needed, batching ancestor changes. Re-run affected checks and
15
+ remeasure shape against new base; size growth alone is not an automatic hold.
16
+ Legacy children retain reviewed-parent rebasing and revalidation.
17
+ Ordinary chains/legacy stacks: repair lowest affected ancestor first,
18
+ then refresh/revalidate children as needed.
19
+
20
+ ## Integration
21
+
22
+ Only ready chain roots merge into integration targets. Never merge a child into
23
+ an open parent branch. Ready parent can merge before child publication or
24
+ readiness for independently deliverable approved scope. Apply watch §5, including
25
+ personal/work eligibility and user-only categories. Latest integration tip
26
+ must enter child history before merge.
27
+
28
+ After confirmed parent merge, verify reviewed head equals actual head and
29
+ is reachable from integration result. Mismatch: serious-risk hold.
30
+ Direct children: reread old head and base, change only base, read back
31
+ unchanged head and new base. Use `gh pr edit <child> --base <integration>` only
32
+ after confirming old base is parent branch and recorded head matches.
33
+ Retarget direct children only; prove forge auto-retargeting likewise.
34
+ Unknown retarget outcome: lookup before retry. Closed without merge,
35
+ rewritten parents, external squash or rebase, and missing ancestry hold dependents.
36
+
37
+ Bind evidence to PR, head, base branch identity and base SHA. Base-only retarget
38
+ or base update needs fresh applicable review, diligence, shape, CI and
39
+ approval evaluation. Check new-base workflow coverage at unchanged heads;
40
+ never reuse old-base receipts. Carryover compares stable patch-id at both recorded
41
+ head/base
42
+ identities and requires a forge-counted human approval under watch §5. Never
43
+ automatically request human rereview.
44
+
45
+ ## Retirement
46
+
47
+ Branch retirement checks published and unpublished dependencies, active authors
48
+ and complete open-PR inventory. Unknown consumers hold deletion, never safe
49
+ independent parent integration. Resolve/read back all consumers before deletion.
50
+ Keep auto-delete off; omit
51
+ merge-time deletion for present/uncertain consumers.
@@ -136,7 +136,8 @@ Record the reason for each driver-elected repair in `Decisions`.
136
136
 
137
137
  Record concise IDs, SHAs, URLs, status, timestamps, next actions, and evidence
138
138
  references. Private records include the checkout, evidence and worktree paths
139
- that the schema requires. Include no tokens, transcripts, full worker output,
139
+ that the schema requires. Include no other machine-specific paths in private records.
140
+ Include no tokens, transcripts, full worker output,
140
141
  credentials or private prompts. Publication of a sanitized summary needs separate
141
142
  authority.
142
143
 
@@ -182,6 +183,7 @@ Deploying bases: <base -> integration | deploying; docs/workflow evidence>
182
183
  PR digest watermarks: <repo -> absolute path of its per-repository JSON file inside the private run directory> | none
183
184
  Release: <AGENTS.md file:line + tag-triggered workflow path + named install hosts> | not applicable (<reason>)
184
185
  Source base: <exact revision or source identity>
186
+ PR membership: <PR -> ordinary-chain | legacy-native-stack; direct dependencies incl unpublished; active authors; head/base branch/base SHA>
185
187
  IDs: <projectId + driver threadId/runId + dispatch identity receipt pointers>
186
188
  Runtime: <host + T3 version + installed Axstack SHA + installed Axstack version/check time + last reference read time + capabilities JSON path>
187
189
  Schedules: <scheduledTaskIds of every watch and manager schedule>
@@ -238,15 +238,24 @@ the failed attempt's branch is kept until salvage. Unknown liveness holds
238
238
  replacement; reconcile the old writer before admitting another.
239
239
 
240
240
  With an unsettled launched thread, the driver turn must end only while a bound
241
- `schedule_task` with `bindToCurrentThread:true`, `everyMs:300000` is armed and
242
- its ID recorded. Each wake must reconcile all unsettled runs, including a
241
+ `schedule_task` with `bindToCurrentThread:true` is armed at the default
242
+ `everyMs:1800000` or for its 5-minute recovery cases in
243
+ [Chat-run watch runtime](../../axstack-watch/references/watch-runtime.md#chat-run-watch),
244
+ with its ID recorded. Each wake must reconcile all unsettled runs, including a
243
245
  writer that died without sending; failed runs hold incomplete work. The watch
244
246
  inherits the driver model/workspace and adds no runtime of Axstack's own.
245
247
  T3 queues a scheduled wake even while the driver is busy, so copies pile up.
246
- At the start of each run-watch wake, the driver must cancel every other queued
247
- copy of its own run-watch prompt with `t3_queue_list` and `t3_queue_cancel`,
248
- keeping every other queued message, including user and worker messages.
248
+ After a provider error, server restart or Stop, T3 holds the queue: held
249
+ messages do not start, and later queued messages are held too.
250
+ At the start of each run-watch wake, the driver lists every queued message with
251
+ `t3_queue_list` and treats it as stranded.
252
+ The driver must cancel every queued copy of its own run-watch prompt.
249
253
  One wake reconciles all those copies.
254
+ For each stranded worker receipt or PR-watch update, the driver must read it
255
+ with `t3_queue_read`, act on it in that wake, then cancel it with `t3_queue_cancel`.
256
+ A queued user message is a pending local action, so the driver must keep every
257
+ queued user message and report it in its reply even on an otherwise unchanged
258
+ wake, because only the user resumes a held queue.
250
259
 
251
260
  Once nothing remains unsettled the driver must `delete_scheduled_task` for the
252
261
  run watch and use `list_scheduled_tasks` to read back its absence; an uncertain
@@ -255,12 +264,12 @@ delete preserves the hold and recorded ID.
255
264
  ## Native PR links and watches
256
265
 
257
266
  After verified publication readback or adoption of an own PR, the driver calls
258
- `link_pull_request` with the full PR URL for every layer of a `gh stack`.
267
+ `link_pull_request` with the full PR URL for every layer of an ordinary-chain or legacy `gh stack`.
259
268
  Before finishing PR work, including watch end or Close-out, the driver calls
260
269
  `list_thread_pull_requests` and links every missing run PR.
261
270
  Never link unrelated PRs.
262
271
 
263
- After verified publication readback of an own PR, for every layer of a `gh stack`,
272
+ After verified publication readback of an own PR, for every layer of an ordinary-chain or legacy `gh stack`,
264
273
  the driver also calls `t3_thread_update` with `action: link_pull_request`,
265
274
  `pullRequest` containing its number, repository and full PR URL, and `threadId`
266
275
  set to the author thread, then reads back the PR link with
@@ -291,10 +300,10 @@ If re-arming fails, restore the bound 5-minute schedule.
291
300
  When the run waits only on a user decision or a human-only step, including a
292
301
  user merge, with no unsettled worker and no PR needing watch events, change
293
302
  the run watch cadence to 60 minutes at once.
294
- When work restarts, restore the normal 5-minute cadence.
303
+ When work restarts, restore the normal 30-minute cadence.
295
304
  Keep native PR watches.
296
305
  For chat-run cadence changes, follow [Chat-run watch runtime](../../axstack-watch/references/watch-runtime.md#chat-run-watch)
297
- for 30-minute fallback eligibility, 5-minute recovery, and schedule update read-back.
306
+ for the normal 30-minute cadence, 5-minute recovery, and schedule update read-back.
298
307
  The schedule still reconciles author and review tasks, readiness, and release.
299
308
  When a PR merges or closes, or its watch is torn down, call `unwatch_pull_request`
300
309
  and keep its link.
@@ -57,7 +57,7 @@ The weekly test audit is a named exception to Implement's publish-then-review
57
57
  order: it requires review-before-publication.
58
58
  Obtain independent review using Implement's configured authored-review roles and
59
59
  verify the exact candidate's checks before publication. The driver uses
60
- `gh stack` and opens at most one test-audit PR per week after independent review;
60
+ [Candidate publication](candidate-publication.md) and opens at most one test-audit PR per week after independent review;
61
61
  for own PRs, automatic merge is the default under the
62
62
  [watch predicate](../../axstack-watch/SKILL.md#5-state-readiness-precisely).
63
63
 
@@ -1,6 +1,6 @@
1
1
  # UI verification
2
2
 
3
- Every Playwright, browser, or rendered-UI check outside the three named author
3
+ Every Playwright, browser, or rendered-UI check outside the three named browser
4
4
  exceptions, including a "confirm it in the browser" step, goes through async
5
5
  `delegate_task` to `axstack-ui-verifier` from the run's role snapshot. Give it the exact build, URL, or artifact and the private
6
6
  dispatch's evidence folder. The verifier is read-only: it never edits source.
@@ -8,21 +8,16 @@ The PR writer remains the sole writer.
8
8
 
9
9
  Before using a PR preview URL, the UI verifier must read [PR previews](preview.md).
10
10
 
11
- The first named author browser exception is archify `finalize` as a headless build gate.
11
+ The first named browser exception is archify `finalize` as a headless build gate.
12
12
  Keep finalize outputs only in the private evidence folder.
13
13
  Never replace the verifier's rendered pass with finalize.
14
14
 
15
- The second named author browser exception is the driver's two `html_preview`
15
+ The second named browser exception is the driver's two `html_preview`
16
16
  runs at 728px dark and 360px light.
17
- Scan the exact bytes of every page for remote src, srcset, and href on loaded
18
- resources, `@import`, `url()`, `fetch`, XHR, WebSocket, EventSource, and meta refresh.
19
- Reject scan matches except local url(#id) references such as SVG markers and gradients.
20
- Require correct layout, theme, zero console errors, empty `missingImages`,
21
- height, network, and word count.
22
17
  Never replace the verifier's interaction pass with `html_preview`.
23
18
  Follow [Inline pages](../../axstack-explain/references/inline-pages.md) for the page checks.
24
19
 
25
- The third named author browser exception permits dispatched roles to use
20
+ The third named browser exception permits dispatched roles to use
26
21
  `html_preview` as a non-publishing self-check.
27
22
  Dispatched-role self-checks never replace the driver's two previews or the `axstack-ui-verifier` pass.
28
23
  Dispatched roles never call `html_render`.
@@ -36,8 +31,8 @@ Candidate browser and visual checks must run in the delegated `axstack-ui-verifi
36
31
  For every interactive page, require a real-browser `axstack-ui-verifier` interaction pass.
37
32
  Give the evidence path and SHA-256 of the exact bytes in the verifier brief.
38
33
  The verifier serves the exact bytes on loopback.
39
- Open the page with `preview_open` using `open:false`.
40
- Check clicks, keyboard, focus order, screen-reader names, expanded states, and reduced motion.
34
+ The verifier opens the page with `preview_open` using `open:false`.
35
+ The verifier checks clicks, keyboard, focus order, screen-reader names, expanded states, and reduced motion.
41
36
  Require that `performance.getEntriesByType('resource')` is empty.
42
37
  The detached-checkout rule does not apply to a page without a candidate.
43
38
 
@@ -57,7 +52,8 @@ Keep browser recipes tool-neutral for the verifier.
57
52
 
58
53
  ## Proof standards
59
54
 
60
- Apply these standards to the verifier's candidate checks and inline-page interaction pass.
55
+ Apply these standards wherever referenced, including the verifier's candidate checks
56
+ and inline-page interaction pass.
61
57
 
62
58
  Drive the real user path.
63
59
  Capture the action, the resulting state and its side effects.
@@ -13,7 +13,7 @@ Use archify HTML only on an explicit viewer request.
13
13
  The configured `axstack-explainer` authors the viewer; follow [Archify](references/archify.md).
14
14
  Use inline SVG or CSS inside inline pages.
15
15
  Never use Mermaid in inline pages.
16
- Use Mermaid for chat fallback, GitHub, and docs.
16
+ Use Mermaid for chat, GitHub, and docs.
17
17
  Include `accTitle` and `accDescr` in each Mermaid view.
18
18
  Never use theme init in Mermaid.
19
19
  Split large Mermaid diagrams into views.
@@ -23,5 +23,6 @@ Explain owns evidence, claim labels, the word cap, dispatch, and delivery.
23
23
  Diagram owns format and visual rules.
24
24
  Never call explain.
25
25
  For direct use, keep fidelity and rendered QA.
26
+ For direct viewer requests, follow [Explain's declared launch path](../axstack-explain/SKILL.md#2-choose-proportional-output).
26
27
 
27
28
  Ideas: [archify](https://github.com/tt-a1i/archify), [diagram-design](https://github.com/cathrynlavery/diagram-design), [visual-explainer](https://github.com/nicobailon/visual-explainer), [Matt Pocock](https://github.com/mattpocock/skills), and [poteto](https://github.com/poteto/how); guidance uses Axstack's own words.
@@ -71,11 +71,11 @@ Diagram never calls explain.
71
71
  Each card has at most 40 words and cites its source, as defined in
72
72
  [Archify](../axstack-diagram/references/archify.md).
73
73
  Count node labels, headings, captions, and all non-card text.
74
- 2. Use chat only for an explicit chat request, an answer without a Q2 trigger,
75
- or inline-page fallback. Q2 triggers are the conditions in the description.
74
+ 2. Use chat only for an explicit chat request, an answer outside the description's conditions,
75
+ or inline-page fallback.
76
76
  Use a compact diagram when useful.
77
77
  For chat answers, never dispatch an agent when applying its Mermaid rules inline.
78
- 3. For a Q2 trigger, create an inline page by default.
78
+ 3. For the conditions in the description, create an inline page by default.
79
79
  Honor an explicitly requested artifact format.
80
80
  Use archify only on an explicit viewer request, through the configured
81
81
  `axstack-explainer`. The reply adds only what the page omits.
@@ -48,7 +48,7 @@ Scan for `@import`, `url()`, `fetch`, XHR, WebSocket, EventSource, and meta refr
48
48
  Reject scan matches except local `url(#id)` references such as SVG markers and gradients.
49
49
 
50
50
  Before publishing, run `html_preview` at 728px dark and 360px light.
51
- The driver's two previews are an author exception to delegated browser checks.
51
+ The driver's two previews are a named browser exception to delegated browser checks.
52
52
  Require correct layout, theme, height, network, word count, zero console errors,
53
53
  and empty `missingImages`.
54
54
  Check every claim against its source.
@@ -59,8 +59,6 @@ For every interactive page, require a real-browser `axstack-ui-verifier` pass
59
59
  for clicks, keyboard, and expanded states.
60
60
  Give the evidence path and SHA-256 of the exact bytes in the verifier brief.
61
61
  Follow [UI verification](../../axstack/references/ui-verification.md) for that pass.
62
- The pass covers focus order, screen-reader names, reduced motion, and an empty
63
- `performance.getEntriesByType('resource')` list.
64
62
 
65
63
  ## Publish or fall back
66
64
 
@@ -27,6 +27,7 @@ edge into the lifecycle (including its audit hook), then apply shared routing:
27
27
  - [Shared routing](../axstack/references/routing.md)
28
28
  - [PR-shape policy](../axstack/references/pr-shape.md)
29
29
  - [Candidate publication](../axstack/references/candidate-publication.md)
30
+ - [PR chains](../axstack/references/pr-chain.md)
30
31
 
31
32
  Independently confirm the applicable
32
33
  [proportional scope identity](../axstack/references/routing.md#proportional-scope-identity):
@@ -73,13 +74,9 @@ never edits concurrently. Only an explicit accepted transfer changes ownership;
73
74
  ordinary resume reconciles the same sessions and record.
74
75
 
75
76
  Fanout follows dependencies and capacity within configured limits. Queue
76
- conflicts and dependent work; use `gh stack`, starting each child from its
77
- reviewed parent. When the reviewed parent changes, hold reliance on
78
- stale child evidence and child merge readiness; rebase onto the new parent revision,
79
- re-run affected checks, and remeasure shape against it.
80
- Size growth alone is not an automatic hold.
81
- A parent need not wait for an
82
- independently reviewed child. Dispatch only when ownership, worktree, dependency
77
+ conflicts; PR chains owns reviewed-parent branching, immediate child evidence
78
+ invalidation, lazy merge updates and legacy rebasing. A parent need not wait
79
+ for an independently reviewed child. Dispatch only when ownership, worktree, dependency
83
80
  revisions, writer exclusivity, and capacity agree with live state. Shape, split,
84
81
  fanout, and exceptions are autonomous driver decisions within the approved scope.
85
82
  Size alone never requires user approval.
@@ -195,12 +192,12 @@ Simplification: <applied | not-applicable> — evidence: <diff locations and che
195
192
  Acceptance: <checks + observed results>
196
193
  Dependencies: <parent revisions or none>
197
194
  Unverified: <boundaries + reasons>
198
- Next: <owner reconciles receipt, uses gh stack to push exact revision, confirms
195
+ Next: <owner reconciles receipt, uses candidate-publication to push exact revision, confirms
199
196
  remote readback, then routes it to axstack-review>
200
197
  ```
201
198
 
202
199
  The author stops at that receipt and does not push. The driver reconciles it,
203
- uses `gh stack` to publish, confirms remote readback, and continues the loop
200
+ uses candidate-publication to publish, confirms remote readback, and continues the loop
204
201
  without editing the candidate. No step grants merge authority.
205
202
 
206
203
  Every own PR description must contain exactly one `Revert` line.
@@ -211,8 +208,8 @@ for its format and classification.
211
208
 
212
209
  Inputs are one snapshotted small-change intent or an approved spec and ticket
213
210
  map. The unit is that accepted task/PR map: run independent PRs in parallel
214
- within the fanout rule; run a dependent `gh stack` bottom-up, each child from
215
- its reviewed parent. The driver is owner, sole record writer, dispatcher,
211
+ within the fanout rule; run an ordinary dependent PR chain root-first under PR chains, each child
212
+ from its reviewed parent; preexisting native stacks retain their legacy path. The driver is owner, sole record writer, dispatcher,
216
213
  publisher, and wait-holder for every loop PR it creates. Resume preserves an
217
214
  existing live owner absent an accepted transfer.
218
215
 
@@ -246,8 +243,8 @@ For each PR:
246
243
  findings to the same author for a new revision, increments `repairs`, and
247
244
  returns to step 1. `INCOMPLETE`, a provenance gap, unavailable model, serious
248
245
  risk, or the third review round with `REQUEST_CHANGES` and/or diligence
249
- `FINDINGS` on one PR records `held`. A changed parent sends its child back
250
- to step 1.
246
+ `FINDINGS` on one PR records `held`. A changed parent immediately invalidates affected child readiness; refresh
247
+ the next ready children as needed under PR chains before step 1.
251
248
  Merge-ready also requires a current diligence `PASS` at that head; diligence
252
249
  `FINDINGS` return to the same author within the review round.
253
250
  Diligence `UNKNOWN` records the PR as `held` with the reason in the run record
@@ -265,53 +262,24 @@ its maintain-mode chat-run watch under [Autopilot](../axstack/references/autopil
265
262
  That watch owns the bound T3 schedule wake; its runtime sets the cadence.
266
263
  A turn with unsettled launched threads must end only under the bound-watch rule in the T3 runtime contract.
267
264
  With settled threads, end a turn only when every required PR is `merge-ready` or `held`.
268
- Under the recorded Notification policy, `axstack-relay` follows the categories
269
- below; serious risks relay immediately and genuine blocked operations needing
270
- user intervention relay after bounded safe recovery.
271
- Routine questions stay in the T3 driver thread. Progress, CI pending, and completion always stay
272
- in the T3 driver thread.
273
- Relay eligibility is limited to user-decision holds, serious-risk holds, the
274
- 60-minute blocked ping, unresolved-rating notice and capped peer PR milestones
275
- under the Notification policy.
276
- Under the recorded Notification policy, `verification not proven` is a
277
- user-decision hold. The 60-minute blocked ping is a notification-only category
278
- under the Notification policy. The unresolved-rating notice is a notification-only
279
- category under the Notification policy, deduplicated per comment and head.
280
- The unresolved-rating notice grants no reply authority.
281
- The unresolved-rating notice never clears the hold.
282
- Never send routine merge-ready or merged relays
283
- for own PRs. Notifications for peer PRs are unchanged, including at most two
284
- merge-ready/merged milestones per run, deduplicated across implementation and release.
285
-
286
- Merge-ready opens the merge boundary.
287
- For own PRs, automatic merge is the default under the
288
- [watch predicate](../axstack-watch/SKILL.md#5-state-readiness-precisely).
265
+ Follow [Watch notifications](../axstack-watch/SKILL.md#4-route-each-wake)
266
+ under the recorded Notification policy, retaining its relay categories,
267
+ deduplication and driver-thread fallback. Serious risks relay immediately.
268
+
269
+ Merge-ready opens the merge boundary. Own PRs default to automatic merge under
270
+ [watch §5](../axstack-watch/SKILL.md#5-state-readiness-precisely).
289
271
  The merge actor is the recorded owning watch thread (`axstack-owner` for
290
272
  standalone authorized maintenance), including small and adopted work.
291
- Missing or idle ownership follows lifecycle reconciliation and explicit transfer first.
292
273
  Apply `axstack-watch` §5's merge card and full predicate; an approval alone
293
- never grants merge authority.
294
- Personal own PRs, including `deploying` bases, follow automatic merge under
295
- watch §5. Work promotion PRs and `deploying` or unknown bases are merged by the
296
- user on the forge. Peer PRs are merged by the user on the forge.
297
- User merges are bottom-up for a stack.
274
+ never grants merge authority. Re-read every predicate term under watch §5
275
+ before merging; follow its guarded ordinary-root/singleton or legacy-native
276
+ merge path and PR chains retarget/retirement proof.
277
+ Personal own PRs, including `deploying` bases, follow automatic merge under watch §5.
278
+ Work promotion PRs and `deploying` or unknown bases are merged by the user on the forge.
279
+ Peer PRs are merged by the user on the forge. User merges are bottom-up for a stack.
298
280
  A manager, worker, reviewer, monitor, or nightly triage must never merge.
299
- Observation-only and peer watches never merge.
300
- Watch §5 owns provider provenance, approval carryover, eligible bases, every
301
- planned stack member's publication, proven verification, escalation, and card-reply exceptions.
302
281
  This policy grants no release, npm publish, or host install authority.
303
- Re-read every predicate term under watch §5 before merging. Confirm merge
304
- commits are allowed, `delete_branch_on_merge` is false, and the base has no
305
- merge queue; otherwise hold for the user. For a singleton, use
306
- `gh pr merge <n> --merge --match-head-commit <sha>` and add `--delete-branch`
307
- only when no open PR uses its branch as base. For a native `gh stack`, merge
308
- only the whole stack through `merge-async`: pass the top reviewed head as `sha`,
309
- `merge_method: merge`, and `merge_action: direct_merge`, then poll its UUID.
310
- Reconcile HTTP 200 or 409 against the intended request, verify every merged
311
- member's actual head equals its reviewed head and is an ancestor of the merge
312
- result, and hold unknown or failed outcomes; watch §5 owns the detailed rule.
313
- Never retarget, delete a stack branch, or rebase a reviewed stack member for
314
- merging. A failing push run on the target base after an automated merge holds
282
+ A failing push run on the target base after an automated merge holds
315
283
  further automated merges run-wide. The driver resumes on the user's next
316
284
  message, `/axstack-watch`,
317
285
  or the armed chat-run watch wake; verify merge state through the forge on wake.
@@ -28,7 +28,9 @@ Before reviewing, load [Standing contracts](../axstack/references/contracts.md),
28
28
  then [Lifecycle and receipts](../axstack/references/lifecycle.md) so its required
29
29
  audit edge remains active. Load [Shared routing](../axstack/references/routing.md)
30
30
  to select the mode and scope identity. For PR modes, apply the shared
31
- [PR-shape policy](../axstack/references/pr-shape.md). For an owned implementation candidate,
31
+ [PR-shape policy](../axstack/references/pr-shape.md) and
32
+ [PR chains](../axstack/references/pr-chain.md) for PR/head/base-branch/base-SHA
33
+ evidence identity. For an owned implementation candidate,
32
34
  load and verify the
33
35
  [candidate-publication boundary](../axstack/references/candidate-publication.md).
34
36
  When the caller is a bounded review-manager PR job, load
@@ -78,7 +78,7 @@ load. When the watch needs a new owner or automated observation, first read
78
78
  [T3 runtime](../axstack/references/t3-runtime.md). Reconcile before creating
79
79
  anything. Task-owned observations use their recorded wakes and expiry.
80
80
  `axstack-monitor` stays an optional read-only observer for standalone watch
81
- that never sends. For own open PRs in chat-run mode, use the 30-minute fallback when eligible under
81
+ that never sends. For own open PRs in chat-run mode, use the normal 30-minute cadence under
82
82
  [Chat-run watch runtime](references/watch-runtime.md#chat-run-watch);
83
83
  the bound T3 schedule resumes the original driver thread. One read-only PR observation needs
84
84
  neither. Start no automation for a read-only check.
@@ -182,6 +182,9 @@ deploy to production.
182
182
  Re-read approval mode and base classification immediately before each automated
183
183
  merge and at every watch resume.
184
184
 
185
+ Follow [PR chains](../axstack/references/pr-chain.md) for membership, dependencies,
186
+ retargeting and retirement. Bind readiness to PR, head, base branch identity
187
+ and base SHA, including an unchanged head after retargeting.
185
188
  For each current head and base SHA, every merge-ready term must hold:
186
189
 
187
190
  - Approval: in `solo` mode, authored-review `APPROVE` plus diligence `PASS`, both
@@ -200,7 +203,7 @@ For each current head and base SHA, every merge-ready term must hold:
200
203
  Reviews carrying an Axstack automation marker never count.
201
204
  A later `CHANGES_REQUESTED` blocks until resolved; a stale or dismissed
202
205
  approval does not count.
203
- A collaborator approval carries over only across a rebase with unchanged
206
+ A collaborator approval carries over only across a rebase, base-update merge or base-only retarget with unchanged
204
207
  patch-id recorded for both heads while the forge still counts it.
205
208
  Require fresh authored review, diligence, and CI on every new head.
206
209
  Refresh authored review, diligence and CI evidence at the current head and base after every head or base change; base updates return to the same author under the existing repair route.
@@ -220,7 +223,7 @@ For each current head and base SHA, every merge-ready term must hold:
220
223
  unsettled author Dispatch, or task, PR, dependency, run-wide, or serious-risk
221
224
  hold affects this merge. Apply the comment holds below.
222
225
  The current target base head must be an ancestor of the singleton head or
223
- bottom stack member head; unknown ancestry holds. A CI re-run does not restore
226
+ ordinary chain root head or legacy bottom stack member head; unknown ancestry holds. A CI re-run does not restore
224
227
  this freshness after the base moves. Update the branch and refresh head-bound
225
228
  evidence instead.
226
229
  - Proven verification: apply every receipt and acceptance term below, or its
@@ -249,8 +252,9 @@ Agents never resolve or dismiss non-agent items.
249
252
  Agent-authored threads with only `low` findings can stay open.
250
253
  Apply any repository rule that requires conversation resolution.
251
254
 
252
- Under authorized own-PR maintenance, keep repairing and rebasing onto the base
253
- when it moves, then re-run checks, until the head is rebased on the current base,
255
+ Under authorized own-PR maintenance, keep repairing and merging the base
256
+ when it moves for ordinary PRs (legacy native stacks retain rebasing), then
257
+ re-run checks, until the head contains the current base,
254
258
  the comment holds above are cleared, the approval term holds, and required CI is
255
259
  green; only then record merge-ready.
256
260
  Never re-request a collaborator's review while its approval still counts under
@@ -318,12 +322,12 @@ Personal and work PRs remain eligible whatever files they change, including
318
322
  branch-protection or ruleset config, `CODEOWNERS`, `AGENTS.md`, and non-clean
319
323
  revert lines such as `Revert: steps`.
320
324
 
321
- For a `gh stack`, only the bottom member's base must be eligible.
325
+ For a legacy native `gh stack`, only the bottom member's base must be eligible.
322
326
  Each other member's base must be the next-lower member's branch at its reviewed head.
323
327
  Every member must meet every other term.
324
- A stack holds until every member of its approved plan (the ticket map or the
328
+ A legacy native stack holds until every member of its approved plan (the ticket map or the
325
329
  adopted stack's recorded members) is published.
326
- Reviewed members are never retargeted to become eligible.
330
+ Reviewed legacy native-stack members are never retargeted to become eligible.
327
331
 
328
332
  Never auto-merge PRs authored by anyone other than the user or the user's agents.
329
333
  Test sources stay eligible.
@@ -386,9 +390,14 @@ Apply the existing [escalation threshold](../axstack/references/contracts.md#dri
386
390
  Confirm merge commits are allowed, `delete_branch_on_merge` is false, and the
387
391
  base has no merge queue; otherwise hold for the user. For a singleton PR, use
388
392
  `gh pr merge <n> --merge --match-head-commit <sha>`; add `--delete-branch` only
389
- when no open PR uses its branch as base. A failed head guard or uncertain merge
393
+ when no open PR uses its branch as base and PR chains retirement proves no
394
+ unpublished dependency, active author or unknown consumer. For an ordinary
395
+ chain root use `gh pr merge <n> --merge --match-head-commit <sha>` without
396
+ branch deletion until retirement is proven. After merge, verify actual head
397
+ equals reviewed head and is an ancestor of the integration result before
398
+ retargeting direct children under PR chains. A failed head guard or uncertain merge
390
399
  result holds for fresh reconciliation. If the target base moves after final
391
- readback, the singleton head guard or stack top `sha` decides whether the merge
400
+ readback, the singleton/ordinary-root head guard or legacy stack top `sha` decides whether the merge
392
401
  proceeds; the push run on the merge result decides any further-merge hold.
393
402
 
394
403
  For a native `gh stack`, automate only a whole-stack merge: the top is the
@@ -1,67 +1,52 @@
1
1
  # Repair and publication
2
2
 
3
- Read this only for authorized maintenance of an adopted own PR. Observation-only
4
- and peer modes stop with a report before this branch.
5
-
6
- ## 1. Confirm the repair boundary
7
-
8
- Re-read the accepted maintenance snapshot, writable ownership, publication
9
- authority, remote head and base, and current feedback. Route an accepted fix to
10
- the original author session only when the run itself launched that session and
11
- evidence permits. Record the repair author's actual provenance before
12
- selecting the reviewer, because the authored-review pairing follows the actual
13
- provenance of the repair, never the PR's historical author. A missing,
14
- stale, or materially changed boundary holds the repair while read-only
15
- monitoring continues.
16
-
17
- Record the exact defect, allowed files and actions, current revision, feedback
18
- IDs, and actual author without expanding scope.
19
- Follow [Feedback routing](../SKILL.md#feedback-routing) to launch an adopted
20
- repair author and pair its reviewer.
21
-
22
- ## 2. Produce a reviewable candidate
23
-
24
- The author prepares the smallest in-scope repair and the exact public reply
25
- bodies, each keyed to its feedback ID and bound to the candidate revision.
26
- The candidate is committed locally in the owned worktree. Obtain an
27
- independent review of the exact local candidate SHA in an isolated detached
28
- checkout against the pinned base, including the exact reply bodies, before
29
- publication; nothing is pushed for review. Both code and
30
- reply bodies receive the one complete eligible non-author/non-owner review
31
- required by the authored review rule in `axstack-review`.
32
-
33
- Publication stays held until the current authored review receipt covers the
34
- exact new revision and base, all six angles, applicable acceptance, the reply
35
- body identities, and every affected boundary, with no unresolved material
36
- finding or urgent hold. A serious-risk escalation preserves the local candidate
37
- and exact context, records the hold in the run record and a durable GitHub or
38
- user-owned conversation, and sends only an authorized deduplicated notification.
39
- Publication remains held until the user decides at that durable location and
40
- all exact inputs are revalidated.
3
+ For authorized maintenance of an adopted own PR only. Observation-only and peer
4
+ modes stop at a report.
5
+
6
+ ## 1. Repair boundary
7
+
8
+ Re-read accepted maintenance snapshot, writable ownership, publication authority,
9
+ remote head/base and feedback. Missing, stale or materially changed boundaries
10
+ hold repair; continue read-only monitoring. Return fixes to the original author
11
+ only if this run launched it and evidence permits; otherwise follow
12
+ [Feedback routing](../SKILL.md#feedback-routing) for a new adopted author.
13
+ Record defect, allowed files/actions, revision, feedback IDs and actual repair
14
+ provenance; pair review from that provenance, never historical authorship.
15
+
16
+ ## 2. Reviewable candidate
17
+
18
+ The author commits the smallest in-scope repair and exact public reply bodies in
19
+ the owned worktree, keyed to feedback IDs and candidate revision. Obtain
20
+ independent review of the exact local candidate SHA and replies in an isolated
21
+ detached checkout against the pinned base before publication.
22
+ Nothing is pushed for review. Publication is held until the current authored review receipt covers
23
+ the exact new revision and base, code/replies, all six angles, applicable acceptance,
24
+ affected boundaries and exact reply identities with no unresolved material finding or urgent hold.
25
+ The authored review rule in `axstack-review` requires exactly one complete
26
+ eligible non-author/non-owner reviewer.
27
+ Record a serious-risk hold in both the run record and a durable GitHub or user-owned
28
+ conversation, preserving candidate/exact context;
29
+ only an authorized deduplicated notification sends. Publication waits for the
30
+ user's decision at that durable location and exact-input revalidation.
41
31
 
42
32
  ## 3. Revalidate immediately before publication
43
33
 
44
- Confirm fresh remote head and base, feedback freshness, reply body identity,
45
- and the exact revision covered by the mode-required review receipt. Before a history
46
- rewrite, confirm the expected-old SHA; a mismatch holds publication.
47
-
48
- All publication inputs must still match their reviewed values at the final
49
- readback.
34
+ At final readback, confirm every input matches its reviewed value: fresh remote
35
+ head/base, feedback, reply body identity and exact revision/base. Before a history
36
+ rewrite, confirm expected-old SHA; a mismatch holds publication.
50
37
 
51
38
  ## 4. Publish idempotently
52
39
 
53
- After the local review and final remote revalidation, publish through `gh stack`
54
- for the adopted PR only, preserving unrelated stack entries.
55
- Bind the operation to the exact reviewed revision, then verify the submission
56
- receipt and remote state.
57
-
58
- If the send outcome is unknown, inspect remote IDs, bodies, and actor before any
59
- retry. Remain blocked while the outcome is ambiguous; retry only after
60
- confirming the intended operation is absent.
61
-
62
- Publication ends with a remote receipt proving that the reviewed revision and
63
- exact replies landed once, or a recorded hold naming the unmatched input and
64
- next owner.
65
-
66
- After verified publication of an own PR, the owner must follow
67
- [PR previews](../../axstack/references/preview.md) to decide on or restart its preview.
40
+ After local review and remote revalidation, publish through
41
+ [Candidate publication](../../axstack/references/candidate-publication.md)
42
+ for the adopted PR only, preserving unrelated entries. Follow
43
+ [PR chains](../../axstack/references/pr-chain.md) for scoped push and base-bound
44
+ evidence; legacy native stacks use `gh stack`.
45
+ Bind every publication operation to the exact reviewed revision, then verify the
46
+ submission receipt and remote state.
47
+ Unknown or ambiguous publication stays blocked; retry only after lookup of
48
+ remote IDs, bodies and actor proves absence.
49
+ Publication ends with either a receipt proving reviewed revision and exact replies
50
+ landed once or a recorded hold naming unmatched input and next owner.
51
+ After verified publication, follow
52
+ [PR previews](../../axstack/references/preview.md) to decide on or restart a preview.
@@ -34,7 +34,7 @@ after verified readback, subject to the user's explicit publication boundary.
34
34
 
35
35
  The initiating T3 thread remains the sole driver and `progress.md` writer.
36
36
  Initially use the bound run watch from [T3 runtime](../../axstack/references/t3-runtime.md):
37
- `schedule_task` with `bindToCurrentThread:true`, `everyMs:300000`, a stable
37
+ `schedule_task` with `bindToCurrentThread:true`, `everyMs:1800000`, a stable
38
38
  `clientRequestId`, and the authorized watch prompt. Record the schedule ID,
39
39
  driver thread, chosen mechanism and native schedule lifetime; the watch inherits the driver binding at creation.
40
40
  Follow [Provider bindings](../../axstack/references/t3-runtime.md#preflight-and-binding) before arming the watch and for schedule recreation on self-switch.
@@ -45,20 +45,17 @@ Use `update_scheduled_task` on the recorded schedule ID for cadence changes and
45
45
  When the run waits only on a user decision or a human-only step, including a
46
46
  user merge, with no unsettled worker and no PR needing watch events, change
47
47
  the run watch cadence to 60 minutes at once.
48
- When work restarts, restore the normal 5-minute cadence.
48
+ When work restarts, restore the normal 30-minute cadence.
49
49
  Keep native PR watches.
50
- Only while every open watched PR has an armed native `watch_pull_request`, all
51
- launched work is settled, and the release step is settled or inapplicable, use
52
- the bound chat-run schedule as a 30-minute fallback (`everyMs:1800000`).
53
- Because delegated tasks deliver native completion wakes, unsettled delegated
54
- tasks alone keep the 30-minute fallback eligible.
50
+ Because launched writers, delegated tasks and native PR watches deliver their
51
+ own wakes, use the normal 30-minute cadence (`everyMs:1800000`) even while
52
+ launched work or the release step is unsettled.
55
53
  A resumed `AXSTACK-QUESTION` child run lacks a native completion wake, so it
56
54
  keeps the 5-minute cadence (`everyMs:300000`) until its result is accepted.
57
55
  If native `watch_pull_request` is unavailable or unarmed for any open member,
58
56
  or re-arming fails, restore the bound chat-run schedule to 5 minutes (`everyMs:300000`).
59
57
  On the next event on a watched PR, re-evaluate the wake cadence against the
60
58
  fallback conditions in the same turn.
61
- If launched work or the release step becomes unsettled, restore the 5-minute cadence (`everyMs:300000`).
62
59
  Apply these conditions before ending each driver turn, including after initial
63
60
  arming or a work restart; the 60-minute human-only wait rule above still applies.
64
61
  Read back each schedule update and record its receipt; an uncertain update holds affected work.
@@ -111,36 +108,21 @@ an uncertain wake. Wake only the exact live original driver.
111
108
  A busy, missing, protected (user-taken-over) or permission-held driver is never interrupted or replaced.
112
109
 
113
110
  The driver records one Notification policy for `axstack-relay` Telegram home.
114
- Relay eligibility is limited to user-decision holds, serious-risk holds, the
115
- 60-minute blocked ping, unresolved-rating notice and capped peer PR milestones
116
- under the Notification policy.
117
- Under the recorded Notification policy, `verification not proven` is a
118
- user-decision hold. The 60-minute blocked ping is a notification-only category
119
- under the Notification policy. The unresolved-rating notice is a notification-only
120
- category under the Notification policy, deduplicated per comment and head.
121
- The unresolved-rating notice grants no reply authority.
122
- The unresolved-rating notice never clears the hold.
123
- Never send routine merge-ready or merged relays
124
- for own PRs. Notifications for peer PRs are unchanged, including at most two
125
- merge-ready/merged milestones per run, deduplicated across implementation and release.
126
- Quiet ticks never notify.
111
+ Follow [Watch notifications](../SKILL.md#4-route-each-wake) for categories,
112
+ deduplication and driver-thread fallback. Quiet ticks never notify.
127
113
 
128
114
  The driver alone routes repair.
129
- The driver routes rebases and review feedback to the PR's author for repair.
130
- For an adopted PR whose author this run did not launch, use a new author attempt under the
131
- [adoption rules](../SKILL.md#feedback-routing).
132
- The watch never writes candidate source.
133
- Re-read remote head/base and T3 ownership.
134
- Independent PRs may repair in parallel in separate T3 writer worktrees within
135
- measured host capacity. Two issues on the same PR use one author and one
136
- candidate; never create competing writers. A stack parent change invalidates
137
- child evidence and merge readiness; repair the lowest affected ancestor first,
138
- then rebase and revalidate children. Run-launched implementation PRs follow
139
- `axstack-implement`: driver publishes and reads back before independent authored
140
- review. Explicitly adopted own PRs follow [Repair and
141
- publication](repair-publication.md): independent exact-local-SHA review precedes
142
- driver-owned `gh stack` publication and remote readback. The driver never
143
- self-reviews.
115
+ The driver routes base updates and review feedback to the PR's author for repair.
116
+ For an adopted PR whose author this run did not launch, use a new author attempt
117
+ under the
118
+ [adoption rules](../SKILL.md#feedback-routing). The watch never writes candidate
119
+ source. Re-read remote head/base and T3 ownership. Independent PRs may repair in
120
+ parallel within capacity; two issues on the same PR use one author and candidate.
121
+ Follow [PR chains](../../axstack/references/pr-chain.md) for invalidation and
122
+ updates. Run-launched PRs follow `axstack-implement`: publication/readback before
123
+ independent review. Adopted PRs follow [Repair and publication](repair-publication.md):
124
+ independent exact-local-SHA review precedes scoped publication/readback.
125
+ The driver never self-reviews.
144
126
  For own PRs, automatic merge is the default under the
145
127
  [watch predicate](../SKILL.md#5-state-readiness-precisely).
146
128
  Observation alone grants no repair or
@@ -149,8 +131,8 @@ public-reply authority.
149
131
  On new comments, failed checks, or base movement, repeat repair, the
150
132
  mode-specific publication and independent review steps above, current-head
151
133
  checks, and the full readiness decision for each member until every merge-ready
152
- predicate is satisfied or a concrete hold is recorded. Rebase the root PR against an advanced
153
- base, re-run checks, address actionable comments, and revalidate stacked descendants after
134
+ predicate is satisfied or a concrete hold is recorded. Merge the advanced base
135
+ into an ordinary root PR, re-run checks, address actionable comments, and revalidate affected descendants as needed after
154
136
  ancestor changes. Never assume historical approvals or threads have cleared;
155
137
  re-read all feedback and approvals at the current head before readiness.
156
138
  Re-reading approvals checks current state, not re-requesting review from a
@@ -17,15 +17,13 @@ const CHECK_LABELS = {
17
17
  bun: 'bun >= 1.3.14 runtime',
18
18
  git: 'git CLI',
19
19
  gh: 'gh CLI',
20
- 'gh-stack': 'gh stack extension',
21
20
  't3-binary': `T3 Code CLI >= ${T3_FLOOR}`,
22
21
  };
23
22
 
24
- // Run the extension command itself, not a substring in an extension listing.
23
+ // Ordinary PRs need Git and gh; legacy native-stack operations probe separately.
25
24
  export const PROBE_COMMANDS = {
26
25
  git: ['git', ['--version']],
27
26
  gh: ['gh', ['--version']],
28
- 'gh-stack': ['gh', ['stack', '--help']],
29
27
  't3-binary': ['t3', ['--version']],
30
28
  };
31
29
 
@@ -86,7 +84,7 @@ export async function runRealCheck(name) {
86
84
  }
87
85
 
88
86
  export async function checkCapabilities(exec) {
89
- const names = ['bun', 'git', 'gh', 'gh-stack', 't3-binary'];
87
+ const names = ['bun', 'git', 'gh', 't3-binary'];
90
88
  const checks = [];
91
89
  for (const name of names) {
92
90
  let result;