API: Intents and commits
Capability state: fixture-rehearsed.
intent.precheckis wired through Gravity incrates/gestalt-cloud.intent.commitwalks an end-to-end fixture flow with durable atom commit journal (recent commit9d3570e).
The intent operations are the most basic membrane crossing: a vessel proposes an act, the cloud Geist either admits, refuses, or pends.
intent.precheck
Section titled “intent.precheck”Predict whether a proposed intent would pass admission, without attempting to commit.
POST /v1/intents/precheckruntime_owner: cloud_geistsdk_role: construct request and verify receiptrequest_record: CloudIntentPrecheckRequestRequest
Section titled “Request”interface IntentPrecheckRequest { tenant: GestaltRef; // e.g. "tenant_node:rheinwerk_calibration" capability: GestaltRef; // e.g. "capability:issue_invoice_fixture_v1" action: string; // e.g. "issue" evidence: GestaltRef[]; // evidence_bundle:* refs fixture?: boolean; // marker; cloud is fixture-only today}Response
Section titled “Response”MembraneResponse<unknown> with one of these body shapes:
Refused (most common when evidence is missing):
{ "operation": "intent.precheck", "outcome": "refused", "body": { "failedGate": "required_evidence_missing", "missingEvidence": ["invoice_payload"] }, "receipt": { "ref": "receipt:fixture_precheck_refusal", "outcome": "refused", "reasons": ["fixture precheck requires invoice_payload"], "fixture": true }}Pending action:
{ "operation": "intent.precheck", "outcome": "pending", "body": { "pendingAction": "pending_action:..." }, "receipt": {...}}Admitted preview (would admit if committed):
{ "operation": "intent.precheck", "outcome": "verified", "body": { "admissible": true, "previewedEffects": [...] }, "receipt": {...}}SDK example
Section titled “SDK example”const response = await client.precheckIntent({ tenant: "tenant_node:rheinwerk_calibration", capability: "capability:issue_invoice_fixture_v1", action: "issue", evidence: ["evidence_bundle:invoice_payload"],});intent.commit
Section titled “intent.commit”Submit a standing-bound intent for actual admission.
POST /v1/intents/commitruntime_owner: cloud_geistsdk_role: submit standing-bound intentrequest_record: CloudIntentCommitRequestresponses: atom | refusal | pending_action | receiptRequest
Section titled “Request”CloudIntentCommitRequest (server-side type) — broadly the same shape
as the precheck request plus signing posture and additional context.
The TS SDK wraps this through the contract; for explicit construction
see crates/gestalt-cloud/src/lib.rs.
Response
Section titled “Response”MembraneResponse<unknown> with one of:
Admitted — atom committed:
{ "operation": "intent.commit", "outcome": "admitted", "body": { "atom": "atom:01H...", ... }, "receipt": {...}}Refused — structured refusal.
Pending — pending action created.
Outcomes
Section titled “Outcomes”admitted atom committed; receipt carries the atom refrefused structured refusalpending pending action awaits a higher signing postureRefusal codes you may see
Section titled “Refusal codes you may see”required_evidence_missingauthority_package_missingauthority_package_stalestanding_missingstanding_stalecapability_unrecognizedcapability_supersededsession_expiredsession_tamperedscope_mismatchcross_tenant_accessFull list in ../reference/refusal-codes.md.
Where to read next
Section titled “Where to read next”- Concepts: atoms and capabilities
- Concepts: the membrane
- API: capabilities
- API: economy — economy operations as specialized intents
- Reference: refusal codes