axstack 0.25.1 → 0.25.3

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/docs/workflows.md CHANGED
@@ -265,9 +265,13 @@ one theme and a measured size under the shared
265
265
  For own PRs, automatic merge is the default under the
266
266
  [watch predicate](../skills/axstack-watch/SKILL.md#5-state-readiness-precisely).
267
267
  Review approval alone never grants merge authority.
268
- For the rationale band, the autonomous driver records a cohesion rationale. The exception band
269
- requires a reasonable split attempt and full exception record. These are
270
- autonomous driver choices; size alone never requires user approval.
268
+ Treat size flags as informational only.
269
+ Size alone must never block review, reject a PR, require split attempts or
270
+ cohesion/exception rationale, or hold approval.
271
+ Review the actual footprint, complexity, and required context, incrementally when needed.
272
+ Approval requires sufficient review coverage.
273
+ Report INCOMPLETE when required coverage is missing.
274
+ Shape choices remain autonomous driver decisions; size alone never requires user approval.
271
275
 
272
276
  ## Explicit handoff
273
277
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "axstack",
3
- "version": "0.25.1",
3
+ "version": "0.25.3",
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",
@@ -67,6 +67,8 @@ The driver remains the single owner and sole run-record writer.
67
67
  Never create a per-PR session or an ownership hand-off.
68
68
  Read the [T3 runtime boundary](t3-runtime.md) and use its bound
69
69
  `schedule_task` wake (`everyMs:600000`), recording the scheduledTaskId.
70
+ Follow [Native PR links and watches](t3-runtime.md#native-pr-links-and-watches)
71
+ alongside that bound schedule.
70
72
  An explicitly adopted PR joins only with its maintenance snapshot.
71
73
  The original driver alone routes work; one author writes each
72
74
  candidate. Until a PR is merge-ready, wakes feed implement §6 step 4. After
@@ -44,6 +44,8 @@ its required checks complete. Review may run in parallel with CI only after the
44
44
  remote confirmation. Reviewers inspect a detached immutable checkout of the
45
45
  confirmed candidate SHA and pinned base, never only the movable branch name.
46
46
  Any author repair creates a new revision and repeats this boundary.
47
+ After verified publication readback, follow
48
+ [Native PR links and watches](t3-runtime.md#native-pr-links-and-watches).
47
49
 
48
50
  ## Revert line
49
51
 
@@ -12,16 +12,15 @@ Total additions + deletions over all files. Disclose moves detected by `-M`;
12
12
  report binaries by count and purpose, never estimated lines. Disclose generated,
13
13
  lockfile, and formatter-only bulk buckets alongside the total.
14
14
 
15
- The full total controls the level: ≤2000 is the target. The 2001–2500 rationale
16
- band requires only a recorded cohesion rationale, with no split-attempt record.
17
- The >2500 exception band requires the full exception record below. Bulk may
18
- support either rationale only with a reproducible recorded command. Never
19
- automatically subtract bulk or shift bands; silent exclusion is forbidden; no file-count hard metric.
15
+ Flag totals above 2500 changed lines as informational only.
16
+ Never automatically subtract bulk from the full total; silent exclusion is forbidden; no file-count hard metric.
17
+ Disclose each bulk bucket with a reproducible recorded command.
18
+ There is no universal safe LOC limit or fixed token percentage.
20
19
 
21
20
  ## Theme
22
21
  One behavior or component may include the callers, tests, types, docs, and
23
22
  migrations that must change together to stay green and reviewable.
24
- This is not a folder restriction. Unrelated themes split even under the target.
23
+ This is not a folder restriction. Unrelated themes split regardless of size.
25
24
  Smaller cohesive PRs are encouraged; no padding.
26
25
 
27
26
  ## PR body
@@ -29,16 +28,13 @@ Smaller cohesive PRs are encouraged; no padding.
29
28
  Every own PR description must contain exactly one `Revert` line.
30
29
  Follow [Revert line](candidate-publication.md#revert-line) for its format and classification.
31
30
 
32
- ## Exception band
33
- The driver attempts a reasonable split first. If each tried split materially
34
- compromises atomicity, green state, or independent reviewability, or inseparable
35
- reproducible bulk dominates, record and proceed autonomously within the approved
36
- spec. The mandatory record includes the full total, bulk buckets with their
37
- reproducible command, measured head and base, split attempts tried, and why each
38
- fails on atomicity, green state, or reviewability. “Already written,” deadlines,
39
- and rebase pain are not reasons.
40
- Size alone never requires user approval. Review verifies the measurement and
41
- whether the stated split failure is real under angle 6, not the number itself.
42
- Missing rationale blocks approval; weak rationale returns to the author through
43
- the normal split/rework loop, never to the user. Escalate only for an existing
44
- material-scope, security, downtime, data-loss, major-design-risk, or unavailable-model hold.
31
+ ## Review and decisions
32
+ Size alone must never block review, reject a PR, require split attempts or
33
+ cohesion/exception rationale, or hold approval.
34
+ Review the actual footprint, complexity, and required context, incrementally when needed.
35
+ Approval requires sufficient review coverage.
36
+ Report INCOMPLETE when required coverage is missing.
37
+ Routine shape decisions remain autonomous driver decisions within approved scope;
38
+ size alone never requires user approval.
39
+ Escalate only for an existing material-scope, security, downtime, data-loss,
40
+ major-design-risk, or unavailable-model hold.
@@ -85,7 +85,14 @@ step (3) for user routing: no substitution or same-provider review.
85
85
  - Codebase review -> `axstack-review` codebase mode, report only.
86
86
  - A status question about an own open PR or stack ("check now", "what's left",
87
87
  "are we done", or "is it approved") -> `axstack-watch` observation-only
88
- mode. Explicit "address", "patch", or "fix" grants authorized maintenance.
88
+ mode when it does not ask to watch.
89
+ - A user request to watch, babysit, keep watching, maintain, address, patch, or fix
90
+ own PRs authored by the authenticated `gh api user` login or the user's agents
91
+ grants authorized maintenance by default.
92
+ Snapshot the maintenance intent once without extra approval.
93
+ Observation-only applies only to explicit observe-only requests, status
94
+ questions without a watch request, or peers' PRs.
95
+ Explicit observe-only includes "monitor only" or "do not change anything".
89
96
  - Chat-run PR watch -> `axstack-watch`: original driver; verified run PRs and
90
97
  explicit adoptions only.
91
98
  - Other own PR work -> `axstack-review` authored mode or `axstack-watch`
@@ -9,7 +9,8 @@ delegated tasks, messaging and native schedules.
9
9
  The driver must be a T3 thread, save `orchestrator_capabilities` JSON under
10
10
  the run record, and follow the advertised tool schema; discovery alone proves
11
11
  neither provider readiness nor successful execution. Missing capability holds
12
- the affected operation, without a substitute runtime.
12
+ the affected operation, without a substitute runtime. Native PR watch absence
13
+ uses the schedule fallback below.
13
14
 
14
15
  From installed `skills/axstack/roles.json`, the driver must snapshot the selected
15
16
  preset and stable role IDs, requested provider/model/class/mode/effort, resolved
@@ -224,6 +225,31 @@ Once nothing remains unsettled the driver must `delete_scheduled_task` for the
224
225
  run watch and use `list_scheduled_tasks` to read back its absence; an uncertain
225
226
  delete preserves the hold and recorded ID.
226
227
 
228
+ ## Native PR links and watches
229
+
230
+ After verified publication readback or adoption of an own PR, the driver calls
231
+ `link_pull_request` with the full PR URL for every layer of a `gh stack`.
232
+ Before finishing PR work, including watch end or Close-out, the driver calls
233
+ `list_thread_pull_requests` and links every missing run PR.
234
+ Never link unrelated PRs.
235
+
236
+ For every watched own PR in chat-run or standalone adopted maintenance, when
237
+ available the driver calls `watch_pull_request` for T3 wakes on check completion,
238
+ new comments from others, or branch conflicts, then ends the turn.
239
+ Never poll or keep a model active between native PR wake events.
240
+ When T3 reports it stopped watching a PR, the next wake re-checks the PR and
241
+ calls `watch_pull_request` again.
242
+ This includes a stop after T3 could not read the PR for 15 minutes.
243
+ Route native PR wake events through watch §4 and the unchanged §5 readiness predicate.
244
+
245
+ If `watch_pull_request` is unavailable, fall back to the bound 10-minute schedule
246
+ and `scripts/pr-digest.js` without a hold.
247
+ Keep the schedule cadence unchanged while a native PR watch is active,
248
+ including the existing 7-day quiet relaxation.
249
+ The schedule still reconciles author and review tasks, readiness, and release.
250
+ When a PR merges or closes, or its watch is torn down, call `unwatch_pull_request`
251
+ and keep its link.
252
+
227
253
  ## Evidence, prompts and authority
228
254
 
229
255
  Put the [Safe-deletion rule](workspace-hygiene.md#safe-deletion) in every worker brief.
@@ -117,10 +117,10 @@ counts with denominators plus the evidence behind the count:
117
117
  - Rework cycles with causes.
118
118
  - Avoidable user interventions where records support the call, and no call where they do not.
119
119
  - Parallelizable tasks identified versus dispatched, judged with dependency and writer isolation.
120
- - PRs within band / total PRs using the actual denominator. Apply the level
121
- matching the measured total. For the rationale band, record cohesion
122
- rationale presence; for the exception band, record the full driver exception
123
- record. Record `UNKNOWN` when a receipt lacks the measurement.
120
+ - PRs with an informational size flag / total PRs using the actual denominator.
121
+ Record full totals, bulk buckets with reproducible commands, and measured head/base.
122
+ Treat size flags as informational only.
123
+ Record `UNKNOWN` when a receipt lacks the measurement.
124
124
  This is evidence, not a score to game. Audit treats routine shape choices as
125
125
  autonomous driver decisions; size alone never requires user approval.
126
126
  - API-dollar cost by model when provider receipts are available, UNKNOWN otherwise.
@@ -17,7 +17,7 @@ Review: <exact-rev independent review status + unresolved findings>
17
17
  Rework: <cycles + causes>
18
18
  Interventions: <avoidable user interventions, or unsupported by records>
19
19
  Parallelism: <identified vs dispatched + dependency/writer isolation>
20
- Shape: <PRs within band / total PRs + rationale-band cohesion rationale + exception-band full driver exception record; missing measurement: UNKNOWN>
20
+ Shape: <PRs with an informational size flag / total PRs; full totals + bulk buckets with reproducible commands + measured head/base; UNKNOWN when measurement is missing>
21
21
  Cost: <API dollars by model when measured, or UNKNOWN with reason>
22
22
  Judgment: <execution outcome vs procedural adherence vs measurement coverage>
23
23
  Proposals: <bounded hypothesized changes with regression-first plan, or none>
@@ -25,6 +25,8 @@ Learning candidates: <each candidate's statement + scope + evidence/revision poi
25
25
  Privacy: <local/private default; sanitized summary only when authorized>
26
26
  ```
27
27
 
28
+ Treat size flags as informational only.
29
+
28
30
  The record is complete when its counts reconcile, its judgments remain
29
31
  separate, every proposal has a regression-first validation path, every learning
30
32
  candidate is bounded to accepted audited evidence, and all unknowns and
@@ -293,17 +293,15 @@ This section applies to peer and authored PR modes.
293
293
  Rate a wrong or missing `Revert` line at least `medium` under [Finding severity](#finding-severity).
294
294
 
295
295
  Under angle 6, verify the recorded shape against the pinned head and base.
296
- A mismatch between the recorded and measured total is a finding. Apply the
297
- level matching the measured total. The rationale band requires only its
298
- recorded cohesion rationale, not a split-attempt record. For the exception
299
- band, verify the full exception record: total, bulk buckets with their
300
- reproducible command, measured head/base, split attempts tried, and why each
301
- fails on atomicity, green state, or reviewability. Missing rationale is a
302
- validated angle 6 finding that blocks approval like any other. Reviewer
303
- judgment is bounded to verifying the measurement and whether the stated split
304
- failure is real, not the number itself. A weak rationale returns to the
305
- author as a split or rework request through the normal fix loop, never to the
306
- user. Routine shape decisions remain autonomous driver decisions; size alone
296
+ A mismatch between the recorded and measured total is a finding.
297
+ Verify full totals and bulk buckets with their reproducible command.
298
+ Treat size flags as informational only.
299
+ Size alone must never block review, reject a PR, require split attempts or
300
+ cohesion/exception rationale, or hold approval.
301
+ Review the actual footprint, complexity, and required context, incrementally when needed.
302
+ Approval requires sufficient review coverage.
303
+ Report INCOMPLETE when required coverage is missing.
304
+ Routine shape decisions remain autonomous driver decisions; size alone
307
305
  never requires user approval. Escalate only when that work exposes an
308
306
  existing material-scope, security, downtime,
309
307
  data-loss, major-design-risk, or unavailable-model hold.
@@ -50,11 +50,12 @@ no dispatch preflight.
50
50
  sketch boundary as a split signal. Identify internal tasks, dependencies,
51
51
  PR ownership, and worktrees. For each task the driver records
52
52
  one theme and a coarse size estimate from the ownership, interface, and
53
- dependency map. A task estimated in the exception band is assessed for a
54
- split at mapping time and split where a green, atomic, reviewable split
55
- exists. If the driver judges it inseparable, record the coarse planning
56
- rationale with the task; actual measurement and exception evidence follow in
57
- the implement receipt. Mapping time requires no actual SHAs or line counts.
53
+ dependency map. Plan coherent, independently reviewable tasks around those
54
+ boundaries. Treat size flags as informational only.
55
+ Size alone must never block review, reject a PR, require split attempts or
56
+ cohesion/exception rationale, or hold approval.
57
+ Actual measurement and bulk disclosure follow in the implement receipt.
58
+ Mapping time requires no actual SHAs or line counts.
58
59
  Every capability ends with the fields below and an explicit dependency list.
59
60
  Before accepting the map, dispatch `axstack-diligence` under
60
61
  [Diligence](../axstack/references/diligence.md) to confirm every spec
@@ -72,7 +73,7 @@ Spec: <approved revision>
72
73
  Capability: <Markdown ref, GitHub issue URL, or Linear issue URL> <title>
73
74
  Internal task: <task> -> <PR owner> -> <worktree>
74
75
  Theme: <one behavior or component>
75
- Size est: <coarse band estimate>
76
+ Size est: <coarse size estimate>
76
77
  Acceptance: <checks from approved spec rev>
77
78
  Depends: <task IDs or none>
78
79
  ```
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: axstack-watch
3
- description: When babysitting an existing PR, use axstack-watch to monitor or maintain it within bounded authority.
3
+ description: When babysitting an existing PR, use axstack-watch to maintain own PRs by default within bounded authority.
4
4
  ---
5
5
 
6
6
  # Watch
@@ -37,20 +37,21 @@ live owner and watch; uncertain state holds new registrations until resolved.
37
37
 
38
38
  For an existing own PR, read the
39
39
  [proportional scope identities](../axstack/references/routing.md#proportional-scope-identity),
40
- verify writable ownership and user maintenance authority, then snapshot the
40
+ apply its default maintenance rule and verify writable ownership, then snapshot the
41
41
  accepted maintenance intent once: authorized scope, actual head and base,
42
42
  current owner, actual author provenance, and watch state. Check authoring
43
43
  session evidence; the orchestrator identity is not author evidence, and never
44
44
  assume an author for an imported own PR. It needs no new spec, ticket, or repeated
45
- approval. Monitoring-only adoption grants no repair or reply authority.
45
+ approval. Explicit observation-only adoption grants no repair or reply authority.
46
46
 
47
47
  Adoption is settled when the record names one persistent owner, one watch, the
48
- exact PR revision and base, and the applicable authority snapshot. If write
49
- authority is unverified, record the hold and continue read-only.
48
+ exact PR revision and base, and the applicable authority snapshot. If writable
49
+ access is unverified, record the hold and continue read-only; pushing stays held.
50
50
 
51
51
  ## 2. Fix the operating mode
52
52
 
53
- Choose one mode from the user's authority and record it before dispatch:
53
+ Choose one mode under [Shared routing](../axstack/references/routing.md#direct-routes-no-spec-ceremony)
54
+ and record it before dispatch:
54
55
 
55
56
  - **Chat-run watch:** authorized maintain mode is the default for run-created
56
57
  PRs. The initiating chat remains the only driver and record
@@ -63,7 +64,8 @@ Choose one mode from the user's authority and record it before dispatch:
63
64
  repair path, including obvious fixes after changed heads or feedback.
64
65
  - **Peer:** observe and report a colleague's PR. Peer mode never repairs.
65
66
  - **Authorized maintenance:** repair an adopted own PR only within the accepted
66
- maintenance snapshot and publication authority.
67
+ maintenance snapshot and publication authority; own-PR watch requests use this
68
+ mode by default under Shared routing.
67
69
 
68
70
  Every later wake must be classifiable from this recorded mode without inferring
69
71
  new authority.
@@ -87,7 +89,8 @@ create no recursive teams, and the adoption watcher is never the writer.
87
89
 
88
90
  A standalone live watch has verified role and timer receipts, handshakes, watched scope,
89
91
  wake ownership, and a common expiry. A missing runtime capability is a setup gap,
90
- not a reason to invent a call or create a duplicate registration. Native
92
+ subject to the [native PR watch fallback](../axstack/references/t3-runtime.md#native-pr-links-and-watches).
93
+ Never invent a call or create a duplicate registration. Native
91
94
  wake-ups drive observation; never poll or keep a model active between events.
92
95
 
93
96
  ## 4. Route each wake
@@ -114,11 +117,14 @@ snapshot. Missing, stale, or materially changed identity holds repair routing
114
117
  while monitoring continues. Accepted fixes return to the same original author
115
118
  session only when the run itself launched that session and evidence allows,
116
119
  then receive refreshed review under the authored mode rule before publication.
117
- For an adopted own PR, the authored-review pairing follows the recorded
118
- actual provenance of its repair author, not the PR's historical author.
119
- Unknown, mixed, or unsupported author provenance
120
- that cannot establish the eligible configured reviewer is an exact gap to
121
- report to the user, not permission to invent a pairing or model fallback.
120
+ If this run did not launch the original author, or historical provenance is
121
+ unknown or mixed, launch a new configured `axstack-author` attempt under
122
+ [Shared routing](../axstack/references/routing.md).
123
+ For an adopted own PR, pair the authored reviewer from the recorded actual
124
+ provenance of its repair author.
125
+ Hold only when the repair author's own provenance cannot be established or
126
+ an eligible configured reviewer is unavailable; report that exact gap.
127
+ Historical provenance still follows §5's merge-card rule.
122
128
 
123
129
  A handled wake has an acknowledged event ID, an observation or action bound to
124
130
  the current revision, and a recorded hold or next owner where work remains.
@@ -307,6 +313,9 @@ merge result is a run-wide hold on further automated merges until resolved.
307
313
 
308
314
  ## 6. End and preserve continuity
309
315
 
316
+ Reconcile PR links and stop native PR watches under
317
+ [T3 runtime](../axstack/references/t3-runtime.md#native-pr-links-and-watches).
318
+
310
319
  End a chat-run watch only after all members merged or closed, launched work is settled,
311
320
  and the run's release step is settled or not applicable, or user cancellation.
312
321
  Without an Autopilot or Release record, the release step is not
@@ -15,10 +15,9 @@ stale, or materially changed boundary holds the repair while read-only
15
15
  monitoring continues.
16
16
 
17
17
  Record the exact defect, allowed files and actions, current revision, feedback
18
- IDs, and actual author without expanding scope. If actual author information is
19
- unknown, mixed, or unsupported and cannot establish an eligible configured
20
- reviewer, report that exact gap and ask the user; do not assume an author from
21
- the importing owner or orchestrator.
18
+ IDs, and actual author without expanding scope.
19
+ Follow [Feedback routing](../SKILL.md#feedback-routing) to launch an adopted
20
+ repair author and pair its reviewer.
22
21
 
23
22
  ## 2. Produce a reviewable candidate
24
23
 
@@ -2,6 +2,9 @@
2
2
 
3
3
  Read this before starting, resuming, or stopping automated PR observation.
4
4
 
5
+ Follow [Native PR links and watches](../../axstack/references/t3-runtime.md#native-pr-links-and-watches)
6
+ for linking, event wakes, re-watching, fallback, and teardown in both watch modes.
7
+
5
8
  For each own PR, the owner must follow [PR previews](../../axstack/references/preview.md)
6
9
  when deciding on a preview, restarting it after a head change, or tearing it down.
7
10
 
@@ -98,7 +101,8 @@ Quiet ticks never notify.
98
101
 
99
102
  The driver alone routes repair.
100
103
  The driver routes rebases and review feedback to the PR's author for repair.
101
- For an adopted PR whose author this run did not launch, use a new author attempt under the adoption rules.
104
+ For an adopted PR whose author this run did not launch, use a new author attempt under the
105
+ [adoption rules](../SKILL.md#feedback-routing).
102
106
  The watch never writes candidate source.
103
107
  Re-read remote head/base and T3 ownership.
104
108
  Independent PRs may repair in parallel in separate T3 writer worktrees within