@ixo/scheduling-contracts
v0.2.0
Published
Provider-neutral sovereign-scheduling contracts: canonical JSON digests, deterministic identities, the time engine, schedule schemas, control operations and the provider conformance suite.
Readme
@ixo/scheduling-contracts
Provider-neutral contracts for IXO Sovereign Scheduling. Five subpath exports,
three runtimes (Node ≥ 22, workerd, browsers), WebCrypto only — no
node:crypto, no Buffer. Spec of record: Linear IXO-4417.
| Subpath | Contents |
| --- | --- |
| /identity | RFC 8785 (JCS) canonicalizer with a float ban, sha256: digests, the three deterministic identities (occurrence, effect, delivery). Dependency-free; the Cloudflare Worker imports this alone. |
| /time | The five trigger kinds, strict 5-field cron, IANA zone resolution with the two normative DST rules, the occurrence engine. Pure — it never reads a clock. |
| /schema | ScheduleSpec, occurrence/attempt/receipt types, the 8-state lifecycle and 11-state occurrence machine as frozen transition tables. |
| /provider | The scheduling provider interface and the behavioural conformance suite both adapters must pass unmodified. |
| /control | The twelve control operations; every mutation carries expectedRevision, expectedDigest and an idempotencyKey. |
Two rules that are easy to violate and expensive to discover late:
- Peer dependency of
@ixo/editor, never a normal dependency. Two resolved copies means two hash implementations and two different occurrence identities for the same schedule — a silent correctness failure. - Any change to a digest input is an occurrence-identity change. That is a
migration with a plan, not a version bump. The golden fixture in
test/identity.test.tsexists to make such a change fail loudly.
Develop
npm install
npm run typecheck
npm testVersioning is changesets; nobody hand-edits package.json.
