axstack 0.18.0 → 0.19.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/README.md CHANGED
@@ -24,6 +24,8 @@ without changing authority.
24
24
  reason. Small, bounded one-PR work uses the current request or selected issue
25
25
  as a snapshotted small-change intent;
26
26
  substantial or stacked work needs an approved spec and matching ticket map.
27
+ Substantial work uses Linear by default, or explicitly selected GitHub Issues
28
+ or repository Markdown, as its authoritative spec and capability tracker.
27
29
  2. The current chat drives on whatever model runs it; there is no driver
28
30
  profile. Bind each ready task to the selected role snapshot and an authoritative Orca
29
31
  Run, Task, and Dispatch. Exactly one writer owns a candidate at a time. All
package/docs/workflows.md CHANGED
@@ -118,10 +118,13 @@ session and evidence remain valid.
118
118
  synthesis as the recommendation; the note lands as `Decisions` rows in the
119
119
  run record.
120
120
  - `axstack-spec` writes observable acceptance, exclusions, decisions, and one
121
- user-approved revision baseline.
121
+ user-approved revision baseline. Linear is the default authoritative store;
122
+ GitHub Issues and repository Markdown are explicit alternatives. A GitHub
123
+ baseline pins the issue URL and approved body digest.
122
124
  - `axstack-tickets` maps user-visible capabilities to dependency-aware internal
123
- tasks. Linear is the default selected store with access preflight; repository
124
- Markdown is explicit fallback. Only the driver mutates lifecycle state.
125
+ tasks. Linear is the default selected store with access preflight; GitHub
126
+ Issues is an explicit external-tracker alternative and repository Markdown
127
+ is an explicit local alternative. Only the driver mutates lifecycle state.
125
128
  - `axstack-implement` uses strict behavioral RED, GREEN, then refactor. The
126
129
  narrow accepted structure-preserving route uses old-green and the same check
127
130
  new-green. One author writes and returns a local receipt without pushing. The
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "axstack",
3
- "version": "0.18.0",
3
+ "version": "0.19.0",
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",
@@ -57,12 +57,12 @@
57
57
  },
58
58
  {
59
59
  "id": "axstack-checker",
60
- "name": "Axstack Linear checker",
60
+ "name": "Axstack tracker checker",
61
61
  "provider": "claude",
62
62
  "model": "claude-sonnet-5",
63
63
  "modeId": "bypassPermissions",
64
64
  "thinkingOptionId": "low",
65
- "notes": "Report-only Linear discrepancy checker. Never mutates Linear; the driver independently verifies evidence before applying updates. A null model means explicit user selection is required before dispatch and must never launch a provider default."
65
+ "notes": "Report-only discrepancy checker for the selected external tracker (Linear or GitHub Issues). Never mutates the tracker; the driver independently verifies evidence before applying updates. A null model means explicit user selection is required before dispatch and must never launch a provider default."
66
66
  },
67
67
  {
68
68
  "id": "axstack-research-requirements",
@@ -57,12 +57,12 @@
57
57
  },
58
58
  {
59
59
  "id": "axstack-checker",
60
- "name": "Axstack Linear checker",
60
+ "name": "Axstack tracker checker",
61
61
  "provider": "codex",
62
62
  "model": "gpt-5.6-luna",
63
63
  "modeId": "full-access",
64
64
  "thinkingOptionId": "low",
65
- "notes": "Report-only Linear discrepancy checker. Never mutates Linear; the driver independently verifies evidence before applying updates. A null model means explicit user selection is required before dispatch and must never launch a provider default."
65
+ "notes": "Report-only discrepancy checker for the selected external tracker (Linear or GitHub Issues). Never mutates the tracker; the driver independently verifies evidence before applying updates. A null model means explicit user selection is required before dispatch and must never launch a provider default."
66
66
  },
67
67
  {
68
68
  "id": "axstack-research-requirements",
@@ -57,12 +57,12 @@
57
57
  },
58
58
  {
59
59
  "id": "axstack-checker",
60
- "name": "Axstack Linear checker",
60
+ "name": "Axstack tracker checker",
61
61
  "provider": "antigravity",
62
62
  "model": null,
63
63
  "modeId": "full-access",
64
64
  "thinkingOptionId": "low",
65
- "notes": "Report-only Linear discrepancy checker. Never mutates Linear; the driver independently verifies evidence before applying updates. Cheap report-only seat on Gemini Flash; launch by agent id antigravity."
65
+ "notes": "Report-only discrepancy checker for the selected external tracker (Linear or GitHub Issues). Never mutates the tracker; the driver independently verifies evidence before applying updates. Cheap report-only seat on Gemini Flash; launch by agent id antigravity."
66
66
  },
67
67
  {
68
68
  "id": "axstack-research-requirements",
@@ -88,7 +88,7 @@ gate.
88
88
  ## Authority
89
89
 
90
90
  - The driver owns run scope, cross-PR coordination, integration, and every
91
- Linear mutation. The checker reports discrepancies only.
91
+ selected external-tracker mutation. The checker reports discrepancies only.
92
92
  - One Orca execution host owns a run. There is no fixed active-PR count;
93
93
  fanout is dependency- and capacity-driven within configured host resource and
94
94
  spending limits. The driver reduces fanout when the run record shows rework,
@@ -6,8 +6,8 @@ binding state and receipts to exact revisions.
6
6
 
7
7
  ## Roster (compact)
8
8
 
9
- - Driver: current chat; owns scope, decisions, cross-PR dependencies, Linear
10
- mutations, and integration.
9
+ - Driver: current chat; owns scope, decisions, cross-PR dependencies,
10
+ external-tracker mutations, integration.
11
11
  - Owner: driver owns loop PRs; `axstack-owner` only for standalone watch/review
12
12
  without live driver. It may perform PR-scoped publication within user authority. Human
13
13
  merge is default.
@@ -23,19 +23,19 @@ binding state and receipts to exact revisions.
23
23
 
24
24
  Prefer parallel independent bounded work; no redundant workers.
25
25
  Per [standing contracts](contracts.md), fanout is dependency/capacity-driven
26
- with no fixed count, within host and spending limits. [PR shape](pr-shape.md)
26
+ with no fixed count within host/spending limits. [PR shape](pr-shape.md)
27
27
  covers theme/size; queue via `gh stack`.
28
28
 
29
29
  ## Ownership
30
30
 
31
- The PR owner remains accountable for candidate, fixes, evidence, and monitoring;
31
+ The PR owner remains accountable for candidate, fixes, evidence, monitoring;
32
32
  peer code stays read-only. Missing or idle sessions never transfer ownership.
33
33
  Owned implementation enters review through the revision-bound
34
34
  [candidate-publication boundary](candidate-publication.md).
35
35
 
36
36
  ## Native handoff and resume
37
37
 
38
- Preparation completion/watch expiry writes a resumable record. Ordinary resume
38
+ Preparation completion/watch expiry writes a record. Ordinary resume
39
39
  reconciles it, keeps the current owner, and launches no native handoff.
40
40
  Only an explicit user request to transfer ownership enters this branch.
41
41
 
@@ -45,7 +45,7 @@ Only an explicit user request to transfer ownership enters this branch.
45
45
  2. Load the [Orca runtime boundary](orca-runtime.md), then follow its
46
46
  version-matched runtime-owned handoff guidance. Never guess calls, paths,
47
47
  roles, or fallback models. Guide discovery does not prove capability.
48
- 3. If the required native capability is missing, report the exact setup gap and
48
+ 3. If the native capability is missing, report the exact setup gap and
49
49
  keep the current owner; no replacement or ownership transfer launches.
50
50
  Read-only reconciliation may continue.
51
51
  4. Record recipient/pending receipt before launch. If uncertain, reconcile the
@@ -59,7 +59,7 @@ receipts/timers, unresolved decisions, next action, and transfer ownership/gap.
59
59
 
60
60
  ## Receipts (bind each decision to evidence)
61
61
 
62
- Store concise receipt references, not raw worker output, in the [Run record](run-record.md).
62
+ Store receipt references, not raw output, in the [Run record](run-record.md).
63
63
 
64
64
  - Session receipt: actual agent/workspace IDs, requested provider/model and
65
65
  role; reuse on resume rather than spawn a replacement.
@@ -133,8 +133,8 @@ terminal; (2) compact record with counts and denominators—user
133
133
  interventions/deviations from plan/repairs; (3) `axstack-auditor`: settle
134
134
  non-zero/requested, else `counts zero`; an unavailable auditor leaves close-out
135
135
  pending, never skipped silently; (4) release merged run worktrees and branches;
136
- close Linear tickets; (5) mark the [Run record](run-record.md) `Archived`.
137
- `Archived`—one each:
136
+ close selected external-tracker tickets when applicable; (5) mark the
137
+ [Run record](run-record.md) `Archived`. `Archived`—one each:
138
138
  settlement receipt; compact record path; auditor decision plus settlement
139
139
  receipt or `counts zero`; release and ticket receipts; archive timestamp.
140
140
  `active`/receipt-incomplete record: close-out pending, never done. One-step
@@ -1,6 +1,6 @@
1
1
  # Shared routing (every owned phase loads this)
2
2
 
3
- Choose one route; load only the phase and references needed next.
3
+ Choose a route; load only the phase and references needed next.
4
4
 
5
5
  ## Role routing
6
6
 
@@ -92,7 +92,7 @@ reason in the run record, or in the brief for tiny direct work.
92
92
  bounded small feature is not substantial because it is labelled one.
93
93
  Require an approved spec plus a ticket map tied to that exact spec
94
94
  revision, with acceptance checks and dependencies in the explicitly selected
95
- Markdown or Linear store. Prepare via `axstack-align` -> `axstack-spec`
95
+ Markdown, GitHub Issues, or Linear store. Prepare via `axstack-align` -> `axstack-spec`
96
96
  (one approval) -> `axstack-tickets` -> handoff, then stop.
97
97
  - **Small:** clear, bounded one-PR work. The driver captures the named
98
98
  **small-change intent** from the current request or user-chosen existing
@@ -15,15 +15,19 @@ and the lifecycle's [audit skill](../axstack-audit/SKILL.md) hook.
15
15
  ## Procedure
16
16
 
17
17
  1. **Select the authoritative store.** Use a native Linear document by
18
- default, or repository Markdown when the user explicitly selects it.
19
- Name the store before writing; one recorded choice leaves no implicit
20
- fallback.
21
- 2. **Preflight Linear access.** In Linear mode, verify that the current
18
+ default, or GitHub Issues or repository Markdown when the user explicitly
19
+ selects either alternative. Name the store before writing; one recorded
20
+ choice leaves no implicit fallback.
21
+ 2. **Preflight external-tracker access.** In Linear mode, verify that the current
22
22
  session can read, create, and update documents before any document write.
23
23
  Missing access is an actionable setup gap: report it and stop this phase
24
24
  without writing or changing stores. Linear drafting starts only when all
25
25
  three operations are available; a later tickets-phase check cannot replace
26
- this one. Markdown mode skips this preflight.
26
+ this one. In GitHub mode, use authenticated `gh` to verify the target
27
+ repository, issues enabled, and the current identity's issue read and write
28
+ access before any issue write. Record the repository and identity checked.
29
+ Missing access preserves the GitHub selection and stops the phase without
30
+ mutation or fallback. Markdown mode skips external access preflight.
27
31
  3. **Draft with decision evidence.** Write observable acceptance criteria
28
32
  and explicit exclusions in the selected store. First record the driver's
29
33
  independent assessment, then load
@@ -42,12 +46,14 @@ and the lifecycle's [audit skill](../axstack-audit/SKILL.md) hook.
42
46
  creates the execution baseline.
43
47
  5. **Snapshot the baseline.** Record the approved revision identity and a
44
48
  concise repository Markdown counterpart. In Linear mode, the native
45
- document remains authoritative; in Markdown mode, the agreed repository
46
- path does. Use this shape:
49
+ document remains authoritative. In GitHub mode, the approved issue body is
50
+ authoritative and its GitHub issue URL plus SHA-256 body digest identifies
51
+ the exact approved revision. In Markdown mode, the agreed repository path does.
52
+ Use this shape:
47
53
 
48
54
  ```text
49
55
  Approved spec: <title> rev <id> (<date>)
50
- Authoritative store: <Linear document URL | repo Markdown path>
56
+ Authoritative store: <Linear document URL + revision | GitHub issue URL + SHA-256 body digest | repo Markdown path + ref>
51
57
  Markdown counterpart: <repo path + ref>
52
58
  Baseline preserved at: <ref>
53
59
  Material change: <none | description + affected PRs/tasks + hold state>
@@ -20,20 +20,24 @@ an actual checker dispatch, not for ordinary mapping or state reconciliation.
20
20
 
21
21
  1. **Pin scope and storage.** Confirm the approved spec identity before mapping.
22
22
  Hold on unapproved or materially changed scope; a still-valid approval is
23
- never repeated. Use the explicitly selected Markdown or Linear store. Record
24
- the exact approved spec revision and selected store.
23
+ never repeated. Use the explicitly selected Markdown, GitHub Issues, or
24
+ Linear store. Record the exact approved spec revision and selected store.
25
25
 
26
26
  2. **Preflight the selected store.** Markdown mode works independently. In
27
27
  Linear mode, check the actual session's required MCP tools and document
28
28
  access. Missing access is an actionable setup gap: preserve the selected
29
29
  store, record the gap, and stop affected work. Proceed only with verified
30
- access; a recorded gap never switches stores.
30
+ access; a recorded gap never switches stores. In GitHub mode, use
31
+ authenticated `gh` to verify the target repository and issue access for the
32
+ current identity before reading or writing the capability map. Preserve the
33
+ selected store and stop affected work on an access gap.
31
34
 
32
- 3. **Map capabilities to execution.** In Linear, issues represent user-visible
33
- capabilities; one capability may span several tasks and PRs. Keep detailed
34
- execution breakdowns in the repository. For every capability, derive
35
- acceptance checks from the pinned spec and identify internal tasks,
36
- dependencies, PR ownership, and worktrees. For each task the driver records
35
+ 3. **Map capabilities to execution.** In Linear and GitHub Issues,
36
+ issues represent user-visible capabilities; one capability may span several
37
+ tasks and PRs. GitHub capability issues link the approved spec issue and its
38
+ SHA-256 body digest. Keep detailed execution breakdowns in the repository.
39
+ For every capability, derive acceptance checks from the pinned spec and
40
+ identify internal tasks, dependencies, PR ownership, and worktrees. For each task the driver records
37
41
  one theme and a coarse size estimate from the ownership, interface, and
38
42
  dependency map. A task estimated in the exception band is assessed for a
39
43
  split at mapping time and split where a green, atomic, reviewable split
@@ -44,14 +48,14 @@ an actual checker dispatch, not for ordinary mapping or state reconciliation.
44
48
  These routine mapping and split choices are autonomous driver decisions
45
49
  within the approved spec; size alone never requires user approval.
46
50
 
47
- The driver performs every Linear mutation. Other roles return proposed
48
- changes and evidence to the driver.
51
+ The driver performs every mutation in the selected external tracker. Other
52
+ roles return proposed changes and evidence to the driver.
49
53
 
50
54
  ## Template: capability to task map
51
55
 
52
56
  ```text
53
57
  Spec: <approved revision>
54
- Capability: <Markdown ref or Linear issue URL> <title>
58
+ Capability: <Markdown ref, GitHub issue URL, or Linear issue URL> <title>
55
59
  Internal task: <task> -> <PR owner> -> <worktree>
56
60
  Theme: <one behavior or component>
57
61
  Size est: <coarse band estimate>
@@ -60,24 +64,26 @@ Depends: <task IDs or none>
60
64
  ```
61
65
 
62
66
  4. **Reconcile lifecycle state.** Compare each run capability with its required
63
- PR merge evidence and acceptance outputs. A reviewed but unmerged capability
64
- stays **In Review**; mark Done only after all required PRs merge and the
65
- capability's acceptance checks pass. Resolve each observed mismatch with
66
- either a verified driver-owned update or a drift report.
67
+ PR merge evidence and acceptance outputs. In Linear or Markdown, a reviewed
68
+ but unmerged capability stays **In Review**; mark Done only after all required
69
+ PRs merge and its acceptance checks pass. A GitHub capability issue remains
70
+ open through review; close it only after all required PRs merge and its
71
+ acceptance checks pass. Resolve each observed mismatch with either a verified
72
+ driver-owned update or a drift report.
67
73
 
68
74
  The checker reports run-scoped discrepancies with evidence and never mutates
69
- Linear. The driver independently verifies that evidence before applying an
70
- update. Spec or acceptance changes and conflicting state are decisions, not
71
- routine sync repairs. With no configured `axstack-checker` profile, hold
72
- checker dispatch; the driver checks directly or records the gap. Never launch
73
- a provider default.
75
+ the selected external tracker. The driver independently verifies that
76
+ evidence before applying an update. Spec or acceptance changes and
77
+ conflicting state are decisions, not routine sync repairs. With no
78
+ configured `axstack-checker` profile, hold checker dispatch; the driver
79
+ checks directly or records the gap. Never launch a provider default.
74
80
 
75
81
  ### Template: drift report
76
82
 
77
83
  ```text
78
84
  Capability: <issue>
79
- Observed: <Linear state> vs <PR merge SHAs/URLs + acceptance outputs>
80
- Recommendation: <move to In Review | other> (driver verifies first)
85
+ Observed: <selected tracker state> vs <PR merge SHAs/URLs + acceptance outputs>
86
+ Recommendation: <move to In Review | keep open | close | other> (driver verifies first)
81
87
  ```
82
88
 
83
89
  5. **Return the mapping.** Report the pinned spec revision, selected store, map