axstack 0.20.21 → 0.20.22

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.20.21",
3
+ "version": "0.20.22",
4
4
  "description": "Axstack installer and setup CLI: installs owned chat skills and role data, configures supported harness settings, and checks Orca capabilities.",
5
5
  "keywords": [
6
6
  "claude-code",
@@ -0,0 +1,81 @@
1
+ # Design lens
2
+
3
+ In Align, set the rung from researched facts, not a user choice. Carry the
4
+ sketch through the scope identity.
5
+
6
+ ## Ladder
7
+
8
+ - **Rung 0 — skip.** The change stays inside one module's existing interface,
9
+ ownership, data flow, and failure guarantees. Ask no design questions and
10
+ carry no sketch. “Might be small” is not a reason to skip.
11
+ - **Rung 1 — design questions.** Any change that fails Rung 0. Typical triggers:
12
+ crossing a module boundary; adding a module, service, interface, or external
13
+ dependency; changing an interface or failure guarantee; changing data
14
+ ownership, schema, wire format, or persisted format. A design question does
15
+ not reclassify work: Rung 1 can stay small. An unsettled material design
16
+ question still makes routing reassess size.
17
+ - **Rung 2 — arena.** A Rung 1 design that also meets the existing ADR test:
18
+ a meaningful, hard-to-reverse, non-obvious trade-off. Use Align's existing
19
+ arena for that question.
20
+
21
+ There is no numeric threshold, file-count gate, or class-count gate.
22
+
23
+ ## Questions in order
24
+
25
+ Ask only unresolved areas in numbered `Qn` rounds of one to three. Give each a
26
+ recommendation, reason, and trade-off; use Align's adviser critique. Design and
27
+ arena questions share its unchanged budget: 20 normally, a justified extension
28
+ to 35, then opted-in refinement of at most five.
29
+
30
+ 1. **Scope:** What exists, the minimum change, and what is explicitly excluded?
31
+ 2. **Caller first:** Write realistic usage before drawing the shape.
32
+ 3. **Shape:** Which boundaries, module depth, ownership, invariants, seams,
33
+ and adapters serve that usage?
34
+ 4. **Flow and failure:** Trace the data flow. For each materially new path,
35
+ name one realistic production failure and its observable behavior.
36
+ 5. **Reversibility:** Name compatibility, migration, rejected alternatives, and
37
+ what we accept for what benefit.
38
+
39
+ ## Vocabulary and red flags
40
+
41
+ A **deep module** hides substantial behavior behind a small interface. A
42
+ **shallow module** exposes most of its machinery. Treat an **interface as test
43
+ surface**: test caller behavior and observable failures. A **seam** permits a
44
+ second implementation; one adapter is hypothetical, two make it real. Prefer
45
+ **locality** and explicit **ownership** of state and invariants. The **deletion
46
+ test** asks what contract would be lost if a layer vanished. Choose **boring by
47
+ default** and **reversible over clever**.
48
+
49
+ Red flags—shallow module, information leakage, temporal decomposition, and
50
+ pass-through layers—are prompts for evidence, not automatic defects. Ask what
51
+ crosses each boundary and whether a layer can be removed.
52
+
53
+ ## Sketch
54
+
55
+ For Rung 1 or 2, put this block in the spec's `Design` section or the returned
56
+ small-change intent. `Binding` names commitments; other lines may illustrate.
57
+
58
+ ```text
59
+ Usage: <call site or command as the caller writes it>
60
+ Shape: <signatures or a <=10-line ASCII/Mermaid diagram>
61
+ Binding: <which lines are committed; the rest is illustrative>
62
+ Flow + failure: <path -> one realistic failure -> observable behavior>
63
+ We accept: <X> for <Y>
64
+ Rejected: <alternative -> why>
65
+ Open: <question?>
66
+ ```
67
+
68
+ Keep settled choices in `Decisions` rows. `CONTEXT.md` stays a glossary; ADRs
69
+ keep their existing test. Add no design document or phase.
70
+
71
+ ## Arena rubric candidates
72
+
73
+ For each arena, the driver selects three to six and tailors the rubric criteria
74
+ to the question. Score candidate designs on evidence, not a generic checklist:
75
+
76
+ - Is `Usage` realistic and simple for the caller?
77
+ - Are module boundaries deep enough and ownership unambiguous?
78
+ - Is behavior local with a useful test surface?
79
+ - Are materially new failure paths observable and recoverable?
80
+ - Are compatibility, migration, and deletion costs explicit?
81
+ - Does the trade-off justify complexity against rejected options?
@@ -14,10 +14,10 @@ tools, credentials, quota, subscription, or default to `mixed`.
14
14
 
15
15
  At run start, snapshot all 24 role IDs with provider/model/mode/effort; absent
16
16
  or unconfigured roles are recorded explicitly; invent no provider default.
17
- Such a role holds only that role's work, not the run. A role installed or changed later
18
- must not silently enter the snapshot; adding it needs an explicit user
19
- decision. Live profiles are authoritative at snapshot time and for availability;
20
- bundled presets are setup inputs, not runtime proof.
17
+ Such a role holds only that role's work. A role installed or changed later must not
18
+ silently enter the snapshot; adding it needs an explicit user decision. Live profiles
19
+ are authoritative at snapshot time and for availability; bundled presets are setup
20
+ inputs, not runtime proof.
21
21
 
22
22
  Preset changes apply to new runs only; an active run keeps its snapshot.
23
23
  Changing it or replacing a session needs an explicit user decision and
@@ -102,13 +102,13 @@ reason in the run record, or in the brief for tiny direct work.
102
102
  - **Small:** clear, bounded one-PR work. The driver captures the named
103
103
  **small-change intent** from the current request or user-chosen existing
104
104
  issue plus explicit acceptance checks and exclusions, snapshots it once, and
105
- proceeds. No earlier snapshot, spec, ticket ceremony, or second approval is
106
- required; do not route to `axstack-align` solely because that snapshot is
107
- not yet written. Strict TDD, mode-specific review, model, risk, and human-merge
105
+ proceeds. No prior snapshot, spec, tickets, or second approval is required; do not route
106
+ to `axstack-align` solely because the snapshot is not yet written. Strict TDD,
107
+ mode-specific review, model, risk, and human-merge
108
108
  contracts still apply.
109
- - **Unclear:** clarify the uncertainty through `axstack-align` or one bounded
110
- question, then classify it as small or substantial; a small ambiguity does
111
- not force substantial-work paperwork.
109
+ - **Unclear:** clarify via `axstack-align` or a bounded question, then
110
+ classify small or substantial; it does not force substantial-work paperwork.
111
+ [Design lens](design-lens.md) Rung 1 is Unclear; use `axstack-align`.
112
112
 
113
113
  Reassess size when growth adds an additional PR, a new execution dependency
114
114
  that materially expands scope, an unsettled material design question, or a
@@ -17,6 +17,17 @@ Load before acting:
17
17
 
18
18
  This preserves the required contracts -> lifecycle -> audit load edge.
19
19
 
20
+ ## Design the shape
21
+
22
+ Set the rung from researched facts; never ask the user to choose it. A change
23
+ inside one module's existing interface, ownership, data flow, and failure
24
+ guarantees is Rung 0: no design questions or sketch. Otherwise load the
25
+ [design lens ladder](../axstack/references/design-lens.md) for Rung 1 or 2
26
+ and settle only unresolved areas in its order within the existing budget. Carry a
27
+ Rung 1 or 2 sketch in the substantial spec's `Design` section or the returned
28
+ small-change intent. A design question alone does not make small work
29
+ substantial; apply routing's existing size reassessment rule.
30
+
20
31
  ## Settle the frontier
21
32
 
22
33
  1. **Research and map dependencies.** Inspect the available code, docs, and
@@ -84,8 +84,17 @@ Size alone never requires user approval.
84
84
  Use the normal behavior path unless the accepted improvement scope is
85
85
  explicitly marked **structure-preserving**. The author never chooses that tag.
86
86
 
87
+ Only when the scope identity carries a sketch, copy it into the author brief
88
+ under the [design lens](../axstack/references/design-lens.md).
89
+
87
90
  ### Normal behavior path
88
91
 
92
+ When that sketch exists, make the first red check target its `Usage` line.
93
+ The structure-preserving path stays as is.
94
+ If a repeated workaround or unnamed boundary conflicts with the sketch, the
95
+ author stops and returns a sketch conflict. The driver reopens only the
96
+ affected decision through Align under the existing material-revision rule.
97
+
89
98
  Choose a behavior from the accepted scope, including its failure behavior or a
90
99
  real integration boundary. Test it through an observable interface rather than
91
100
  restating source text or mirroring the intended implementation. Execute the
@@ -42,7 +42,9 @@ specialization materially helps; create no new profile.
42
42
  Produce a small ranked candidate set. For each candidate include:
43
43
 
44
44
  1. Source evidence and the scoped problem.
45
- 2. Current and proposed shape.
45
+ 2. Current and proposed shape. Only when the scope identity carries a sketch,
46
+ use the [design lens](../axstack/references/design-lens.md) vocabulary and
47
+ red flags and return candidates in sketch form.
46
48
  3. Concrete benefit and tradeoffs.
47
49
  4. Behavior to preserve and test approach.
48
50
  5. Uncertainty and recommendation strength.
@@ -243,7 +243,10 @@ This section applies to peer and authored PR modes.
243
243
  is safe because of on the evidence ladder; below "ran it" is unproven.
244
244
  4. Requirements, acceptance, and user behavior.
245
245
  5. Architecture and solution design, including SOLID and credible simpler
246
- alternatives.
246
+ alternatives. Only when the scope identity carries a sketch, compare
247
+ the architecture with the [design lens](../axstack/references/design-lens.md)
248
+ sketch and red flags. A deviation from a `Binding` line without an
249
+ accepted spec revision is a finding.
247
250
  6. Simplicity and maintainability: KISS, YAGNI, and cyclomatic complexity
248
251
  where measurement is useful. Never invent a metric or demand an
249
252
  abstraction merely to satisfy a principle.
@@ -35,7 +35,10 @@ and the lifecycle's [audit skill](../axstack-audit/SKILL.md) hook.
35
35
  Missing access preserves the GitHub selection and stops the phase without
36
36
  mutation or fallback. Markdown mode skips external access preflight.
37
37
  3. **Draft with decision evidence.** Write observable acceptance criteria
38
- and explicit exclusions in the selected store. First record the driver's
38
+ and explicit exclusions in the selected store. Only when the scope identity
39
+ carries a sketch, include the [design lens](../axstack/references/design-lens.md)
40
+ sketch in the approved revision's `Design` section and its `Usage` line in
41
+ acceptance. First record the driver's
39
42
  independent assessment, then load
40
43
  [Orca runtime](../axstack/references/orca-runtime.md) before dispatching the
41
44
  configured `axstack-advisor-astra` and `axstack-advisor-fable` independently,
@@ -41,8 +41,12 @@ an actual checker dispatch, not for ordinary mapping or state reconciliation.
41
41
  issues represent user-visible capabilities; one capability may span several
42
42
  tasks and PRs. GitHub capability issues link the approved spec issue and its
43
43
  SHA-256 body digest. Keep detailed execution breakdowns in the repository.
44
- For every capability, derive acceptance checks from the pinned spec and
45
- identify internal tasks, dependencies, PR ownership, and worktrees. For each task the driver records
44
+ For every capability, derive acceptance checks from the pinned spec. Only
45
+ when its scope identity carries a sketch, follow the
46
+ [design lens](../axstack/references/design-lens.md) sketch's modules, put
47
+ its named failure in capability acceptance, and treat a task spanning a
48
+ sketch boundary as a split signal. Identify internal tasks, dependencies,
49
+ PR ownership, and worktrees. For each task the driver records
46
50
  one theme and a coarse size estimate from the ownership, interface, and
47
51
  dependency map. A task estimated in the exception band is assessed for a
48
52
  split at mapping time and split where a green, atomic, reviewable split