I1305 — An observed contract has a fingerprint, a compatibility state and a fixture
Record what the browser observed as a versioned contract: a fingerprint of the shape, a compatibility state, and a sanitised fixture that CI replays — so that a private surface changing is a diagnosable event rather than a silent wrong answer.
BLOCKED wave 3 · p1 · deep-work profile · parallel safe
Blocked. This issue cannot start until I1304 is done. The status is derived from that, not declared.
Objective
Record what the browser observed as a versioned contract: a fingerprint of the shape, a compatibility state, and a sanitised fixture that CI replays — so that a private surface changing is a diagnosable event rather than a silent wrong answer.
Why
A vendor's undocumented surface is not a contract and will change. The failure this must prevent is not the loud one; it is a parse that half succeeds and writes plausible nonsense into the store.
Current state
Nothing exists.
Desired state
Each observed operation carries a schema fingerprint and a state — compatible, degraded, incompatible. A shape that no longer matches marks the contract degraded, refuses to persist a partial parse, falls back to the browser transport, and captures a new sanitised observation for a person to review. No observation ever promotes itself to a production contract.
Scope
- scripts/lib
- test/cases
- docs
Out of scope
- Hardcoding any endpoint path taken from a prompt, a gist or documentation rather than from observed authorised traffic
- Automatic promotion of a new observed shape
Dependencies
What waits on this
- I1306BLOCKED A sync resumes, repeats itself without harm, and says how fresh it is
- I1307BLOCKED The ChatGPT shape is mapped from evidence and never becomes the canonical model
Acceptance criteria
- Every observed operation has a fingerprint over its shape and a compatibility state
- A mismatched shape fails closed; nothing partial is persisted
- A degraded contract falls back to the browser transport where one exists, and reports unavailability where none does
- Fixtures are sanitised at capture time and CI replays them with no network and no account
- Promoting a new contract requires a person and a passing test, and the mechanism cannot do it alone
Validation
- bash test/run.sh
Evidence required
- fingerprinted
- fails_closed
- fallback_proven
- fixtures_sanitised
- promotion_manual
Evidence
None recorded. Every token above needs a command or an artifact behind it before this issue can be completed; narrative is refused.
Risk
A fixture is a recording of private conversation. Sanitisation that runs after capture is sanitisation that has already failed; it runs before anything reaches disk.
Timeline
- started
- —
- verified
- —
- completed
- —
Those three fields, the evidence above and the state of the dependencies are all the status is made of. There is no status field to disagree with them.
Canonical record: .ai/repo/project/issues/I1305.yaml. Read it back with majordomus plan show I1305.