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 +1 -1
- package/bin/axstack.js +1 -1
- package/docs/getting-started.md +8 -6
- package/docs/guides.md +1 -1
- package/docs/host-operations.md +3 -4
- package/docs/installation.md +5 -3
- package/docs/workflows.md +31 -8
- package/package.json +1 -1
- package/skills/axstack/references/automations.md +4 -2
- package/skills/axstack/references/autopilot.md +6 -16
- package/skills/axstack/references/candidate-publication.md +25 -26
- package/skills/axstack/references/contracts.md +2 -3
- package/skills/axstack/references/lifecycle.md +2 -2
- package/skills/axstack/references/pr-chain.md +51 -0
- package/skills/axstack/references/run-record.md +3 -1
- package/skills/axstack/references/t3-runtime.md +18 -9
- package/skills/axstack/references/test-audit-weekly.md +1 -1
- package/skills/axstack/references/ui-verification.md +8 -12
- package/skills/axstack-diagram/SKILL.md +2 -1
- package/skills/axstack-explain/SKILL.md +3 -3
- package/skills/axstack-explain/references/inline-pages.md +1 -3
- package/skills/axstack-implement/SKILL.md +23 -55
- package/skills/axstack-review/SKILL.md +3 -1
- package/skills/axstack-watch/SKILL.md +19 -10
- package/skills/axstack-watch/references/repair-publication.md +44 -59
- package/skills/axstack-watch/references/watch-runtime.md +20 -38
- package/src/capabilities.js +2 -4
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`)
|
|
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
|
|
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
|
|
package/docs/getting-started.md
CHANGED
|
@@ -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
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
package/docs/host-operations.md
CHANGED
|
@@ -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
|
|
138
|
-
|
|
139
|
-
|
|
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.
|
package/docs/installation.md
CHANGED
|
@@ -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`,
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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,
|
|
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.
|
|
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
|
|
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.
|
|
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:
|
|
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,
|
|
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
|
-
|
|
172
|
-
Decision holds, including spec and npm
|
|
173
|
-
|
|
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
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
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
|
-
|
|
15
|
-
|
|
16
|
-
|
|
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
|
|
20
|
-
|
|
21
|
-
|
|
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:
|
|
45
|
-
|
|
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
|
|
71
|
-
|
|
72
|
-
register a duplicate
|
|
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
|
|
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
|
-
|
|
77
|
-
|
|
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
|
|
80
|
-
|
|
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;
|
|
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.
|
|
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
|
|
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,
|
|
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
|
|
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
|
|
242
|
-
|
|
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
|
-
|
|
247
|
-
|
|
248
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
40
|
-
|
|
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
|
|
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
|
|
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
|
|
75
|
-
or inline-page fallback.
|
|
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
|
|
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
|
|
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
|
|
77
|
-
|
|
78
|
-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
250
|
-
|
|
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
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
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
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
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
|
-
|
|
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)
|
|
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
|
|
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
|
|
253
|
-
when it moves
|
|
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
|
|
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
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
## 1.
|
|
7
|
-
|
|
8
|
-
Re-read
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
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
|
-
|
|
45
|
-
|
|
46
|
-
rewrite, confirm
|
|
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
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
Publication ends with a
|
|
63
|
-
|
|
64
|
-
|
|
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:
|
|
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
|
|
48
|
+
When work restarts, restore the normal 30-minute cadence.
|
|
49
49
|
Keep native PR watches.
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
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
|
-
|
|
115
|
-
|
|
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
|
|
130
|
-
For an adopted PR whose author this run did not launch, use a new author attempt
|
|
131
|
-
|
|
132
|
-
The watch never writes candidate
|
|
133
|
-
Re-read remote head/base and T3 ownership.
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
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.
|
|
153
|
-
|
|
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
|
package/src/capabilities.js
CHANGED
|
@@ -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
|
-
//
|
|
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', '
|
|
87
|
+
const names = ['bun', 'git', 'gh', 't3-binary'];
|
|
90
88
|
const checks = [];
|
|
91
89
|
for (const name of names) {
|
|
92
90
|
let result;
|