Skip to content

Phase mismatch reports EvidencePacks for never walking phases that do not apply to them #491

Description

@explosivebit

Observed 2026-09-08 while cleaning up the graph after v0.37.0.

What happens

forgeplan health reports 10 phase mismatches. Seven are EvidencePacks:

EVID-133, EVID-134, EVID-135, EVID-148    phase: validate
EVID-149, EVID-150, EVID-151              phase: shape

The other three are PRD-082, PRD-083, PROB-083 — those are ordinary and not what this issue is about.

Why the evidence ones are a category error

The greenfield workflow (crates/forgeplan-core/src/phase/mod.rs:100-127) is:

Shape → Validate → Adi → Code → ... → Evidence → Done

An EvidencePack is the output of the Evidence phase. Asking one to walk through Adi (produce a decision) and Code (write the implementation) describes work an evidence pack does not do and never will. forgeplan phase EVID-133 even suggests --to adi as the next step, which is advice to record something that did not happen.

So these seven are not stalled. They are complete artifacts being measured against a lifecycle that was designed for PRDs.

How they surfaced

Four of the seven (EVID-133/134/135/148) appeared in the mismatch list today, as a direct result of activating 51 evidence packs that had been stuck in draft only because of the leaf-EVID scoring defect (#325, fixed in v0.37.0). Activating them was correct; the mismatch report is the phase model noticing they are now active with a phase that was never advanced past validate in May.

I deliberately did not advance their phases. Running phase-advance ... --to adi on an evidence pack would write false workflow history — a record saying it went through ADI when it did not. The count being wrong is better than the history being wrong.

Why it is worth fixing rather than tolerating

The phase machine is advisory by design (mod.rs:1, and PROB-029 already downgraded mismatches from critical to advisory). Nothing is blocked. But seven of ten entries in a report being structurally-impossible-to-resolve is how a signal becomes noise, and noise trains people to skip the whole section — including the three entries that are real.

Fix direction

Either:

  • Kind-aware phases — evidence/note/problem get a shorter workflow, or none. The module already anticipates this: workflow_type: greenfield is documented as "currently the only one", so the extension point exists.
  • Or exclude non-PRD-shaped kinds from the mismatch check — cheaper, and honest, if a full second workflow is more than this is worth.

Measure first: how many of the 167 evidence packs would be flagged once more of them get activated? Today it is seven because most evidence is still draft. That number grows as the graph gets tidied, so this gets louder, not quieter.

Refs: PRD-056, EPIC-005, PROB-029, #325, v0.37.0

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions