axstack 0.34.4 → 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
 
@@ -8,7 +8,7 @@ For the mental model, read [concepts](concepts.md); for other journeys, use
8
8
 
9
9
  ## Prepare your host
10
10
 
11
- 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
12
12
  T3 Code `0.0.46-nightly.20261003.2610` or newer. These executables must be on PATH.
13
13
  The providers required by your chosen preset must be available inside T3.
14
14
  See [installation](installation.md) for harness paths and
@@ -30,17 +30,17 @@ and fetches the pinned archify tool for explicit viewer requests. Reload the
30
30
  harness's skills in T3 after installation. Use the [installation reference](installation.md) for other
31
31
  harnesses, source installs or conflicts.
32
32
 
33
- A successful check exits 0. Its five capability rows mean:
33
+ A successful check exits 0. Its four capability rows mean:
34
34
 
35
35
  | Row | Meaning |
36
36
  | --- | --- |
37
37
  | `bun` | The running Bun version meets the floor. |
38
38
  | `git` | Git's version command succeeds. |
39
39
  | `gh` | The GitHub CLI's version command succeeds. |
40
- | `gh stack` | The extension's actual help command succeeds. |
41
40
  | `t3` | T3's version command succeeds and meets the floor. |
42
41
 
43
- 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
44
44
  reports the owned instruction binding. Missing Chrome is a warning. Any reported
45
45
  gap exits 1; follow [troubleshooting](installation.md#exit-codes-and-troubleshooting) before
46
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
@@ -7,7 +7,7 @@ checks host capabilities. T3 Code is the only supported active runtime. The CLI
7
7
  does not dispatch agents, edit T3 settings, run a scheduler, or maintain a
8
8
  workflow database.
9
9
 
10
- 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
11
11
  T3 Code `0.0.46-nightly.20261003.2610` or newer. The driver is a T3 thread
12
12
  with the `t3-code` MCP. See the [T3 runtime boundary](../skills/axstack/references/t3-runtime.md).
13
13
  Axstack has no runtime package dependencies. Filesystem access uses Bun-backed
@@ -123,14 +123,14 @@ role store and no T3 configuration merge.
123
123
  axstack check [--bundle <dir>] [--instructions <file>] [--skills-dir <dir>|--harness <name>]
124
124
  ```
125
125
 
126
- 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:
127
128
 
128
129
  | Row | What it checks |
129
130
  | --- | --- |
130
131
  | `bun` | The `bun` row reports the already-validated running version, because Bun below 1.3.14 exits 1 before any row is printed. |
131
132
  | `git` | `git --version` succeeds. |
132
133
  | `gh` | `gh --version` succeeds. |
133
- | `gh stack` | `gh stack --help` succeeds, rather than merely finding an extension name. |
134
134
  | `t3` | `t3 --version` succeeds and its output meets the T3 version floor. |
135
135
 
136
136
  `--bundle` additionally validates the bundle and reports its skill-file count
package/docs/workflows.md CHANGED
@@ -234,7 +234,7 @@ for explicit ownership transfer.
234
234
  - `axstack-implement` uses strict behavioral RED, GREEN, then refactor. The
235
235
  narrow accepted structure-preserving route uses old-green and the same check
236
236
  new-green. One author writes and returns a local receipt without pushing. The
237
- 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
238
238
  confirms the remote SHA before review. Local green and CI green remain
239
239
  separate evidence. Authors apply the shared
240
240
  [test-value gate](../skills/axstack/references/test-value.md) to each new or
@@ -250,7 +250,7 @@ for explicit ownership transfer.
250
250
  authorized-maintenance scope. A changed head or comment is an event, not
251
251
  repair authority. Within an implementation run, fixes return to the original
252
252
  author and follow its publish-before-review loop. Manual adopted-PR repair
253
- 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
254
254
  and remote readback.
255
255
  - `axstack-audit` separates execution outcome, procedure, and measurement
256
256
  coverage with evidenced denominators; it proposes but never self-edits.
@@ -393,7 +393,8 @@ that authored or repaired `merge-base..head` commits. Team approval also needs a
393
393
  counted non-author collaborator review at the current head. Axstack automation
394
394
  votes never count. Unknown or mixed provenance and manually authored PRs need a
395
395
  merge card. New heads need fresh authored review, diligence, and CI. A collaborator
396
- 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
397
398
  for both heads, while the forge still counts it.
398
399
 
399
400
  Base classification uses repository docs and workflows, never the branch name
@@ -483,12 +484,35 @@ Personal and work PRs remain eligible whatever files they change, including
483
484
  branch-protection or ruleset config, `CODEOWNERS`, `AGENTS.md`, and non-clean
484
485
  revert lines such as `Revert: steps`.
485
486
 
486
- 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.
487
488
  Each other member's base must be the next-lower member's branch at its reviewed head.
488
489
  Every member must meet every other term.
489
- 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
490
491
  adopted stack's recorded members) is published.
491
- 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.
492
516
 
493
517
  Never auto-merge PRs authored by anyone other than the user or the user's agents.
494
518
  Test sources stay eligible.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "axstack",
3
- "version": "0.34.4",
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,
@@ -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.
@@ -183,6 +183,7 @@ Deploying bases: <base -> integration | deploying; docs/workflow evidence>
183
183
  PR digest watermarks: <repo -> absolute path of its per-repository JSON file inside the private run directory> | none
184
184
  Release: <AGENTS.md file:line + tag-triggered workflow path + named install hosts> | not applicable (<reason>)
185
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>
186
187
  IDs: <projectId + driver threadId/runId + dispatch identity receipt pointers>
187
188
  Runtime: <host + T3 version + installed Axstack SHA + installed Axstack version/check time + last reference read time + capabilities JSON path>
188
189
  Schedules: <scheduledTaskIds of every watch and manager schedule>
@@ -264,12 +264,12 @@ delete preserves the hold and recorded ID.
264
264
  ## Native PR links and watches
265
265
 
266
266
  After verified publication readback or adoption of an own PR, the driver calls
267
- `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`.
268
268
  Before finishing PR work, including watch end or Close-out, the driver calls
269
269
  `list_thread_pull_requests` and links every missing run PR.
270
270
  Never link unrelated PRs.
271
271
 
272
- 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`,
273
273
  the driver also calls `t3_thread_update` with `action: link_pull_request`,
274
274
  `pullRequest` containing its number, repository and full PR URL, and `threadId`
275
275
  set to the author thread, then reads back the PR link with
@@ -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
 
@@ -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
@@ -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.
@@ -108,36 +108,21 @@ an uncertain wake. Wake only the exact live original driver.
108
108
  A busy, missing, protected (user-taken-over) or permission-held driver is never interrupted or replaced.
109
109
 
110
110
  The driver records one Notification policy for `axstack-relay` Telegram home.
111
- Relay eligibility is limited to user-decision holds, serious-risk holds, the
112
- 60-minute blocked ping, unresolved-rating notice and capped peer PR milestones
113
- under the Notification policy.
114
- Under the recorded Notification policy, `verification not proven` is a
115
- user-decision hold. The 60-minute blocked ping is a notification-only category
116
- under the Notification policy. The unresolved-rating notice is a notification-only
117
- category under the Notification policy, deduplicated per comment and head.
118
- The unresolved-rating notice grants no reply authority.
119
- The unresolved-rating notice never clears the hold.
120
- Never send routine merge-ready or merged relays
121
- for own PRs. Notifications for peer PRs are unchanged, including at most two
122
- merge-ready/merged milestones per run, deduplicated across implementation and release.
123
- 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.
124
113
 
125
114
  The driver alone routes repair.
126
- The driver routes rebases and review feedback to the PR's author for repair.
127
- For an adopted PR whose author this run did not launch, use a new author attempt under the
128
- [adoption rules](../SKILL.md#feedback-routing).
129
- The watch never writes candidate source.
130
- Re-read remote head/base and T3 ownership.
131
- Independent PRs may repair in parallel in separate T3 writer worktrees within
132
- measured host capacity. Two issues on the same PR use one author and one
133
- candidate; never create competing writers. A stack parent change invalidates
134
- child evidence and merge readiness; repair the lowest affected ancestor first,
135
- then rebase and revalidate children. Run-launched implementation PRs follow
136
- `axstack-implement`: driver publishes and reads back before independent authored
137
- review. Explicitly adopted own PRs follow [Repair and
138
- publication](repair-publication.md): independent exact-local-SHA review precedes
139
- driver-owned `gh stack` publication and remote readback. The driver never
140
- 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.
141
126
  For own PRs, automatic merge is the default under the
142
127
  [watch predicate](../SKILL.md#5-state-readiness-precisely).
143
128
  Observation alone grants no repair or
@@ -146,8 +131,8 @@ public-reply authority.
146
131
  On new comments, failed checks, or base movement, repeat repair, the
147
132
  mode-specific publication and independent review steps above, current-head
148
133
  checks, and the full readiness decision for each member until every merge-ready
149
- predicate is satisfied or a concrete hold is recorded. Rebase the root PR against an advanced
150
- 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
151
136
  ancestor changes. Never assume historical approvals or threads have cleared;
152
137
  re-read all feedback and approvals at the current head before readiness.
153
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;