@aperant/framework 0.8.4 → 0.8.7

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 (127) hide show
  1. package/CHANGELOG.md +185 -0
  2. package/agents/apt-planner.md +34 -3
  3. package/dist/cli/commands/coverage-check.d.mts.map +1 -1
  4. package/dist/cli/commands/coverage-check.mjs +74 -7
  5. package/dist/cli/commands/coverage-check.mjs.map +1 -1
  6. package/dist/cli/commands/detect-runtime.d.mts.map +1 -1
  7. package/dist/cli/commands/detect-runtime.mjs +18 -12
  8. package/dist/cli/commands/detect-runtime.mjs.map +1 -1
  9. package/dist/cli/coverage-check/user-outcomes.d.mts +84 -0
  10. package/dist/cli/coverage-check/user-outcomes.d.mts.map +1 -0
  11. package/dist/cli/coverage-check/user-outcomes.mjs +265 -0
  12. package/dist/cli/coverage-check/user-outcomes.mjs.map +1 -0
  13. package/dist/cli/host/detect.mjs +1 -1
  14. package/dist/cli/host/detect.mjs.map +1 -1
  15. package/dist/cli/install/install-from-source.mjs +3 -3
  16. package/dist/cli/install/legacy-paths.d.mts.map +1 -1
  17. package/dist/cli/install/legacy-paths.mjs +2 -0
  18. package/dist/cli/install/legacy-paths.mjs.map +1 -1
  19. package/dist/cli/install/manifest.d.mts +13 -0
  20. package/dist/cli/install/manifest.d.mts.map +1 -1
  21. package/dist/cli/install/manifest.mjs +5 -0
  22. package/dist/cli/install/manifest.mjs.map +1 -1
  23. package/dist/cli/install/pipeline.d.mts +15 -0
  24. package/dist/cli/install/pipeline.d.mts.map +1 -1
  25. package/dist/cli/install/pipeline.mjs +27 -0
  26. package/dist/cli/install/pipeline.mjs.map +1 -1
  27. package/dist/cli/install/transforms/codex.d.mts +1 -1
  28. package/dist/cli/install/transforms/codex.d.mts.map +1 -1
  29. package/dist/cli/install/transforms/codex.mjs +43 -2
  30. package/dist/cli/install/transforms/codex.mjs.map +1 -1
  31. package/dist/cli/install/version-header.d.mts.map +1 -1
  32. package/dist/cli/install/version-header.mjs +7 -1
  33. package/dist/cli/install/version-header.mjs.map +1 -1
  34. package/dist/cli/verify-proof/idl/index.d.mts +1 -1
  35. package/dist/cli/verify-proof/idl/index.mjs +7 -8
  36. package/dist/cli/verify-proof/idl/index.mjs.map +1 -1
  37. package/dist/cli/verify-proof/idl/types.d.ts +5 -4
  38. package/dist/cli/verify-proof/idl/types.d.ts.map +1 -1
  39. package/dist/cli/verify-proof/idl/types.js +4 -3
  40. package/dist/cli/verify-proof/idl/types.js.map +1 -1
  41. package/dist/cli/verify-proof/resolver.d.mts +63 -1
  42. package/dist/cli/verify-proof/resolver.d.mts.map +1 -1
  43. package/dist/cli/verify-proof/resolver.mjs +164 -4
  44. package/dist/cli/verify-proof/resolver.mjs.map +1 -1
  45. package/dist/cli/verify-proof/runtime-detect.d.mts +6 -3
  46. package/dist/cli/verify-proof/runtime-detect.d.mts.map +1 -1
  47. package/dist/cli/verify-proof/runtime-detect.mjs +104 -11
  48. package/dist/cli/verify-proof/runtime-detect.mjs.map +1 -1
  49. package/dist/cli/verify-proof/trust.d.mts +1 -1
  50. package/dist/cli/verify-proof/trust.d.mts.map +1 -1
  51. package/dist/cli/verify-proof/trust.mjs +1 -1
  52. package/dist/driver-sdk/conformance.d.ts +41 -0
  53. package/dist/driver-sdk/conformance.d.ts.map +1 -0
  54. package/dist/driver-sdk/conformance.js +123 -0
  55. package/dist/driver-sdk/conformance.js.map +1 -0
  56. package/dist/driver-sdk/errors.d.ts +75 -0
  57. package/dist/driver-sdk/errors.d.ts.map +1 -0
  58. package/dist/driver-sdk/errors.js +80 -0
  59. package/dist/driver-sdk/errors.js.map +1 -0
  60. package/dist/driver-sdk/idl.d.ts +221 -0
  61. package/dist/driver-sdk/idl.d.ts.map +1 -0
  62. package/dist/driver-sdk/idl.js +140 -0
  63. package/dist/driver-sdk/idl.js.map +1 -0
  64. package/dist/driver-sdk/index.d.ts +28 -0
  65. package/dist/driver-sdk/index.d.ts.map +1 -0
  66. package/dist/driver-sdk/index.js +28 -0
  67. package/dist/driver-sdk/index.js.map +1 -0
  68. package/dist/driver-sdk/manifest.d.ts +93 -0
  69. package/dist/driver-sdk/manifest.d.ts.map +1 -0
  70. package/dist/driver-sdk/manifest.js +12 -0
  71. package/dist/driver-sdk/manifest.js.map +1 -0
  72. package/dist/driver-sdk/retry.d.ts +33 -0
  73. package/dist/driver-sdk/retry.d.ts.map +1 -0
  74. package/dist/driver-sdk/retry.js +50 -0
  75. package/dist/driver-sdk/retry.js.map +1 -0
  76. package/dist/plugin/.claude-plugin/plugin.json +2 -1
  77. package/dist/plugin/agents/apt-planner.md +34 -3
  78. package/dist/plugin/skills/apt-plan/SKILL.md +50 -0
  79. package/dist/plugin/skills/apt-pr-review/SKILL.md +1 -1
  80. package/dist/plugin/skills/apt-research/SKILL.md +526 -0
  81. package/dist/plugin/skills/apt-research/appendices/budget-loop.md +397 -0
  82. package/dist/plugin/skills/apt-research/appendices/claim-graph-schema.md +206 -0
  83. package/dist/plugin/skills/apt-research/appendices/domain-tools.md +236 -0
  84. package/dist/plugin/skills/apt-spar/SKILL.md +19 -7
  85. package/dist/plugin/skills/apt-verify-proof/SKILL.md +41 -2
  86. package/dist/schemas/quick-task.d.ts +17 -17
  87. package/drivers/.gitkeep +0 -0
  88. package/drivers/api/README.md +40 -0
  89. package/drivers/api/driver.mjs +59 -0
  90. package/drivers/api/manifest.json +26 -0
  91. package/drivers/browser/README.md +105 -0
  92. package/drivers/browser/driver.mjs +134 -0
  93. package/drivers/browser/manifest.json +35 -0
  94. package/drivers/cli/README.md +44 -0
  95. package/drivers/cli/driver.mjs +62 -0
  96. package/drivers/cli/manifest.json +28 -0
  97. package/drivers/electron/README.md +64 -0
  98. package/drivers/electron/driver.mjs +87 -0
  99. package/drivers/electron/manifest.json +37 -0
  100. package/package.json +7 -3
  101. package/skills/apt-plan/SKILL.md +50 -0
  102. package/skills/apt-planner.md +16 -0
  103. package/skills/apt-pr-review/SKILL.md +1 -1
  104. package/skills/apt-research/SKILL.md +526 -0
  105. package/skills/apt-research/appendices/budget-loop.md +397 -0
  106. package/skills/apt-research/appendices/claim-graph-schema.md +206 -0
  107. package/skills/apt-research/appendices/domain-tools.md +236 -0
  108. package/skills/apt-spar/SKILL.md +19 -7
  109. package/skills/apt-verify-proof/SKILL.md +41 -2
  110. package/src/cli/commands/coverage-check.mjs +126 -44
  111. package/src/cli/commands/detect-runtime.mjs +23 -14
  112. package/src/cli/coverage-check/user-outcomes.mjs +273 -0
  113. package/src/cli/host/detect.mjs +1 -1
  114. package/src/cli/install/install-from-source.mjs +3 -3
  115. package/src/cli/install/legacy-paths.mjs +2 -0
  116. package/src/cli/install/manifest.mjs +5 -0
  117. package/src/cli/install/pipeline.mjs +28 -0
  118. package/src/cli/install/transforms/codex.mjs +51 -2
  119. package/src/cli/install/version-header.mjs +7 -1
  120. package/src/cli/verify-proof/idl/index.mjs +7 -8
  121. package/src/cli/verify-proof/idl/types.ts +5 -4
  122. package/src/cli/verify-proof/manifest-schema.json +2 -1
  123. package/src/cli/verify-proof/resolver.mjs +171 -4
  124. package/src/cli/verify-proof/runtime-detect.mjs +99 -10
  125. package/src/cli/verify-proof/trust.mjs +1 -1
  126. package/templates/proof-verification.md +32 -3
  127. package/workflows/verify-proof.md +78 -9
package/CHANGELOG.md CHANGED
@@ -3,6 +3,191 @@
3
3
  All notable changes to `@aperant/framework` are documented here. See
4
4
  [`VERSIONING.md`](VERSIONING.md) for the per-tier contract.
5
5
 
6
+ ## 0.8.7 — 2026-05-24 — Codex parity: drift false-positive fix + agent inlining
7
+
8
+ Brings the Codex runtime to parity with Claude Code on two fronts.
9
+
10
+ ### Fixed
11
+
12
+ - **Codex skills no longer perpetually flagged `missing_header`.** Codex
13
+ whitelists skill frontmatter to `{name, description}` (it rejects unknown
14
+ keys), which strips the `apt-skill-version` header the drift-checker looked
15
+ for — so every Codex skill showed as stale forever and `/apt:update` could
16
+ never clear it. The install pipeline now records `headerless: true` on
17
+ manifest entries whose post-transform content legitimately carries no version
18
+ header, and `inspectManifestFiles` skips the `missing_header` check for them
19
+ (`installedHash` remains the drift signal). Data-driven, so any future
20
+ header-stripping transform is covered. Pre-0.8.7 manifests (no `headerless`
21
+ field) keep the old behavior until re-install.
22
+
23
+ ### Added
24
+
25
+ - **Codex agent inlining.** Codex has no markdown agent-spawn surface, so a
26
+ skill declaring `spawns_agent: true` + `agent_name: X` previously left Codex
27
+ referencing an `agents/X.md` file that was never installed — the multi-agent
28
+ pipeline skills (plan/execute/verify/review/improve/create-docs) ran degraded
29
+ without the agent methodology. `codex.mjs` now inlines the referenced agent's
30
+ prompt into the skill body under a `## Inlined agent: X` header ("you ARE that
31
+ agent for this task"), so Codex carries the full methodology even without a
32
+ spawn primitive. The pipeline supplies agent bodies to transforms via a new
33
+ `agentContentByName` map on `TransformInput` (transforms stay pure — no I/O).
34
+
35
+ ## 0.8.6 — 2026-05-24 — Outcome-first verify-proof contract + driver-sdk inline (recovery from 0.8.4 npm 404)
36
+
37
+ > **Migration window.** This release introduces a new `## User Outcomes`
38
+ > section that becomes the verify-proof input contract. Specs WITHOUT
39
+ > the section emit a `coverage-check` **warning** on v0.8.x and a
40
+ > **HARD BLOCK** starting v0.9.0. Refactor-only specs SHOULD use the
41
+ > empty-with-note escape (`_No user-observable changes — pure
42
+ > refactor._`) to declare absence-of-outcomes deliberately. See spec
43
+ > §ID-07 of `verify-proof-monorepo-contract` for the gate table.
44
+
45
+ > **Recovery.** 0.8.4 shipped with `@aperant/driver-sdk: 0.1.0` as a
46
+ > direct dep, but the driver-sdk package was never published — every
47
+ > `npm install @aperant/framework@0.8.4` since 2026-05-22 failed with
48
+ > a 404 on the transitive dep. 0.8.6 inlines the 875-LOC zero-dep SDK
49
+ > into the framework tarball, removing the broken dep. Users on 0.8.4
50
+ > MUST upgrade to 0.8.6 to install successfully.
51
+
52
+ ### Fixed
53
+
54
+ - **`@aperant/driver-sdk` inlined into framework src** (recovery from
55
+ the 0.8.4 npm 404). The SDK lived at `packages/framework-driver-sdk/`
56
+ with the contract that third-party driver authors would `pnpm add
57
+ @aperant/driver-sdk` and avoid pulling all of framework. The SDK
58
+ was never published; pnpm's `workspace:*` rewrite baked an
59
+ unresolvable `0.1.0` spec into framework's published `package.json`.
60
+ Fix: 875 LOC of zero-runtime-dep SDK moved to
61
+ `packages/framework/src/driver-sdk/`, framework imports rewritten to
62
+ relative paths, the `import-direction.test.ts` invariant repurposed
63
+ from a package boundary to a subdirectory boundary so re-extraction
64
+ stays mechanical if a real third-party driver author ever asks for a
65
+ standalone install. The `@aperant/driver-sdk` npm package remains
66
+ unpublished — no consumers existed to migrate.
67
+
68
+ ### Added
69
+
70
+ - **`## User Outcomes` PRD section** — verify-proof's input contract.
71
+ STANDARD/DEEP specs ship a section between `## Solution` and
72
+ `## Implementation Decisions` carrying one `**Epic:**` headline + N
73
+ atomic outcomes tagged by surface (`electron | web | cli | api |
74
+ electron+web`). Authors write the literal `**ON**` token; IDs are
75
+ POSITIONAL and synthesized by the parser (O1, O2, …). Optional
76
+ cross-refs via `*(requires ON N)*`. Empty-with-note refactor escape
77
+ for non-UX tasks. QUICK track is hard-exempt per the Fast Path
78
+ Guarantee (ID-05).
79
+ - **`drivers/browser/manifest.json:transport.skill_id = "agent-browser"`**
80
+ — second transport option alongside `mcp_server_id: "puppeteer"`.
81
+ On Claude Code / OpenCode hosts the workflow runner dispatches via
82
+ `Skill({skill: "agent-browser", args: ...})` (one fewer external
83
+ dep — no Puppeteer MCP install needed); on legacy hosts the MCP
84
+ path is preserved. `chooseTransport({has_skill_tool})` helper.
85
+ - **`resolveDriversForOutcomes(opts)`** — new resolver entrypoint that
86
+ returns one entry per (outcome, surface) pair. For `[electron+web]`
87
+ outcomes emits TWO entries with the same `outcome_id` and different
88
+ drivers. Delegates to existing `resolveDriver()` for scoring.
89
+ - **`verification.monorepo_globs: string[]`** config key (default
90
+ `["apps/*"]`) — `loadRuntimeCapabilities` walks each glob match's
91
+ `package.json` and OR-merges its capabilities with the root.
92
+ Disable the walk entirely with `monorepo_globs: []`.
93
+ - **`transport` field on `verification.json:tests[]`** — `skill | mcp
94
+ | binary | http`. Populated by the workflow runner from the
95
+ dispatcher's directive (Step 7a). Documented in
96
+ `templates/proof-verification.md`.
97
+ - **`surface` field on `verification.json:tests[]`** — `electron | web
98
+ | cli | api`. Drives the per-surface screenshot path and the
99
+ `coverage.by_surface` rollup. Cross-surface outcomes produce TWO
100
+ test entries sharing the same `outcome_id`.
101
+
102
+ ### Changed
103
+
104
+ - **`apt-tools detect-runtime`** — now walks `apps/*/package.json` by
105
+ default. Fixes the canonical Aperant monorepo defect (root
106
+ package.json with no Electron dep + `apps/desktop/package.json`
107
+ carrying Electron previously returned `is_electron: false` because
108
+ the detector only read the root). No user-visible config change
109
+ needed; opt out via `verification.monorepo_globs: []`.
110
+ - **`apt-tools coverage-check validate`** — payload gains a
111
+ `user_outcomes` block when the plan is STANDARD/DEEP. Block carries
112
+ `header_present`, `body_kind` (`empty | empty-with-note | outcomes
113
+ | absent`), `outcomes_count`, `validation_warnings?`, and
114
+ `gate_result` (`pass | warn | block`). QUICK plans omit the block
115
+ entirely per Fast Path Guarantee.
116
+ - **`workflows/verify-proof.md` Step 7** — dispatches per outcome via
117
+ `resolveDriversForOutcomes()` instead of a single per-run
118
+ `resolveDriver()` call. Writes screenshots under
119
+ `${PROOF_DIR}/${surface}/screenshots/${outcome-id}.png` (per-surface
120
+ split tree). Step 7a gains the MUST-invoke Skill directive
121
+ (TD-08 grep guard pins the language).
122
+
123
+ ### Deprecated
124
+
125
+ - **Specs without `## User Outcomes` (STANDARD/DEEP only).** v0.8.x
126
+ emits a `coverage-check` **warning** with a `migration_deadline`
127
+ string referencing v0.9.0. v0.9.0 will **HARD BLOCK** specs that
128
+ lack the section. Refactor-only specs SHOULD use the
129
+ empty-with-note escape (`_No user-observable changes — pure
130
+ refactor._`, italic underscores + em dash + period required) to
131
+ declare absence-of-outcomes deliberately. QUICK-track plans are
132
+ hard-exempt at every version.
133
+
134
+ ### v0.9.0 telegraph (one-minor window)
135
+
136
+ The v0.9.0 cutover lands the hard-block on missing `## User Outcomes`
137
+ in STANDARD/DEEP specs. Adopters should retrofit specs in the v0.8.x
138
+ window OR adopt the empty-with-note escape for refactor specs. No
139
+ silent migration of existing specs is provided — the migration is
140
+ deliberate per author.
141
+
142
+ ### Out-of-scope (deferred follow-ups)
143
+
144
+ - **`verify-proof-executable-runner`** — the v1 verify-proof runner is
145
+ the host LLM (Claude Code / Codex / OpenCode / Gemini) following
146
+ `workflows/verify-proof.md` as a prose recipe. The framework does
147
+ NOT ship an executable `apt-tools verify-proof` command in 0.8.6.
148
+ The `transport` field, per-outcome dispatch, and MUST-invoke
149
+ directive are LLM-honored conventions enforced via grep guards on
150
+ workflow text (TD-08) and schema assertions on `verification.json`
151
+ shape (AC23). Follow-up `verify-proof-executable-runner` task is
152
+ deferred per spec §Out of Scope; the triggers that would promote
153
+ Path B → Path A are documented there.
154
+ - **`apt-tools outcomes lint`** — sentence-shape lint for User
155
+ Outcomes (catches squishy outcomes, validates surface tags).
156
+ Deferred to a follow-up framework task.
157
+
158
+ ## 0.8.5 — 2026-05-22 — `/apt:verify-proof` driver layer fixes (bundled drivers + hard override precedence)
159
+
160
+ ### Fixed
161
+
162
+ - **`drivers/` missing from published tarball.** `packages/framework/package.json:files`
163
+ did not include `drivers/`, so the four bundled IDL drivers (`browser`,
164
+ `electron`, `cli`, `api` — each with `manifest.json` + `driver.mjs` +
165
+ `README.md`) were stripped at `pnpm pack` / `npm publish` time. Downstream
166
+ effect: `apt-tools detect-runtime` returned `discovered_drivers: []` and
167
+ `selected_driver_id: null` for every installed kernel, which made the
168
+ strict `/apt:verify-proof` IDL path unusable (resolver throws
169
+ `unsatisfied_required_capability`). Fix is a one-line `files` entry —
170
+ re-pack now ships 4 manifests + 4 driver modules. Self-host installs
171
+ fix automatically on the next `/apt:update --from-source`; npm-install
172
+ consumers fix on the next published version bump.
173
+
174
+ - **`verification.runtimes[]` override was decorative.** The resolver
175
+ in `packages/framework/src/cli/verify-proof/resolver.mjs` placed
176
+ override-listed drivers first in the candidate list but then sorted
177
+ the list by score, wiping the override order. With a Next.js root
178
+ `package.json` (e.g. a monorepo where Electron lives at `apps/desktop`),
179
+ forcing `verification.runtimes: ["electron"]` still selected `browser`
180
+ because the latter had higher `priority` (100 vs 90). The override
181
+ docstring promised "explicit driverId precedence" but delivered a
182
+ tie-breaker. Fix: override is now **hard precedence** — listed
183
+ drivers are tried in override order, first one satisfying every
184
+ required capability wins regardless of score; non-matching override
185
+ entries are recorded in `fallback_attempts` with reason
186
+ `override-listed but missing required capabilities: ...` and the
187
+ resolver then falls through to the score-based pick on remaining
188
+ drivers. Two test cases in `verify-proof-resolver.test.ts` lock the
189
+ new contract (force-pick + fall-through).
190
+
6
191
  ## 0.8.4 — 2026-05-22 — `/apt:update` polish + `apt:handoff`, `apt:caveman` skills + `apt:resume` HANDOFF discovery
7
192
 
8
193
  Bundled release: five `/apt:update` fix bundles (converged from a 3-round
@@ -240,6 +240,11 @@ survives the task as a second-consumer document.
240
240
 
241
241
  ### 4.B. STANDARD / DEEP / COMPLEX — PRD-shaped spec.md
242
242
 
243
+ **Three orthogonal user-facing sections — keep them distinct.** User
244
+ Stories (motivation prose), User Outcomes (verify-proof input contract),
245
+ and Acceptance Criteria (code-level invariants) serve distinct
246
+ purposes. Do NOT collapse them — STANDARD/DEEP specs carry all three.
247
+
243
248
  ```markdown
244
249
  # Spec: {task title}
245
250
 
@@ -257,6 +262,22 @@ survives the task as a second-consumer document.
257
262
  {One **US-NN (persona).** story per user-value slice. Stories map 1:1
258
263
  onto subtasks in implementation_plan.json.}
259
264
 
265
+ ## User Outcomes
266
+ {Verify-proof input contract. One bolded `**Epic:**` headline + N
267
+ atomic outcomes. Authors write the LITERAL string `**ON**` — IDs are
268
+ POSITIONAL and synthesized by the parser (first row becomes O1, second
269
+ O2, ...). Closed surface set: `electron | web | cli | api | electron+web`.
270
+ Optional cross-refs via `*(requires ON N)*`. Refactor-only specs MAY
271
+ use the empty-with-note escape (verbatim string,
272
+ italic underscores + em dash + period required):}
273
+
274
+ `_No user-observable changes — pure refactor._`
275
+
276
+ **Epic:** {one-sentence user-facing capability headline}
277
+
278
+ - **ON** [surface]: {user does X; system shows/does Y}
279
+ - **ON** [surface]: {user does X; system shows/does Y} *(requires ON 1)*
280
+
260
281
  ## Implementation Decisions
261
282
  {Load-bearing principles carried into every subtask. Format:
262
283
  "### ID-NN: {title}" + rationale + practical consequence.}
@@ -279,9 +300,19 @@ reference these IDs via the per-subtask `acceptance_criteria` field.}
279
300
  ```
280
301
 
281
302
  **PRD section ordering is load-bearing.** `apt-tools coverage-check
282
- validate` greps `## Acceptance Criteria`; `apt-tools consistency check`
283
- greps `## Solution` and `## User Stories`. Renaming or reordering these
284
- sections breaks downstream tooling and the C15 consistency rules.
303
+ validate` greps `## Acceptance Criteria` AND `## User Outcomes`;
304
+ `apt-tools consistency check` greps `## Solution` and `## User Stories`.
305
+ Renaming or reordering these sections breaks downstream tooling and the
306
+ C15 consistency rules.
307
+
308
+ **`## User Outcomes` synthesis directive.** Outcomes are
309
+ user-observable (a user does X; the system shows/does Y); Acceptance
310
+ Criteria are code-level invariants (a function returns X; a config key
311
+ exists). Do NOT collapse them — they parse through different gates and
312
+ serve different consumers. STANDARD/DEEP specs carry both sections in
313
+ parallel. IDs are POSITIONAL: the parser counts outcome rows in
314
+ document order and synthesizes `O1`, `O2`, ... — authors MUST write
315
+ the literal `**ON**` token, never `**O1**`/`**O2**`.
285
316
 
286
317
  **Do NOT interview the user.** The PRD is synthesized from the task
287
318
  description + codebase investigation + AGENTS.md, not from a clarifying
@@ -1 +1 @@
1
- {"version":3,"file":"coverage-check.d.mts","sourceRoot":"","sources":["../../../src/cli/commands/coverage-check.mjs"],"names":[],"mappings":"AASA,+HAkPC"}
1
+ {"version":3,"file":"coverage-check.d.mts","sourceRoot":"","sources":["../../../src/cli/commands/coverage-check.mjs"],"names":[],"mappings":"AAmBA,+HA6RC"}
@@ -1,9 +1,19 @@
1
1
  /**
2
2
  * commands/coverage-check.mjs — plan-to-spec verification coverage validator (C29).
3
+ *
4
+ * v0.8.6 adds a second gate: `## User Outcomes` parsing + gate (see
5
+ * coverage-check/user-outcomes.mjs). The new gate is ADDITIVE — it does
6
+ * NOT change the existing AC parsing branch and does NOT block when
7
+ * only Acceptance Criteria are present (outcomes and ACs are
8
+ * independent concerns per spec §ID-01). QUICK-track plans
9
+ * (`complexity: "simple"` OR no `vertical_slice_schema_version`) skip
10
+ * the User Outcomes branch entirely per Fast Path Guarantee (ID-08).
3
11
  */
4
12
  import { existsSync, readFileSync } from 'node:fs';
5
- import { join, resolve } from 'node:path';
13
+ import { dirname, join, resolve } from 'node:path';
14
+ import { fileURLToPath } from 'node:url';
6
15
  import { parseAcceptanceCriteria, resolveSpecPath } from '../config/coverage-ac.mjs';
16
+ import { parseUserOutcomes, userOutcomesGateResult } from '../coverage-check/user-outcomes.mjs';
7
17
  import { err, ok } from '../util/result.mjs';
8
18
  export function cmdCoverageCheck(subcommand, projectDir, extraArgs) {
9
19
  if (!subcommand)
@@ -113,12 +123,40 @@ export function cmdCoverageCheck(subcommand, projectDir, extraArgs) {
113
123
  /* use default */
114
124
  }
115
125
  }
126
+ // Build the User Outcomes payload — additive, ID-08 QUICK-exempt.
127
+ // Plans with `complexity: "simple"` OR no
128
+ // `vertical_slice_schema_version` are QUICK-track per the Fast
129
+ // Path Guarantee — skip the gate entirely (the payload's
130
+ // `user_outcomes` key is OMITTED).
131
+ const isQuickTrack = plan.complexity === 'simple' || !plan.vertical_slice_schema_version;
132
+ let userOutcomesPayload = null;
133
+ if (!isQuickTrack && resolvedSpec.path) {
134
+ const specContentForOutcomes = readFileSync(resolvedSpec.path, 'utf-8');
135
+ const parsedOutcomes = parseUserOutcomes(specContentForOutcomes);
136
+ const frameworkVersion = readFrameworkVersion();
137
+ const gateResult = userOutcomesGateResult(parsedOutcomes, frameworkVersion);
138
+ userOutcomesPayload = {
139
+ header_present: parsedOutcomes.header_present,
140
+ body_kind: parsedOutcomes.body_kind,
141
+ outcomes_count: parsedOutcomes.outcomes.length,
142
+ gate_result: gateResult,
143
+ };
144
+ if (parsedOutcomes.epic)
145
+ userOutcomesPayload.epic = parsedOutcomes.epic;
146
+ if (parsedOutcomes.validation_warnings && parsedOutcomes.validation_warnings.length > 0) {
147
+ userOutcomesPayload.validation_warnings = parsedOutcomes.validation_warnings;
148
+ }
149
+ if (gateResult === 'warn') {
150
+ userOutcomesPayload.migration_deadline =
151
+ '## User Outcomes section becomes a hard block in v0.9.0 — add it now, or use the empty-with-note escape (`_No user-observable changes — pure refactor._`) for refactor-only specs.';
152
+ }
153
+ }
116
154
  // Zero-criteria guard — do NOT silently report ok when there is
117
155
  // nothing to verify. This is the motivating bug: zero criteria
118
156
  // trivially pass unmapped.length === 0, which produced a false
119
157
  // green signal. Treat it as incomplete with an explicit reason.
120
158
  if (criteria.length === 0) {
121
- return ok({
159
+ return ok(withUserOutcomes({
122
160
  status: 'incomplete',
123
161
  command: 'coverage-validate',
124
162
  criteria_count: 0,
@@ -136,7 +174,7 @@ export function cmdCoverageCheck(subcommand, projectDir, extraArgs) {
136
174
  sources_checked: sourcesChecked,
137
175
  spec_path: resolvedSpec.path,
138
176
  autonomy_action: autonomyLevelEarly <= 1 ? 'stop-and-ask' : 'generate-stubs',
139
- });
177
+ }, userOutcomesPayload));
140
178
  }
141
179
  // Classify verification methods for each subtask (D-19)
142
180
  function classifyVerification(verification) {
@@ -206,7 +244,7 @@ export function cmdCoverageCheck(subcommand, projectDir, extraArgs) {
206
244
  }
207
245
  }
208
246
  if (unmapped.length > 0) {
209
- return ok({
247
+ return ok(withUserOutcomes({
210
248
  status: 'incomplete',
211
249
  command: 'coverage-validate',
212
250
  criteria_count: criteria.length,
@@ -218,9 +256,9 @@ export function cmdCoverageCheck(subcommand, projectDir, extraArgs) {
218
256
  autonomy_action: autonomyLevel <= 1 ? 'stop-and-ask' : 'generate-stubs',
219
257
  spec_path: resolvedSpec.path,
220
258
  sources_checked: sourcesChecked,
221
- });
259
+ }, userOutcomesPayload));
222
260
  }
223
- return ok({
261
+ return ok(withUserOutcomes({
224
262
  status: 'ok',
225
263
  command: 'coverage-validate',
226
264
  criteria_count: criteria.length,
@@ -229,10 +267,39 @@ export function cmdCoverageCheck(subcommand, projectDir, extraArgs) {
229
267
  subtask_verifications: subtaskVerifications,
230
268
  spec_path: resolvedSpec.path,
231
269
  sources_checked: sourcesChecked,
232
- });
270
+ }, userOutcomesPayload));
233
271
  }
234
272
  default:
235
273
  return err(`Unknown coverage-check subcommand: ${subcommand}. Available: validate`);
236
274
  }
237
275
  }
276
+ /**
277
+ * Attach the `user_outcomes` payload to a coverage-check envelope when
278
+ * present (i.e. STANDARD/DEEP plan with a spec on disk). QUICK plans
279
+ * pass `null` and the key is OMITTED from the envelope entirely — Fast
280
+ * Path Guarantee (ID-08).
281
+ */
282
+ function withUserOutcomes(envelope, userOutcomesPayload) {
283
+ if (userOutcomesPayload === null)
284
+ return envelope;
285
+ return { ...envelope, user_outcomes: userOutcomesPayload };
286
+ }
287
+ /**
288
+ * Read the running kernel's framework version from its own package.json.
289
+ * Used to gate the `## User Outcomes` missing-header behavior — warn in
290
+ * v0.8.x, hard-block from v0.9.0 forward. Returns `'0.0.0'` on failure
291
+ * so the gate fails-soft to warn (callers treat unknown version as
292
+ * pre-0.9.0).
293
+ */
294
+ function readFrameworkVersion() {
295
+ try {
296
+ const here = dirname(fileURLToPath(import.meta.url));
297
+ const pkgPath = resolve(here, '..', '..', '..', 'package.json');
298
+ const pkg = JSON.parse(readFileSync(pkgPath, 'utf-8'));
299
+ return typeof pkg.version === 'string' ? pkg.version : '0.0.0';
300
+ }
301
+ catch {
302
+ return '0.0.0';
303
+ }
304
+ }
238
305
  //# sourceMappingURL=coverage-check.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"coverage-check.mjs","sourceRoot":"","sources":["../../../src/cli/commands/coverage-check.mjs"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"coverage-check.mjs","sourceRoot":"","sources":["../../../src/cli/commands/coverage-check.mjs"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"detect-runtime.d.mts","sourceRoot":"","sources":["../../../src/cli/commands/detect-runtime.mjs"],"names":[],"mappings":"AAqEA;;;GAGG;AACH,6CAHW,MAAM,WACN,MAAM,EAAE,8CA8DlB"}
1
+ {"version":3,"file":"detect-runtime.d.mts","sourceRoot":"","sources":["../../../src/cli/commands/detect-runtime.mjs"],"names":[],"mappings":"AAqEA;;;GAGG;AACH,6CAHW,MAAM,WACN,MAAM,EAAE,8CAuElB"}
@@ -78,23 +78,16 @@ export function cmdDetectRuntime(projectDir, _extra = []) {
78
78
  if (!projectDir)
79
79
  return err('Usage: apt-tools detect-runtime <project-dir>');
80
80
  const target = resolve(projectDir);
81
- // Detect runtime capabilities from project's package.json.
82
- const runtime = loadRuntimeCapabilities(target);
83
- // Discover bundled + user drivers.
84
- // __dirname-equivalent under ESM: walk up from this file to the framework
85
- // package root. fileURLToPath is portable across POSIX + Windows;
86
- // new URL(...).pathname returns '/C:/...' on Windows which resolve()
87
- // does not handle correctly.
88
- const frameworkRoot = fileURLToPath(new URL('../../..', import.meta.url));
89
- const bundled = discoverBundledDrivers(frameworkRoot);
90
- const user = discoverUserDrivers(target);
91
- const drivers = [...bundled, ...user];
92
- // Read user override from .aperant/config.json:verification.runtimes[].
81
+ // Read user config (used both for the monorepo walk + override).
82
+ let monorepoGlobs;
93
83
  let override = [];
94
84
  const configPath = join(target, '.aperant/config.json');
95
85
  if (existsSync(configPath)) {
96
86
  try {
97
87
  const cfg = JSON.parse(readFileSync(configPath, 'utf-8'));
88
+ if (Array.isArray(cfg?.verification?.monorepo_globs)) {
89
+ monorepoGlobs = cfg.verification.monorepo_globs.filter((x) => typeof x === 'string');
90
+ }
98
91
  if (Array.isArray(cfg?.verification?.runtimes)) {
99
92
  override = cfg.verification.runtimes.filter((x) => typeof x === 'string');
100
93
  }
@@ -103,6 +96,19 @@ export function cmdDetectRuntime(projectDir, _extra = []) {
103
96
  /* malformed config — ignore */
104
97
  }
105
98
  }
99
+ // Detect runtime capabilities from project's package.json + (optionally)
100
+ // monorepo `apps/*` walk. Default behaviour matches the canonical
101
+ // Aperant layout — adopters opt out via verification.monorepo_globs: [].
102
+ const runtime = loadRuntimeCapabilities(target, monorepoGlobs !== undefined ? { monorepo_globs: monorepoGlobs } : undefined);
103
+ // Discover bundled + user drivers.
104
+ // __dirname-equivalent under ESM: walk up from this file to the framework
105
+ // package root. fileURLToPath is portable across POSIX + Windows;
106
+ // new URL(...).pathname returns '/C:/...' on Windows which resolve()
107
+ // does not handle correctly.
108
+ const frameworkRoot = fileURLToPath(new URL('../../..', import.meta.url));
109
+ const bundled = discoverBundledDrivers(frameworkRoot);
110
+ const user = discoverUserDrivers(target);
111
+ const drivers = [...bundled, ...user];
106
112
  // Try resolving with the default minimum required capability.
107
113
  let selected = null;
108
114
  let fallback_attempts = [];
@@ -1 +1 @@
1
- {"version":3,"file":"detect-runtime.mjs","sourceRoot":"","sources":["../../../src/cli/commands/detect-runtime.mjs"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"detect-runtime.mjs","sourceRoot":"","sources":["../../../src/cli/commands/detect-runtime.mjs"],"names":[],"mappings":"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"}
@@ -0,0 +1,84 @@
1
+ /**
2
+ * @typedef {Object} UserOutcome
3
+ * @property {string} id — synthesized positional ID (O1, O2, ...)
4
+ * @property {('electron'|'web'|'cli'|'api'|'electron+web')} surface
5
+ * @property {string} text — outcome prose (sans the surface tag and requires suffix)
6
+ * @property {number} [requires] — the digit captured from `*(requires ON N)*`, when present and valid
7
+ */
8
+ /**
9
+ * @typedef {Object} ValidationWarning
10
+ * @property {'unknown_requires_target'} kind
11
+ * @property {string} outcome_id — synthesized ID of the outcome carrying the bad `requires`
12
+ * @property {number} requires — the offending digit
13
+ * @property {string} reason — human-readable explanation
14
+ */
15
+ /**
16
+ * @typedef {Object} UserOutcomesParseResult
17
+ * @property {boolean} header_present
18
+ * @property {('absent'|'empty'|'empty-with-note'|'outcomes')} body_kind
19
+ * @property {string} [epic]
20
+ * @property {UserOutcome[]} outcomes
21
+ * @property {ValidationWarning[]} [validation_warnings]
22
+ */
23
+ /**
24
+ * Parse the `## User Outcomes` section from a spec.md string.
25
+ *
26
+ * @param {string} specContent
27
+ * @returns {UserOutcomesParseResult}
28
+ */
29
+ export function parseUserOutcomes(specContent: string): UserOutcomesParseResult;
30
+ /**
31
+ * Compute the coverage-check gate result for a parsed user-outcomes
32
+ * envelope. Per §ID-07 table — warn-not-block in v0.8.x, hard-block in
33
+ * v0.9.0.
34
+ *
35
+ * | header_present | body_kind | v0.8.x | v0.9.0 |
36
+ * |----------------|-------------------|--------|--------|
37
+ * | false | — | warn | block |
38
+ * | true | empty-with-note | pass | pass |
39
+ * | true | outcomes (≥1) | pass | pass |
40
+ * | true | empty | block | block |
41
+ *
42
+ * @param {UserOutcomesParseResult} parsed
43
+ * @param {string} frameworkVersion — semver string from the kernel's package.json (e.g. "0.8.6")
44
+ * @returns {('pass'|'warn'|'block')}
45
+ */
46
+ export function userOutcomesGateResult(parsed: UserOutcomesParseResult, frameworkVersion: string): ("pass" | "warn" | "block");
47
+ export type UserOutcome = {
48
+ /**
49
+ * — synthesized positional ID (O1, O2, ...)
50
+ */
51
+ id: string;
52
+ surface: ("electron" | "web" | "cli" | "api" | "electron+web");
53
+ /**
54
+ * — outcome prose (sans the surface tag and requires suffix)
55
+ */
56
+ text: string;
57
+ /**
58
+ * — the digit captured from `*(requires ON N)*`, when present and valid
59
+ */
60
+ requires?: number | undefined;
61
+ };
62
+ export type ValidationWarning = {
63
+ kind: "unknown_requires_target";
64
+ /**
65
+ * — synthesized ID of the outcome carrying the bad `requires`
66
+ */
67
+ outcome_id: string;
68
+ /**
69
+ * — the offending digit
70
+ */
71
+ requires: number;
72
+ /**
73
+ * — human-readable explanation
74
+ */
75
+ reason: string;
76
+ };
77
+ export type UserOutcomesParseResult = {
78
+ header_present: boolean;
79
+ body_kind: ("absent" | "empty" | "empty-with-note" | "outcomes");
80
+ epic?: string | undefined;
81
+ outcomes: UserOutcome[];
82
+ validation_warnings?: ValidationWarning[] | undefined;
83
+ };
84
+ //# sourceMappingURL=user-outcomes.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"user-outcomes.d.mts","sourceRoot":"","sources":["../../../src/cli/coverage-check/user-outcomes.mjs"],"names":[],"mappings":"AA4CA;;;;;;GAMG;AAEH;;;;;;GAMG;AAEH;;;;;;;GAOG;AAEH;;;;;GAKG;AACH,+CAHW,MAAM,GACJ,uBAAuB,CAwJnC;AAED;;;;;;;;;;;;;;;GAeG;AACH,+CAJW,uBAAuB,oBACvB,MAAM,GACJ,CAAC,MAAM,GAAC,MAAM,GAAC,OAAO,CAAC,CAiBnC;;;;;QApNa,MAAM;aACN,CAAC,UAAU,GAAC,KAAK,GAAC,KAAK,GAAC,KAAK,GAAC,cAAc,CAAC;;;;UAC7C,MAAM;;;;;;;UAMN,yBAAyB;;;;gBACzB,MAAM;;;;cACN,MAAM;;;;YACN,MAAM;;;oBAKN,OAAO;eACP,CAAC,QAAQ,GAAC,OAAO,GAAC,iBAAiB,GAAC,UAAU,CAAC;;cAE/C,WAAW,EAAE"}