One holder tells another something they hold, honestly or deceptively.
umwelt call story.umw transmit '{
"projectId": "ball",
"attemptId": "lie",
"from": "bob",
"to": "duchess",
"sourceRecordId": "bob-did",
"intent": "deceptive",
"distortedClaim": {
"subject": "bob",
"predicate": "stole",
"object": { "kind": "entity", "id": "necklace" },
"polarity": false
},
"attitude": "believes",
"confidence": 0.8,
"position": { "tick": 3 },
"recordId": "duchess-told"
}'const result = await client.transmit({
projectId: 'ball',
attemptId: 'lie',
from: 'bob',
to: 'duchess',
sourceRecordId: 'bob-did',
intent: 'deceptive',
distortedClaim: {
subject: 'bob',
predicate: 'stole',
object: { kind: 'entity', id: 'necklace' },
polarity: false,
},
attitude: 'believes',
confidence: 0.8,
position: { tick: 3 },
recordId: 'duchess-told',
});var result = engine.Transmit(new TransmitInput
{
ProjectId = "ball",
AttemptId = "lie",
From = "bob",
To = "duchess",
SourceRecordId = "bob-did",
Intent = Intent.Deceptive,
DistortedClaim = new Claim
{
Subject = "bob",
Predicate = "stole",
Object = new ClaimObject.Entity { Id = "necklace" },
Polarity = false,
},
Attitude = Attitude.Believes,
Confidence = 0.8,
Position = new Position { Tick = 3 },
RecordId = "duchess-told",
});{
"eventId": "01a1cbd8-63e1-79d0-b8d5-e4ba0f31c843",
"recordIds": ["duchess-told"],
"transitionIds": [],
"version": 4,
"warnings": []
}Payload
| Field | Type | Description |
|---|---|---|
projectIdrequired | string | The project to write to. |
attemptIdrequired | string | Makes a retry safe: the same request with the same attempt id is applied once. |
fromrequired | string | Who tells. |
torequired | string | Who is told. |
sourceRecordIdrequired | string | The teller’s own Holding being told. It must be active at position. |
intentrequired | "honest" | "deceptive" | "unknown" | honest, deceptive or unknown. The engine records it; it decides nothing. |
distortedClaim | Claim | What the recipient is told, when it differs from the source: a lie, a rumour gone wrong. |
attitude | "knows" | "believes" | "suspects" | "remembers"default "believes" | How the recipient holds it. |
confidencerequired | number | The recipient’s confidence, between 0 and 1. |
positionrequired | Position | Where the generated event stands on the main axis: { "tick": n }. |
recordId | string | The id of the recipient’s new Holding. Generated when absent. |
on | object | Positions of the generated event on additional axes, such as { "reading": 12 }. |
text | string | What was said, in words, for search. |
timelineId | stringdefault "main" | The timeline to write to. |
Result
| Field | Type | Description |
|---|---|---|
eventIdalways | string | The event written, with the id given or generated. |
recordIdsalways | string[] | The records written, in order. |
transitionIdsalways | string[] | The transitions written, in order. |
versionalways | integer | The version this commit received. Reads at an earlier asOfVersion do not see it. |
warnings | Warning[] | UNKNOWN_PREDICATE (open vocabulary) or SECRET_BREACH. Warnings never block a write. |
Rules
One commit, built for you. An event of type umwelt:transmit and the recipient’s Holding, acquired told-by the teller with the source record, so trace can follow the chain.
A lie is a valid belief. The recipient holds what they were told, even when canon says otherwise; contradictions reports it.
Secrets are never blocked. Telling a secret outside its circle succeeds with the warning SECRET_BREACH, listed by breaches.
The intent stays with the narrator. Whether a telling was honest is not something the recipient knows. Reads made for a holder (perspective, holdings, compare, and search with a holder) show the acquisition with intent: "unknown"; record, trace and breaches show what was recorded. Build a character’s prompt from the first kind, never from the second.
Errors
VALIDATION_FAILEDThe payload is malformed, the source is not a Holding of from, or it is not active at position.NOT_FOUNDThe project, a holder, the source record or the timeline does not exist.CONFLICTThe attemptId was already used with a different request.INVALID_STATEThe timeline is a draft that was promoted or discarded, and accepts no more writes.HANDSHAKE_REQUIREDOver the protocol, hello was not sent first.Every code is listed in Errors.