From 23b20b2fcbb3d4a86b8c70b459d662f0face4b25 Mon Sep 17 00:00:00 2001 From: Claude Date: Sat, 19 Sep 2026 18:10:53 +0000 Subject: [PATCH] chore: release v0.9.5 retrieval-ladder parity patch (#78, #79, #80, #82) Lockstep bump 0.9.4 -> 0.9.5 across .claude-plugin, .grok-plugin, root marketplace/plugin manifests, package.json, and the README version row; CHANGELOG Unreleased -> 0.9.5. Closes the four v0.9.5 work items (01M2XCVATPVGXTMP55VA9SB0B1, 01M2XCVAWFZ005YCP1VDQX0GNV, 01M2XCVAY85DP4XJD8F2Y5CV6G, 01M2XDNSSH9CY0BYKQCB87E9A3) and re-renders the roadmap. Co-Authored-By: Claude Fable 5.1 Claude-Session: https://claude.ai/code/session_01C186xwFTLNj6kJzukMdXDx --- .claude-plugin/marketplace.json | 2 +- .claude-plugin/plugin.json | 2 +- .codex-plugin/plugin.json | 2 +- .cursor-plugin/plugin.json | 2 +- .grok-plugin/marketplace.json | 4 +- .work/todo.jsonl | 4 ++ CHANGELOG.md | 10 +++ CLAUDE.md | 2 +- README.md | 2 +- docs/roadmap.md | 29 ++------ docs/roadmap/2026-09-19_v0.9.5-release.md | 86 +++++++++++++++++++++++ marketplace.json | 2 +- package.json | 2 +- plugin.json | 2 +- 14 files changed, 115 insertions(+), 36 deletions(-) create mode 100644 docs/roadmap/2026-09-19_v0.9.5-release.md diff --git a/.claude-plugin/marketplace.json b/.claude-plugin/marketplace.json index f94de20..d6ec304 100644 --- a/.claude-plugin/marketplace.json +++ b/.claude-plugin/marketplace.json @@ -11,7 +11,7 @@ "name": "project-knowledge-capture", "source": "./", "description": "Capture meetings, experiments, discoveries, and decisions into OKF; materialize WikiTicket work into a durable knowledge graph. Works in Claude Code and Grok Build.", - "version": "0.9.4", + "version": "0.9.5", "author": { "name": "Rick Hightower" }, diff --git a/.claude-plugin/plugin.json b/.claude-plugin/plugin.json index 1cbf773..efd7c84 100644 --- a/.claude-plugin/plugin.json +++ b/.claude-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "project-knowledge-capture", - "version": "0.9.4", + "version": "0.9.5", "description": "Project Knowledge Capture: meetings, experiments, decisions, TicketLink/WikiTicket work, and project-memory nouns into a durable OKF knowledge graph. Multi-host bindings and write isolation for shared second brains.", "author": { "name": "Rick Hightower", diff --git a/.codex-plugin/plugin.json b/.codex-plugin/plugin.json index 94eb33a..12d19d0 100644 --- a/.codex-plugin/plugin.json +++ b/.codex-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "project-knowledge-capture", - "version": "0.9.4", + "version": "0.9.5", "description": "Project Knowledge Capture: meetings, experiments, decisions, TicketLink/WikiTicket work, and project-memory nouns into a durable OKF knowledge graph. Multi-host bindings and write isolation for shared second brains.", "author": { "name": "Rick Hightower", diff --git a/.cursor-plugin/plugin.json b/.cursor-plugin/plugin.json index 9f0741a..fce276b 100644 --- a/.cursor-plugin/plugin.json +++ b/.cursor-plugin/plugin.json @@ -1,6 +1,6 @@ { "name": "project-knowledge-capture", - "version": "0.9.4", + "version": "0.9.5", "description": "Project Knowledge Capture: meetings, experiments, decisions, TicketLink/WikiTicket work, and project-memory nouns into a durable OKF knowledge graph. Multi-host bindings and write isolation for shared second brains.", "author": { "name": "Rick Hightower" diff --git a/.grok-plugin/marketplace.json b/.grok-plugin/marketplace.json index 5d6437e..421f78a 100644 --- a/.grok-plugin/marketplace.json +++ b/.grok-plugin/marketplace.json @@ -1,13 +1,13 @@ { "name": "pkc-plugin-marketplace", "description": "Optional native Grok marketplace metadata. Grok Build already loads Claude plugins with zero config; this file pins identity for Grok marketplace listings.", - "version": "0.9.4", + "version": "0.9.5", "plugins": [ { "name": "project-knowledge-capture", "source": ".", "description": "Project Knowledge Capture \u2014 meetings, experiments, decisions \u2192 OKF knowledge graph. Claude-compatible.", - "version": "0.9.4", + "version": "0.9.5", "compatibility": { "claude_plugin": true, "zero_config": true diff --git a/.work/todo.jsonl b/.work/todo.jsonl index c6523ae..ca924f2 100644 --- a/.work/todo.jsonl +++ b/.work/todo.jsonl @@ -124,3 +124,7 @@ {"actor":"claude-code","ev":"01M2XCVAWF9Y1Q9RC9DSSVG1W5","item":"01M2XCVAWFZ005YCP1VDQX0GNV","op":"create","set":{"body":"PKC_RG_PATH / OKF_RG_PATH pointing at a missing or non-executable path silently falls through to whatever rg is on PATH. research-graph fails closed on the same variables, so one env var means two things. Make find_rg fail closed; document it in the setup skill, the retrieval-ladder design, and CLAUDE.md.","kind":"ops","level":"task","milestone":"v0.9.5","priority":"P2","status":"todo","title":"find_rg fails closed on an unusable override"},"ts":"2026-09-19T17:53:56Z"} {"actor":"claude-code","ev":"01M2XCVAY82D8XJG8B5VFSTY6P","item":"01M2XCVAY85DP4XJD8F2Y5CV6G","op":"create","set":{"body":"The UserPromptSubmit auto-context hook still injects the ranked-nodes pack markdown (with the seed body) into the parent context on every Feature mention, which is exactly what the retrieval-isolation rule and /pkc-retrieve forbid. Inject the pkc_pack --summary card with a 2-3 sentence seed excerpt instead: same shape the knowledge-retriever returns, a fraction of the tokens.","kind":"feature","level":"story","milestone":"v0.9.5","priority":"P2","status":"todo","title":"Auto-context hook injects the summary card, not pack bodies"},"ts":"2026-09-19T17:53:56Z"} {"actor":"claude-code","ev":"01M2XDNSSHMC9N705H9GV8VB1B","item":"01M2XDNSSH9CY0BYKQCB87E9A3","op":"create","set":{"body":"The summary-card assertions added to .github/workflows/ci.yml in v0.9.4 embed multi-line python3 -c blocks with lines at column 1 inside a run: | literal block, which ends the block scalar and makes the workflow unparseable. Every ci.yml run since Sep 12 failed at startup with zero jobs, so the test and okf-interop jobs have not executed in CI for a week. Collapse the blocks to single-line python3 -c, the style the file already uses.","discovered_during":"01M2XCVATPVGXTMP55VA9SB0B1","kind":"bug","level":"task","milestone":"v0.9.5","priority":"P1","status":"todo","title":"ci.yml unparseable since v0.9.4: test job never runs in CI","unplanned":true},"ts":"2026-09-19T18:08:23Z"} +{"actor":"claude-code","ev":"01M2XDT6WJ98T55GK45972R1BR","item":"01M2XCVATPVGXTMP55VA9SB0B1","op":"close","set":{"resolution":"shipped in v0.9.5 via #81","status":"done"},"ts":"2026-09-19T18:10:47Z"} +{"actor":"claude-code","ev":"01M2XDT6Y8NRP4DMNB1WJKNZXX","item":"01M2XCVAWFZ005YCP1VDQX0GNV","op":"close","set":{"resolution":"shipped in v0.9.5 via #81","status":"done"},"ts":"2026-09-19T18:10:47Z"} +{"actor":"claude-code","ev":"01M2XDT704G4WFH1PWBJFJF5W8","item":"01M2XCVAY85DP4XJD8F2Y5CV6G","op":"close","set":{"resolution":"shipped in v0.9.5 via #81","status":"done"},"ts":"2026-09-19T18:10:47Z"} +{"actor":"claude-code","ev":"01M2XDT71WQRN2VGPQJG1BA7G1","item":"01M2XDNSSH9CY0BYKQCB87E9A3","op":"close","set":{"resolution":"shipped in v0.9.5 via #81","status":"done"},"ts":"2026-09-19T18:10:47Z"} diff --git a/CHANGELOG.md b/CHANGELOG.md index 69c0498..604db3b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,8 +2,18 @@ ## Unreleased +## 0.9.5 — 2026-09-19 + +Retrieval-ladder parity patch from the v0.9.4 review. Closes #78, #79, #80, +#82 via #81. + ### Fixed +- **`ci.yml` parses again** (#82). The v0.9.4 `--summary` assertions embedded + multi-line `python3 -c` blocks at column 1 inside a `run: |` block; the + workflow failed at startup with zero jobs on every run since 2026-09-12, so + `test` and `okf-interop` had not executed in CI for a week. Collapsed to + single-line `python3 -c`; assertions unchanged. - **Search parity across engines** (#78). The filename stem no longer enters the search haystack (`pkc_search.py`; `pkc_index.py` hay column). A titleless concept whose filename matched the query was found by `scan` and the index diff --git a/CLAUDE.md b/CLAUDE.md index 7d951c9..4f10280 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -100,7 +100,7 @@ Deterministic Python owns paths, frontmatter, idempotency, catalogs, and the log 4. Default context pack: 2 hops / ~20 nodes; tiny pack: 1 hop / ≤8 nodes. 5. Retrieval isolation: spawn `knowledge-retriever` (`/pkc-retrieve`) for Q&A context. Do not run `pkc_search` / `pkc_pack` inline in the parent turn. 6. After any capture: refresh catalogs + append one line to `log.md`. -7. Releases bump the version in **six** places: `.claude-plugin/plugin.json`, `.claude-plugin/marketplace.json`, `.grok-plugin/marketplace.json`, `marketplace.json`, `package.json`, and the README table — plus a `CHANGELOG.md` entry. +7. Releases bump the version in **eight** places: `.claude-plugin/plugin.json`, `.claude-plugin/marketplace.json`, `.grok-plugin/marketplace.json`, `.codex-plugin/plugin.json`, `.cursor-plugin/plugin.json`, root `plugin.json`, `marketplace.json`, `package.json`, and the README table — plus a `CHANGELOG.md` entry. `TestManifestVersions` fails on any drift between the manifests. 8. After script changes: `python3 tests/test_pkc.py` **and** `npm run validate`. 9. Secrets/PII: capture paths run through `scrub_text()`; keep new ingestion paths (transcripts, PRs, threads) scrubbed by default. diff --git a/README.md b/README.md index 973432e..cbc8921 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ Works on **Claude Code**, **Grok Build**, **Codex**, **Agent Plugins 1.0**, **Gr |---|---| | **Plugin name** | `project-knowledge-capture` | | **Repo** | [SpillwaveSolutions/project-knowledge-capture](https://github.com/SpillwaveSolutions/project-knowledge-capture) | -| **Version** | 0.9.4 | +| **Version** | 0.9.5 | | **License** | MIT | | **Nouns this plugin owns** | Meeting, Experiment, Discovery, Assumption, Question, Feature, Requirement, Specification, Design, Release, CodeChange, Package, Risk, Acceptance, DecisionRecord, TicketLink, Epic, Story, Task, Subtask, Bug, Branch, Project, Playbook, Runbook, Reference | diff --git a/docs/roadmap.md b/docs/roadmap.md index 362dadd..02bca3d 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -2,8 +2,8 @@ wiki_key: roadmap doc_type: roadmap truth_state: current -source_hash: cbc0ec15 -generated_at: 2026-09-19T18:08:23Z +source_hash: f503417c +generated_at: 2026-09-19T18:10:47Z --- @@ -13,7 +13,7 @@ generated_at: 2026-09-19T18:08:23Z # Roadmap -_1 epic(s) in flight, 8 open item(s), 0 blocked, 0 unclassified._ +_1 epic(s) in flight, 4 open item(s), 0 blocked, 0 unclassified._ ## Now @@ -35,10 +35,6 @@ PKC's capabilities are reachable only from Claude Code and Grok Build because th | # | Item | Type | Priority | Status | Blocked by | |---|---|---|---|---|---| | 01M0SZFF | Own project-memory nouns including TicketLink and work types | story | P1 | todo | — | -| 01M2XCVA | Search parity: keep the filename stem out of the haystack | story | P1 | todo | — | -| 01M2XDNS | ci.yml unparseable since v0.9.4: test job never runs in CI | task | P1 | todo | — | -| 01M2XCVA | find_rg fails closed on an unusable override | task | P2 | todo | — | -| 01M2XCVA | Auto-context hook injects the summary card, not pack bodies | story | P2 | todo | — | ## Later @@ -55,15 +51,6 @@ _Nothing here._ | [16](https://github.com/SpillwaveSolutions/project-knowledge-capture/issues/16) | Expose validate over MCP | story | P2 | todo | — | | [17](https://github.com/SpillwaveSolutions/project-knowledge-capture/issues/17) | Expose capture over MCP | story | P2 | todo | — | -### v0.9.5 - -| # | Item | Type | Priority | Status | Blocked by | -|---|---|---|---|---|---| -| 01M2XCVA | Search parity: keep the filename stem out of the haystack | story | P1 | todo | — | -| 01M2XDNS | ci.yml unparseable since v0.9.4: test job never runs in CI | task | P1 | todo | — | -| 01M2XCVA | find_rg fails closed on an unusable override | task | P2 | todo | — | -| 01M2XCVA | Auto-context hook injects the summary card, not pack bodies | story | P2 | todo | — | - ## Visual roadmap ### Dependency graph @@ -75,15 +62,11 @@ graph TD 01KZ75R3M6BYQ643NKDCCSEEZC["📦 Expose validate over MCP"] 01KZ75R3S2X1G4PCTGMMSR8BWA["📦 Expose capture over MCP"] 01M0SZFFPWEVN9YX9D9RYZ1ZC1["📦 Own project-memory nouns inclu"] - 01M2XCVATPVGXTMP55VA9SB0B1["🐛 Search parity keep the filenam"] - 01M2XCVAWFZ005YCP1VDQX0GNV["🔧 find_rg fails closed on an unu"] - 01M2XCVAY85DP4XJD8F2Y5CV6G["📦 Auto-context hook injects the"] - 01M2XDNSSH9CY0BYKQCB87E9A3["🐛 ci.yml unparseable since v0.9."] 01KZ75NQCMYGFYRCVJATEBVBRB --> 01KZ75R3EXEG4GVGRP2S9CCKZ4 01KZ75NQCMYGFYRCVJATEBVBRB --> 01KZ75R3M6BYQ643NKDCCSEEZC 01KZ75NQCMYGFYRCVJATEBVBRB --> 01KZ75R3S2X1G4PCTGMMSR8BWA classDef todo fill:#f4f4f4,stroke:#999999 - class 01KZ75NQCMYGFYRCVJATEBVBRB,01KZ75R3EXEG4GVGRP2S9CCKZ4,01KZ75R3M6BYQ643NKDCCSEEZC,01KZ75R3S2X1G4PCTGMMSR8BWA,01M0SZFFPWEVN9YX9D9RYZ1ZC1,01M2XCVATPVGXTMP55VA9SB0B1,01M2XCVAWFZ005YCP1VDQX0GNV,01M2XCVAY85DP4XJD8F2Y5CV6G,01M2XDNSSH9CY0BYKQCB87E9A3 todo + class 01KZ75NQCMYGFYRCVJATEBVBRB,01KZ75R3EXEG4GVGRP2S9CCKZ4,01KZ75R3M6BYQ643NKDCCSEEZC,01KZ75R3S2X1G4PCTGMMSR8BWA,01M0SZFFPWEVN9YX9D9RYZ1ZC1 todo ``` ### Hierarchy @@ -95,10 +78,6 @@ graph TD 01KZ75R3M6BYQ643NKDCCSEEZC["📦 Expose validate over MCP"] 01KZ75R3S2X1G4PCTGMMSR8BWA["📦 Expose capture over MCP"] 01M0SZFFPWEVN9YX9D9RYZ1ZC1["📦 Own project-memory nouns inclu"] - 01M2XCVATPVGXTMP55VA9SB0B1["🐛 Search parity keep the filenam"] - 01M2XCVAWFZ005YCP1VDQX0GNV["🔧 find_rg fails closed on an unu"] - 01M2XCVAY85DP4XJD8F2Y5CV6G["📦 Auto-context hook injects the"] - 01M2XDNSSH9CY0BYKQCB87E9A3["🐛 ci.yml unparseable since v0.9."] 01KZ75NQCMYGFYRCVJATEBVBRB --> 01KZ75R3EXEG4GVGRP2S9CCKZ4 01KZ75NQCMYGFYRCVJATEBVBRB --> 01KZ75R3M6BYQ643NKDCCSEEZC 01KZ75NQCMYGFYRCVJATEBVBRB --> 01KZ75R3S2X1G4PCTGMMSR8BWA diff --git a/docs/roadmap/2026-09-19_v0.9.5-release.md b/docs/roadmap/2026-09-19_v0.9.5-release.md new file mode 100644 index 0000000..04e0c71 --- /dev/null +++ b/docs/roadmap/2026-09-19_v0.9.5-release.md @@ -0,0 +1,86 @@ +--- +wiki_key: roadmap-snapshot/2026-09-19_v0.9.5-release +doc_type: roadmap-snapshot +truth_state: snapshot +source_hash: f503417c +generated_at: 2026-09-19T18:10:47Z +date: 2026-09-19 +name: v0.9.5-release +--- + + + +> This file is generated from `.work/todo.jsonl`. Edits will be overwritten. +> To change the roadmap, change the work items: `worklog add|update|close`. + +# Roadmap + +_1 epic(s) in flight, 4 open item(s), 0 blocked, 0 unclassified._ + +## Now + +_Nothing here._ + +## Next + +### MCP server mode · P2 · 0 of 3 done · → v0.8.0 +PKC's capabilities are reachable only from Claude Code and Grok Build because they are packaged as skills. Exposing pack, validate and capture over MCP makes the same knowledge graph available to any MCP host without duplicating the logic. + +| # | Item | Type | Priority | Status | Blocked by | +|---|---|---|---|---|---| +| [15](https://github.com/SpillwaveSolutions/project-knowledge-capture/issues/15) | Expose pack over MCP | story | P2 | todo | — | +| [16](https://github.com/SpillwaveSolutions/project-knowledge-capture/issues/16) | Expose validate over MCP | story | P2 | todo | — | +| [17](https://github.com/SpillwaveSolutions/project-knowledge-capture/issues/17) | Expose capture over MCP | story | P2 | todo | — | + +### (no epic) + +| # | Item | Type | Priority | Status | Blocked by | +|---|---|---|---|---|---| +| 01M0SZFF | Own project-memory nouns including TicketLink and work types | story | P1 | todo | — | + +## Later + +_Nothing here._ + +## Milestones + +### v0.8.0 + +| # | Item | Type | Priority | Status | Blocked by | +|---|---|---|---|---|---| +| 01M0SZFF | Own project-memory nouns including TicketLink and work types | story | P1 | todo | — | +| [15](https://github.com/SpillwaveSolutions/project-knowledge-capture/issues/15) | Expose pack over MCP | story | P2 | todo | — | +| [16](https://github.com/SpillwaveSolutions/project-knowledge-capture/issues/16) | Expose validate over MCP | story | P2 | todo | — | +| [17](https://github.com/SpillwaveSolutions/project-knowledge-capture/issues/17) | Expose capture over MCP | story | P2 | todo | — | + +## Visual roadmap + +### Dependency graph + +```mermaid +graph TD + 01KZ75NQCMYGFYRCVJATEBVBRB["📦 MCP server mode"] + 01KZ75R3EXEG4GVGRP2S9CCKZ4["📦 Expose pack over MCP"] + 01KZ75R3M6BYQ643NKDCCSEEZC["📦 Expose validate over MCP"] + 01KZ75R3S2X1G4PCTGMMSR8BWA["📦 Expose capture over MCP"] + 01M0SZFFPWEVN9YX9D9RYZ1ZC1["📦 Own project-memory nouns inclu"] + 01KZ75NQCMYGFYRCVJATEBVBRB --> 01KZ75R3EXEG4GVGRP2S9CCKZ4 + 01KZ75NQCMYGFYRCVJATEBVBRB --> 01KZ75R3M6BYQ643NKDCCSEEZC + 01KZ75NQCMYGFYRCVJATEBVBRB --> 01KZ75R3S2X1G4PCTGMMSR8BWA + classDef todo fill:#f4f4f4,stroke:#999999 + class 01KZ75NQCMYGFYRCVJATEBVBRB,01KZ75R3EXEG4GVGRP2S9CCKZ4,01KZ75R3M6BYQ643NKDCCSEEZC,01KZ75R3S2X1G4PCTGMMSR8BWA,01M0SZFFPWEVN9YX9D9RYZ1ZC1 todo +``` + +### Hierarchy + +```mermaid +graph TD + 01KZ75NQCMYGFYRCVJATEBVBRB["📦 MCP server mode"] + 01KZ75R3EXEG4GVGRP2S9CCKZ4["📦 Expose pack over MCP"] + 01KZ75R3M6BYQ643NKDCCSEEZC["📦 Expose validate over MCP"] + 01KZ75R3S2X1G4PCTGMMSR8BWA["📦 Expose capture over MCP"] + 01M0SZFFPWEVN9YX9D9RYZ1ZC1["📦 Own project-memory nouns inclu"] + 01KZ75NQCMYGFYRCVJATEBVBRB --> 01KZ75R3EXEG4GVGRP2S9CCKZ4 + 01KZ75NQCMYGFYRCVJATEBVBRB --> 01KZ75R3M6BYQ643NKDCCSEEZC + 01KZ75NQCMYGFYRCVJATEBVBRB --> 01KZ75R3S2X1G4PCTGMMSR8BWA +``` diff --git a/marketplace.json b/marketplace.json index 90af4a1..c9c1cce 100644 --- a/marketplace.json +++ b/marketplace.json @@ -10,7 +10,7 @@ "name": "project-knowledge-capture", "source": "./", "description": "Project Knowledge Capture \u2014 OKF knowledge graph from meetings, experiments, and WikiTicket", - "version": "0.9.4" + "version": "0.9.5" } ] } diff --git a/package.json b/package.json index 3fee9e7..ce4cb14 100755 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "project-knowledge-capture", - "version": "0.9.4", + "version": "0.9.5", "private": true, "description": "Project Knowledge Capture \u2014 Claude Code / Grok Build plugin (docs preview)", "scripts": { diff --git a/plugin.json b/plugin.json index 99afce4..db645fc 100644 --- a/plugin.json +++ b/plugin.json @@ -1,7 +1,7 @@ { "$schema": "https://agent-plugins.org/schemas/1.0.0/plugin.schema.json", "name": "project-knowledge-capture", - "version": "0.9.4", + "version": "0.9.5", "description": "Project Knowledge Capture: meetings, experiments, decisions, TicketLink/WikiTicket work, and project-memory nouns into a durable OKF knowledge graph. Multi-host bindings and write isolation for shared second brains.", "author": { "name": "Rick Hightower",