axstack 0.9.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/LICENSE +21 -0
- package/README.md +132 -0
- package/bin/axstack.js +396 -0
- package/docs/installation.md +239 -0
- package/docs/workflows.md +220 -0
- package/package.json +40 -0
- package/profiles/presets/claude-only.json +194 -0
- package/profiles/presets/codex-only.json +194 -0
- package/profiles/presets/mixed.json +194 -0
- package/skills/axstack/SKILL.md +81 -0
- package/skills/axstack/references/automations.md +368 -0
- package/skills/axstack/references/candidate-publication.md +45 -0
- package/skills/axstack/references/contracts.md +102 -0
- package/skills/axstack/references/lifecycle.md +137 -0
- package/skills/axstack/references/orca-runtime.md +109 -0
- package/skills/axstack/references/pr-shape.md +39 -0
- package/skills/axstack/references/routing.md +129 -0
- package/skills/axstack/references/run-record.md +109 -0
- package/skills/axstack-align/SKILL.md +121 -0
- package/skills/axstack-audit/SKILL.md +137 -0
- package/skills/axstack-audit/references/record.md +28 -0
- package/skills/axstack-debug/SKILL.md +157 -0
- package/skills/axstack-debug/references/packet.md +80 -0
- package/skills/axstack-explain/SKILL.md +66 -0
- package/skills/axstack-explain/references/visual-qa.md +15 -0
- package/skills/axstack-implement/SKILL.md +164 -0
- package/skills/axstack-improve/SKILL.md +69 -0
- package/skills/axstack-relay/SKILL.md +102 -0
- package/skills/axstack-research/SKILL.md +57 -0
- package/skills/axstack-research/references/checklist.md +25 -0
- package/skills/axstack-review/SKILL.md +343 -0
- package/skills/axstack-spec/SKILL.md +67 -0
- package/skills/axstack-tickets/SKILL.md +86 -0
- package/skills/axstack-watch/SKILL.md +160 -0
- package/skills/axstack-watch/references/repair-publication.md +69 -0
- package/skills/axstack-watch/references/watch-runtime.md +60 -0
- package/src/capabilities.js +138 -0
- package/src/claude-settings.js +230 -0
- package/src/installer.js +980 -0
- package/src/instructions.js +100 -0
- package/src/locations.js +43 -0
- package/src/manifest.js +251 -0
- package/src/posixpath.js +108 -0
- package/src/roles.js +142 -0
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: axstack-audit
|
|
3
|
+
description: When a substantive run needs evidence review, use axstack-audit to measure outcomes and propose bounded improvements.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Audit
|
|
7
|
+
|
|
8
|
+
Produce one evidence-bound audit record for the assigned substantive run or
|
|
9
|
+
checkpoint. Separate what the run achieved, how it followed the workflow, and
|
|
10
|
+
how completely the evidence supports either judgment. Improvement proposals
|
|
11
|
+
are bounded follow-up candidates; this audit changes nothing itself.
|
|
12
|
+
|
|
13
|
+
## 1. Establish the audit boundary
|
|
14
|
+
|
|
15
|
+
Load [Standing contracts](../axstack/references/contracts.md) before inspecting
|
|
16
|
+
the run, apply [PR shape](../axstack/references/pr-shape.md), then use the
|
|
17
|
+
[audit record schema](references/record.md). Keep the
|
|
18
|
+
shared load edge explicit: Standing contracts require
|
|
19
|
+
[Shared lifecycle](../axstack/references/lifecycle.md) for independently called
|
|
20
|
+
substantive phases, and lifecycle's audit hook loads this skill. This audit is
|
|
21
|
+
the terminal exception: it writes its assigned record and does not audit itself.
|
|
22
|
+
|
|
23
|
+
The dispatching driver reads [Orca runtime](../axstack/references/orca-runtime.md)
|
|
24
|
+
immediately before an actual auditor profile or session dispatch. Ordinary
|
|
25
|
+
audit reading and record writing do not load it, and the auditor never
|
|
26
|
+
dispatches.
|
|
27
|
+
|
|
28
|
+
Core owns the `axstack-auditor` profile (codex/gpt-5.6-luna max) and its
|
|
29
|
+
invocation. This skill governs what that auditor reads, measures, and proposes.
|
|
30
|
+
The user-chosen improvement mode is a tested, independently reviewed PR that a
|
|
31
|
+
human merges.
|
|
32
|
+
|
|
33
|
+
Act as a non-author, read-only reader of the run. The assigned audit artifact is
|
|
34
|
+
the only writable output. Make no edits to product, skills, or config, and
|
|
35
|
+
launch no child sessions.
|
|
36
|
+
|
|
37
|
+
Proceed only when the record path, audit mode (`end-of-run` or `checkpoint`),
|
|
38
|
+
accepted scope, and read-only authority are explicit. Record any gap without
|
|
39
|
+
expanding authority to fill it.
|
|
40
|
+
|
|
41
|
+
## 2. Build the evidence set
|
|
42
|
+
|
|
43
|
+
Use actual records, never memory:
|
|
44
|
+
|
|
45
|
+
- the approved spec, or the accepted peer, research, or maintenance scope;
|
|
46
|
+
- the decision log and configured `axstack-advisor-astra` and
|
|
47
|
+
`axstack-advisor-fable` receipts;
|
|
48
|
+
- exact git revisions;
|
|
49
|
+
- test and review evidence; and
|
|
50
|
+
- the run execution record at its recorded `progress.md` path.
|
|
51
|
+
|
|
52
|
+
Auditing is enabled for every substantive run by default. A material deviation
|
|
53
|
+
or repeated repair pattern can justify a checkpoint. Reuse still-valid prior
|
|
54
|
+
audit evidence rather than repeating a whole-run rescan. A routine small lookup
|
|
55
|
+
may end with a compact audit record; never force research through the full
|
|
56
|
+
implementation pipeline. Cadence uses the core-owned invocation and creates no
|
|
57
|
+
extra daemon, timer, or analytics service.
|
|
58
|
+
|
|
59
|
+
The evidence set is ready when every claimed input has a source and revision
|
|
60
|
+
where applicable, and every missing input is named as missing.
|
|
61
|
+
|
|
62
|
+
## 3. Measure with denominators
|
|
63
|
+
|
|
64
|
+
Follow the [audit record schema](references/record.md). Every metric carries
|
|
65
|
+
counts with denominators plus the evidence behind the count:
|
|
66
|
+
|
|
67
|
+
- Acceptance criteria passed, failed, and unverified, each traced to its tests plus SHA.
|
|
68
|
+
- Planned steps completed and deviated, each deviation with why and approval.
|
|
69
|
+
- Configured adviser coverage across Align, Spec creation, Spec revision,
|
|
70
|
+
solution design, and unresolved consequential decisions, including
|
|
71
|
+
independent same-question receipts, disagreement synthesis, and both plain AGREE receipts where high-stakes.
|
|
72
|
+
- Debug evidence where `axstack-debug` ran: rung reached, loop command, fix
|
|
73
|
+
attempts with why each failed, adviser and investigator receipts, and
|
|
74
|
+
isolation evidence (pinned worktree, preserved probe artifacts).
|
|
75
|
+
- Applicable test-first evidence: normal behavior changes have real red-green
|
|
76
|
+
proof; explicitly accepted structure-preserving work has the old revision
|
|
77
|
+
green before edits and the same checks green on the new revision, plus
|
|
78
|
+
applicable equivalence evidence. Record noncompliance when the applicable
|
|
79
|
+
evidence path is absent, or `UNKNOWN` with the reason when its records are
|
|
80
|
+
unavailable.
|
|
81
|
+
- Independent exact-revision review status and unresolved findings.
|
|
82
|
+
- Rework cycles with causes.
|
|
83
|
+
- Avoidable user interventions where records support the call, and no call where they do not.
|
|
84
|
+
- Parallelizable tasks identified versus dispatched, judged with dependency and writer isolation.
|
|
85
|
+
- PRs within band / total PRs using the actual denominator. Apply the level
|
|
86
|
+
matching the measured total. For the rationale band, record cohesion
|
|
87
|
+
rationale presence; for the exception band, record the full driver exception
|
|
88
|
+
record. Record `UNKNOWN` when a receipt lacks the measurement.
|
|
89
|
+
This is evidence, not a score to game. Audit treats routine shape choices as
|
|
90
|
+
autonomous driver decisions; size alone never requires user approval.
|
|
91
|
+
- Actual model, tool, time, token, and cost figures when provider receipts are available, unknown otherwise.
|
|
92
|
+
|
|
93
|
+
Record `UNKNOWN` where evidence is absent. Never count missing evidence as a
|
|
94
|
+
pass or collapse gaps into a vanity score. Prefer parallelism for genuinely
|
|
95
|
+
independent decomposable work, while respecting dependencies and writer
|
|
96
|
+
isolation; never game the measure by spawning needless agents.
|
|
97
|
+
|
|
98
|
+
Accept the tally only when every count reconciles with its denominator, every
|
|
99
|
+
item traces to evidence or an explicit unknown, and no inferred provider
|
|
100
|
+
figures or retroactive TDD proof remain.
|
|
101
|
+
|
|
102
|
+
## 4. State three judgments
|
|
103
|
+
|
|
104
|
+
State execution outcome, procedural adherence, and measurement coverage as
|
|
105
|
+
three separate judgments. Qualify causality and compare only compatible runs:
|
|
106
|
+
report what the evidence supports, not what it merely suggests.
|
|
107
|
+
|
|
108
|
+
Keep the judgments independent: evidence that changes one must not implicitly
|
|
109
|
+
change either of the other two.
|
|
110
|
+
|
|
111
|
+
## 5. Propose only bounded improvements
|
|
112
|
+
|
|
113
|
+
Each proposal names:
|
|
114
|
+
|
|
115
|
+
1. the observed failure or inefficiency;
|
|
116
|
+
2. the hypothesized root cause, with evidence and counterevidence;
|
|
117
|
+
3. one bounded hypothesized skill change;
|
|
118
|
+
4. a regression scenario first, followed by an unchanged holdout evaluation;
|
|
119
|
+
5. a cost and quality comparison when those values were measured; and
|
|
120
|
+
6. the authorized delivery path: the auditor suggests, the driver arranges an
|
|
121
|
+
author and independent review, a reviewed PR is proposed, and a human merges.
|
|
122
|
+
|
|
123
|
+
Keep evaluation data, candidate changes, and validation separate. This is an
|
|
124
|
+
original Axstack workflow with no outside dependency or extra framework to
|
|
125
|
+
install.
|
|
126
|
+
|
|
127
|
+
Omit any proposal that is not testable, does not preserve unchanged
|
|
128
|
+
expectations, or would grant the auditor implementation or activation
|
|
129
|
+
authority.
|
|
130
|
+
|
|
131
|
+
## 6. Write the record and stop
|
|
132
|
+
|
|
133
|
+
Write the assigned artifact in the schema's field order. Preserve the accepted
|
|
134
|
+
criteria and metrics after failures. Keep raw traces and run artifacts local
|
|
135
|
+
and private by default; only an authorized sanitized summary may leave the run.
|
|
136
|
+
Perform no self-edit, hidden per-user memory mutation, automatic merge, or
|
|
137
|
+
activation. Stop after the record is complete.
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# Audit record schema
|
|
2
|
+
|
|
3
|
+
Write one record per audited run or checkpoint in the field order below. Every
|
|
4
|
+
count includes its denominator and evidence reference. Use `UNKNOWN` with the
|
|
5
|
+
reason when evidence is missing; missing evidence is never a pass.
|
|
6
|
+
|
|
7
|
+
```text
|
|
8
|
+
Run: <run identity + scope/authority + audit mode (end-of-run | checkpoint)>
|
|
9
|
+
Baseline: <approved spec rev | peer mode | research mode | maintenance scope>
|
|
10
|
+
Acceptance: <passed / failed / unverified + test + SHA traces>
|
|
11
|
+
Steps: <completed / deviated + why + approval per deviation>
|
|
12
|
+
Advisers: <Astra/Fable coverage + same-question receipts + high-stakes AGREE status>
|
|
13
|
+
Debug: <rung reached + loop command + fix attempts + adviser and investigator receipts + isolation evidence | n/a>
|
|
14
|
+
TDD: <applicable evidence path: normal real red-green | accepted structure-preserving old revision green before edits + same checks new revision green; absent proof: noncompliance | unavailable records: UNKNOWN with reason>
|
|
15
|
+
Review: <exact-rev independent review status + unresolved findings>
|
|
16
|
+
Rework: <cycles + causes>
|
|
17
|
+
Interventions: <avoidable user interventions, or unsupported by records>
|
|
18
|
+
Parallelism: <identified vs dispatched + dependency/writer isolation>
|
|
19
|
+
Shape: <PRs within band / total PRs + rationale-band cohesion rationale + exception-band full driver exception record; missing measurement: UNKNOWN>
|
|
20
|
+
Cost: <model/tool/time/token/cost figures, or unknown otherwise>
|
|
21
|
+
Judgment: <execution outcome vs procedural adherence vs measurement coverage>
|
|
22
|
+
Proposals: <bounded hypothesized changes with regression-first plan, or none>
|
|
23
|
+
Privacy: <local/private default; sanitized summary only when authorized>
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
The record is complete when its counts reconcile, its judgments remain
|
|
27
|
+
separate, every proposal has a regression-first validation path, and all
|
|
28
|
+
unknowns and evidence limitations are explicit.
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: axstack-debug
|
|
3
|
+
description: When a bug, failing test, regression, or wrong behavior needs a root cause and a red loop is wanted, use axstack-debug to diagnose, escalate through adviser-directed investigators, and hand off a classified repair.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Debug
|
|
7
|
+
|
|
8
|
+
Produce a diagnosis record with a red-capable loop, a confirmed root cause or
|
|
9
|
+
an honest UNKNOWN, and a classified hand-off. This skill never lands, commits,
|
|
10
|
+
pushes, or publishes a product change; the repair goes to `axstack-implement`.
|
|
11
|
+
`axstack-explain` answers how a system works; use this skill when something is
|
|
12
|
+
wrong and a red loop is wanted.
|
|
13
|
+
|
|
14
|
+
Before starting, load [Standing contracts](../axstack/references/contracts.md)
|
|
15
|
+
and the lifecycle it requires. Shapes for the evidence packet, investigator
|
|
16
|
+
brief, receipt, and diagnosis record are in [packet.md](references/packet.md);
|
|
17
|
+
read it before phase 7 and before any fan-out.
|
|
18
|
+
|
|
19
|
+
Redact secrets before showing any command, output, or artifact; build loops
|
|
20
|
+
against environment variables so credentials never appear in what is shown.
|
|
21
|
+
|
|
22
|
+
## Phases
|
|
23
|
+
|
|
24
|
+
Each phase has an observable completion criterion. Skip one only with a
|
|
25
|
+
recorded reason.
|
|
26
|
+
|
|
27
|
+
1. **Loop.** Produce one agent-runnable command that goes red on the user's
|
|
28
|
+
exact symptom and is fast and deterministic. Prefer, in order: a failing
|
|
29
|
+
test at the nearest seam, an HTTP or CLI invocation diffed against a
|
|
30
|
+
known-good output, a headless browser script, a replayed captured trace, a
|
|
31
|
+
throwaway harness, a property loop, a bisection harness, a differential run.
|
|
32
|
+
For a flaky bug pin the sample count, observed failures, duration, seed and
|
|
33
|
+
environment, and the comparison criterion; a bare "high reproduction rate"
|
|
34
|
+
cannot support a later green claim. Narrow code reading needed to find the
|
|
35
|
+
entry point is allowed; forming a theory before the loop exists is not. If a
|
|
36
|
+
loop cannot be built, stop, list what was tried, and ask the user for an
|
|
37
|
+
environment, a redacted artifact, or instrumentation permission. Done when
|
|
38
|
+
the command has run once and its red output is recorded.
|
|
39
|
+
2. **Reproduce and minimise.** Confirm the loop reproduces the user's failure
|
|
40
|
+
and not a neighbour. Remove inputs, callers, config, data, and steps one at
|
|
41
|
+
a time within a stated budget until the repro is the smallest practical;
|
|
42
|
+
keep the original loop as well. Done when each remaining element is
|
|
43
|
+
load-bearing or the budget is spent and recorded.
|
|
44
|
+
3. **State and recent change.** Before reading code, inspect persistent
|
|
45
|
+
state, environment drift, caches, locks, config, and `git diff` and
|
|
46
|
+
`git log` since the last known-good revision. Record findings or none.
|
|
47
|
+
4. **Hypothesise.** Rank the falsifiable hypotheses the evidence supports,
|
|
48
|
+
each with the prediction it makes. One strongly supported hypothesis is
|
|
49
|
+
enough; never invent alternatives to reach a quota. Show the ranking to the
|
|
50
|
+
user and proceed without blocking. If the user re-ranks mid-wave, finish
|
|
51
|
+
the wave and re-rank before the next.
|
|
52
|
+
5. **Probe.** One probe per prediction, one variable at a time, every debug
|
|
53
|
+
log tagged with a unique prefix so cleanup is a single search. Use a
|
|
54
|
+
debugger or REPL before logs where available and bisection where history
|
|
55
|
+
exists. For a performance regression measure a baseline before any change.
|
|
56
|
+
A failed probe is not a failed fix.
|
|
57
|
+
6. **Root cause and seam.** Trace the bad value backward to its origin. Name
|
|
58
|
+
the regression-test seam, or record NONE as a finding. Sweep the codebase
|
|
59
|
+
for the same pattern elsewhere and list the sites.
|
|
60
|
+
7. **Record and hand off.** Emit the diagnosis record, classify the repair,
|
|
61
|
+
remove tagged instrumentation and throwaway harnesses or list them for the
|
|
62
|
+
implementer, and preserve the loop and minimal repro. Done when the record
|
|
63
|
+
is complete and the hand-off names its class.
|
|
64
|
+
|
|
65
|
+
Anti-patterns to name and refuse: bypass flags, retry loops that mask
|
|
66
|
+
diagnosis (bounded repeated trials for flaky reproduction are not this),
|
|
67
|
+
shotgun changes, guards without a why, symptom fixes, theory before the loop,
|
|
68
|
+
and "one more attempt" after the ladder says escalate.
|
|
69
|
+
|
|
70
|
+
## Fix attempts
|
|
71
|
+
|
|
72
|
+
A **fix attempt** is one coherent repair, predicted by the diagnosis record to
|
|
73
|
+
turn the loop green, evaluated by the driver against the original symptom loop
|
|
74
|
+
and the minimised repro. A change that failed because of an implementation
|
|
75
|
+
slip (wrong file, bad test, setup failure) returns to the author under the
|
|
76
|
+
existing repair contract and does not count. A diagnostic probe never counts.
|
|
77
|
+
The per-bug ledger (revision, hypothesis, loop result, regression result, new
|
|
78
|
+
failures introduced) carries across this skill, `axstack-implement`, and
|
|
79
|
+
resume; a new invocation imports known attempts instead of resetting. On
|
|
80
|
+
resume, the driver re-verifies the packet hash against the current revision and
|
|
81
|
+
dirty patch; if either differs, refresh the packet and re-run the loop red
|
|
82
|
+
before any further probe or attempt.
|
|
83
|
+
|
|
84
|
+
## Ladder
|
|
85
|
+
|
|
86
|
+
| Rung | Trigger | Who | Output |
|
|
87
|
+
| --- | --- | --- | --- |
|
|
88
|
+
| L0 | entry | driver alone | phases 1–7; at most one fix attempt through `axstack-implement` |
|
|
89
|
+
| L1 | the L0 fix attempt failed; or phases 1–3 complete plus at least one discriminating probe (or a recorded reason no safe probe exists) and no hypothesis ranks | the preset's configured advisers, independently, same evidence packet | ranked hypotheses and one investigator brief per hypothesis |
|
|
90
|
+
| L1 fan-out | driver merges the adviser plans | `axstack-debug-investigator-1..4`, identical packet, distinct briefs, no cross-reading | one receipt per brief |
|
|
91
|
+
| L2 | the L1 fix attempt failed (second failure overall); or each fix reveals a new symptom elsewhere | the configured advisers on architecture, then the user | wrong-architecture finding, bounded refactor proposal, or one bounded next diagnostic action; the user decides before any third attempt |
|
|
92
|
+
|
|
93
|
+
L1 is inadmissible without a red loop. Ordinary diagnosis is not a high-stakes
|
|
94
|
+
decision: in `mixed` both advisers are consulted and both receipts are
|
|
95
|
+
required; a single-provider preset consults its one configured adviser and
|
|
96
|
+
records the other as an intentional absence. Whenever a run exposes a
|
|
97
|
+
high-stakes architecture choice, serious security, downtime, or data-loss
|
|
98
|
+
risk, the standing high-stakes and serious-risk contracts override this rule,
|
|
99
|
+
including the single-provider high-stakes hold. An adviser configured but
|
|
100
|
+
unavailable at launch holds L1 and L2 without substitution; L0 continues.
|
|
101
|
+
Reuse an adviser receipt while the packet is unchanged; a changed packet needs
|
|
102
|
+
a fresh receipt.
|
|
103
|
+
|
|
104
|
+
**Plan merge.** The driver de-duplicates the advisers' hypotheses, ranks the
|
|
105
|
+
union with reasons recorded in the run record, drops hypotheses both advisers
|
|
106
|
+
refute, assigns the top N to the N live investigators (briefs ≤ seats per
|
|
107
|
+
wave), and records the remainder as untested (queued). A second wave on the same roles is allowed on changed
|
|
108
|
+
evidence. If every probe is refuted or inconclusive, one bounded adviser replan
|
|
109
|
+
on the new evidence, then hold for the user; never unbounded.
|
|
110
|
+
|
|
111
|
+
**Fan-out floor and completion.** At least two configured investigators must
|
|
112
|
+
start with verified identity, or the fan-out is held with no substitution; a
|
|
113
|
+
single available seat may run safe fact work but does not satisfy L1. L1 is
|
|
114
|
+
complete only when at least two usable independent investigator receipts exist
|
|
115
|
+
and every decisive conclusion has sufficient evidence. Account for every
|
|
116
|
+
planned hypothesis as confirmed, refuted, inconclusive, blocked (probe could
|
|
117
|
+
not run), or untested; accounting is reporting, not investigation, and two
|
|
118
|
+
peripheral receipts do not clear a missing decisive probe. If a seat drops
|
|
119
|
+
mid-wave, keep completed receipts and hold only dependent conclusions. Held
|
|
120
|
+
briefs may be run serially by the driver at L0 authority, recorded as
|
|
121
|
+
driver-run; driver-run probes supplement the evidence but never replace the
|
|
122
|
+
two independent receipts or clear the hold. Reconcile contradictory receipts
|
|
123
|
+
by evidence or one discriminating rerun, never by vote.
|
|
124
|
+
|
|
125
|
+
Immediately before an actual adviser or investigator dispatch, load and follow
|
|
126
|
+
[Orca runtime](../axstack/references/orca-runtime.md).
|
|
127
|
+
|
|
128
|
+
## Isolation
|
|
129
|
+
|
|
130
|
+
Each investigator gets its own disposable worktree at the pinned revision plus
|
|
131
|
+
the recorded dirty patch and packet artifacts, materialised and hash-verified
|
|
132
|
+
there, and re-runs the original loop red (for a flaky loop, meeting the phase 1
|
|
133
|
+
pinned sample criterion) before probing. It may edit that worktree for probes
|
|
134
|
+
and never commits, pushes, publishes, or creates children. Before
|
|
135
|
+
driver-verified cleanup, the exact probe diff or script, command and output,
|
|
136
|
+
and the receipt are preserved as redacted receipt artifacts under the run
|
|
137
|
+
directory (the driver remains the sole `progress.md` writer); only then is the
|
|
138
|
+
worktree discarded. The loop must be hermetic (worktree-local). A worktree
|
|
139
|
+
isolates files, not shared or live systems: if the loop touches shared state
|
|
140
|
+
(database, port, cache, lock), parameterise it per investigator, or serialise
|
|
141
|
+
the wave against an explicitly authorised resource with recorded reset and
|
|
142
|
+
restore steps between probes; if neither is possible, hold that probe. Record
|
|
143
|
+
the outcome on the diagnosis record's `Hermetic:` line (`yes`, or `shared:`
|
|
144
|
+
plus the resource and the chosen handling). The bundle's mode convention stays; record requested and effective settings
|
|
145
|
+
separately, and hold on an unsupported requested mode.
|
|
146
|
+
|
|
147
|
+
## Hand-off
|
|
148
|
+
|
|
149
|
+
Classify the repair in the diagnosis record. A confirmed bounded repair
|
|
150
|
+
supplies the small-change intent to `axstack-implement`; a substantial repair
|
|
151
|
+
takes the approved-spec and ticket route; an unresolved diagnosis stays
|
|
152
|
+
investigation. NONE seam is an explicit TDD gap that needs a scoped decision,
|
|
153
|
+
not permission to fix without a meaningful red. The implementer verifies
|
|
154
|
+
against both the original loop and the minimised repro. Returning to a phase
|
|
155
|
+
transfers no PR ownership and grants no new mutation authority. Record one
|
|
156
|
+
lesson line when the bug changed your understanding; it authorises no memory
|
|
157
|
+
or skill edits.
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
# Debug shapes
|
|
2
|
+
|
|
3
|
+
Read before phase 7 and before any fan-out. Every artifact below is redacted.
|
|
4
|
+
|
|
5
|
+
## Evidence packet
|
|
6
|
+
|
|
7
|
+
One snapshot file under the run record, hashed, referenced by path from every
|
|
8
|
+
brief. Fields:
|
|
9
|
+
|
|
10
|
+
- user symptom verbatim
|
|
11
|
+
- base and candidate SHA plus dirty-patch or artifact hashes
|
|
12
|
+
- cwd, runtime, dependency and config prerequisites
|
|
13
|
+
- redacted fixture, setup and reset steps
|
|
14
|
+
- the loop command, its exact assertion, and its original output
|
|
15
|
+
- minimised repro and what remains load-bearing
|
|
16
|
+
- state and recent-change findings
|
|
17
|
+
- every prior attempt with diff summary, hypothesis, and why it was judged
|
|
18
|
+
failed
|
|
19
|
+
- hypotheses already refuted
|
|
20
|
+
- allowed reads, commands, scratch location, and excluded systems
|
|
21
|
+
- probe budget
|
|
22
|
+
|
|
23
|
+
## Investigator brief
|
|
24
|
+
|
|
25
|
+
One per hypothesis, added to the shared packet:
|
|
26
|
+
|
|
27
|
+
- hypothesis ID and statement
|
|
28
|
+
- prediction it makes
|
|
29
|
+
- discriminating probe
|
|
30
|
+
- falsification criterion
|
|
31
|
+
- stop criterion ("confirmed means", "inconclusive means", budget)
|
|
32
|
+
|
|
33
|
+
An investigator may report one credible alternative hypothesis without
|
|
34
|
+
cross-reading another investigator's output.
|
|
35
|
+
|
|
36
|
+
## Investigator receipt
|
|
37
|
+
|
|
38
|
+
```text
|
|
39
|
+
Investigator: <role ID + provider/model/effort receipt> worktree <path> rev <sha> dirty <hash | clean>
|
|
40
|
+
Hypothesis: <ID>
|
|
41
|
+
Loop before probe: <red output excerpt>
|
|
42
|
+
Probe: <diff or script pointer> -> <command> -> <output pointer>
|
|
43
|
+
Verdict: confirmed | refuted | inconclusive | blocked
|
|
44
|
+
Evidence: <pointers>
|
|
45
|
+
Alternative: <one hypothesis or none>
|
|
46
|
+
Limitations: <what could not be checked and why>
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Diagnosis record
|
|
50
|
+
|
|
51
|
+
```text
|
|
52
|
+
Bug: <user symptom, verbatim, redacted>
|
|
53
|
+
Revision: <candidate SHA> base <SHA> dirty <patch hash | clean>
|
|
54
|
+
Loop: <one command> -> <red output excerpt> Hermetic: <yes | shared: ...>
|
|
55
|
+
Minimised repro: <what remains load-bearing>
|
|
56
|
+
State/recent change: <findings or none>
|
|
57
|
+
Hypotheses: <ranked; each confirmed/refuted/inconclusive/blocked/untested + evidence>
|
|
58
|
+
Root cause: <origin of the bad value> | UNKNOWN + what was tried
|
|
59
|
+
Seam: <regression test location> | NONE (finding)
|
|
60
|
+
Pattern sweep: <other sites or none>
|
|
61
|
+
Rung reached: <L0 | L1 | L2> Fixes tried: <n: change, why judged failed>
|
|
62
|
+
Adviser receipts: <ids or n/a> Investigator receipts: <ids or n/a>
|
|
63
|
+
Cleanup: <tagged prefixes removed | listed for implementer>
|
|
64
|
+
Repair class: <bounded -> small-change intent | substantial -> spec route | unresolved -> investigation continues>
|
|
65
|
+
Lesson: <one line or none>
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Repair classes
|
|
69
|
+
|
|
70
|
+
- `bounded` — a confirmed root cause with a named seam and a repair the
|
|
71
|
+
record predicts will turn the loop green; supplies the small-change intent
|
|
72
|
+
for `axstack-implement`.
|
|
73
|
+
- `substantial` — the repair crosses a material design, security, or
|
|
74
|
+
infrastructure boundary; takes the approved-spec and ticket route.
|
|
75
|
+
- `unresolved` — root cause UNKNOWN or no decisive evidence; investigation
|
|
76
|
+
continues at the recorded rung.
|
|
77
|
+
|
|
78
|
+
A NONE seam is an explicit TDD gap requiring a scoped decision, not permission
|
|
79
|
+
to fix without a meaningful red. The implementer verifies the repair against
|
|
80
|
+
both the original loop and the minimised repro.
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: axstack-explain
|
|
3
|
+
description: When understanding a system, change, or implementation gap, use axstack-explain to show how it works and what exists, is missing, or remains unverified.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Explain
|
|
7
|
+
|
|
8
|
+
Explain a system, change, current behavior, intended behavior, or implementation
|
|
9
|
+
gap from inspected evidence. This direct route needs no spec ceremony. Use
|
|
10
|
+
project documentation as evidence where relevant. It supersedes `axstack-docs`; if a stale install
|
|
11
|
+
exposes both skills, route the request here only.
|
|
12
|
+
|
|
13
|
+
Before acting, load [Standing contracts](../axstack/references/contracts.md),
|
|
14
|
+
then follow its required lifecycle and audit pointers. Explanation work has no
|
|
15
|
+
scope baseline. Ordinary work in the current chat needs no launch preflight;
|
|
16
|
+
load the [Orca runtime boundary](../axstack/references/orca-runtime.md) only
|
|
17
|
+
immediately before an actual profile dispatch.
|
|
18
|
+
|
|
19
|
+
## 1. Bound the question and evidence
|
|
20
|
+
|
|
21
|
+
1. Identify the audience, question, requested format, theme, and publication
|
|
22
|
+
boundary.
|
|
23
|
+
2. Record the inspected paths. Use an exact revision for Git sources; for a
|
|
24
|
+
non-versioned file, screenshot, or exported snippet, use a stable source
|
|
25
|
+
identity or content hash. Record any live target and observation method.
|
|
26
|
+
Record the history window when available; unavailable history is a named
|
|
27
|
+
limitation, never an invented window. Trace the relevant flow, boundaries,
|
|
28
|
+
dependencies, and actual behavior before comparing current versus intended
|
|
29
|
+
behavior.
|
|
30
|
+
3. Mark material claims independently as **source implemented**, **tested**,
|
|
31
|
+
**live observed**, **planned/proposed**, or **unknown**. These dimensions can
|
|
32
|
+
coexist; none implies another.
|
|
33
|
+
4. For every gap, cite its inspected scope and applicable revision, stable
|
|
34
|
+
source identity, or content hash. “Not found” never means app-wide missing
|
|
35
|
+
without app-wide evidence; anything outside the inspected scope is unknown.
|
|
36
|
+
|
|
37
|
+
## 2. Choose proportional output
|
|
38
|
+
|
|
39
|
+
1. For a simple request, answer concisely in the current chat. Use a compact
|
|
40
|
+
diagram when useful. This needs no mandatory agent or intermediate artifact.
|
|
41
|
+
2. For a complex visual, use the configured `axstack-explainer` role to create
|
|
42
|
+
self-contained HTML, or use the requested artifact format. An explicit user
|
|
43
|
+
theme wins; otherwise use the dark default.
|
|
44
|
+
3. Profile IDs are presets, not availability proof. Before dispatch, follow the
|
|
45
|
+
launch sequence and preserve the configured model, mode, and effort. Report
|
|
46
|
+
an unavailable route; never substitute a model.
|
|
47
|
+
|
|
48
|
+
## 3. Verify and deliver
|
|
49
|
+
|
|
50
|
+
1. Any HTML explanation requires the full [visual QA
|
|
51
|
+
checklist](references/visual-qa.md): actual desktop and mobile rendering,
|
|
52
|
+
interaction, accessibility, and reduced-motion checks where relevant.
|
|
53
|
+
2. Use the configured independent `axstack-explainer-review` role when
|
|
54
|
+
warranted, bound to the exact artifact identity. Any byte change invalidates
|
|
55
|
+
that review and requires a fresh check. In `claude-only`, separate Sonnet
|
|
56
|
+
author xhigh and reviewer high sessions are allowed for explanations as
|
|
57
|
+
session independence only. This exception never permits same-model code
|
|
58
|
+
review or a cross-provider-independence claim.
|
|
59
|
+
3. Report source, tests, rendered observations, independent review, and
|
|
60
|
+
publication as separate evidence. Name every missing or unavailable check.
|
|
61
|
+
4. For a public artifact, remove private paths, identifiers, prompts,
|
|
62
|
+
credentials, messages, and internal records. Local creation does not grant
|
|
63
|
+
authority to publish.
|
|
64
|
+
5. Deliver the smallest useful explanation. Explanation causes no automatic
|
|
65
|
+
design and no automatic implementation; route later change work separately
|
|
66
|
+
only when the user requests it.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# Visual QA checklist
|
|
2
|
+
|
|
3
|
+
Use this checklist for every HTML explanation and other visual artifacts where
|
|
4
|
+
rendering matters.
|
|
5
|
+
|
|
6
|
+
1. Identify the final artifact bytes and theme. The explicit user theme wins;
|
|
7
|
+
otherwise use the dark default.
|
|
8
|
+
2. Render the final artifact at desktop and mobile widths. Record actual
|
|
9
|
+
observations for both, or name the missing layout check.
|
|
10
|
+
3. Exercise relevant interactions, keyboard and screen-reader accessibility,
|
|
11
|
+
and reduced-motion behavior. Report each unavailable check honestly.
|
|
12
|
+
4. Keep source correctness, tests, rendered behavior, independent review, and
|
|
13
|
+
publication evidence separate.
|
|
14
|
+
5. Bind review to the exact artifact identity. Any byte change invalidates the
|
|
15
|
+
affected approval and requires fresh QA and review.
|
|
@@ -0,0 +1,164 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: axstack-implement
|
|
3
|
+
description: When an approved task is ready to build or repair, use axstack-implement for strict TDD and owned delivery.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Implement
|
|
7
|
+
|
|
8
|
+
Deliver one reviewable candidate at an exact revision. Normal behavior changes
|
|
9
|
+
have real red -> green -> refactor evidence; a narrowly accepted
|
|
10
|
+
structure-preserving change has old-green characterization evidence. Name
|
|
11
|
+
unverified boundaries and keep ownership unambiguous. Review and merge are
|
|
12
|
+
later phases.
|
|
13
|
+
|
|
14
|
+
## 1. Admit the work
|
|
15
|
+
|
|
16
|
+
Before consequential work, load the standing contracts, follow their required
|
|
17
|
+
edge into the lifecycle (including its audit hook), then apply shared routing:
|
|
18
|
+
|
|
19
|
+
- [Standing contracts](../axstack/references/contracts.md)
|
|
20
|
+
- [Lifecycle and receipts](../axstack/references/lifecycle.md)
|
|
21
|
+
- [Shared routing](../axstack/references/routing.md)
|
|
22
|
+
- [PR-shape policy](../axstack/references/pr-shape.md)
|
|
23
|
+
- [Candidate publication](../axstack/references/candidate-publication.md)
|
|
24
|
+
|
|
25
|
+
Independently confirm the applicable
|
|
26
|
+
[proportional scope identity](../axstack/references/routing.md#proportional-scope-identity):
|
|
27
|
+
|
|
28
|
+
- Substantial new work has an approved spec identity and matching ticket map.
|
|
29
|
+
- Small new work has one snapshotted **small-change intent**: the current
|
|
30
|
+
request or chosen issue, explicit acceptance checks, and exclusions. An
|
|
31
|
+
`axstack-debug` diagnosis record with repair class `bounded` is an accepted
|
|
32
|
+
small-change intent source; verify the repair against both its original loop
|
|
33
|
+
and its minimised repro. An implementation slip (wrong file, bad test, setup
|
|
34
|
+
failure) returns to the author and does not increment the bug's fix ledger.
|
|
35
|
+
- An adopted own-PR repair has its accepted maintenance snapshot.
|
|
36
|
+
|
|
37
|
+
Pin the exact base and current candidate revision. A missing, mismatched, or
|
|
38
|
+
materially changed but unaccepted identity holds affected work; safe
|
|
39
|
+
investigation may continue under the standing contracts. Proceed only with a
|
|
40
|
+
valid recorded identity and revisions; otherwise report the hold and exact gap.
|
|
41
|
+
|
|
42
|
+
## 2. Establish one owner and one writer
|
|
43
|
+
|
|
44
|
+
For substantive delegated or resumable work, use the shared
|
|
45
|
+
[run record](../axstack/references/run-record.md). On restart, reconcile it
|
|
46
|
+
against actual Orca Tasks, Dispatches, sessions, Git revisions, GitHub state, the approved scope,
|
|
47
|
+
Linear issue state, and watch registrations. Reuse the existing owner and
|
|
48
|
+
author when valid. Ambiguous launch state is a hold on creating another writer,
|
|
49
|
+
not evidence that the old writer disappeared.
|
|
50
|
+
|
|
51
|
+
At execution start, bind work to the driver-owned Orca Run and one authoritative
|
|
52
|
+
Task/Dispatch attempt. Preserve the actual IDs and process completion deliveries
|
|
53
|
+
through the shared lifecycle. Do not activate a task-owned automation outside
|
|
54
|
+
the accepted automations contract.
|
|
55
|
+
|
|
56
|
+
Immediately before an actual role dispatch, read and follow the
|
|
57
|
+
[Orca runtime boundary](../axstack/references/orca-runtime.md). Ordinary local
|
|
58
|
+
reading and writing does not require that launch reference.
|
|
59
|
+
|
|
60
|
+
One persistent owner remains accountable for the PR, fixes, evidence, and
|
|
61
|
+
monitoring. Exactly one author writes a candidate at a time; accepted review
|
|
62
|
+
repairs return to that author when its evidence is still usable. When the owner
|
|
63
|
+
delegates writing, the owner does not edit that candidate concurrently. An
|
|
64
|
+
ownership transfer occurs only when explicitly requested; follow the shared
|
|
65
|
+
lifecycle's native capability preflight for that transfer. An ordinary restart
|
|
66
|
+
or resume reconciles the existing sessions and run record without creating a
|
|
67
|
+
fresh recipient.
|
|
68
|
+
|
|
69
|
+
There is no fixed active-PR count. Fanout is dependency- and capacity-driven
|
|
70
|
+
within configured host resource and spending limits, while one host owns the
|
|
71
|
+
run and one writer owns each candidate. The driver queues conflicting or
|
|
72
|
+
dependent work and coordinates dependent PRs through `gh stack`. Routine shape,
|
|
73
|
+
split, fanout, and exception choices are autonomous driver decisions within the
|
|
74
|
+
approved spec; size alone never requires user approval. A dependent candidate
|
|
75
|
+
starts from its reviewed parent. When a reviewed parent changes, hold reliance
|
|
76
|
+
on stale child evidence and child merge readiness. Rebase the child onto the
|
|
77
|
+
new parent revision, re-run affected checks, and remeasure shape against the new
|
|
78
|
+
actual base. Re-record the shape and re-check its level-matching rationale; size
|
|
79
|
+
growth alone is not an automatic hold. A green parent does not prove the
|
|
80
|
+
combined stack, but the parent need not wait for an independently reviewed
|
|
81
|
+
child. Dispatch only when ownership, worktree, dependency revisions, writer
|
|
82
|
+
exclusivity, and configured capacity agree with live state. Escalation occurs
|
|
83
|
+
only if a split exposes an existing shared-contract hold.
|
|
84
|
+
|
|
85
|
+
## 3. Establish test-first evidence
|
|
86
|
+
|
|
87
|
+
Use the normal behavior path unless the accepted improvement scope is
|
|
88
|
+
explicitly marked **structure-preserving**. The author never chooses that tag.
|
|
89
|
+
|
|
90
|
+
### Normal behavior path
|
|
91
|
+
|
|
92
|
+
Choose a behavior from the accepted scope, including its failure behavior or a
|
|
93
|
+
real integration boundary. Test it through an observable interface rather than
|
|
94
|
+
restating source text or mirroring the intended implementation. Execute the
|
|
95
|
+
check before changing production behavior and capture the expected behavioral
|
|
96
|
+
failure. A missing-module error or unrelated setup failure is not red.
|
|
97
|
+
|
|
98
|
+
For example, retry the same payment ID and observe one charge through the
|
|
99
|
+
public interface. Counting internal helper calls alone would not prove that
|
|
100
|
+
behavior. This illustrates the boundary test; it does not require a payment
|
|
101
|
+
scenario in unrelated work.
|
|
102
|
+
|
|
103
|
+
If no meaningful test-first check can be established, report why and hold
|
|
104
|
+
dependent implementation for a scoped decision. Historical tests added after
|
|
105
|
+
code remain noncompliant; they never become retroactive TDD evidence.
|
|
106
|
+
Corrective work begins with a new behavior slice that can go real red. This
|
|
107
|
+
slice may turn green only after the intended failure is observed and recorded.
|
|
108
|
+
|
|
109
|
+
### Structure-preserving path
|
|
110
|
+
|
|
111
|
+
The accepted scope records the listed files, current and target shape,
|
|
112
|
+
preserved behavior contract, and expected test evidence. Write or identify a
|
|
113
|
+
behavioral baseline or characterization check. The old revision must run green
|
|
114
|
+
before any structural edit. After the edit, run the same checks on the new
|
|
115
|
+
revision green, plus appropriate actual artifact or equivalence checks.
|
|
116
|
+
|
|
117
|
+
No behavioral red is expected here; never manufacture red. A mutation
|
|
118
|
+
sensitivity check is optional evidence that the baseline detects meaningful
|
|
119
|
+
change. If it detects nothing, record that sensitivity as an unverified
|
|
120
|
+
boundary rather than changing acceptance tests to create a failure.
|
|
121
|
+
|
|
122
|
+
Any bug or new behavior found during the refactor is separately accepted and
|
|
123
|
+
returns to the normal strict real red -> green path. If work exceeds the listed
|
|
124
|
+
files or crosses a new security or infrastructure boundary, stop and reassess
|
|
125
|
+
scope through shared routing. Do not turn a bounded refactor into a sweeping
|
|
126
|
+
campaign.
|
|
127
|
+
|
|
128
|
+
## 4. Turn the slice green, then refactor
|
|
129
|
+
|
|
130
|
+
For the normal behavior path, implement only what makes the red check pass.
|
|
131
|
+
Run it and capture green evidence, then refactor while keeping it green. Repeat
|
|
132
|
+
for each accepted behavior slice; every normal slice needs observed red and
|
|
133
|
+
green evidence. For structure-preserving work, make only the accepted
|
|
134
|
+
structural edits and keep the unchanged baseline and equivalence evidence
|
|
135
|
+
green.
|
|
136
|
+
|
|
137
|
+
## 5. Verify and return the candidate
|
|
138
|
+
|
|
139
|
+
Run the acceptance checks and affected integration boundaries. Record commands,
|
|
140
|
+
observed outputs, and verified states. UI work includes rendered interaction
|
|
141
|
+
evidence when relevant. Name every unavailable OS, harness, credential, or
|
|
142
|
+
other boundary instead of implying coverage.
|
|
143
|
+
|
|
144
|
+
After the last change, pin the exact candidate revision and return this compact
|
|
145
|
+
implementation receipt to the owner or driver:
|
|
146
|
+
|
|
147
|
+
```text
|
|
148
|
+
Record: <progress.md path or tiny-task brief>
|
|
149
|
+
Candidate: <PR or branch> base <sha> revision <sha>
|
|
150
|
+
Owner: <profile + session ID + worktree>
|
|
151
|
+
Scope: <approved spec + capability | small-change intent | maintenance snapshot>
|
|
152
|
+
Shape: <total> lines vs base <sha>; bulk: <buckets>; theme: <one line>
|
|
153
|
+
TDD: <normal red/green | structure-preserving old-green/same-check-new-green evidence>
|
|
154
|
+
Acceptance: <checks + observed results>
|
|
155
|
+
Dependencies: <parent revisions or none>
|
|
156
|
+
Unverified: <boundaries + reasons>
|
|
157
|
+
Next: <owner reconciles receipt, uses gh stack to push exact revision, confirms
|
|
158
|
+
remote readback, then routes it to axstack-review>
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
The author stops at that receipt and does not push. The owner follows the
|
|
162
|
+
candidate-publication boundary without editing the candidate, and review starts
|
|
163
|
+
only after remote readback confirms the exact revision. This grants no merge
|
|
164
|
+
authority; the human merges by default.
|