Constraints Ledger

15 binding constraints. Source: UFTAGP-SPEC-001.

INV-01ScopeNo Outcome Claims

The project makes no claims about enforcement, implementation, or outcome. Doctrine describes what counts as conserving or violating intent — it does not prescribe what should happen as a result.

UFTAGP-SPEC-001S1.2
INV-02Output LabelsSealed Label Colors Reserved

The classification colors label-conserving, label-non-conserving, and label-refusal are reserved exclusively for ClassificationLabel component output. No other component, page, or UI element may use these color values.

UFTAGP-SPEC-001S4.1
INV-03IntentSealed Terms Non-Expandable

Sealed glossary terms are non-expandable. Tooltips display exactly: the term, verbatim definition, source artifact ID, and section reference. No editorial additions, cross-references, or related terms are permitted.

UFTAGP-SPEC-001S4.3
INV-04CitationArtifact ID Format Enforced

All artifact IDs must conform to the pattern UFTAGP-[A-Z]{2,4}-\d{3}. IDs that do not match this pattern are invalid and must not be rendered, stored, or transmitted.

UFTAGP-SPEC-001S5.1
INV-05ScopeCorpus Static Import Only

corpus-bundle.json must be loaded via static import only. File system reads (fs.readFileSync) are prohibited. Dynamic import is permitted only where static import is architecturally infeasible.

UFTAGP-SPEC-001S5.3
INV-06Refusal/DriftTerminal Refusal Is Final

Refusal (Terminal) is a terminal classification state. No retry button, rephrase suggestion, or alternative path may be presented after a terminal refusal. The terminality statement is required output.

UFTAGP-SPEC-001S6.2
INV-07ScopeORCID iD Never Stored

Raw ORCID iDs are hashed immediately on receipt using SHA-256 + SESSION_SECRET and then discarded. The raw iD must not appear in any database, log, session, or intermediate variable beyond the hashing operation itself.

UFTAGP-SPEC-001S7.1
INV-08ScopeEligibility Read From Session

Vote eligibility is evaluated at ORCID authentication time and stored as a boolean in the encrypted session cookie. Eligibility must not be re-evaluated at vote time because the raw ORCID iD is unavailable at that point.

UFTAGP-SPEC-001S7.2
INV-09ScopeVote Count Via DB Trigger Only

The vote_count field is maintained exclusively by a Supabase database trigger. Application routes must not update vote_count directly. Duplicate detection is governed by the DB UNIQUE constraint, not application logic.

UFTAGP-SPEC-001S7.3
INV-11Output LabelsMCR Badge Text Is Canonical

The researcher contribution badge text is "MCR on File" everywhere it appears in the interface. The phrase "Verified Logic" must not appear in any component, page, label, or tooltip in the UFTAGP codebase.

UFTAGP-SPEC-001S8.1
INV-12ScopeNo Implementation Prescriptions

All public-facing copy, including the About page, must not contain outcome claims, implementation prescriptions, or enforcement assertions. The project describes doctrine — it does not prescribe action.

UFTAGP-SPEC-001S8.3
INV-13CitationZero Vote Counts Always Visible

Vote counts must be visible on all community submissions regardless of value, including zero. Submissions with zero votes must not be hidden, filtered, visually distinguished, or ranked below submissions with positive vote counts on grounds of their zero value alone.

UFTAGP-SPEC-001S8.4
INV-15Capture PreventionUFTAGP Codebase Isolation

The UFTAGP codebase must contain no references to SpineGraph, the Davis Canon COM pipeline, or any other project sharing infrastructure. Environment variables, types, and constants must be scoped exclusively to UFTAGP.

UFTAGP-SPEC-001S9.1
INV-16Output LabelsEngine Labels Isolated to Engine

Classification Engine output labels (Conserving, Non-Conserving, Refusal (Terminal)) must not be applied to community submissions. Community submissions display researcher-tagged transformation_class as plain text in mid-grey on id-bg only.

UFTAGP-SPEC-001S9.2
INV-17CitationVote Count Is Sole Sort Signal

Community submissions are sorted by vote_count DESC. classificationCount is secondary display metadata. It must not influence, modify, or substitute for vote_count in any sort, ranking, or ordering operation.

UFTAGP-SPEC-001S9.3