From 0a7271136a642a5ada2f4def264a43be51141fcc Mon Sep 17 00:00:00 2001 From: meels Date: Tue, 28 Jul 2026 14:58:12 +0200 Subject: [PATCH] Specify the coverage file shape and wire Workflow A into Workflow D (I4, I5) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - I4: added a fourth Required Page Template for wiki/script-coverage.md spelling out the exact positional shape parseCoverageTable requires (metadata line syntax, column order, station spelling, lowercase all/yes) — Workflow D described the fields but never the shape, so a compliant write could still fail every parse. Also spelled out the seven station names in Workflow D step 3 and resolved the step 4 (pinned rows are protected) vs step 5 (stale rows are removed) ambiguity for a pinned row whose concept page is gone. - I5: added Workflow A step 9, pointing any ingest that touches wiki/concepts/ at Workflow D before reporting — previously that trigger lived only inside Workflow D's own list, so an ingest run top to bottom never synced coverage and the right pane went stale silently. - log.md: added "sync" to the intent docstring's valid values (Workflow D already required it) and corrected the 2026-07-28 entry's attribution — the concept grouping lives in index.md, not in script-coverage.md itself. --- CLAUDE.md | 31 ++++++++++++++++++++++++++++++- log.md | 4 ++-- 2 files changed, 32 insertions(+), 3 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 234ea52..fc27eef 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -122,6 +122,29 @@ Must include: - Follow-up questions - Whether this output changed existing pages +### 4) Coverage File (`wiki/script-coverage.md`) + +Machine-read by the dashboard plugin, which parses the table positionally. The +shape below is required exactly — a deviation renders as parse errors, not as a +best-effort read. + +- `# Script coverage` +- `#coverage` tag line +- `## Metadata`, containing these two lines verbatim in this form: + - `- **Script:** ` followed by the raw script path in backticks + - `- **Last synced:** ` followed by a `YYYY-MM-DD` date +- `## Coverage`, containing one markdown table with exactly these four columns in + this order: `Concept`, `Status`, `Station`, `Pinned` + - **Concept** — an Obsidian wikilink to a page in `wiki/concepts/` + - **Status** — exactly one of `covered`, `partial`, `absent`, lowercase + - **Station** — one of the seven station names spelled exactly as listed in + Workflow D, a comma-separated list of them, the lowercase word `all`, or an + em dash `—` when the status is `absent` + - **Pinned** — the lowercase word `yes`, or empty +- `## Notes` and `## Related Pages` are free prose and are not parsed. + +The parser reads every markdown table in the file, so do not add a second table. + ## Standard Workflows ### Workflow A: Ingest One Source @@ -136,6 +159,8 @@ When user says "ingest ": 6. Update `index.md`. 7. Append ingest entry to `log.md`. 8. Report what changed, what is uncertain, and suggested next source/questions. +9. If this ingest created or modified any page in `wiki/concepts/`, run Workflow D + (Sync Script Coverage) before reporting. ### Workflow B: Answer Query @@ -169,10 +194,14 @@ against the script named in that file's `**Script:**` metadata field. - `covered` — the script delivers the idea, whether or not it uses the page's name. - `partial` — the script gestures at it but never lands it. - `absent` — the script never reaches it. - - `Station` is one of the seven, a comma-separated list, `all`, or `—` when absent. + - `Station` is one of the seven — `Chat box`, `ReAct`, `Tools`, `Memory`, + `Skills`, `Process`, `OS` — spelled exactly as written here, or a + comma-separated list of them, or the lowercase word `all`, or `—` when absent. 4. **Never modify a row whose `Pinned` is `yes`** — not its status, not its station. A pinned row is the user's judgment and outranks yours. 5. Add rows for concept pages with no row. Remove rows whose concept page no longer exists. + A pinned row whose concept page no longer exists is still removed — step 4 + protects the user's judgement about a live concept, not a dangling row. 6. Update `**Last synced:**` to today. 7. Update `index.md` and append a `sync` entry to `log.md`. diff --git a/log.md b/log.md index 48735d1..9313e90 100644 --- a/log.md +++ b/log.md @@ -6,7 +6,7 @@ Entry format: ``` ## YYYY-MM-DD — -- Intent: ingest | query | lint | maintenance +- Intent: ingest | query | lint | maintenance | sync - Input: - Pages changed: [[...]], [[...]] - Notes: @@ -153,5 +153,5 @@ Entry format: - Input: first run of Workflow D, establishing `wiki/script-coverage.md`. - Pages created: [[script-coverage]] (coverage) — 19 rows, one per concept page. - Pages updated: `CLAUDE.md` (folder convention, `#coverage` tag row, Workflow D, new intent), `index.md` (new Coverage section; corrected the not-yet-ingested list — `Ideas for webinar.md` and `my theses.md` were listed under `raw/sources/` but live in `raw/notes/`, and `Agentic Engineering, explained by a 10x developer.md` was missing entirely). -- Notes: Initial assessment is 5 covered, 4 partial, 10 absent. Eight of the ten absent are human-side or strategy-side per this file's own concept grouping; the other two — [[integration-dead-ends]] and [[leave-less-room-for-imagination]] — are machine-side, absent because the script demos the happy path and never reaches connector gating or spec ambiguity. The `ReAct` station carries no wiki concept. No concept pages were edited. +- Notes: Initial assessment is 5 covered, 4 partial, 10 absent. Eight of the ten absent are human-side or strategy-side per the grouping in index.md; the other two — [[integration-dead-ends]] and [[leave-less-room-for-imagination]] — are machine-side, absent because the script demos the happy path and never reaches connector gating or spec ambiguity. The `ReAct` station carries no wiki concept. No concept pages were edited. - Next: decide whether the human-side cluster earns a station or is a deliberate cut; decide separately whether the two absent machine-side failure modes belong in the demo; pin the rows that are decided so future syncs leave them alone.