Skip to content

API: Zeitgestalt, tensions, closure

Capability state: zeitgestalt.query is staging-durable; tension.query is fixture-rehearsed; closure.surface is staging-durable. No real explanatory engine yet — see 022 gap report item 14.

The Zeitgestalt and tension operations let you ask why the company is in the state it’s in, query open tensions, and inspect / open closure surfaces.

Request receipt-backed inquiry over governed worldline.

POST /v1/zeitgestalt/query
state: staging-durable
sdk_role: request receipt-backed inquiry over governed worldline
request_record: CloudZeitgestaltQueryRequest
responses: zeitgestalt_answer | refusal | receipt
interface ZeitgestaltQueryRequest {
tenant?: GestaltRef;
reality?: GestaltRef; // record or projected
question?: string; // e.g. "why can March not close?"
entitlement?: GestaltRef;
}
{
"operation": "zeitgestalt.query",
"outcome": "verified",
"body": {
"receiptBacked": true
},
"receipt": {
"ref": "receipt:fixture_zeitgestalt_query",
"outcome": "verified",
"reasons": ["Zeitgestalt fixture answer returned"],
"fixture": true
}
}

Refused with proof_entitlement_missing if no entitlement is supplied for queries that produce disclosable answers.

What a real Zeitgestalt answer will look like

Section titled “What a real Zeitgestalt answer will look like”

Today the body returns receiptBacked: true only. When the explanatory engine lands, the answer will walk:

reality
query_time
schema_version
authority_epoch
lens
source_atoms which atoms support the answer
capability_path which capabilities were cited
evidence which evidence backs the source atoms
standing who acted under what
effects what changed because of the cited atoms
closure_surfaces what is open or resolved
tensions what conflicts remain
receipts receipt refs for verification

The output is structured before it is pretty. An LLM may render the prose; the structured answer is not an LLM invention.

const why = await client.zeitgestaltQuery({
tenant: "tenant_node:rheinwerk_calibration",
reality: "reality:record",
question: "why can March not close?",
entitlement: "entitlement:fixture_zeitgestalt",
});

Query active tensions through the membrane.

POST /v1/tensions/query
state: fixture-rehearsed
sdk_role: query active tensions through membrane
request_record: CloudTensionQueryRequest
responses: tensions | receipt
interface TensionQueryRequest {
tenant?: GestaltRef;
reality?: GestaltRef;
// optional filters: tags, status, subject
}
{
"operation": "tension.query",
"outcome": "verified",
"body": {
"tensions": [
{
"ref": "tension:financial_period_non_closure_2026_04",
"status": "open",
"tags": ["financial_period_non_closure"],
"subjectAtoms": [...],
"createdAt": "2026-04-26T..."
}
]
},
"receipt": {...}
}

Tension status: open | resolved | scarred.

financial_period_non_closure
contested_atom
evidence_gap
standing_lapsed
counterparty_unacknowledged
external_authority_required
const tensions = await client.tensionQuery({
tenant: "tenant_node:rheinwerk_calibration",
reality: "reality:record",
});

Open a closure surface and emit a tension explicitly. (Most surfaces open implicitly through atom emission; this operation is for cases where a surface needs to be opened by direct membrane call.)

POST /v1/closure/surface
state: staging-durable
sdk_role: open closure surface and emit tension
request_record: CloudClosureSurfaceRequest
responses: closure_surface | tension | receipt
interface ClosureSurfaceRequest {
tenant?: GestaltRef;
// surface kind, subject atoms, opening evidence
}
{
"operation": "closure.surface",
"outcome": "admitted",
"body": {
"closureSurface": "closure_surface:...",
"tension": "tension:..."
},
"receipt": {...}
}
  • Not a SQL query interface. Zeitgestalt explains worldline meaning; SQL queries rows.
  • Not an LLM summary. The structured answer is governed; an LLM may render but does not invent.
  • Not search. Search is a Koerper concern. Zeitgestalt walks causal chains.