Skip to content
AbloAblo Docs
Esc
navigateopen⌘Jpreview
On this page

Hosted Coordination Conformance

Prove claim behavior once, without coupling the proof to a document, workflow, or GraphQL schema.

Use two test layers when adopting Ablo behind an existing application:

Proof Responsibility
Domain contract State transitions, stale evidence, provenance, idempotency, and old/new path parity.
Hosted coordination conformance Participant identity, exclusion, heartbeat, release, and lease-expiry recovery.

The runnable hosted proof is examples/coordination-conformance. It creates a temporary test branch that inherits an existing non-production schema. It does not push a schema or change domain rows.

File structure

src/conformance/index.ts
  -> src/conformance/claimExclusion.ts
  -> src/conformance/contract.ts
src/runtime/index.ts
  -> src/runtime/client.ts
  -> src/runtime/config.ts
live/index.ts
  -> live/claimAndExit.ts

The conformance operation depends on a narrow structural claim interface. The runtime child supplies the real Ablo model resource. Domain examples depend on the same narrow behavior without inheriting this runner’s branch or credential setup.

Run

First run the deterministic structure and configuration checks:

cd examples/coordination-conformance
npm test
npm run typecheck

Then name an existing model on the CLI login’s dedicated non-production project:

ABLO_CONFORMANCE_MODEL=existingModel npm run test:live

The model name supplies only a typed claim namespace. Every claim target is a new random identifier; the proof creates no model row. The disposable branch is deleted even when an assertion fails.

The runtime deliberately calls model.claim(id, options). This identifier overload is row-free. model.claim({ id, ...options }) is the row-backed form: it reads the model row and is not interchangeable in a coordination-only rollout.

What this lets domain examples omit

A document-processing example does not need its own branch provisioning, session delegation, heartbeat, or process-death fixture. It must still test its own behavior when a claim is won, skipped, released after failure, and combined with changing evidence.

This separation prevents a vertical testcase from force-replacing an inherited schema merely to re-prove generic lease behavior.

Was this page helpful?