Pillar B — the single corpus_alignment.assess SSOT engine
Goal
ONE evaluator, corpus_alignment.assess(active_plans) -> CorpusAlignmentVerdict, is the corpus-coherence invariant; every surface consumes it and none reimplements it.
Implementation Sketch
Build assess() modeled on mission_probe.assess_mission_gate (returns a verdict object) and emitting scripts/plan_corpus/types.Finding (the shape cross_plan_validators already uses). Verdict: {pairs:[{a,b,relation,status: aligned|contradiction|mission_violation|unverified, evidence}], verdict: aligned|drift|contradiction}. A surface computing its own alignment is LEAK:algorithmic-duplication.
Spec References
Mirror scripts/plan_orchestrator/mission_probe.py:assess_mission_gate (MissionFitVerdict, line 278). Finding shape: scripts/plan_corpus/types.Finding. Reuse cross_plan_validators.build_combined_graph for R1 health.
Work Items
- Implement
assess(active_plans) -> CorpusAlignmentVerdictin corpus_alignment.py, mirroring the MissionFitVerdict shape and emitting types.Finding - Define CorpusAlignmentVerdict: pairs[{a,b,relation,status,evidence}] + top-level verdict (aligned|drift|contradiction)
- SSOT guard: assess is the sole evaluator; reuse build_combined_graph for R1 health rather than re-walking the graph
- pytest covering aligned / contradiction / mission_violation / unverified verdicts on fixtures