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 +1 -1
- package/bin/axstack.js +1 -1
- package/docs/getting-started.md +4 -4
- package/docs/guides.md +1 -1
- package/docs/installation.md +3 -3
- package/docs/workflows.md +30 -6
- package/package.json +1 -1
- package/skills/axstack/references/automations.md +4 -2
- package/skills/axstack/references/autopilot.md +5 -15
- 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 +1 -0
- package/skills/axstack/references/t3-runtime.md +2 -2
- package/skills/axstack/references/test-audit-weekly.md +1 -1
- package/skills/axstack-implement/SKILL.md +23 -55
- package/skills/axstack-review/SKILL.md +3 -1
- package/skills/axstack-watch/SKILL.md +18 -9
- package/skills/axstack-watch/references/repair-publication.md +44 -59
- package/skills/axstack-watch/references/watch-runtime.md +15 -30
- 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
|
@@ -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
|
|
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
|
|
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
|
-
|
|
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
|
|
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/installation.md
CHANGED
|
@@ -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`,
|
|
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
|
|
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
|
|
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
|
|
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,
|
|
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.
|
|
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,
|
|
@@ -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.
|
|
@@ -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
|
|
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
|
|
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
|
-
|
|
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
|
|
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
|
|
@@ -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.
|
|
@@ -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
|
-
|
|
112
|
-
|
|
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
|
|
127
|
-
For an adopted PR whose author this run did not launch, use a new author attempt
|
|
128
|
-
|
|
129
|
-
The watch never writes candidate
|
|
130
|
-
Re-read remote head/base and T3 ownership.
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
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.
|
|
150
|
-
|
|
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
|
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;
|