Warden plan
tier: hermetic requires: []
Pending stub — GATED criterion. The precondition below is not built; this plan reports the criterion as pending (skip, never fail) until it lands. When it does, replace this stub with a real plan in the shape of
25-cr-18/26-cr-25/27-cr-20.
Register: ~/.studio/master.withrobin.ai/project/rfc.one/criteria-register.md (status there: PENDING OWNER ACCEPTANCE; accepted by the 2026-08-31 proxy screen).
### CR-05 — Signal-branch contradiction detection - Statement: The contradiction check detects injected contradicting Signals and lifts them into conflicts_with edges cheaply and quickly. - Metric: Primary: Signal-branch recall (targets acquiring a Signal-branch edge to the lifted Claim of their contradicting Signal). Also: Signal-branch precision; candidate recall after floor τ_s; contradictions removed by the floor; model calls per injected Signal; wall-clock to contested transition. Scored on branch-tagged edges only. - Dataset/inputs: Per workspace, 100 accepted Claims as targets; 1 contradicting + 1 distractor Signal each (200 Signals), injected in random order over a simulated week through the ordinary write path. - Threshold: Recall ≥0.8; precision ≥0.7; candidate recall ≥0.9 with the floor removing none of the injected contradictions; model calls ≤ k+1 per injected object; median wall-clock ≤ Δ+1 min (Δ = 5 min). - Drop condition: If recall cannot reach 0.6 at k = 50 with the floor removed, automatic standing changes are disabled and standing becomes a purely human-maintained field. Redesign: candidate recall <0.7 → raise k or lower τ_s; precision <0.5 → stronger classifier model or human queue. - Source: Anchor §10.3. - Tier: gated — requires Claims layer and the §3.4 contradiction check.
Precondition: requires the Claims layer and the §3.4 contradiction check. Not built at HEAD 7f379974 (verified 2026-08-31: no 'claims', 'dimensions', or 'initiatives' tables in server/src/db/schema.ts, and no conflicts_with edges anywhere in server/src or packages/).
set -uo pipefail
source "$WARDEN_LIB/assert.sh"
cd "${PROJECT_ROOT:-$(git rev-parse --show-toplevel)}"
SCHEMA=server/src/db/schema.ts
MISSING=""
grep -q "'claims'" "$SCHEMA" || MISSING="$MISSING claims-tables"
grep -rq "conflicts_with" server/src packages 2>/dev/null || MISSING="$MISSING conflicts_with-edges"
if [ -n "$MISSING" ]; then
warden_skip "CR-05 — Signal-branch contradiction detection" "pending: requires the Claims layer and the §3.4 contradiction check — gated criterion, precondition not built (probes missing:$MISSING)"
else
warden_skip "CR-05 — Signal-branch contradiction detection" "schema probes now pass — upgrade this pending stub to a real plan before CR-05 can bind (probes are heuristic, not proof)"
fi
Pending stub, hermetic on purpose: the guard reads the checkout only and emits skip in every branch, so this plan can never red a run — the criterion surfaces in every summary as pending with its precondition named. The probes are heuristic activation bells, not proof: quoted table names (and conflicts_with where the contradiction check is a precondition) flip the detail text when the machinery lands. The real plan must quote the criterion verbatim, turn its thresholds into warden_pass/warden_fail gates, and follow the conventions the three runnable plans set: machine-local fixtures (25-cr-18), NLI probe and versioned judge prompts (26-cr-25), data-keyed guard activation (27-cr-20).