@danieltechdev/blueprint-tracker
v0.1.1
Published
Pure parser, board model, and validator for the cosmere estate blueprint corpus (Blueprint 35/41) — the single source of truth shared by the bp CLI, the estate-kb MCP, and the docs BlueprintBoard.
Downloads
187
Readme
bp-tracker
Blueprint tracker for the estate blueprint corpus — Blueprint 35, Milestone M1.
The blueprint markdown frontmatter is the single source of truth. Everything
here is a projection of it: the bp CLI dashboard (M1), the docs-site board
(M2), and the one-way task-MCP projection (M3). The board is a mirror, never a
master — bidirectional sync is forbidden by construction (BP35 minefield 1).
Layout
src/core/— pure functions, zero dependencies, no fs/network:parseBlueprint,validateCorpus,buildBoard,taskIdFor+planTaskSync+applyTaskSyncPlan,serializeFrontmatter.src/cli/— thebpCLI. All file access goes through the injectableBlueprintStoreinterface; the task projection goes through the injectableTaskSinkinterface (M1 ships in-memory/no-op implementations only; real Firestore wiring is M3).src/index.ts— public API consumed by the M2 Astro endpoint.
CLI
bp list list all blueprints with frontmatter
bp board render the blueprint board in the terminal
bp lint validate the corpus (exit 1 on errors)
bp status <id> <state> set a blueprint's status (surgical frontmatter edit)
bp link <id> <url> append a link to a blueprint's frontmatter
bp backfill [--write] infer frontmatter for legacy files (dry run by default)Default corpus directory: /root/knowledge-base/fable-blueprints (override
with --directory). The KB file is always the master; the docs-site copy under
danieltech-kb/src/content/docs/blueprints/ is downstream and gets overwritten
by the sync script (BP35 minefield 5) — never edit it.
bp status / bp link are the only writers and perform a surgical frontmatter
edit: only the frontmatter block is replaced, the body bytes stay verbatim
(guarded by a fast-check round-trip property). bp backfill is a dry run that
prints a review table; nothing is written without --write and a human reading
that table first.
Gates
npm run lint && npm test && npm run typecheckPlus npm run analyze:deps (dependency-cruiser enforces that src/core never
imports fs/network/CLI code), npm run analyze:deadcode (knip),
npm run lint:secrets (secretlint).
