@rasensio/aidlc-content 1.73.1 → 1.75.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -150,3 +150,27 @@ deliberate:
150
150
 
151
151
  The same shape guards the coverage cache in `src/traceability/cache.ts`, which is where the pattern
152
152
  came from.
153
+
154
+ ## When a source file breaks
155
+
156
+ A merge that leaves conflict markers in `modules.yaml`, or a hand edit that makes one document
157
+ unparseable, takes that document out of the index. That part is right: the YAML is the source of
158
+ truth, and keeping the old rows would be serving stale facts again. What was wrong is that nobody
159
+ was told. The parser named the file in a warning that nothing printed, and when no entity was left
160
+ the `# Codebase Knowledge` block simply disappeared from `CLAUDE.md` — a shrinking diff in a
161
+ generated file, the exact shape of thing six instances had already filed as noise.
162
+
163
+ So `aidlc update` and `aidlc init` now print `knowledge graph: <file>: …` for every broken source,
164
+ and say so when the block is left out. Three choices behind that:
165
+
166
+ - **The warning is read from the files on every run**, not only on the run that rebuilt the index.
167
+ Whichever command opens the index first after a merge does the rebuild; if that was `aidlc gate`,
168
+ the warning used to be gone before `aidlc update` ever saw it. That costs one extra parse on those
169
+ two commands — 70–160 ms here — and nothing anywhere else.
170
+ - **A document the index cannot store is skipped and named, not thrown.** A `description:` holding a
171
+ map used to fail the whole rebuild with "cannot be bound to SQLite parameter 4", which names
172
+ neither the file nor the field. The rule is what the index actually refuses, measured against it,
173
+ rather than the stricter rules `aidlc knowledge add` enforces — applying those on read would drop
174
+ facts that index fine today.
175
+ - **`compact` is the exception.** It rewrites the YAML from what it read, so skipping a document there
176
+ would delete it from the source of truth rather than from a cache. It still reads everything.
package/docs/roadmap.md CHANGED
@@ -481,8 +481,12 @@ the two differ.
481
481
  not-asked, yes, and an explicit no are three different answers, and collapsing any two of them
482
482
  makes a re-run of `init` delete somebody's configuration.
483
483
  - `packages/cli/src/doctor/migrations/roadmap-sync-gh-missing.ts` — the report-tier check. It
484
- spawns nothing at all: the primary checkout comes from `ctx.gitCommonDir`, already resolved, not
485
- from `primaryCheckout()`, which shells out to `git rev-parse`.
484
+ spawns nothing at all: the primary checkout comes from `ctx.primaryProjectRoot`, resolved once by
485
+ doctor, not from `primaryCheckout()`, which shells out to `git rev-parse`. It used to derive the
486
+ directory itself from the git common dir, which gave the repository's top — and for a project
487
+ below the top, a config with no `roadmap.sync`, so the check stayed silent. Every roadmap read and
488
+ write resolves the primary checkout's copy of the *project*, not of the repository, for the same
489
+ reason.
486
490
  - `packages/content/resources` — a portable version of the item-authoring skill, loadable into any
487
491
  agent, so a contributor with no checkout can write an item and commit it to `inbox/`.
488
492
  - `packages/cli/src/operational` — the `roadmap-done` completion action. Its history is instructive:
@@ -65,7 +65,16 @@ inside it before starting the agent session.
65
65
  ## Where the code lives
66
66
 
67
67
  - `packages/cli/src/concurrency` — the claim store, staleness logic, and worktree helpers.
68
- `claim-store.ts` is the single place a claim is written or read.
68
+ `claim-store.ts` is the single place a claim is written or read. `common-dir.ts`
69
+ `primaryProjectRoot` is the one answer to "the primary checkout's copy of this project", which
70
+ the roadmap, the `aidlc start` concurrency check, autopilot and doctor all use. It is the
71
+ repository's top *joined with the project's path inside it*, because a project can sit below the
72
+ top — a monorepo package. Its predecessor returned the top alone, and for such a project the
73
+ concurrency check told a second session in the same checkout it had "nothing to collide on",
74
+ while the roadmap read a `.aidlc/` that did not exist. It was deleted rather than kept beside the
75
+ new one: a helper answering the wrong question is how one mistake reached five callers.
76
+ `aidlc start --worktree` in a nested project still writes to the new worktree's top; that is
77
+ item-20261009-worktree-start-in-nested-project.
69
78
  - `packages/cli/src/state` — instance folders, `phase-<name>.yaml`, and the append-only
70
79
  `transitions.log`.
71
80
  - `packages/cli/src/commands/claim.ts` — the `claim` and `release` commands, which also write the
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rasensio/aidlc-content",
3
- "version": "1.73.1",
3
+ "version": "1.75.0",
4
4
  "type": "module",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",