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.
Files changed (44) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +132 -0
  3. package/bin/axstack.js +396 -0
  4. package/docs/installation.md +239 -0
  5. package/docs/workflows.md +220 -0
  6. package/package.json +40 -0
  7. package/profiles/presets/claude-only.json +194 -0
  8. package/profiles/presets/codex-only.json +194 -0
  9. package/profiles/presets/mixed.json +194 -0
  10. package/skills/axstack/SKILL.md +81 -0
  11. package/skills/axstack/references/automations.md +368 -0
  12. package/skills/axstack/references/candidate-publication.md +45 -0
  13. package/skills/axstack/references/contracts.md +102 -0
  14. package/skills/axstack/references/lifecycle.md +137 -0
  15. package/skills/axstack/references/orca-runtime.md +109 -0
  16. package/skills/axstack/references/pr-shape.md +39 -0
  17. package/skills/axstack/references/routing.md +129 -0
  18. package/skills/axstack/references/run-record.md +109 -0
  19. package/skills/axstack-align/SKILL.md +121 -0
  20. package/skills/axstack-audit/SKILL.md +137 -0
  21. package/skills/axstack-audit/references/record.md +28 -0
  22. package/skills/axstack-debug/SKILL.md +157 -0
  23. package/skills/axstack-debug/references/packet.md +80 -0
  24. package/skills/axstack-explain/SKILL.md +66 -0
  25. package/skills/axstack-explain/references/visual-qa.md +15 -0
  26. package/skills/axstack-implement/SKILL.md +164 -0
  27. package/skills/axstack-improve/SKILL.md +69 -0
  28. package/skills/axstack-relay/SKILL.md +102 -0
  29. package/skills/axstack-research/SKILL.md +57 -0
  30. package/skills/axstack-research/references/checklist.md +25 -0
  31. package/skills/axstack-review/SKILL.md +343 -0
  32. package/skills/axstack-spec/SKILL.md +67 -0
  33. package/skills/axstack-tickets/SKILL.md +86 -0
  34. package/skills/axstack-watch/SKILL.md +160 -0
  35. package/skills/axstack-watch/references/repair-publication.md +69 -0
  36. package/skills/axstack-watch/references/watch-runtime.md +60 -0
  37. package/src/capabilities.js +138 -0
  38. package/src/claude-settings.js +230 -0
  39. package/src/installer.js +980 -0
  40. package/src/instructions.js +100 -0
  41. package/src/locations.js +43 -0
  42. package/src/manifest.js +251 -0
  43. package/src/posixpath.js +108 -0
  44. 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.