# SFT Engine Contract

SFT is treated as an artifact-producing engine.

Given a proposed witness context (arena slice, phase observable, coupling class, and perturbation model), the engine outputs exactly one of:

- a Witness Stability Certificate (WSC), or
- a Witness Obstruction (WOB)

The intent is to make universality claims referee-hard:

- either a witness exists with explicit stability margins
- or a named obstruction exists with evidence and a recommended next move list

This contract is the SFT analogue of the certificate-or-obstruction pipeline used in your RU flagship scope.

## COC gate (maximal applicability class)

A context is treated as belonging to the Cyclic Observability Class (COC) only when it declares:

- a phase observable (cycle-valued),
- an admissible witness mechanism,
- the correct target rule (circle/torus/CST with the right baseline).

### COC maximality as well-posedness (why “maximal” is mathematical)

A Syncré universality claim is only meaningful if it is stated in a way that is stable under interpretation: it must name a slice or subsystem, specify a cycle-valued phase observable, specify an admissible forcing route (a witness mechanism), and state coverage on the *correct* target with its baseline.

That is exactly the information encoded by the COC gate:

- PO: a declared phase observable
- WM: a declared witness mechanism
- CT: a declared correct-target rule (circle/torus/CST with the right baseline)

So “COC is maximal” is not an attempt to define universality into existence.
It is the statement that **any** context where a Syncré universality claim can even be *well-posed* necessarily carries PO+WM+CT, and therefore lies in COC.
Outside COC, the engine does not say “coverage fails”; it says “the claim is not yet meaningful in a checkable way,” and it returns a boundary obstruction.

If any item fails, the correct engine output is a named obstruction (WOB) rather than a coverage certificate.

## Validator predicate suite (completeness interface)

Declared-regime completeness is enforced through a finite suite of validator predicates.

- each predicate \(V_{\mathrm{XX}}\) corresponds to one canonical obstruction code `WOB-XX...`
- a WSC must include a lightweight predicate ledger under `validator_predicates`
- if any applicable predicate fails, the correct output is a WOB with the associated code and evidence checklist

Normative spec:

- `engine/contracts/VALIDATOR_PREDICATE_SPEC.md`
- `engine/contracts/validator_predicates.json`
- `engine/contracts/wob_codebook.json`
