axstack 0.46.0 → 0.48.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "axstack",
3
- "version": "0.46.0",
3
+ "version": "0.48.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",
@@ -9,6 +9,8 @@ not a mode change.
9
9
 
10
10
  ## Advance and hold
11
11
 
12
+ Follow [Advised holds](contracts.md#advised-holds) for eligible user-decision holds.
13
+
12
14
  Advance only after the finishing phase returns its completed identity (a
13
15
  small-change intent, approved spec, matching ticket map, merge-ready or merged
14
16
  state) and no hold affects the next action. Record each hold's reason, owner,
@@ -99,6 +99,115 @@ discriminating check. A bare "stuck" claim needs pointers to two failed attempts
99
99
  setup slips and new user requirements do not count. Each use starts a fresh
100
100
  session that never reuses an adviser or candidate context. Escalation never
101
101
  resets existing holds or attempt budgets.
102
+ At an advised hold or step-back that is not high-stakes, an adviser split goes
103
+ to the user with no reconciliation and no Fable.
104
+
105
+ ## Advised holds
106
+
107
+ Advise when a hold reaches the user and the reply picks between two or more
108
+ paths an agent can then carry out.
109
+ The criterion governs and the examples are illustrative.
110
+ The never-advised list is exhaustive and judged by the cause, rather than reply
111
+ option wording.
112
+ Examples include `verification not proven`, provenance or unclosable-verification
113
+ merge cards, a blocked operation after bounded recovery, a scoped no-test-first
114
+ decision, the round-4 step-back hold, major-design urgent escalation in authored
115
+ or codebase review, and authored `Escalate to user` concerns about security,
116
+ permanent on-chain state changes or an architectural change in approach.
117
+ Diligence `UNKNOWN` and a `Learning` contradiction remain driver dispositions,
118
+ advised only if raised to the user as a hold.
119
+
120
+ Never advise spec approval, npm stage approval or collaborator approval.
121
+ Never advise access or credentials.
122
+ Never advise forge merges by the user.
123
+ Never advise `Auto-merge: off`.
124
+ Never advise work-promotion, deploying-base or unknown-base report cards.
125
+ Never advise the report-only comment-rating card.
126
+ Never advise model unavailability or substitution.
127
+ Never advise denied actions or explicit user stops.
128
+ Never advise peer-review holds; peer mode keeps its cap panel and sends no other human ping.
129
+ Never advise review-manager pass holds; the manager keeps its flagged-thread path.
130
+
131
+ Before advice the driver closes the gap where possible under existing rules,
132
+ then forms its own assessment.
133
+ This pre-advice gap-closing never spends the one advice-driven action.
134
+ In `mixed`, consult `axstack-advisor-astra` and `axstack-advisor-opus`
135
+ independently with the same bounded evidence packet and question.
136
+ The evidence packet and question omit the driver's own pick.
137
+ Advisers never cross-read one another.
138
+ Single-provider presets use the one configured adviser and record the other
139
+ as an intentional absence.
140
+
141
+ For high-stakes holds, use `axstack-advisor-astra` and `axstack-escalation-fable`
142
+ plain AGREE after bounded checks under the existing high-stakes contract
143
+ instead of the ordinary seats.
144
+ For a single-provider high-stakes hold, pause for an explicit user decision
145
+ under the existing contract.
146
+ In a single-provider preset, consult the configured one of those two seats once.
147
+ Show `advice unavailable: <seat>` for the absent high-stakes seat.
148
+ In a single-provider preset, no AGREE can form.
149
+ Mark the single-provider high-stakes card `high-stakes: no AGREE`
150
+ in the parenthetical `Recommended` status.
151
+ Only seats and disagreement handling follow that contract.
152
+ For high-stakes holds the card, wait and authority rules here still apply.
153
+ If Astra and Fable still disagree, show both options with the driver's pick
154
+ first and `high-stakes: no AGREE` in the parenthetical `Recommended` status.
155
+ The user's pick is the explicit user decision.
156
+ The driver's pick never counts as AGREE.
157
+
158
+ Add `Recommended`, `Trade-off`, `Checks would miss` and numbered `Reply` lines
159
+ to the existing card:
160
+
161
+ ```text
162
+ Recommended: <option n> (<advisers agree | advisers split | one adviser | advice pending: <seat> | advice unavailable: <seat>>)
163
+ Trade-off: <one line>
164
+ Checks would miss: <what tests and review would miss on this path | n/a for a non-code hold>
165
+ Reply: 1. <option> 2. <option> ...
166
+ ```
167
+
168
+ On a non-high-stakes split show both options with one-line reasons and the
169
+ driver's pick first; apply the Fable carve-out above.
170
+ On a single-provider adviser disagreement with the driver, show both options
171
+ with one-line reasons and the driver's pick first, as on a split.
172
+ With multiple open cards each reply names its PR, or the hold key for a hold
173
+ without a PR.
174
+ An ambiguous reply clears nothing and the driver asks once.
175
+ Advice never clears a hold or grants approval, merge or `user-accepted unproven`.
176
+ Silence never applies the recommendation.
177
+ A user reply clears only its bound cause.
178
+
179
+ Make one attempt per seat with no automatic retry or substitution.
180
+ With a run watch armed wait at most until the next bound watch wake, then
181
+ post the card.
182
+ With no watch armed post the card at once.
183
+ A running seat shows `advice pending: <seat>` on the card.
184
+ A failed or unavailable seat shows `advice unavailable: <seat>` on the card.
185
+ Late advice is an addendum in the driver thread, never a new hold or second alert.
186
+ Keep pending dispatches in the run record and settle them when they terminate.
187
+ Record an unavailable seat as a model gap for later work needing that seat.
188
+ An advice gap never blocks the card or the user's reply.
189
+
190
+ Reuse an advice receipt while its cause and evidence packet, including patch-id,
191
+ are unchanged.
192
+ Changed evidence, authority or question requires fresh advice.
193
+ The round-4 card reuses the step-back advisers with a delta-only brief.
194
+ On a head or base change, supersede the card under the existing supersede rules.
195
+ Reissue the card only if the decision is still needed, bound to the current head and base.
196
+ Reuse unchanged advice when reissuing the card.
197
+ A reissued card for the same cause is the same hold and sends no new alert.
198
+ A reply bound to a superseded head or base clears nothing at the new head or base.
199
+
200
+ After advice, per PR and cause kind the driver can act once on advice to close the cause
201
+ within existing authority only when advisers agree.
202
+ In single-provider presets, for self-close the adviser must agree with the driver.
203
+ Post the card on a split or a single-adviser disagreement with the driver.
204
+ Post the card when the cause recurs after that one action, or when the action raises a new hold.
205
+
206
+ Outside peer mode raise every serious-risk hold immediately in watch, implement,
207
+ review, autopilot or debug before dispatching advisers.
208
+ Serious-risk holds include security, downtime, data loss and major design.
209
+ Serious-risk advice follows as an addendum with no second alert.
210
+ Peer serious-risk holds stay never advised under the peer-review exclusion above.
102
211
 
103
212
  ## Serious risk
104
213
 
@@ -15,8 +15,10 @@ The recorded owning watch thread merges under the
15
15
  Diligence never merges.
16
16
 
17
17
  Load [Finding severity](../../axstack-review/SKILL.md#finding-severity) for the shared rubric.
18
- Diligence returns `FINDINGS` for any `medium` or `high` mismatch.
19
- Diligence returns `PASS` with the low items listed when only low mismatches remain.
18
+ Diligence returns `FINDINGS` for any `medium` or `high` mismatch except validated `Pre-existing` items.
19
+ Diligence returns `PASS` with the low and validated `Pre-existing` items listed
20
+ when only low mismatches or validated `Pre-existing` items remain.
21
+ Diligence returns `FINDINGS` to contest a `Pre-existing` tag that lacks evidence or hits an exclusion.
20
22
  Keep diligence `UNKNOWN` unchanged.
21
23
 
22
24
  For a PR, compare every changed line with the accepted intent and exclusions:
@@ -81,6 +81,29 @@ owner stops.
81
81
  deleted.
82
82
  The driver records `paused` on a user request or a hold; idle alone is neither.
83
83
 
84
+ ## Review-round budgets
85
+
86
+ Each PR membership entry carries `rounds: <n>` and `step-back: unused | used r<n>`.
87
+ The field `rounds` counts failing review rounds, not `repairs`.
88
+ Ticketless PRs (small-change intents) and adopted PRs have entries too.
89
+ A new planned PR, small-change PR or adopted PR starts at `rounds: 0` and `step-back: unused`
90
+ when it enters the run, unless a prior run entry exists.
91
+ When a prior run entry exists for the PR, copy that entry, including adopted PRs.
92
+ A prior record predates the field only when its `Runtime` line names an Axstack version below 0.48.0.
93
+ Such a pre-field entry starts with `rounds: 0` and `step-back: unused` only if the field is absent.
94
+ Except for that absent-field initialization, an inherited entry with missing or unclear `rounds` or `step-back` values
95
+ counts as `step-back: used`, including a newer record missing the field or an unknown `Runtime` version.
96
+ Distinct PRs that share one ticket or issue keep separate budgets.
97
+ Write `step-back: used r<n>` before dispatching any repair from the step-back,
98
+ including a user-picked path from the advised step-back card.
99
+ A replacement or split PR copies its predecessor's entry.
100
+ The entry persists across rebases, resumes and owner transfer.
101
+ A `step-back: used` entry permits no further extension.
102
+ Any counted failing review round after the extension records `held` with an advised card,
103
+ including a re-review after a base update and a round after a passing round 4.
104
+ Follow [Advised holds](contracts.md#advised-holds) for that card.
105
+ An interrupted or failed extra-round attempt never earns a second extension and follows the existing failure rules.
106
+
84
107
  ## Handoff and resumption
85
108
 
86
109
  Keep handoff state in this same record, never a second wrapper record. Before an
@@ -190,7 +213,7 @@ Deploying bases: <base -> integration | deploying; docs/workflow evidence>
190
213
  PR digest watermarks: <repo -> absolute path of its per-repository JSON file inside the private run directory> | none
191
214
  Release: <AGENTS.md file:line + tag-triggered workflow path + named install hosts> | not applicable (<reason>)
192
215
  Source base: <exact revision or source identity>
193
- PR membership: <PR -> ordinary-chain | legacy-native-stack; direct dependencies incl unpublished; active authors; head/base branch/base SHA>
216
+ PR membership: <PR -> ordinary-chain | legacy-native-stack; direct dependencies incl unpublished; active authors; head/base branch/base SHA; rounds: <n>; step-back: unused | used r<n>>
194
217
  IDs: <projectId + driver threadId/runId + dispatch identity receipt pointers>
195
218
  Runtime: <host + T3 version + installed Axstack SHA + installed Axstack version/check time + last reference read time + capabilities JSON path>
196
219
  Schedules: <scheduledTaskIds of every watch and manager schedule>
@@ -250,10 +250,10 @@ For each PR:
250
250
  polish.
251
251
  `REQUEST_CHANGES`, a failed required check, or post-readiness feedback returns
252
252
  findings to the same author for a new revision, increments `repairs`, and
253
- returns to step 1. `INCOMPLETE`, a provenance gap, unavailable model, serious
254
- risk, or the third review round with `REQUEST_CHANGES` and/or diligence
255
- `FINDINGS` on one PR records `held`. A changed parent immediately invalidates affected child readiness; refresh
253
+ returns to step 1. `INCOMPLETE`, a provenance gap, unavailable model or serious
254
+ risk records `held`. A changed parent immediately invalidates affected child readiness; refresh
256
255
  the next ready children as needed under PR chains before step 1.
256
+ Follow [Advised holds](../axstack/references/contracts.md#advised-holds) for eligible `held` causes.
257
257
  Merge-ready also requires a current diligence `PASS` at that head; diligence
258
258
  `FINDINGS` return to the same author within the review round.
259
259
  Diligence `UNKNOWN` records the PR as `held` with the reason in the run record
@@ -262,7 +262,15 @@ For each PR:
262
262
  rule as a finding on the owning PR and hold merge-ready until the contradiction is resolved.
263
263
  An unrelated run-record `Learning` leaves merge-ready eligibility unchanged.
264
264
  A round with reviewer `REQUEST_CHANGES` and/or diligence `FINDINGS` increments
265
- `repairs` once and counts once toward the third-round hold.
265
+ `repairs` once and counts once toward the round-3 step-back.
266
+ Failed checks and post-readiness feedback increment `repairs` but never count
267
+ as failing review rounds.
268
+ On any counted failing review round that leaves `rounds` at 3 or more while
269
+ `step-back: unused`, the driver steps back with both `axstack-advisor-astra`
270
+ and `axstack-advisor-opus` to assess exactly one extra repair round (round 4
271
+ in the normal case).
272
+ Load and follow [Round-3 step-back](references/step-back.md).
273
+ Load and follow [Review-round budgets](../axstack/references/run-record.md#review-round-budgets) before dispatching any repair from the step-back.
266
274
 
267
275
  The T3 run watch reconciles every unsettled dispatch attempt; the bounded
268
276
  forge check wait is the only other implementation wait.
@@ -272,6 +280,7 @@ That watch owns the bound T3 schedule wake; its runtime sets the cadence.
272
280
  A turn with unsettled launched threads must end only under the bound-watch rule in the T3 runtime contract.
273
281
  With settled threads, end a turn only when every required PR is `merge-ready` or `held`.
274
282
  Follow [Route each wake](../axstack-watch/SKILL.md#4-route-each-wake).
283
+ Follow [Advised holds](../axstack/references/contracts.md#advised-holds) when raising eligible holds.
275
284
  Raise user-decision and serious-risk holds in the T3 driver thread and end the
276
285
  turn parked on the decision. Serious risks are raised immediately.
277
286
  After bounded safe recovery, raise a genuine blocked operation that still needs
@@ -0,0 +1,31 @@
1
+ # Round-3 step-back
2
+
3
+ An unavailable step-back seat counts as no agreement and falls to the user with the advised step-back card.
4
+ Follow [Advised holds](../../axstack/references/contracts.md#advised-holds) for
5
+ seat attempts, waits, gaps and cards, including the round-4 card's delta-only adviser reuse.
6
+
7
+ Each adviser independently gets the open findings and the author's replies.
8
+ Each adviser independently gets the per-round deltas.
9
+ Each adviser independently gets blame showing the round in which each flagged line first appeared.
10
+ Each adviser independently gets the approved scope, sketch and approach.
11
+
12
+ Send one advised repair brief to the same author for the extra round only when all conditions below hold:
13
+
14
+ - The driver accepts the path.
15
+ - Both advisers agree on the path.
16
+ - The path stays inside the approved scope.
17
+ The path must not break a sketch `Binding` line.
18
+ - No independent hold applies.
19
+
20
+ The extra round requires fresh independent reviewer and diligence receipts, with a fresh session of the same mapped reviewer role.
21
+ Do not add an extra reviewer.
22
+ Advisers must never lower a rating or clear a finding.
23
+ Advisers can propose `Pre-existing` with evidence, which the extra-round reviewer validates under
24
+ [review's Pre-existing rules](../../axstack-review/SKILL.md#finding-severity).
25
+
26
+ When any condition fails, record `held` and fall to the user with the advised step-back card.
27
+ Failed conditions include an adviser split, an unavailable seat, the driver rejecting the agreed path,
28
+ or the only path leaving approved scope or breaking a `Binding` line.
29
+ A scope change follows the existing material-revision route.
30
+ An independent hold keeps its own card and rules, with received step-back advice attached as context.
31
+ After an independent hold clears, recheck all extra-round conditions and reuse unchanged advice.