Enforcement
The constitution on the About page is written as prose. This page answers one question, principle by principle, verified against the code as it stands today — not against what the plan intended.
ENFORCED ENFORCED — the code makes the violation impossible, or publicly and verifiably logs it.
PARTIAL PARTIAL — some of it is real code; some of it remains.
ASSERTED ASSERTED — stated in prose, but no code path enforces it yet.
Enforced by: src/lib/institution-config.ts (EDITOR_NAME — still null, /om states this honestly); scripts/institution/lib/editor-config.js + record-signoff.js (refuses signoff without a named editor); scripts/institution/finalize-verdict.js (person-naming gate, PUBLISH_HALT); scripts/institution/record-intervention.js (the log is now writable)
Enforced by: src/lib/institution-view.ts (titleClaimUncertified — one documented pattern, not a general implication assessment); scripts/institution/lib/institution-schema.js (FindingArtifactSchema — structural validation, no defensibility scoring). No split-verdict mechanism yet
Enforced by: supabase/migrations/061_contradiction_and_signoff.sql; scripts/institution/finalize-verdict.js (evaluatePersonGate — refuses publication without a resolved window and a signoff, live-verified); scripts/institution/request-contradiction.js; scripts/institution/record-signoff.js (refuses without a named editor). The gate is real; the trigger is manual today
Enforced by: scripts/institution/lib/vault.js (checkEligibility/isVaultEligible); scripts/institution/lib/institution-schema.js (requiresPersonGate). person_scope_class is a hand-passed CLI flag — no automated classifier
Enforced by: scripts/institution/lib/institution-schema.js (FindingArtifactSchema — source_ref_set and evidence required, structurally); src/lib/institution-view.ts (resolveSourceRef — displays the reference, does not verify it resolves). No link checker exists
Enforced by: scripts/institution/finalize-verdict.js (buildPredictionRows — inserted on both publish and seal); scripts/institution/resolve-prediction.js, score-prediction.js. Code-complete; predictions has 0 rows in production as verified
Enforced by: supabase/migrations/062_korrektursak_and_errata.sql; scripts/institution/open-korrektursak.js (writes errata AND applies the correction, live-verified); scripts/institution/lib/vault.js (shredPayload). The re-hearing itself and public errata rendering are missing
Enforced by: src/app/[locale]/funn/[id]/page.tsx (SealedOpinionsSummary); src/lib/supabase-server.ts (getTribunalDocket — strips opinion_nb/en for vaulted findings); src/lib/mcp-tools.ts (get_finding refuses anything but published); src/lib/institution-api.ts (vaultedSummary/titleClaimUncertified)
Enforced by: scripts/institution/fix-orthography.js (its own header: "a detector, not a fixer" — the aa digraph only, manual); institution-schema.test.js (tests only FOUNDING_ROSTER, not generated content). No emoji/orthography check on finding content
What the table actually says
Nine of nine principles are PARTIAL today — none is pure ASSERTED anymore, and none is fully ENFORCED end to end. The one thing still stopping principles 1 and 3 from becoming fully operative is an owner action — naming a responsible editor — not a code gap: the gates meant to enforce the consequence of that choice already stand and correctly refuse today.
Source text: docs/institution/konstitusjon-handhevelse.md