Skip to content

v0.3.2 — Knowledge-Sync Hardening: Feature-Prefix Archive Fix, README Count Drift & MCP Spec Entry

Choose a tag to compare

@benwu95 benwu95 released this 20 Jun 05:16

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.

44 files changed · +1,222 / −87 · 2 merged PRs (#40#41)


✨ 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.yaml instead 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 phantom modules/<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 check is 8/8 PASS on prospec itself (including the new readme-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.


Merged PRs

  • #40 harden feature-prefixed REQ knowledge-sync + readme-counts drift check (BL-043)
  • #41 MCP knowledge://feature-map + spec://product entry resources (BL-042)