v0.3.2 — Knowledge-Sync Hardening: Feature-Prefix Archive Fix, README Count Drift & MCP Spec Entry
Prospec v0.3.2
v0.3.1 shipped feature-map.yaml and the feature→module governance checks — but two gaps
remained. A standard/full change whose delta-spec used a feature-prefixed REQ (e.g.
REQ-MCP-*) would silently mis-route at archive: the auto knowledge-update read the prefix
as a module name, missing the real modules and risking a phantom modules/<prefix>/. And the
README's factual counts (e.g. "registers N resources") drifted from the code with nothing to
catch them. v0.3.2 hardens the knowledge-sync flow and mechanizes the count check —
then dogfoods both by archiving the very MCP change that surfaced them.
✨ Headline features
Feature-prefixed REQ knowledge-sync hardening (BL-043)
standard/full changes whose delta-spec uses a feature-prefixed REQ (REQ-MCP-* and
the 10 other non-module prefixes) now resolve affected modules from metadata.related_modules
feature-map.yamlinstead of mistaking the prefix for a module — consistently in both the
archive Entry Gate (skill) and the auto knowledge-update (service). A surgical mint
guard skips a feature-prefix that resolves to no known module (with a warning) rather than
minting a phantommodules/<prefix>/. Module-prefix REQs are unchanged. (PR #40)
readme-counts drift check (BL-043)
A new readme-counts drift check (DRIFT_CHECK_IDS 7 → 8) mechanizes what was a manual
review concern: a count declared in a module README (e.g. "src/x.ts … registers N resources")
is verified against the actual code it names — warn-class, string/template/fenced-block-aware
so it never false-positives. (PR #40)
MCP spec-system entry/index resources (BL-042)
prospec mcp serve now exposes the spec system's entry layer, not just feature details:
knowledge://feature-map (the feature→module routing index) and spec://product (the PRD
entry / 2-minute overview). An external or cold-start agent can grasp the project in one read,
then drill into spec://feature/{name}. buildMcpServer registers 6 → 8 resources; both
are read-only, per-request, realpath-contained. (PR #41)
🔁 Dogfood: the fix validated itself
BL-042's archive was paused at the Entry Gate when its feature-prefixed REQ-MCP-*
mis-routed — which is exactly what surfaced BL-043. After BL-043 merged, BL-042 archived
cleanly through the new feature-prefix fallback (modules derived from related_modules, no
phantom minted), and the new readme-counts check caught and then confirmed the 6 → 8
resource-count sync.
🧪 Quality & tests
- The suite grew 1,696 → 1,726 tests (unit 1,127 / contract 542 / integration 17 / e2e 40);
new contract assertions are mutation-verified. prospec checkis 8/8 PASS on prospec itself (including the newreadme-counts).- Both changes ran dogfood-style through the full SDD workflow
(story → plan → tasks → implement → review → verify → archive), reaching review-clean +
verify grade S / A.
📊 Compared to v0.3.1
| v0.3.1 | v0.3.2 | |
|---|---|---|
| Tests | 1,696 | 1,726 |
| Drift checks | 7 | 8 (+ readme-counts) |
| Feature-prefix REQ at archive | mis-routes (stale / phantom risk) | resolves via related_modules / feature-map |
| README count accuracy | manual review only | deterministic readme-counts check |
| MCP resources | 6 | 8 (+ knowledge://feature-map, spec://product) |
⬆️ Upgrade notes
Run prospec agent sync to pick up the updated /prospec-archive template (standard/full
feature-prefix fallback). The new readme-counts drift check runs automatically in
prospec check; it is warn-class and degrades to skipped without a module-map.yaml,
so existing projects keep working unchanged.