feat(spec-phase): surface zero-classification edge-probe requirements as unclassified candidates (#1110) (#1117)

Edge-probe now surfaces a zero-classification requirement (non-empty prose, no
shape cue matched, no `shapes` override) as a single soft `unclassified — review
manually` candidate instead of silently dropping it — the exact blind spot the
probe exists to catch. Dismissible like any edge; the `shapes: []` opt-out stays
silent; `TAXONOMY` (the closed 8 categories) is unchanged. Under `--auto` the
candidate is left `unresolved`, never auto-`backstop` (a missing shape is not
evidence an edge exists).

Closes #1110
This commit is contained in:
Rezolv
2026-06-14 21:44:21 -04:00
committed by GitHub
parent 395fb519e7
commit 3556450b0d
9 changed files with 111 additions and 4 deletions

View File

@@ -295,6 +295,9 @@ For each Requirement gathered so far:
- **Dismiss (reason)** → mark `dismissed` with a required non-empty reason.
- **Backstop with a test** → mark `backstop`; note "held-out edge test" for plan-phase.
- **Defer** → leave `unresolved`.
- An `unclassified` row (probe `unclassified — review manually`) means the requirement's
prose matched no shape cue (#1110) — treat it like any other candidate (**Specify**,
**Dismiss (reason)**, or **Defer**). A manual-review nudge, not a hard block.
**Soft gate (after resolving):**
- All applicable edges resolved → proceed to Step 6.
@@ -310,6 +313,14 @@ For each Requirement gathered so far:
otherwise auto-`backstop` (never auto-dismiss — a wrong dismissal is the exact silent
failure being eliminated). Log: `[auto] edge coverage: C covered, B backstop, U unresolved`.
**`unclassified` exception (#1110):** `--auto` leaves an `unclassified` candidate
**`unresolved`** (the soft gate surfaces it as a flagged planner assumption) — it never
auto-`backstop`s it. A missing shape is not evidence an edge exists, so minting a held-out
edge obligation on a requirement that may be genuinely edge-free would be a false claim and
risks a vacuous edge test. Leaving it `unresolved` keeps the zero-cue requirement visible
(never a silent drop) without fabricating an edge — which is exactly #1110's purpose: surface
it for review, do not auto-handle it.
Populate the `## Edge Coverage` section of SPEC.md from the resolved edges.
## Step 5.6: Prohibition-Completeness Probe (must-NOT)