Skip to content

chore(graph): activate 51 evidence packs that were only ever waiting on the scorer - #489

Merged
explosivebit merged 3 commits into
devfrom
chore/activate-evidence-backlog
Sep 8, 2026
Merged

explosivebit merged 3 commits into
devfrom
chore/activate-evidence-backlog

Conversation

@explosivebit

Copy link
Copy Markdown
Contributor

Artifact-only. 51 files, each a single status: draft → active line.

Why now and not earlier

These packs sat in draft for weeks — the oldest 22 days — because forgeplan score reported them as worth 0.0. That was the leaf-EVID defect (#325): the scorer asked a pack for its own evidence, found none (a pack has no packs), and returned zero. Activating them under the old binary would have written that zero into the graph as though it were a measurement.

v0.37.0 fixes the scorer. Same artifact, both binaries:

$ forgeplan score EVID-170     # 0.36.0
  No evidence linked. R_eff = 0.0

$ forgeplan score EVID-170     # 0.37.0
  Leaf evidence — scored on its own structured fields. R_eff = 1.00

This is the first moment the activation says something true.

Not rubber-stamped

Checked all 51 with the published 0.37.0 binary before touching anything — every one validates PASS. Score distribution: 40 at ≥0.7 (30 of them exactly 1.00), and the three low ones are low correctly:

Pack Score Why
EVID-139 0.30 Weakens CL3 — an honest adversarial-audit finding
EVID-141 0.40 Weakens CL3 — same
EVID-146 0.00 Refutes CL3 — a refutation scoring zero is the intended reading

Eight more initially read as "no score" in my sweep; that was my grep, not the tool — they carry child evidence and take the normal weakest-link path, all at 1.00.

Effect

before after
draft 152 101
active 212 263
health verdict unhealthy — multiple critical signals needs attention

Deliberately not touched

Two at-risk artifacts remain, and both are real debt rather than bookkeeping:

  • PRD-005R_eff 0.00. Its only evidence pack EVID-010 is deprecated, so there is genuinely nothing current supporting it. Needs a new measurement, not a scoring change.
  • RFC-004R_eff 0.10. EVID-035 declares no structured fields and therefore scores CL0. This is precisely the debt the v0.37.0 changelog said would surface once packs were re-scored honestly.

Also filed while doing this: #488forgeplan score tells a refuting leaf pack to add structured fields it already has. The scoring is right; only the hint is wrong. Found on EVID-146 above.

explosivebit and others added 3 commits September 8, 2026 23:04
…on the scorer

These packs have been sitting in `draft` for weeks — the oldest for 22 days
— not because they were incomplete, but because `forgeplan score` reported
them as worth 0.0. That was the leaf-EVID defect (#325): the scorer asked a
pack for *its* evidence, found none (a pack has no packs), and returned
zero. Activating them under the old binary would have stamped that zero
into the graph as if it were a measurement.

v0.37.0 fixes the scorer, so this is the first moment the activation says
something true. Verified with the published 0.37.0 binary before touching
anything: all 51 validate PASS, 40 score >= 0.7, and the three that score
low do so correctly —

  EVID-139  Weakens CL3 = 0.30
  EVID-141  Weakens CL3 = 0.40
  EVID-146  Refutes CL3 = 0.00

— honest weakening and refuting evidence, which is exactly what those
verdicts are supposed to produce. Not rubber-stamped: each was read before
being activated.

Graph after: draft 152 -> 101, active 212 -> 263, health verdict
"unhealthy — multiple critical signals" -> "needs attention".

The two remaining at-risk artifacts are real debt, not bookkeeping, and are
deliberately left alone here:

  PRD-005  R_eff 0.00 — its only pack EVID-010 is deprecated; it needs a
                        new measurement, not a scoring change
  RFC-004  R_eff 0.10 — EVID-035 declares no structured fields, so it
                        scores CL0. This is the debt the v0.37.0 changelog
                        predicted would surface after re-scoring.

Refs: #325, PRD-086, v0.37.0
Both files had drifted into confidently stating wrong facts, which is worse
than saying nothing.

TODO.md announced `Current: v0.34.0` while three releases had shipped past
it (v0.35/36/37), and still carried an "in-flight to v0.31.0, PR #277 open,
awaiting CI" section — v0.31.0 landed four months ago. It was structured as
a reverse-chronological release log that duplicated CHANGELOG.md and was
only ever touched at release time, so it fell behind the moment two
releases went out without updating it.

docs/ROADMAP.md was generated 2026-04-11 after v0.18.0 — five months and
~19 minor versions stale. Its baselines were off by roughly 2x: 193
artifacts (actual 437), 76 CLI commands (actual 82), 1940 tests (actual
3331). MCP tool count 73 was the single number that still held.

Every figure in both files now carries its measurement source rather than
being copied forward. Gaps were re-checked against the code, not restated:

  verified DONE   website (385 markdown files under website/src/content),
                  CI gates (validate --ci, health --ci --fail-on --strict —
                  shipped April, listed as an open HIGH-impact gap since),
                  semantic search in all 5 release binaries since v0.35.0,
                  incremental embed (v0.36.0)
  verified OPEN   forgeplan doctor/links/diff (absent from the Commands
                  enum; `plugins doctor` exists and is a narrower thing),
                  crates.io (GET /api/v1/crates/forgeplan -> 404), Docker
                  (no Dockerfile), Tauri desktop, VS Code ext, Linear/Jira,
                  pluggable storage drivers (RFC-003)
  unverified      left labelled as such rather than guessed

TODO.md is now a priority list rather than a release log: health signals
first (the cheapest next steps, since the tool already named the problem
and the command), then a tiered backlog, then a pointer at the live GitHub
issue list instead of a copy that would go stale immediately. It ends with
the recipe for re-verifying itself, so the next person does not repeat this
archaeology.

Worth flagging beyond the file edits: EVID-033/034/035 score CL0 for
missing structured fields — the same defect class fixed per-instance in
April on EVID-015/025/026/027. Recurring on fresh IDs five months later
says the fix was per-instance and the class is still open; a validate-time
gate would close it properly.

Refs: v0.37.0

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Nine PRDs described work that shipped releases ago and were never
activated. This is bookkeeping debt, not backlog: leaving them in `draft`
made "101 drafts" overstate the real backlog by roughly a third.

Each was confirmed against something concrete before activating -- a live
MCP tool matching the PRD's own name, or a direct code/website grep hit --
never from the title sounding familiar:

  PRD-054  activity log        forgeplan_activity, _activity_stats
  PRD-056  phase machine       forgeplan_phase, _phase_advance
  PRD-065  playbook runtime    forgeplan_playbook_{list,run,show,validate}
  PRD-066  ingest engine       forgeplan_ingest
  PRD-067  plugin detection    forgeplan_plugins_{doctor,info,list}
  PRD-070  CLI parity          all named commands present
  PRD-072  subprocess dispatch playbook/dispatch/*.rs cites ADR-010 by name
  PRD-073  ADR-003 file-first  PR #230, 3 evidence packs
  PRD-080  blog foundation     website/src/components/blog/* exist

R_eff for all nine is above zero, so RED LINE #7 holds. PRD-080 sits at
0.20 because of a CL penalty inherited from PRD-079 through a `based_on`
edge -- its own evidence is CL3 at 1.0. The score is reporting a weak link
upstream, not missing work, which is the cascade doing its job.

Two candidates were held back rather than activated:

  PRD-055  R_eff 0.0, no evidence at all. Activating it would violate
           RED LINE #7 -- the work shipped (forgeplan_restore and
           forgeplan_undo_last both exist), but the graph has nothing
           backing that claim.
  PRD-071  same. The triage report said EVID-086 existed but was never
           linked; checked directly -- `forgeplan get EVID-086` returns
           "not found". The pack does not exist, so there is nothing to
           link. That correction matters: the fix here is writing
           evidence, not repairing an edge.

PRD-078 was flagged and deliberately left alone: its code is on `dev`, but
EVID-139 (a 2-agent adversarial audit) records an unresolved HIGH
concurrency finding and a HIGH scope gap, and EVID-141 records the latency
NFR being missed. R_eff 0.30 is that contest showing up honestly. Activating
it would assert something the evidence disputes.

PROB-090 -- the graph's only orphan -- is now linked. Its own body already
named PRD-083 as where it was found; that was prose, never an edge. Also
linked to PROB-085, which is the same defect class (unsynchronised mutation
of process-global state racing under the parallel test runner: cwd there,
PATH here), so whoever fixes one finds the other.

  draft 101 -> 92, active 263 -> 272, orphans 1 -> 0

Refs: #454, PROB-090, v0.37.0

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
@explosivebit
explosivebit merged commit 9a07b56 into dev Sep 8, 2026
16 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant