akm-cli 0.9.29 → 0.9.31
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/CHANGELOG.md +41 -0
- package/README.md +10 -10
- package/ROADMAP.md +112 -0
- package/dist/commands/improve/improve-cli.js +33 -12
- package/dist/commands/sources/plugin-upgrade.js +46 -23
- package/dist/core/file-lock.js +10 -1
- package/dist/llm/client.js +33 -3
- package/dist/scripts/akm-migrate-node.js +5 -1
- package/dist/scripts/akm-migrate.js +5 -1
- package/docs/README.md +42 -41
- package/docs/agents/README.md +15 -0
- package/docs/agents/agent-install.md +14 -0
- package/docs/architecture/README.md +67 -0
- package/docs/architecture/adapters.md +272 -0
- package/docs/architecture/akm-architecture-decision-history.md +2055 -0
- package/docs/architecture/akm-core-principles.md +126 -0
- package/docs/architecture/architecture.md +579 -0
- package/docs/architecture/comparisons/claude-code-vs-akm-workflows-full.md +550 -0
- package/docs/architecture/decisions/0001-no-interpolation-attached-structured-context.md +72 -0
- package/docs/architecture/decisions/0002-unit-reuse-and-input-hash-scope.md +142 -0
- package/docs/architecture/decisions/0003-child-env-allowlist-and-provenance.md +189 -0
- package/docs/architecture/decisions/0004-task-input-contract-and-flag-coercion.md +97 -0
- package/docs/architecture/decisions/0005-task-result-vocabulary-and-legacy-read-mapping.md +108 -0
- package/docs/architecture/decisions/0006-task-source-version-routing.md +124 -0
- package/docs/architecture/decisions/0007-workflow-composition-bounds.md +83 -0
- package/docs/architecture/decisions/0008-task-binding-normalization.md +88 -0
- package/docs/architecture/decisions/0009-child-run-publication-column-parity.md +80 -0
- package/docs/architecture/decisions/0010-driver-protocol-cut.md +36 -0
- package/docs/architecture/decisions/0011-engine-run-loop-invariants.md +125 -0
- package/docs/architecture/decisions/README.md +62 -0
- package/docs/architecture/improvement.md +440 -0
- package/docs/architecture/internals/classification.md +154 -0
- package/docs/architecture/internals/fresh-host-rebuild-runbook.md +40 -0
- package/docs/architecture/internals/functional-contract-patterns.md +340 -0
- package/docs/architecture/internals/health-advisories.md +110 -0
- package/docs/architecture/internals/improve-workflow.md +713 -0
- package/docs/architecture/internals/indexing.md +498 -0
- package/docs/architecture/internals/registry-network-boundary.md +57 -0
- package/docs/architecture/internals/search.md +249 -0
- package/docs/architecture/internals/storage-locations.md +943 -0
- package/docs/architecture/persisted-data-compat.md +59 -0
- package/docs/architecture/reviews/env-secret-access.md +319 -0
- package/docs/architecture/runtime-boundary-design.md +153 -0
- package/docs/architecture/specs/0.9.0-close-out-plan.md +361 -0
- package/docs/architecture/specs/0.9.0-decisions.md +528 -0
- package/docs/architecture/specs/0.9.0-docs-code-drift-register.md +745 -0
- package/docs/architecture/specs/0.9.0-open-items-register.md +135 -0
- package/docs/architecture/specs/0.9.0-public-api-issue-backlog.md +740 -0
- package/docs/architecture/specs/0.9.0-release-surface-review.md +636 -0
- package/docs/architecture/specs/agent-command-engine-model-design.md +513 -0
- package/docs/architecture/specs/akm-0.9.0-bundle-adapter-spec.md +501 -0
- package/docs/architecture/specs/akm-0.9.0-ref-grammar-decision.md +291 -0
- package/docs/architecture/specs/akm-format-neutral-bundle-workspace-spec.md +2059 -0
- package/docs/architecture/specs/di-seams-plan.md +539 -0
- package/docs/architecture/specs/driver-protocol-keep-or-cut.md +275 -0
- package/docs/architecture/specs/fact-asset-type.md +142 -0
- package/docs/architecture/specs/improve-collapse-churn-detector-design.md +634 -0
- package/docs/architecture/specs/okf-support.md +148 -0
- package/docs/architecture/specs/ref.md +329 -0
- package/docs/architecture/specs/reviews/task-workflow-unification/README.md +72 -0
- package/docs/architecture/specs/reviews/task-workflow-unification/findings-consolidated.md +152 -0
- package/docs/architecture/specs/reviews/task-workflow-unification/library-eval-alternatives.md +352 -0
- package/docs/architecture/specs/reviews/task-workflow-unification/library-eval-bunqueue.md +300 -0
- package/docs/architecture/specs/reviews/task-workflow-unification/library-eval-openworkflow.md +402 -0
- package/docs/architecture/specs/reviews/task-workflow-unification/opus-review-1.md +758 -0
- package/docs/architecture/specs/reviews/task-workflow-unification/opus-review-2.md +645 -0
- package/docs/architecture/specs/reviews/task-workflow-unification/opus-review-3.md +602 -0
- package/docs/architecture/specs/reviews/task-workflow-unification/panel-r1-adversarial.md +27 -0
- package/docs/architecture/specs/reviews/task-workflow-unification/panel-r1-architecture.md +27 -0
- package/docs/architecture/specs/reviews/task-workflow-unification/panel-r1-coverage.md +74 -0
- package/docs/architecture/specs/reviews/task-workflow-unification/panel-r1-security.md +15 -0
- package/docs/architecture/specs/reviews/task-workflow-unification/panel-r2-adversarial.md +132 -0
- package/docs/architecture/specs/reviews/task-workflow-unification/panel-r2-verification.md +147 -0
- package/docs/architecture/specs/stash-conventions-code-spec.md +275 -0
- package/docs/architecture/specs/stash-organization-conventions.md +377 -0
- package/docs/architecture/specs/task-workflow-format-unification.md +721 -0
- package/docs/architecture/specs/workflow-engine-buy-vs-build.md +231 -0
- package/docs/architecture/specs/workflow-format-unification.md +437 -0
- package/docs/architecture/testing/manual-testing-checklist.md +3420 -0
- package/docs/architecture/testing/okf-v0.2-conformance-runbook.md +924 -0
- package/docs/architecture/testing/task-workflow-manual-tests.md +1817 -0
- package/docs/architecture/testing/testing-workflow.md +446 -0
- package/docs/architecture/workflow-engine.md +274 -0
- package/docs/guides/README.md +33 -0
- package/docs/guides/author-bundles.md +310 -0
- package/docs/guides/author-workflows.md +520 -0
- package/docs/guides/bundles.md +321 -0
- package/docs/guides/capture-knowledge.md +136 -0
- package/docs/guides/claude-code-vs-akm-workflows.md +30 -0
- package/docs/guides/concepts.md +93 -0
- package/docs/guides/discover-and-load.md +158 -0
- package/docs/guides/getting-started.md +240 -0
- package/docs/guides/improve-the-library.md +246 -0
- package/docs/guides/knowledge-management.md +18 -0
- package/docs/guides/recipes/headless-install.md +97 -0
- package/docs/guides/recipes/website-source.md +28 -0
- package/docs/guides/run-workflows.md +279 -0
- package/docs/guides/scheduling.md +123 -0
- package/docs/guides/use-with-any-agent.md +129 -0
- package/docs/guides/wikis.md +81 -0
- package/docs/maintainers/README.md +19 -0
- package/docs/maintainers/curate-workmap.md +336 -0
- package/docs/maintainers/eval.md +3 -0
- package/docs/maintainers/local-development.md +108 -0
- package/docs/maintainers/release-checklist.md +103 -0
- package/docs/migration/README.md +2 -2
- package/docs/migration/release-notes/0.0.13.md +1 -1
- package/docs/migration/release-notes/0.1.0.md +1 -1
- package/docs/migration/release-notes/0.2.0.md +1 -1
- package/docs/migration/release-notes/0.3.0.md +1 -1
- package/docs/migration/release-notes/0.5.0.md +1 -1
- package/docs/migration/release-notes/0.6.0.md +1 -1
- package/docs/migration/release-notes/0.7.0.md +1 -1
- package/docs/migration/release-notes/0.7.3.md +2 -2
- package/docs/migration/release-notes/0.7.4.md +1 -1
- package/docs/migration/release-notes/0.7.5.md +1 -1
- package/docs/migration/release-notes/0.8.0.md +1 -1
- package/docs/migration/release-notes/0.9.0.md +1 -1
- package/docs/migration/release-notes/0.9.14.md +1 -1
- package/docs/migration/release-notes/0.9.15.md +1 -1
- package/docs/migration/release-notes/0.9.16.md +1 -1
- package/docs/migration/release-notes/0.9.17.md +1 -1
- package/docs/migration/release-notes/0.9.19.md +1 -1
- package/docs/migration/release-notes/0.9.2.md +1 -1
- package/docs/migration/release-notes/README.md +27 -31
- package/docs/migration/v0.5-to-v0.6.md +759 -0
- package/docs/migration/v0.8-to-v0.9.md +1 -1
- package/docs/plans/0.9.2-agent-command-workflow-plan.md +423 -0
- package/docs/posts/README.md +30 -0
- package/docs/posts/akm-command-tour.md +495 -0
- package/docs/posts/akm-logo-sized.webp +0 -0
- package/docs/posts/belief-aware-memory-12.md +139 -0
- package/docs/posts/config-v2-lessons-16.md +191 -0
- package/docs/posts/improve-loop-autonomous-10.md +225 -0
- package/docs/posts/improve-pipeline-debugging-0803.md +179 -0
- package/docs/posts/intro-part-01.md +76 -0
- package/docs/posts/intro-part-02.md +221 -0
- package/docs/posts/intro-part-03.md +190 -0
- package/docs/posts/intro-part-04.md +221 -0
- package/docs/posts/llm-mode-reflect-13.md +166 -0
- package/docs/posts/openpalm-built-on-akm.md +86 -0
- package/docs/posts/progressive-disclosure-06.md +129 -0
- package/docs/posts/proposal-safety-net-15.md +112 -0
- package/docs/posts/release-0.5.0.md +247 -0
- package/docs/posts/release-0.6.0.md +117 -0
- package/docs/posts/release-0.7.0.md +159 -0
- package/docs/posts/release-0.8.0.md +332 -0
- package/docs/posts/scattered-skills-05.md +100 -0
- package/docs/posts/task-assets-persistent-workflows-11.md +222 -0
- package/docs/posts/team-skills-07.md +198 -0
- package/docs/posts/wiki-agent-knowledge-08.md +223 -0
- package/docs/posts/workflows-vaults-09.md +321 -0
- package/docs/product-surface.md +54 -0
- package/docs/reference/README.md +1 -2
- package/docs/reference/asset-types.md +168 -0
- package/docs/reference/cli.md +5 -6
- package/docs/reference/env-and-secrets.md +126 -0
- package/docs/reference/memory.md +124 -0
- package/docs/reference/refs.md +156 -0
- package/docs/reference/registry.md +489 -0
- package/docs/reference/website-sources.md +141 -0
- package/package.json +12 -15
|
@@ -0,0 +1,745 @@
|
|
|
1
|
+
# Docs–code drift register and intent questions — ruled 2026-07-26 (v0.9.0-rc.10)
|
|
2
|
+
|
|
3
|
+
Status: maintainer rulings recorded 2026-07-26 — all 19 questions ruled.
|
|
4
|
+
Re-verified 2026-07-27 against `2d2edc1` (code identical to `453a0ba`; the
|
|
5
|
+
delta is docs-only). That pass corrected three register entries that had
|
|
6
|
+
drifted from the tree — Q-12 (landed, not open), the R-004 companion item
|
|
7
|
+
(user-facing print already removed), and the Q-18 remediation sketch (the
|
|
8
|
+
suggested predicate overshoots — see the amended landmine note).
|
|
9
|
+
Note: items below cite `docs/agents/AGENTS.md` / `AGENTS.full.md`. Those files
|
|
10
|
+
were deleted during the 0.9.0 docs sweep; their still-true content now lives in
|
|
11
|
+
`src/assets/hints/cli-hints-full.md` / `cli-hints-short.md`, which is what
|
|
12
|
+
`akm hints` prints.
|
|
13
|
+
Companion to: `0.9.0-public-api-issue-backlog.md` (implementation-only findings).
|
|
14
|
+
This register covers the complement: places where the **documentation and the
|
|
15
|
+
code disagree**, and places where the **intended implementation is genuinely
|
|
16
|
+
unclear** because the project's own decision records conflict with shipped
|
|
17
|
+
behavior.
|
|
18
|
+
|
|
19
|
+
Method: three independent audits (README + guides; architecture/specs/agent
|
|
20
|
+
docs + STABILITY/AGENTS/SECURITY; docs/reference) compared documented claims
|
|
21
|
+
against `src/` with file:line verification, plus live CLI execution for the
|
|
22
|
+
highest-stakes items. Items verified by actually running the CLI are marked
|
|
23
|
+
**[verified live]**. Line references may drift; every item names the file and
|
|
24
|
+
observable behavior so it can be re-verified.
|
|
25
|
+
|
|
26
|
+
Reading order: Part 1 records the intent conflicts and now carries the
|
|
27
|
+
**maintainer rulings (2026-07-26)** that settle them — the rulings table is
|
|
28
|
+
the authoritative direction; the question bodies remain as the evidence
|
|
29
|
+
record. Parts 2–3 are mechanical now that Part 1 is decided. Part 4 records
|
|
30
|
+
false alarms and verified-clean surfaces so future audits don't re-litigate
|
|
31
|
+
them.
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Part 1 — Decision needed (now ruled): the intent conflicts
|
|
36
|
+
|
|
37
|
+
Each question cites both sides. "Docs-as-intent" means the fix is code work;
|
|
38
|
+
"code-as-intent" means the fix is doc work — but several of these have the
|
|
39
|
+
*decision record itself* (STABILITY.md, `0.9.0-decisions.md`, `ref.md`) on the
|
|
40
|
+
losing side, which is why a ruling was needed first.
|
|
41
|
+
|
|
42
|
+
### Maintainer rulings — 2026-07-26
|
|
43
|
+
|
|
44
|
+
Ruled by the maintainer in session review. Each ruling names the winning side
|
|
45
|
+
and the required follow-through; the question bodies below are kept as the
|
|
46
|
+
evidence record.
|
|
47
|
+
|
|
48
|
+
Until each follow-through lands, these rulings supersede conflicting statements
|
|
49
|
+
in the older records — `0.9.0-decisions.md` (notably D3's `mv` removal and D9's
|
|
50
|
+
`--auto-accept` wording), STABILITY.md (the `mv`-removal claim, the six-format
|
|
51
|
+
wording amended by Q-04, the missing tier entries), `ref.md`, and the
|
|
52
|
+
scaffolded stash assets such as `facts/conventions/organization.md`. Where any
|
|
53
|
+
of those contradicts this table, the table wins; treat the contradiction as
|
|
54
|
+
un-swept drift, not authority.
|
|
55
|
+
|
|
56
|
+
| Q | Ruling |
|
|
57
|
+
| --- | --- |
|
|
58
|
+
| Q-01 | Keep `akm mv`. Supersede D3; add an Experimental tier entry for `mv` to STABILITY.md; rewrite the scaffolded `facts/conventions/organization.md` fact and the other D3-side docs to teach the command. |
|
|
59
|
+
| Q-02 | Slash grammar only. Implement the decided slash form including `bundle//` enumeration; **remove the colon form entirely — no alias, no deprecation window**. Sweep `search --help`, `akm hints`, and the ref-prefix tests to slash. |
|
|
60
|
+
| Q-03 | Delete the `show` view modes per D2 (`SHOW_VIEW_MODES`, `normalizeShowArgv`, hidden `--akm*` flags). Fragment refs (D1) are the successor. |
|
|
61
|
+
| Q-04 | Implement basic support for all output formats on every non-exempt command, with `text` and `md` **collapsed into a single format**. Align the persisted `output.format` schema with the CLI's accepted set and fix the `INVALID_FORMAT_VALUE` hint. Follow-through detail: both `text` and `md` stay accepted as flag values resolving to the one collapsed renderer (amend here if a spelling is instead dropped); STABILITY.md's "all six formats" wording (`:70-77`) updates to the collapsed set; D7's exemption mechanism is in scope — exemptions must be declared and warned, never silent. Downstream: D-08's global `--format` table, the `INVALID_FORMAT_VALUE` hint, and completions (backlog R-052) update to the final accepted set. |
|
|
62
|
+
| Q-05 | Implement both gates (`experimental.workflowEngine`, `experimental.improveAutonomy`) as STABILITY.md documents them. |
|
|
63
|
+
| Q-06 | `show`-only is the intended 0.9.0 scope for fragment refs. State that scope in ref.md/D1; wider rollout is post-0.9.0. |
|
|
64
|
+
| Q-07 | Honor D11: fix the ref-parser seam centrally so opaque adapter conceptIds are accepted by the ref-consuming commands (graph, tasks, improve, proposals, utility repo, indexer walk). |
|
|
65
|
+
| Q-08 | Slash spelling only (`env/<name>`, `secrets/<name>`). Update every help/doc surface that teaches `env:`/`secret:`; **no colon alias**. |
|
|
66
|
+
| Q-09 | Keep the code's provider taxonomy (`filesystem`/`git`/`npm`/`website`); fix the docs that teach `local`/`managed`/`remote`. |
|
|
67
|
+
| Q-10 | `--rerank` was designed-then-dropped: remove the cli.md reference and the setup-wizard prose. |
|
|
68
|
+
| Q-11 | Keep flat `--name`; hierarchical placement goes through **`--path`, like other commands**. Document `--path` in cli.md and drop the "slashes in names" claim. **Doc-only work — verified 2026-07-26:** `workflow create` already declares `--path` (`workflow-cli.ts:204`), already routes it through the shared `normalizeCreateSubPath`/`combineCreatePath` helpers (`:227`) used by `knowledge`, `contribute`, and the env/secret create paths, and its `--name` help already reads "flat, no '/'; use --path for a subdirectory" (`:201`). Only `docs/reference/cli.md:574-577` is wrong. |
|
|
69
|
+
| Q-12 | Implement the STABILITY.md contract: parse `--auto-accept`, warn "deprecated and ignored" in 0.9, hard error in 0.10. Align D9/E4 wording. |
|
|
70
|
+
| Q-13 | Treat as a regression: restore the 7-day (static-index) and 24-hour (skills-sh) stale-fallback windows. |
|
|
71
|
+
| Q-14 | Adopt the convention: every registered command gets a tier and the reference either documents it or explicitly lists it internal. `extract`, `proposal drain`, and `improve canary` are tiered **Experimental**. Open follow-through: tiers for `lint`, `backup`, and the workflow exec/driver family (`run`/`brief`/`report`/`watch`/`abandon`) are still unassigned — record them when the STABILITY.md re-tier (Part 5, step 3) lands. |
|
|
72
|
+
| Q-15 | Code wins: fix the docs wording (`raw/**` is indexed as `wiki-source` documents, not pages). |
|
|
73
|
+
| Q-16 | Trim §4 to the five implemented contracts (`RankingContributor`, `SearchHitEnricher`, `ActionContributor`, `ProposalValidator`, `SessionLogHarness`); delete the seven unimplemented entries. §3.9's seam name updates to the shipped `RunnerSpec`/`executeRunner` (`runner-dispatch.ts`) so the doc describes reality throughout. |
|
|
74
|
+
| Q-17 | Do not keep the standalone brief: **consolidate** `runtime-boundary-design.md` into the other architecture docs, keeping only the still-necessary details; retire the file. Destination: fold the `bun:sqlite`/`Bun.*` import-boundary rule and the `database.ts`/`runtime.ts` export table into `architecture.md` (Module Boundaries / Tech Stack); drop the stale "Architect: investigate" checklists and the outdated 3-hard-import-files claim rather than carrying them over; remove the file's row from `docs/architecture/README.md` when retiring it. |
|
|
75
|
+
| Q-18 | Both halves. The two-registry split stays the core truth: `KNOWN_TYPES` is the presentation vocabulary, `PLACEMENT_SPECS` the stash-resident subset, and the exhaustiveness check asserts placement keys ⊆ known types (adapter-emitted `instruction` docs round-trip via the Q-07 opaque-conceptId fix). **And** the akm adapter gains `instruction` as a stash-resident asset type — a `PLACEMENT_SPECS` entry with an `instructions/` stash dir on the markdown spec — so instruction assets become creatable, browsable, and listed by `akm info` like knowledge. |
|
|
76
|
+
| Q-19 | Fix the resolver: `resolveSourcesForOrigin` must match install refs (`github:owner/repo`) so `//meta` and the `akm add` error hint work as documented. |
|
|
77
|
+
|
|
78
|
+
### Implementation status against the base branch (`claude/0-9-0-release-review-bcjxxu` @ `453a0ba`)
|
|
79
|
+
|
|
80
|
+
Re-verified 2026-07-26 after merging the base branch. The questions below were
|
|
81
|
+
written against `a8464f2`; the base branch has since implemented part of the
|
|
82
|
+
ruling set. Status per ruling:
|
|
83
|
+
|
|
84
|
+
| Q | Status | Evidence |
|
|
85
|
+
| --- | --- | --- |
|
|
86
|
+
| Q-01 | **Landed** | `mv` retained and declared Experimental (`STABILITY.md:72`); D3 explicitly excluded from the removal list (`:345`). |
|
|
87
|
+
| Q-02 | **Landed** | `parseRefPrefixQuery` now takes conceptId-prefix/`bundle//` slash forms and no colon form (`fts-query.ts:88-100`). |
|
|
88
|
+
| Q-03 | **Landed** | `SHOW_VIEW_MODES` and `normalizeShowArgv` deleted; `#fragment` golden replaces the lines-view golden. |
|
|
89
|
+
| Q-04 | **Conflict — see below** | All six formats implemented with an exemption registry (`output/format-exempt.ts`, `cli/shared.ts:219-244`), but `text` and `md` are **separate** renderers. |
|
|
90
|
+
| Q-05 | **Partial** | `experimental.improveAutonomy` shipped (`config/schema/experimental.ts:29`, `improve/autonomy-gate.ts`, reported by `tasks doctor`), and `453a0ba` closed the two lanes that were still silently gated — `memoryCleanup` and `contradiction` have no `processes.<name>.enabled` flag, so `applyAutonomyGate` structurally could not see them and suppressed them with no warning, event, or doctor line (the exact silent no-op the contract forbids). It also moved the gate off the read-only `analyzeMemoryCleanup` onto `applyMemoryCleanup`, so review-first runs get their preview back. `experimental.workflowEngine` still has zero code. |
|
|
91
|
+
| Q-14 | **Partial** | The workflow exec/driver family is now tiered Experimental (`STABILITY.md:230-240`). `extract`, `proposal drain`, `improve canary`, `lint`, and `backup` still have no tier entry and no `cli.md` section. |
|
|
92
|
+
| Q-06 | Open | `parseRefInput` still rejects `#fragment` outright (`asset/resolve-ref.ts:257-262`); `show` still works only by bypassing it. Recommendation: the ruling makes this doc-only for 0.9.0 — add one "scope: `show` only in 0.9.0" sentence to `ref.md` § Fragments and D1's Status line; no code change. |
|
|
93
|
+
| Q-07 | **Renderer half advanced; parser half open** | `453a0ba` replaced `show`'s OKF-only branch with `usesIndexedProjection` (`read/show.ts:536-559`): OKF plus **any** indexed item whose type AKM does not place now keeps its adapter's projection. That is the format-agnostic direction D11 asked for, on the *render* seam. The *parser* seam is untouched — `parseRefInput` still throws when a conceptId has no known asset-type prefix (`resolve-ref.ts:265-271`), so graph, tasks, improve, proposals, the utility repo, and the indexer walk remain strict. |
|
|
94
|
+
| Q-08 | Open | Colon spellings still taught by `env-cli.ts:392,455`, `secret-cli.ts:95,160`, `prompts.ts:78`, `AGENTS.md:44`. |
|
|
95
|
+
| Q-09 | Code correct | `VALID_SOURCE_KINDS` unchanged (`sources/sources-cli.ts:34`) — the ruled direction; the doc sweep is outstanding. |
|
|
96
|
+
| Q-10 | Open | `curate --rerank` still advertised by the setup wizard (`connection.ts:365,424`); cli.md reference also unswept. Recommendation: two-line deletion in each file, no dependencies — batch with the Part 5 step-2 sweep. |
|
|
97
|
+
| Q-11 | Open | `cli.md:613-614` still claims slashes are supported in workflow names. |
|
|
98
|
+
| Q-12 | **Landed** (0.9 half) — the register had this wrong | `resolveScopeAfterRetiredAutoAccept` (`improve-cli.ts:103-117`, shipped `2a68c7a`) warns "--auto-accept was removed in 0.9 and is ignored", names the replacement (`proposal drain --promote` / triage `applyMode: "promote"`), announces the 0.10 hard error, and **drops the poisoned positional** — the space-separated form (`--auto-accept 90`) previously read `90` as the scope, matched nothing, and exited 0. Remaining: align D9/E4 wording (E4 still says the runtime "does not parse" the flag). |
|
|
99
|
+
| Q-13 | Open | No second stale window in the registry cache. Recommendation: add a per-provider `staleWindowMs` to `fetchCachedJson` (`registry-cache.ts:136-141`) and have `getRegistryIndexCache` return rows past TTL but inside the window with a `stale: true` marker — the doc'd 7d/24h numbers become the two providers' constants. Small, self-contained. |
|
|
100
|
+
| Q-15 | Open | `wikis.md:59-60` still says `raw/` is "never indexed as pages". |
|
|
101
|
+
| Q-16, Q-17 | Open | §4 still lists all twelve contracts; `runtime-boundary-design.md` still present. |
|
|
102
|
+
| Q-18 | Open — **and now has a landmine, see below** | `instruction` still absent from `PLACEMENT_SPECS`. |
|
|
103
|
+
| Q-19 | Open | `resolveSourcesForOrigin` still matches derived installation ids only (`registry/origin-resolve.ts:18-23`). Recommendation: also compare `origin` against each installation's install ref (`installations.ts:98-110` already derives it) — an additive `||` in the filter; land together with backlog R-007 so the `akm add` hint chain works end to end. |
|
|
104
|
+
|
|
105
|
+
**Q-04 conflict — RESOLVED 2026-07-27: keep six formats.** The maintainer
|
|
106
|
+
amended the ruling to accept D7 as shipped: six distinct formats (`text` for
|
|
107
|
+
terminal rendering, `md` for document artifacts) plus the exemption registry.
|
|
108
|
+
The collapse is off the table. Follow-through landed the same day: the
|
|
109
|
+
`INVALID_FORMAT_VALUE` hint (`errors.ts:111`) and bash completions
|
|
110
|
+
(`completions.ts`) now carry the six-value set, completions dropped the bogus
|
|
111
|
+
`--detail summary` value and gained `--shape`, and the per-command `--format`
|
|
112
|
+
help strings on search/curate/show were updated. Q-04's original follow-through
|
|
113
|
+
detail in the rulings table is superseded by this note; STABILITY.md's
|
|
114
|
+
six-format wording stands as-is. Related same-day rulings: **R-029** —
|
|
115
|
+
`akm backup` is removed from the CLI (the capability lives at
|
|
116
|
+
`akm-migrate backup`/`restore`, which already existed; migration docs swept);
|
|
117
|
+
**R-047** — the scope-narrowing axis unifies on `--filter` for both `search`
|
|
118
|
+
and `show`, `--scope` removed with **no alias** (the old spelling now fails
|
|
119
|
+
loudly via the extra-positional guard, pinned by test). The paragraph below is
|
|
120
|
+
kept as the evidence record.
|
|
121
|
+
|
|
122
|
+
Original conflict note: The ruling recorded above says
|
|
123
|
+
"collapse `text` and `md` into a single format". The base branch instead landed
|
|
124
|
+
D7 as *six distinct* formats: `md` gained a renderer registry plus a generic
|
|
125
|
+
markdown fallback, explicitly so that "no command emits JSON under `--format
|
|
126
|
+
md` any more" (`cli/shared.ts:234-241`). It also built the exemption registry
|
|
127
|
+
D7 asked for (`format-exempt.ts`), which the ruling wanted. So the shipped work
|
|
128
|
+
satisfies the ruling's first half and contradicts its second. Either the
|
|
129
|
+
collapse is applied on top of D7 (deleting one of the two renderer paths), or
|
|
130
|
+
the ruling is amended to accept six formats. Until that is decided, the Q-04
|
|
131
|
+
follow-through detail recorded in the table above is provisional.
|
|
132
|
+
|
|
133
|
+
**Q-18 now collides with `usesIndexedProjection` — sequence the work.** `453a0ba`
|
|
134
|
+
made `show` decide between the adapter's indexed projection and the AKM matcher
|
|
135
|
+
by asking `!placementTypes().includes(entry.type)` (`read/show.ts:557`). Today
|
|
136
|
+
`instruction` is not a placement type, so adapter-emitted `CLAUDE.md`/`AGENTS.md`
|
|
137
|
+
items (claude/opencode adapters, `tool-dir-shared.ts:110-112`) take the
|
|
138
|
+
projection and render with their indexed content — the behavior that commit was
|
|
139
|
+
written to restore. The moment Q-18's ruling lands and `instruction` joins
|
|
140
|
+
`PLACEMENT_SPECS`, that predicate flips to `false` for those items and `show`
|
|
141
|
+
starts re-deriving them through `recognizeMatch`, reintroducing for `instruction`
|
|
142
|
+
exactly the regression `453a0ba` fixed for `website`/`file`. Implementing Q-18
|
|
143
|
+
therefore requires widening the predicate at the same time.
|
|
144
|
+
|
|
145
|
+
**Amended 2026-07-27 — the sketch above overshoots.** Gating on
|
|
146
|
+
`entry.adapterId !== "akm"` would change behavior for four other adapters:
|
|
147
|
+
`agent-skills`, `akm-task`, `akm-workflow`, and `llm-wiki` all publish
|
|
148
|
+
`document.content` AND emit AKM-placed types (`skill`, `task`, `workflow`,
|
|
149
|
+
`knowledge`) whose items deliberately render through AKM's bespoke type
|
|
150
|
+
renderers today (a skill keeps its run-command action, a task its schedule
|
|
151
|
+
view). Flipping them to the generic projection is a second regression wearing
|
|
152
|
+
the fix's clothes. The correct shape is an explicit ownership signal rather
|
|
153
|
+
than either inference: when `instruction` joins `PLACEMENT_SPECS`, either (a)
|
|
154
|
+
route `instruction`-typed items from the `claude`/`opencode` adapters to the
|
|
155
|
+
projection by adapter id — a two-member allowlist, honest about being one — or
|
|
156
|
+
(b) add an adapter-declared `ownsPresentation` marker on the indexed document
|
|
157
|
+
and let `usesIndexedProjection` read it. (b) is the durable fix; (a) is
|
|
158
|
+
acceptable 0.9.0 scope. Either way, land a guard test pinning
|
|
159
|
+
instruction-item `show` output BEFORE the `PLACEMENT_SPECS` change, so the
|
|
160
|
+
flip fails a test instead of shipping silently. **Ruled 2026-07-27: option
|
|
161
|
+
(b), the `ownsPresentation` marker** — adapters stamp presentation ownership
|
|
162
|
+
on the documents they index and `usesIndexedProjection` reads the stamp;
|
|
163
|
+
`index.db` being a regenerable cache, the schema addition needs only a
|
|
164
|
+
reindex. Implement the marker together with (or before) the
|
|
165
|
+
`PLACEMENT_SPECS.instruction` entry, guard test first. This remains the concrete cost
|
|
166
|
+
of the two-registry split: placement is now load-bearing for rendering, not
|
|
167
|
+
just for storage.
|
|
168
|
+
|
|
169
|
+
### Q-01 — `akm mv`: decided removed, fully shipped. Which wins?
|
|
170
|
+
|
|
171
|
+
- **Removed, per:** `0.9.0-decisions.md` D3 (`:67-117`), `STABILITY.md:60-62`,
|
|
172
|
+
`ref.md:259-286`, `architecture.md:110-111`, `docs/agents/AGENTS.full.md:215`,
|
|
173
|
+
`stash-conventions-code-spec.md:189-195`, and the **scaffolded stash asset**
|
|
174
|
+
`facts/conventions/organization.md` ("A rename is delete plus create. There
|
|
175
|
+
is no command that preserves an asset's identity or learned state").
|
|
176
|
+
- **Shipped, per:** `src/cli.ts:98,529`; `src/commands/mv-cli.ts` (1,300+ LOC)
|
|
177
|
+
whose header states it re-keys the index row, usage_events history, and
|
|
178
|
+
state.db salience rows **in place** — the exact inverse of D3's contract —
|
|
179
|
+
and `docs/reference/cli.md:888-921` documenting it as live. `mv-cli.ts`
|
|
180
|
+
self-labels "Experimental — see STABILITY.md", but STABILITY.md has no `mv`
|
|
181
|
+
tier entry. D3's cleanup item (delete the `mv` fs-txn kind) is also
|
|
182
|
+
unexecuted (`MV_TXN_KIND`, `mv-cli.ts:300`).
|
|
183
|
+
- **Cost of ambiguity:** agents reading the shipped conventions fact avoid the
|
|
184
|
+
safe command and hand-roll the dangerous procedure it automates.
|
|
185
|
+
|
|
186
|
+
### Q-02 — Ref-prefix browse grammar: slash (decided) vs colon (implemented)
|
|
187
|
+
|
|
188
|
+
- **Decided grammar (slash), per:** D4, `STABILITY.md:50-52` (**Stable tier**),
|
|
189
|
+
`ref.md:159-186`, `docs/guides/concepts.md:237-253` ("that spelling is
|
|
190
|
+
gone"), `docs/reference/cli.md:338,344`, and `akm hints` output
|
|
191
|
+
(`akm search "memories/projectA/"`).
|
|
192
|
+
- **Implemented grammar (colon), per:** `parseRefPrefixQuery`
|
|
193
|
+
(`src/indexer/search/fts-query.ts:85-102`) accepts exactly
|
|
194
|
+
`<singular-type>:` / `<singular-type>:<prefix>/`; no-colon queries return
|
|
195
|
+
`null` and fall through to keyword FTS. Bundle enumeration (`bundle//`) has
|
|
196
|
+
**no code path**. `search --help` (`search-cli.ts:36`) documents the colon
|
|
197
|
+
form; tests pin it (`tests/integration/search-ref-prefix.test.ts:160,184,348`).
|
|
198
|
+
- **[verified live]** `akm search "memories/"` → keyword search (returned an
|
|
199
|
+
unrelated fact); `akm search "memory:"` → actual type enumeration.
|
|
200
|
+
- Note: `akm hints` shows BOTH spellings (`"memories/projectA/"` and
|
|
201
|
+
`"knowledge:"`) — the tool's own agent guidance is internally split.
|
|
202
|
+
|
|
203
|
+
### Q-03 — `akm show` view modes: decided deleted, still live and advertised
|
|
204
|
+
|
|
205
|
+
- **Deleted, per:** D2 (`0.9.0-decisions.md:44-63`), `ref.md:144-157` — the
|
|
206
|
+
positional `toc|section|lines|frontmatter|full` grammar, `normalizeShowArgv`,
|
|
207
|
+
and the hidden `--akmView/--akmHeading/--akmStart/--akmEnd` flags.
|
|
208
|
+
- **Live, per:** `show.ts:672` (`SHOW_VIEW_MODES`), `show.ts:695-766`
|
|
209
|
+
(`normalizeShowArgv`), invoked pre-citty at `src/cli.ts:605`; the view modes
|
|
210
|
+
are the headline example in `show --help` and in `akm hints`.
|
|
211
|
+
|
|
212
|
+
### Q-04 — `--format` universality: a Stable-tier contract with no implementation
|
|
213
|
+
|
|
214
|
+
- **Contract, per:** D7, `STABILITY.md:70-77`: all six formats on every
|
|
215
|
+
non-exempt command; exemptions "declared, documented, and warned about
|
|
216
|
+
rather than silent".
|
|
217
|
+
- **Code:** `html` throws for every command except `health`
|
|
218
|
+
(`src/cli/shared.ts:208-215`; health intercept `src/cli.ts:341`); `md`
|
|
219
|
+
silently returns the JSON envelope except for health (`shared.ts:201-207`);
|
|
220
|
+
`text` falls back to `JSON.stringify` where no renderer is registered
|
|
221
|
+
(`shared.ts:196-199`); no exemption registry exists (0 hits for
|
|
222
|
+
`FORMAT_EXEMPT`). `USAGE_HINTS.INVALID_FORMAT_VALUE`
|
|
223
|
+
(`src/core/errors.ts:111`) lists only four of the six accepted values.
|
|
224
|
+
- **Related asymmetry:** persisted `output.format` schema accepts only
|
|
225
|
+
`json|yaml|text` (`src/core/config/schema/output.ts:15`) while the CLI flag
|
|
226
|
+
accepts six — a saved `md` preference is silently dropped.
|
|
227
|
+
|
|
228
|
+
### Q-05 — `experimental.workflowEngine` / `experimental.improveAutonomy`: documented gates, zero code
|
|
229
|
+
|
|
230
|
+
- **Contract, per:** `STABILITY.md:192-218` (gate table; "a gated lane never
|
|
231
|
+
degrades into a silent no-op"), D8 (`0.9.0-decisions.md:226`),
|
|
232
|
+
`0.9.0-release-surface-review.md:438,517,522`.
|
|
233
|
+
- **Code:** zero occurrences of `experimental` / `workflowEngine` /
|
|
234
|
+
`improveAutonomy` in `src/` or `schemas/akm-config.json`; `akm workflow run`
|
|
235
|
+
(`workflow-cli.ts:331`) is ungated. Because the top-level schema is
|
|
236
|
+
`.passthrough()`, setting the keys is accepted and inert — precisely the
|
|
237
|
+
silent no-op the contract forbids.
|
|
238
|
+
- **Question:** are the gates still intended for 0.9.0 final, or is the
|
|
239
|
+
STABILITY.md section to be dropped?
|
|
240
|
+
|
|
241
|
+
### Q-06 — Fragment refs (`#fragment`): implemented for `show` only
|
|
242
|
+
|
|
243
|
+
- D1 (`0.9.0-decisions.md:19-40`) and `ref.md:111-142` declare the fragment
|
|
244
|
+
production resolved. `parseRefInput` still throws `INVALID_FLAG_VALUE` on
|
|
245
|
+
any fragment (`resolve-ref.ts:255-264`; docblock: "No input boundary
|
|
246
|
+
consumes an export fragment"). `show` works by bypassing it
|
|
247
|
+
(`show.ts:312,370,390-397`).
|
|
248
|
+
- **Question:** is "show only" the intended scope of D1, or an incomplete
|
|
249
|
+
rollout across the other ref-consuming commands?
|
|
250
|
+
|
|
251
|
+
### Q-07 — Opaque adapter conceptIds (the OKF/format-agnostic promise)
|
|
252
|
+
|
|
253
|
+
- **Contract, per:** `okf-support.md:42-45` (item 5) and D11
|
|
254
|
+
(`0.9.0-decisions.md:302-313`): `okfbundle//tables/customers` must be
|
|
255
|
+
accepted by "show and other applicable ref-consuming commands"; the
|
|
256
|
+
leading-segment (known type dir) requirement "is therefore an OKF support
|
|
257
|
+
bug". `ref.md:33-37,84-86`: conceptIds are opaque paths.
|
|
258
|
+
- **Code:** `typeNameFromConceptId` requires a known stash subdir and
|
|
259
|
+
`parseRefInput` throws otherwise (`resolve-ref.ts:230-236,265-271`). Only
|
|
260
|
+
`show` bypasses. Still routed through the strict parser: graph
|
|
261
|
+
(`graph.ts:634`), tasks (`validator.ts:46,76`, `runner.ts:361,578`), improve
|
|
262
|
+
(`improve.ts:460`), proposals repo (`proposals-repository.ts:62`), utility
|
|
263
|
+
repo (`index-utility-repository.ts:163`), indexer walk
|
|
264
|
+
(`path-resolver.ts:25`).
|
|
265
|
+
- **Question:** which commands are "applicable"? This is the single biggest
|
|
266
|
+
blocker to the stated agent/harness/format-agnostic direction.
|
|
267
|
+
|
|
268
|
+
### Q-08 — env/secret ref spelling: `env/prod` vs `env:prod`
|
|
269
|
+
|
|
270
|
+
- **Code canonical:** `env/<name>`, `secrets/<name>`; bare names auto-qualify
|
|
271
|
+
(`src/core/env-secret-ref.ts:55-62,128`).
|
|
272
|
+
- **Colon spellings taught by:** `secret --help` example
|
|
273
|
+
`akm secret path secret:deploy-key` (`secret-cli.ts:95`), `env set/unset`
|
|
274
|
+
help (`env-cli.ts:392,455`), the vault-removal signpost itself ("use `env:`
|
|
275
|
+
… or `secret:`", `env-secret-ref.ts:49`), `docs/agents/AGENTS.md:44-45`,
|
|
276
|
+
and `docs/migration/v0.8-to-v0.9.md` (TL;DR `akm env run env:<name>`;
|
|
277
|
+
"entries surface under `env:`").
|
|
278
|
+
- **[verified live]** `akm secret path secret:deploy-key` → `Secret not
|
|
279
|
+
found: secrets/secret:deploy-key`; `akm env path env:prod` → `Env not
|
|
280
|
+
found: env/env:prod`; slash and bare forms work.
|
|
281
|
+
- **Question:** should the colon forms be accepted as aliases (they are the
|
|
282
|
+
spelling every help surface teaches), or should every emitter be swept to
|
|
283
|
+
the slash form?
|
|
284
|
+
|
|
285
|
+
### Q-09 — `akm list --kind`: conceptual vs provider taxonomy
|
|
286
|
+
|
|
287
|
+
- **Docs:** `local | managed | remote` used consistently
|
|
288
|
+
(`docs/guides/sources-registries.md:52-56`, `docs/reference/cli.md:754-764`,
|
|
289
|
+
registry.md prose).
|
|
290
|
+
- **Code:** `VALID_SOURCE_KINDS = filesystem|git|npm|website`
|
|
291
|
+
(`sources-cli.ts:36-47`); every documented example exits 2.
|
|
292
|
+
- Both taxonomies are coherent (the lock-backed "managed" distinction exists
|
|
293
|
+
in code as a *behavioral* split — see backlog R-015). Which is the intended
|
|
294
|
+
user-facing axis?
|
|
295
|
+
|
|
296
|
+
### Q-10 — `curate --rerank`: two independent references, zero implementation
|
|
297
|
+
|
|
298
|
+
- Referenced by `docs/reference/cli.md:129` **and** live setup-wizard prose
|
|
299
|
+
(`src/setup/steps/connection.ts:365,424`). No such flag exists
|
|
300
|
+
(`search-cli.ts:119-137`). Designed-then-dropped, or specced-never-built?
|
|
301
|
+
- **Resolved (0.9.15, #951):** the setup-wizard reference is already gone;
|
|
302
|
+
the remaining `--rerank` / "curate reranks by intent" claims
|
|
303
|
+
(`docs/reference/cli.md`, `docs/guides/getting-started.md`,
|
|
304
|
+
`docs/guides/discover-and-load.md`, and the `curate` command description
|
|
305
|
+
in `search-cli.ts`) were deleted rather than implemented — no `--rerank`
|
|
306
|
+
flag or reranking behavior exists in `akm curate`. A `rerank` engine kind
|
|
307
|
+
(the lab's cross-encoder endpoint from the same fleet review) is real
|
|
308
|
+
feature work, not a doc fix, and is deferred to its own issue.
|
|
309
|
+
|
|
310
|
+
### Q-11 — `workflow create` hierarchical names
|
|
311
|
+
|
|
312
|
+
- `docs/reference/cli.md:574-577`: "Forward slashes are supported for
|
|
313
|
+
hierarchical names (e.g. `release/ship`)."
|
|
314
|
+
- Code: `assertFlatAssetName` rejects any `/` in `--name`
|
|
315
|
+
(`workflow-cli.ts:226`, `asset-create.ts:44-51`) — yet the post-combine
|
|
316
|
+
validation regex explicitly permits `/` (`workflow-cli.ts:228-229`), and
|
|
317
|
+
`--path` (undocumented in cli.md) reintroduces it. The regex permitting `/`
|
|
318
|
+
suggests the flat guard may be the later, unintended restriction.
|
|
319
|
+
|
|
320
|
+
### Q-12 — `--auto-accept` removal contract: two docs, two contracts, code matches neither
|
|
321
|
+
|
|
322
|
+
- D9 / `0.9.0-release-surface-review.md` E4: the strict 0.9 runtime "does not
|
|
323
|
+
parse" the flag (implies hard failure). `STABILITY.md:114-116`: "deprecated
|
|
324
|
+
and ignored; becomes a hard error in 0.10."
|
|
325
|
+
- Code: no such arg is declared and no deprecation warning exists — citty
|
|
326
|
+
silently drops it. Neither doc's signposting reaches the user.
|
|
327
|
+
|
|
328
|
+
### Q-13 — Registry stale-fallback windows: doc'd tiers may be a code regression
|
|
329
|
+
|
|
330
|
+
- `docs/reference/registry.md:325,345`: static-index has a "7-day stale
|
|
331
|
+
fallback"; skills-sh "up to 24 hours" on network failure.
|
|
332
|
+
- Code: no second window exists — `getRegistryIndexCache` returns `undefined`
|
|
333
|
+
past TTL (`registry-index-cache-repository.ts:80`); the stale branch in
|
|
334
|
+
`fetchCachedJson` (`registry-cache.ts:136-141`) can only fire within TTL.
|
|
335
|
+
The numbers are too specific to be invented, and the cache helper was
|
|
336
|
+
extracted with a "behaviour-preserving extraction" note (`:95-97`) —
|
|
337
|
+
possibly lost functionality rather than doc fiction.
|
|
338
|
+
|
|
339
|
+
### Q-14 — What is public surface? (the undocumented command families)
|
|
340
|
+
|
|
341
|
+
`akm lint`, `akm extract`, `akm backup`, `akm proposal drain`,
|
|
342
|
+
`akm improve canary`, and the workflow exec/driver family
|
|
343
|
+
(`run/brief/report/watch/abandon`) have **no section in
|
|
344
|
+
`docs/reference/cli.md`** (which calls itself authoritative), and STABILITY.md
|
|
345
|
+
assigns them no tier. Only `mv` is marked Experimental anywhere. Deliberate
|
|
346
|
+
hiding vs. doc debt is undecidable — and it matters for a 1.0 contract
|
|
347
|
+
freeze. A convention is needed: every registered command gets a tier
|
|
348
|
+
(stable/experimental/internal) and the reference either documents it or
|
|
349
|
+
explicitly lists it as internal.
|
|
350
|
+
|
|
351
|
+
### Q-15 — Wiki `raw/**` indexing vs "never indexed"
|
|
352
|
+
|
|
353
|
+
`docs/guides/wikis.md:60` (and adapter prose elsewhere) say `raw/` is
|
|
354
|
+
structural and "never indexed as pages". The llm-wiki adapter indexes
|
|
355
|
+
`raw/**.md` as first-class searchable documents with `type: "wiki-source"`
|
|
356
|
+
(`llm-wiki-adapter.ts:82-83,271,291` — "First-class addressable +
|
|
357
|
+
searchable"). Literally consistent ("not *pages*"), practically misleading.
|
|
358
|
+
Intended behavior or over-indexing?
|
|
359
|
+
|
|
360
|
+
### Q-16 — `functional-contract-patterns.md` §4: aspiration or contract?
|
|
361
|
+
|
|
362
|
+
7 of 12 "Recommended Contracts" have no implementation (`PathResolver`,
|
|
363
|
+
`MatchContributor`, `MetadataContributor`, `LintContributor`,
|
|
364
|
+
`ImproveContributor`, `IndexPostProcessor`, `AgentRunner`); §3.9 states the
|
|
365
|
+
`AgentRunner` seam as a *rule*, but the actual seam is
|
|
366
|
+
`RunnerSpec`/`executeRunner` (`runner-dispatch.ts`). Mark the doc as
|
|
367
|
+
aspirational, or reconcile the seam names.
|
|
368
|
+
|
|
369
|
+
### Q-17 — `runtime-boundary-design.md`: shipped, amended, or superseded?
|
|
370
|
+
|
|
371
|
+
Still written as an open brief with unchecked "Architect: investigate" boxes
|
|
372
|
+
(`:32-37,69-73,104-106,132-140`), yet both target files exist and are complete
|
|
373
|
+
(`src/storage/database.ts`, `src/runtime.ts` — all 11 tabled exports present).
|
|
374
|
+
Its "3 hard-import files" no longer match the tree. Originally flagged as
|
|
375
|
+
needing a status banner; ruled instead (see the rulings table): consolidate the
|
|
376
|
+
still-necessary details into the other architecture docs and retire the file.
|
|
377
|
+
|
|
378
|
+
### Q-18 — The `instruction` asset type: half-registered
|
|
379
|
+
|
|
380
|
+
Present in `KNOWN_TYPES`/`TYPE_PRESENTATION` (renderer + action builder),
|
|
381
|
+
absent from `PLACEMENT_SPECS` — so it is invisible to `akm info`, unbrowsable,
|
|
382
|
+
and its refs don't round-trip (`recognition-util.ts:92-106` vs
|
|
383
|
+
`asset-placement.ts:89-166`). Register fully or remove; either way, add a
|
|
384
|
+
compile-time exhaustiveness check tying the two registries together.
|
|
385
|
+
|
|
386
|
+
### Q-19 — Install-ref meta resolution: aspirational error message
|
|
387
|
+
|
|
388
|
+
`concepts.md:343` documents `akm show github:owner/repo//meta`, and
|
|
389
|
+
`showStashMeta`'s own error says "Run: akm add ${metaRef.origin}"
|
|
390
|
+
(`show.ts:149`) — but `resolveSourcesForOrigin` matches derived installation
|
|
391
|
+
ids that can never equal `github:owner/repo` (`origin-resolve.ts:18-23`,
|
|
392
|
+
`installations.ts:98-110`). Either the resolver lost install-ref support or
|
|
393
|
+
the doc + error message are aspirational.
|
|
394
|
+
|
|
395
|
+
---
|
|
396
|
+
|
|
397
|
+
## Part 2 — Verified drift register (docs describe behavior the code doesn't have)
|
|
398
|
+
|
|
399
|
+
### 2.1 STABILITY.md (contract-tier claims)
|
|
400
|
+
|
|
401
|
+
- **D-01** ✅ **Fixed** (D4 landed): slash enumeration incl. `bundle//` is the
|
|
402
|
+
implementation; the colon form is gone. Was: listed Stable; not implemented.
|
|
403
|
+
- **D-02** ✅ **Fixed as six formats** (D7 landed): registries + generic
|
|
404
|
+
md/html fallbacks + declared exemptions. NOTE the Q-04 collapse ruling is
|
|
405
|
+
still unresolved against this — see the Q-04 conflict note.
|
|
406
|
+
- **D-03** ✅ **Fixed** (Q-01 landed): STABILITY.md now carries the
|
|
407
|
+
Experimental `mv` entry and no removal claim.
|
|
408
|
+
- **D-04** Proposal status vocabulary wrong: doc says
|
|
409
|
+
`accepted/pending/proposed/rejected/archived` (`STABILITY.md:145-147`);
|
|
410
|
+
actual `ProposalStatus = pending|accepted|rejected|reverted`
|
|
411
|
+
(`proposal-types.ts:157`, `proposal-cli.ts:55`). `proposed` is an entry
|
|
412
|
+
*quality*, `archived` is not a status, `reverted` is documented nowhere.
|
|
413
|
+
- **D-05** ✅ **Fixed** (Q-12 landed, `2a68c7a`): warn-and-ignore implemented
|
|
414
|
+
incl. the scope-poisoning drop; see the corrected Q-12 status row.
|
|
415
|
+
|
|
416
|
+
### 2.2 Root `AGENTS.md` (contributor guidance)
|
|
417
|
+
|
|
418
|
+
- **D-06** Instructs configuring `llm.maxTokens` / `llm.timeoutMs` /
|
|
419
|
+
`llm.concurrency` in config.json (`AGENTS.md:46-48`) — a top-level `llm`
|
|
420
|
+
key is **hard-rejected** at load with exit 78
|
|
421
|
+
(`config-schema.ts:157-165`: "llm is retired in 0.9").
|
|
422
|
+
`docs/architecture/internals/indexing.md:6,78-89` repeats the retired keys,
|
|
423
|
+
as does a stale comment at `indexer.ts:1601`.
|
|
424
|
+
- **D-07** Error envelope documented as `{ok:false, error, code}`; code also
|
|
425
|
+
emits `hint` (`cli/shared.ts:93`). Exit-code table omits 4 (health warn,
|
|
426
|
+
`cli.ts:583`) and 70 (INTERNAL, `shared.ts:45`); same omission in
|
|
427
|
+
`docs/agents/AGENTS.md:60-67`.
|
|
428
|
+
|
|
429
|
+
### 2.3 `docs/reference/cli.md`
|
|
430
|
+
|
|
431
|
+
- **D-08** ◐ **Partial**: the global `--format` table now lists all six values
|
|
432
|
+
(`cli.md:18`, updated with D7); the `--output` global-flag row is **still
|
|
433
|
+
missing**. Remaining work: one table row. (Value set may shrink again if the
|
|
434
|
+
Q-04 collapse is chosen.)
|
|
435
|
+
- **D-09** `init` dir list stale: missing `tasks/`, `sessions/`, `facts/`
|
|
436
|
+
(13 dirs via `stashDirNames()`, `init.ts:126`, `asset-placement.ts:203`).
|
|
437
|
+
Note: Q-18's ruling adds an `instructions/` placement dir (13 → 14) — sweep
|
|
438
|
+
this item and D-46 after that change lands, regenerating from
|
|
439
|
+
`stashDirNames()` rather than re-hardcoding.
|
|
440
|
+
- **D-10** `akm.llm` indexing claim uses the retired key (see D-06).
|
|
441
|
+
- **D-11** ◐ **Partial**: `--report` and `--window-compare` are now documented
|
|
442
|
+
(health redesign, `0475870`) and `--compare` no longer exists to document;
|
|
443
|
+
`--group-by` and `--windows` still have no table row.
|
|
444
|
+
- **D-12** search: `--shape summary` described as a silent no-op alias of
|
|
445
|
+
brief (`cli.md:365,395`); code rejects it at startup and in the shape
|
|
446
|
+
registry (`cli.ts:632-634`, `shapes.ts:94-107`). cli.md:47-51 states the
|
|
447
|
+
correct behavior — the doc contradicts itself.
|
|
448
|
+
- **D-13** search `--type` list incomplete (missing `task`, `session`,
|
|
449
|
+
`fact`); undocumented flags `--belief` (table), `--no-project-context`,
|
|
450
|
+
`--include-sessions`. Shape-source pointer cites `src/output/shapes.ts` for
|
|
451
|
+
functions that live in `src/output/shapes/helpers.ts:342,385`.
|
|
452
|
+
- **D-14** show: `path`/`editable` are always projected, not `--detail full`
|
|
453
|
+
additions (`helpers.ts:492-495`); only `schemaVersion`/`editHint` are
|
|
454
|
+
full-only.
|
|
455
|
+
- **D-15** workflow: 5 of 14 subcommands undocumented (`run`, `brief`,
|
|
456
|
+
`report`, `watch`, `abandon`); `complete --summary` (required, gate-validated,
|
|
457
|
+
`workflow-cli.ts:112-132`) undocumented; `start --force`, `status --units`,
|
|
458
|
+
`complete --evidence` undocumented; hierarchical-name claim false (Q-11).
|
|
459
|
+
- **D-16** add: dangerous-env-key block exits **1**, not 2
|
|
460
|
+
(`add-cli.ts:200,221,355`); key list "23 total" vs 41 literals + 2 pattern
|
|
461
|
+
families (`env-key-rules.ts:35-109`); scan is top-level `env/*.env` only,
|
|
462
|
+
not "every file" (`add-cli.ts:87`).
|
|
463
|
+
- **D-17** list: `--kind` values wrong — all four documented examples exit 2
|
|
464
|
+
(Q-09). `remove --yes/-y` undocumented.
|
|
465
|
+
- **D-18** feedback/history/log: missing `--failure-mode`, repeatable `--tag`
|
|
466
|
+
(`feedback-cli.ts:212-222`); `history --include-proposals`,
|
|
467
|
+
`--accept-rate-by-source` (`sources-cli.ts:307-320`); `log --include-tags`,
|
|
468
|
+
`--exclude-tags` (`observability-cli.ts:53-60`).
|
|
469
|
+
- **D-19** registry: "four subcommands" (five exist; the doc itself documents
|
|
470
|
+
five); `registry remove --yes` undocumented.
|
|
471
|
+
- **D-20** config: `validate`, `show`, `enable`, `disable` subcommands and
|
|
472
|
+
`--silent` undocumented (`config-cli.ts:138-260`) — `validate` is
|
|
473
|
+
load-bearing (startup bypass allowlist, `cli.ts:575`) and `enable`/`disable`
|
|
474
|
+
are referenced by registry.md:347.
|
|
475
|
+
- **D-21** env: subcommand table omits `set`/`unset` (both registered,
|
|
476
|
+
`env-cli.ts:509-510`); `create --sensitive/--path/--target` never in a flag
|
|
477
|
+
table.
|
|
478
|
+
- **D-22** improve: `archiveRetentionDays` documented as `improve.*` with
|
|
479
|
+
default 30 — actually **top-level** with default **90**
|
|
480
|
+
(`config-schema.ts:149`, `repository.ts:1054`); `--skip-if-locked`,
|
|
481
|
+
`--sync/--no-sync`, `--push/--no-push` undocumented; `improve canary
|
|
482
|
+
[--refresh]` entirely undocumented (`improve-cli.ts:49,96,160-163`).
|
|
483
|
+
- **D-23** proposal: `drain` verb undocumented while cli.md:1991 asserts a
|
|
484
|
+
six-verb grammar (`proposal-cli.ts:339-383`, 8 flags); bulk
|
|
485
|
+
`--max-diff-lines`/`--older-than`/`--dry-run` undocumented.
|
|
486
|
+
- **D-24** tasks: `tasks_invoked`/`tasks_completed` events do not exist —
|
|
487
|
+
task runs write the `task_history` table, surfaced by `akm tasks history`,
|
|
488
|
+
not `akm log` (`runner.ts:24`, `task-history-repository.ts:112,162`);
|
|
489
|
+
`tasks add --disabled/--force/--rebind` and `init`'s CI skip undocumented.
|
|
490
|
+
- **D-25** `akm lint`, `akm extract`, `akm backup` have no cli.md section at
|
|
491
|
+
all (Q-14).
|
|
492
|
+
- **D-26** Cross-reference anchors into configuration.md don't exist
|
|
493
|
+
(`#defaultwritetarget`, `#memory-scope`, `#graph-boost-search-tuning`).
|
|
494
|
+
- **D-27** agent/propose: `agent --cwd`, `propose --path` undocumented.
|
|
495
|
+
|
|
496
|
+
### 2.4 `docs/reference/configuration.md`
|
|
497
|
+
|
|
498
|
+
- **D-28** 11 of 18 real top-level keys undocumented: `bundles`,
|
|
499
|
+
`defaultBundle`, `defaultWriteTarget`, `search`, `feedback`,
|
|
500
|
+
`archiveRetentionDays`, `output`, `semanticSearchMode`, `embedding`,
|
|
501
|
+
`registries`, `setup` (`config-schema.ts:120-153`). Several are
|
|
502
|
+
load-bearing for the CLI reference's own flows.
|
|
503
|
+
- **D-29** Environment table missing `AKM_DATA_DIR`, `AKM_CACHE_DIR`,
|
|
504
|
+
`AKM_STATE_DIR`, `XDG_*`, `AKM_VERBOSE`, `AKM_DEBUG`,
|
|
505
|
+
`AKM_DISABLE_PROJECT_CONTEXT`.
|
|
506
|
+
- **D-30** ✅ **Fixed** (D7): `output.format` schema widened to all six values
|
|
507
|
+
(`schema/output.ts`), schema regenerated. A saved `md` preference now works.
|
|
508
|
+
(Re-shrinks if the Q-04 collapse is chosen — keep in the Q-04 blast radius.)
|
|
509
|
+
|
|
510
|
+
### 2.5 `docs/reference/registry.md`
|
|
511
|
+
|
|
512
|
+
- **D-31** Teaches retired `config.installed` (`:219-221`) and `sources[]`
|
|
513
|
+
(`:316-317`) — both hard-rejected (`config-schema.ts:184-192`). Should be
|
|
514
|
+
`bundles`.
|
|
515
|
+
- **D-32** Lists retired `wiki` asset type (`:431`); cites
|
|
516
|
+
`src/core/asset/asset-spec.ts` as "the authority" — file does not exist.
|
|
517
|
+
- **D-33** `build-index` "scans the current directory" — it does not; it fans
|
|
518
|
+
out to manual entries + npm keyword search + GitHub topic search
|
|
519
|
+
(`build-index.ts:99-112`). Its command meta also says "v2" while emitting
|
|
520
|
+
`version: 3` (`registry-cli.ts:133`, `build-index.ts:112`).
|
|
521
|
+
- **D-34** Stale-fallback windows don't exist (Q-13). Cache layout shape
|
|
522
|
+
wrong (`provider-utils.ts:83-99`; no `<timestamp>-<random>` component).
|
|
523
|
+
|
|
524
|
+
### 2.6 `docs/reference/data-and-telemetry.md`
|
|
525
|
+
|
|
526
|
+
- **D-35** `logs.db` missing from the data-directory table — a third durable
|
|
527
|
+
database (`logs-db.ts:6,55-60`); the "safe to delete" guidance is
|
|
528
|
+
incomplete. (roadmap.md:39-41 names it correctly.)
|
|
529
|
+
- **D-36** Maps events to nonexistent commands: `akm distill` (no such
|
|
530
|
+
command), `akm lint --repair` (flag is `--fix`);
|
|
531
|
+
`workflow_step_completed/updated` attributed to `workflow next` — emitted
|
|
532
|
+
by `complete` (`runs.ts:707-719`).
|
|
533
|
+
- **D-37** "Full event type list" (~33 rows) vs ≥53 emitted types; missing
|
|
534
|
+
include `improve_invoked` (which cli.md:234 relies on), `llm_usage`, `mv`
|
|
535
|
+
(documented at cli.md:965!), `env_access`, `secret_access`,
|
|
536
|
+
`workflow_unit_*`, `collapse_detector_alert`, and ~15 more.
|
|
537
|
+
- **D-38** `akm log list --limit 20` — `log list` has no `--limit`
|
|
538
|
+
(`observability-cli.ts:46-61`); only `tail --max-events`.
|
|
539
|
+
- **D-39** Retired `stashDir` config override taught (`:71`); still says
|
|
540
|
+
"0.8.0" (`:237`); lists `wikis` as a stash dir (`:68`).
|
|
541
|
+
|
|
542
|
+
### 2.7 `docs/reference/akm-eval.md`
|
|
543
|
+
|
|
544
|
+
- **D-40** "Three runner types" — nine exist (`scripts/akm-eval/src/types.ts:7-16`);
|
|
545
|
+
`reflect-quality` and `planner-waste` never mentioned though both ship
|
|
546
|
+
runners and cases. `improve-smoke` case count "8" — 12 case files ship.
|
|
547
|
+
Cites `src/core/proposals.ts` (does not exist).
|
|
548
|
+
|
|
549
|
+
### 2.8 `docs/guides/*`
|
|
550
|
+
|
|
551
|
+
- **D-41** concepts.md: prefix-grammar claims (Q-02); `wikis/` as a stash
|
|
552
|
+
type dir (no `wiki` placement spec; llm-wiki probe is bundle-root
|
|
553
|
+
`schema.md`+`pages/`, `llm-wiki-adapter.ts:429-436`); `akm mv` removal
|
|
554
|
+
claim (Q-01); belief filter "default current for memory search" — default
|
|
555
|
+
is `all` everywhere (`search-cli.ts:62`, `search.ts:166`).
|
|
556
|
+
- **D-42** search-discovery.md: `ref` availability stated backwards — present
|
|
557
|
+
at `brief` (the default), absent at `normal`, per the REC-03 comment
|
|
558
|
+
(`helpers.ts:366-379`).
|
|
559
|
+
- **D-43** sources-registries.md: `--kind local|managed|remote` examples all
|
|
560
|
+
exit 2 (Q-09).
|
|
561
|
+
- **D-44** knowledge-management.md: `remember --name ops/prod-secrets`
|
|
562
|
+
rejected by the flat-name guard (`remember-cli.ts:151`,
|
|
563
|
+
`asset-create.ts:44-51`) — correct form is `--path ops --name prod-secrets`;
|
|
564
|
+
"akm does not edit entries" contradicted by `env set`/`unset` (and by the
|
|
565
|
+
same doc 17 lines later); secrets documented under `env/` — they live in
|
|
566
|
+
`secrets/` (`asset-placement.ts:135-140`).
|
|
567
|
+
- **D-45** improvement-loop.md: `feedback --negative` without `--reason`
|
|
568
|
+
fails (`requireReason` defaults true, `feedback-cli.ts:271-283`);
|
|
569
|
+
`log list --since 7d` unsupported (strict ISO parser, `time.ts:86-108`;
|
|
570
|
+
shorthand is health-only); "there is no auto-accept threshold" — false: the
|
|
571
|
+
doc-recommended `proactive-maintenance` strategy ships
|
|
572
|
+
`applyMode:"promote", maxAcceptsPerRun:100`
|
|
573
|
+
(`assets/improve-strategies/proactive-maintenance.json`,
|
|
574
|
+
`improve.ts:804-830`), and `proposal drain --apply` is a second promote
|
|
575
|
+
surface.
|
|
576
|
+
- **D-46** getting-started.md: setup dir list includes `wikis/` (never
|
|
577
|
+
created) and omits `tasks/`, `sessions/`, `facts/`.
|
|
578
|
+
- **D-47** agent-integration.md: `akm show "npm:@scope/pkg//…"` /
|
|
579
|
+
`"github:owner/repo//…"` rejected by the bundle-slug charset
|
|
580
|
+
(`asset-ref.ts:65,156-161`); concepts.md:214-215 correctly restricts
|
|
581
|
+
install refs to `add`/`clone` — the two guides contradict each other.
|
|
582
|
+
- **D-48** stash-makers.md: `dangerous-vault-key` issue code stale (actual
|
|
583
|
+
`dangerous-env-key`, `env-key-rules.ts:175`); "and 20 others" undercounts
|
|
584
|
+
(41 + patterns); `wikis/` layout again.
|
|
585
|
+
- **D-49** claude-code-vs-akm-workflows.md Parts B–E describe the pre-engine
|
|
586
|
+
world: "akm does not execute workflow steps" / "strictly sequential" /
|
|
587
|
+
"no workers" / "two tables" / "a workflow is a document, not a program" —
|
|
588
|
+
overtaken by `workflow run`'s native executor, fan-out scheduler with
|
|
589
|
+
concurrency caps, worktree isolation, `workflow_run_units` + migrations
|
|
590
|
+
004/005, and YAML v2 programs. Part F lists `watch` (NDJSON stream) and
|
|
591
|
+
fan-out as future work; both shipped. Subcommand list missing five verbs.
|
|
592
|
+
- **D-50** `.github/README.npm.md`: "community skills from skills.sh in a
|
|
593
|
+
single query" — the skills.sh registry ships `enabled: false`
|
|
594
|
+
(`config.ts:109-112`). README asset-type tables list 12 types, omitting
|
|
595
|
+
`session` (concepts.md says thirteen).
|
|
596
|
+
|
|
597
|
+
### 2.9 `docs/architecture/*` (architecture.md + internals)
|
|
598
|
+
|
|
599
|
+
- **D-51** Dead files/symbols cited as authoritative:
|
|
600
|
+
`src/core/asset/asset-spec.ts` + re-export shims `src/core/asset-spec.ts`,
|
|
601
|
+
`src/core/asset-ref.ts`, `src/core/config.ts` (architecture.md:34,451-453);
|
|
602
|
+
`TYPE_DIRS` (storage-locations.md:445); `parseAssetRef`
|
|
603
|
+
(improve-workflow.md:199); `akmManifest()` (search.md:217-222);
|
|
604
|
+
fact-asset-type.md implementation table — 5 of 9 rows dead.
|
|
605
|
+
- **D-52** `RegistryProvider` documented with `searchKits/searchAssets/getKit/
|
|
606
|
+
canHandle` (architecture.md:279-287); the real contract is a single
|
|
607
|
+
`search()` (`registry/providers/types.ts:35-45`).
|
|
608
|
+
- **D-53** storage-locations.md documents on-disk proposal stores
|
|
609
|
+
(`.akm/proposals/<uuid>/`, archive dirs) and `.akm/graph.json` — proposals
|
|
610
|
+
are a `state.db` table ("archival is a status flip",
|
|
611
|
+
`proposal/repository.ts:16-24`); graph lives in `index.db` tables; 0 refs
|
|
612
|
+
to graph.json in `src/`. `backupExistingConfig` attributed to paths.ts —
|
|
613
|
+
lives in `config-io.ts:111`.
|
|
614
|
+
- **D-54** indexing.md table inventory: 6 tables documented, 14+ created
|
|
615
|
+
(`index-schema.ts` — adds `index_dir_state`, `llm_enrichment_cache`,
|
|
616
|
+
`registry_index_cache`, `utility_scores_scoped`, `graph_*`). The former FTS
|
|
617
|
+
dirty queue was removed when entry mutations took ownership of their FTS
|
|
618
|
+
projection.
|
|
619
|
+
- **D-55** architecture.md: `wiki` listed as built-in type mapped to `wikis/`
|
|
620
|
+
(retired; `recognition-util.ts:80-106`); `pushOnCommit` "deprecated" —
|
|
621
|
+
actually hard-rejected (`sources-bundles.ts:31-35`); `renderers.ts`
|
|
622
|
+
"replaced" — still exists and self-registers (592+ lines); static-index
|
|
623
|
+
described as v2-only (code reads v2/v3).
|
|
624
|
+
- **D-56** akm-0.9.0-bundle-adapter-spec.md: `akm bundle rename` cited as
|
|
625
|
+
first-class — the `bundle` group was removed by D5; the 7 optional facet
|
|
626
|
+
methods (§2) are deliberately deferred in code
|
|
627
|
+
(`bundle-adapter.ts:113-120` "DEFERRED … FLAGGED for maintainer") with no
|
|
628
|
+
status marker in the spec.
|
|
629
|
+
- **D-57** fresh-host-rebuild-runbook.md: retired `stashDir` key
|
|
630
|
+
(`:26-27`).
|
|
631
|
+
|
|
632
|
+
### 2.10 `docs/agents/*` (the agent-facing docs)
|
|
633
|
+
|
|
634
|
+
- **D-58** AGENTS.full.md documents the removed `akm wiki` family in full
|
|
635
|
+
(`:50,64,67,131-163`) — `list|create|show|pages|search|stash|lint|ingest|
|
|
636
|
+
remove`, `--type wiki`, `--wiki`, `show wiki:<name>`, wiki exit codes.
|
|
637
|
+
AGENTS.md repeats `wiki list/stash/ingest` (`:21-24,46`).
|
|
638
|
+
stash-conventions-code-spec.md cites `src/wiki/wiki.ts` (no such dir).
|
|
639
|
+
Note the migration guide records the *intent*: the family was deliberately
|
|
640
|
+
removed in 0.9.0 in favor of the `llm-wiki` bundle format — these docs and
|
|
641
|
+
the shipped hints corpus (backlog R-001) were never swept.
|
|
642
|
+
- **D-59** AGENTS.md teaches `env run env:<name>` / `secret run
|
|
643
|
+
secret:<name>` — both 404 (Q-08) **[verified live]**.
|
|
644
|
+
- **D-60** AGENTS.full.md `akm search "knowledge:"` works only because the
|
|
645
|
+
retired colon grammar is still the implementation (Q-02); AGENTS.md:107
|
|
646
|
+
omits the `reverted` proposal status.
|
|
647
|
+
- **D-61** agent-install.md: `stashDir`/`sources` listed as valid
|
|
648
|
+
`setup --config` keys and `akm config get stashDir` shown — both
|
|
649
|
+
hard-rejected/unresolvable (`config-schema.ts:181-189,382`).
|
|
650
|
+
|
|
651
|
+
### 2.11 `docs/migration/v0.8-to-v0.9.md`
|
|
652
|
+
|
|
653
|
+
- **D-62** Verification snippet `akm info --format=json | jq -r .stashDir`
|
|
654
|
+
fails — `InfoResponse` has no `stashDir` field (`info.ts:64-78`)
|
|
655
|
+
**[verified live]**.
|
|
656
|
+
- **D-63** TL;DR teaches `akm env run env:<name> -- <command>` (404s, Q-08);
|
|
657
|
+
"entries surface under `env:`" uses the retired spelling.
|
|
658
|
+
|
|
659
|
+
### 2.12 In-CLI doc surfaces (shipped assets, help text)
|
|
660
|
+
|
|
661
|
+
Tracked in the backlog (R-001..R-006, R-052) and repeated here for
|
|
662
|
+
completeness because they are documentation in the product's own voice:
|
|
663
|
+
`akm hints` documents the removed wiki family and drifts by install method;
|
|
664
|
+
`show --format text` renders `type:name` feedback commands; `feedback` help
|
|
665
|
+
contradicts the immediate EMA update; a hint references `akm events list`;
|
|
666
|
+
the scaffolded conventions fact contradicts `akm mv`; bash completions
|
|
667
|
+
advertise `--detail summary` and omit `md/html`.
|
|
668
|
+
|
|
669
|
+
---
|
|
670
|
+
|
|
671
|
+
## Part 3 — Code that still emits the retired `type:name` grammar
|
|
672
|
+
|
|
673
|
+
The grammar decision (`STABILITY.md:42`, `ref.md:106`, D-R3 "nowhere after
|
|
674
|
+
the flip") is violated by live **output**, not just docs:
|
|
675
|
+
|
|
676
|
+
- **E-01** `formatRefForMessage()` returns `origin//type:name`
|
|
677
|
+
(`write-source.ts:1148-1158`) — used in **git commit subjects**
|
|
678
|
+
(`knowledge.ts:786`), env/secret boundary commits
|
|
679
|
+
(`env-secret-ref.ts:273`), and write errors (`write-source.ts:317,343`).
|
|
680
|
+
- **E-02** `sources/resolve.ts:46,58,67,82` — "Stash asset not found for
|
|
681
|
+
ref: ${type}:${name}".
|
|
682
|
+
- **E-03** `show.ts:393` — "Fragments are not supported for
|
|
683
|
+
${displayType}:${displayName}".
|
|
684
|
+
- **E-04** `mv-cli.ts:1052,1064,1080` — error text renders
|
|
685
|
+
`${source.type}:${source.name}`.
|
|
686
|
+
- **E-05** The `show` APPLY footer (`show-directives.ts:26,57,75,87`) —
|
|
687
|
+
backlog R-002.
|
|
688
|
+
- **E-06** env/secret help examples and the vault signpost (Q-08).
|
|
689
|
+
- **E-07** ◐ **Partial** (re-verified 2026-07-27): the `search --help` and
|
|
690
|
+
`akm hints` prefix examples were swept to slash with D4. Survivors:
|
|
691
|
+
`sources-cli.ts:213` clone example (`npm:@scope/pkg//script:deploy.sh`),
|
|
692
|
+
five `skill:akm-dream` examples in `proposal-cli.ts` (`:98,178,271,304` +
|
|
693
|
+
one), and `init.ts:152`'s `memory:…` reference. All are one-line help-string
|
|
694
|
+
edits — batch into the Part 5 step-2 sweep.
|
|
695
|
+
|
|
696
|
+
---
|
|
697
|
+
|
|
698
|
+
## Part 4 — False alarms and verified-clean surfaces
|
|
699
|
+
|
|
700
|
+
Recorded so future audits don't re-litigate.
|
|
701
|
+
|
|
702
|
+
- **`migrate apply --dry-run` is NOT broken.** The arg is declared camelCase
|
|
703
|
+
(`dryRun`, `migrate-cli.ts:28`), and an audit flagged that citty might not
|
|
704
|
+
bind `--dry-run` to it — a real apply masquerading as a dry run.
|
|
705
|
+
**[verified live]**: citty auto-camelizes; `--dry-run` binds to both
|
|
706
|
+
`args.dryRun` and `args["dry-run"]`. However, this disproves the comment at
|
|
707
|
+
`src/output/context.ts:87-93` ("citty does not auto-camelise hyphenated arg
|
|
708
|
+
keys") — the codebase's quoted-kebab arg convention rests on a false
|
|
709
|
+
premise, worth a note where that comment lives.
|
|
710
|
+
- **Verified clean:** `docs/reference/roadmap.md` (no shipped-but-absent or
|
|
711
|
+
future-but-present items) and `docs/reference/wiki-snapshot-fetchers.md`
|
|
712
|
+
(every claim matches `snapshot-fetchers/registry.ts`, `types.ts`,
|
|
713
|
+
`website-ingest.ts`).
|
|
714
|
+
- **Verified exact:** the model-alias table in agent-integration.md matches
|
|
715
|
+
`model-aliases.ts:45-76` byte-for-byte; storage paths, search/curate
|
|
716
|
+
defaults and limits, website crawl caps (50 pages / depth 3 / 12h),
|
|
717
|
+
`tasks` subcommands incl. `--rebind`, `env run --clean`,
|
|
718
|
+
`secret run <ref> <VAR> -- cmd`, completions XDG install path,
|
|
719
|
+
`history` oldest-first ordering, "installation is not activation"
|
|
720
|
+
(`activation-policy.ts`), and workflow `complete --summary` gating all
|
|
721
|
+
check out against code.
|
|
722
|
+
- **Stale code comment that misled the audit itself:**
|
|
723
|
+
`llm-wiki-adapter.ts:63-64` claims the adapter barrel is test-only;
|
|
724
|
+
`core/adapter/registry.ts:33` imports it in production. The adapter is
|
|
725
|
+
live; the comment is wrong.
|
|
726
|
+
|
|
727
|
+
---
|
|
728
|
+
|
|
729
|
+
## Part 5 — Suggested triage order
|
|
730
|
+
|
|
731
|
+
1. **Rulings — done 2026-07-26** (all 19; see the Part 1 table). They decided
|
|
732
|
+
whether ~40% of Part 2 is doc work or code work. Of the execute-first trio,
|
|
733
|
+
**Q-02 has landed** (slash enumeration incl. `bundle//`, colon form gone);
|
|
734
|
+
Q-07's renderer half landed (`usesIndexedProjection`) with the parser half
|
|
735
|
+
open; Q-08 is untouched. Q-08 and Q-07's parser seam are now the
|
|
736
|
+
highest-leverage remaining code items.
|
|
737
|
+
2. **Sweep the agent-copy-paste surfaces** (Part 3 + §2.10/2.12): everything
|
|
738
|
+
an agent will paste from — hints, help examples, error messages, the show
|
|
739
|
+
footer, AGENTS.md — should speak one grammar.
|
|
740
|
+
3. **Re-tier STABILITY.md** so nothing marked Stable is unimplemented and
|
|
741
|
+
every registered command has a tier (Q-14).
|
|
742
|
+
4. **Mechanical doc sweep** for the remainder of Part 2, ideally with a CI
|
|
743
|
+
check that executes every fenced `akm …` example in docs/ against a
|
|
744
|
+
scratch stash (the `--kind`, `--since 7d`, `remember --name a/b`, and
|
|
745
|
+
colon-spelling failures would all have been caught by running the docs).
|