Tier 2 currently has two checks: sync.firehose.commit-event-schema and sync.lifecycle.creation-event-order. Missing firehose coverage:
#account,#identity,#syncfield-level schema checks- Cursor semantics: future cursor → error + close; too-old cursor →
#infothen replay from oldest;seqmonotonicity within a connection - Size-limit edges (5 MB frame / 2 MB blocks / 1 MB record / 200 ops); at least the assertable producer-side ones
- No
#commitevents for non-active accounts (needs lifecycle teardown; see the lifecycle-checks issue)
Observation model is settled: connect with cursor: 0 and replay the backfill window rather than racing the live stream (see docs/interop-traps.md). The harness (src/firehose.ts, collectFirehose) already supports this.
Done when: the above checks exist and pass against the oracle.
Done in 2879d36 (pushed to main).
Three new tier-2 checks, all passing against the oracle (pnpm e2e green, exit 0):
Not probed, deliberately: per-record 1 MB / 200-ops enforcement. The write path rejects oversize records before a commit exists, so there is no producer-side firehose behavior to assert; the assertable halves (frame/blocks/ops on observed commits) were already covered by commit-event-schema.
Two undocumented reference behaviors are now in docs/interop-traps.md: deactivated-account writes fail with 401 (not 400), and activateAccount rejects any request body.