Recording a decision from the console
The act, step by step — and it is a human act wherever you perform it.
b. Recording a decision from the console — the act, step by step
This is the one thing on /console that writes. Everything else shows you the record;
this puts a signed human decision into it. Read §3b.0 before you click the first time.
3b.0 — what the click actually is. One row in fleet_gate, signed with the workspace
key, exactly like the row saphan gate … writes from a terminal. Same writer, same
validation, same refusals. The console is not a second way to decide; it is a second hand
on the same door.
⚠ The signature does not prove who you are. It proves the workspace key produced the row's bytes. That it was you is proved by your session — which is why this button exists only behind the login of §1/§2, and why the
actoron every row the console writes is taken from your session and can not be sent by the page.
3b.1 — find the act. Go to /console/next. A row carries a decision form only when the
engine's own queue currently owes that act on that stream and the act is an owner-class
gate write. Rows without a form are not broken: the projection listed no act you may fire
there, and the console never invents one. Copy the command it shows instead.
3b.2 — choose the decision. The choices are the engine's own writable vocabulary for
that gate — nothing more. At a stop-2 gate: accept, conditions, reject,
closed-without-merge. At a merge gate: ready-to-merge only.
3b.3 — write the ground. The box under the decision is the row's detail — the same
field saphan gate --note writes. It is not required, because the CLI does not require
it either, and this surface will not refuse an act the engine would accept.
If you leave it empty, it is recorded empty. Nothing is invented on your behalf. The row is permanent, and a decision whose reason was never written down cannot have one added later — the preview says so, in those words, before you confirm.
3b.4 — press Preview this decision. Nothing is written. The page you land on is the dry run: the row that would be inserted, field by field, and the state your stream would move to. It is produced by the same validation the write runs, not by a description someone wrote — so what it shows is what lands.
3b.5 — press Record this decision. Now the row is written and signed. The receipt shows the row as recorded, the state transition, and the next act the record now owes on that stream.
3b.6 — verify it, from outside the console. Do this the first time, at least:
Your row should be listed with signature verdict ok.
3b.7 — if it refuses. You get a page naming the refusal's class and, where the engine produced them, its own sentences — the same ones the terminal prints. Nothing was written. The three you are most likely to meet:
| class | what happened | what to do |
|---|---|---|
console-act-not-offered | the queue does not list that act right now — usually because the record moved since the page was drawn (someone else acted, a run finished) | reload /console/next and act on what it now lists |
console-act-decision-not-offered | that decision is not writable at that gate | pick one the form offers |
gate-integrity | the engine refused the row — the numbered list on the page is its own STOP list | fix what it names; the page also prints the next act the record projects |
3b.8 — if it says "this request carried a valid session cookie and no valid act token"
(console-act-forgery): the form you posted did not come from a freshly loaded console page
of your session. Reload /console/next and act from there. If you did not initiate
that request, some other page did — see §6 on CSRF.
3b.9 — what the console will not do. It will not merge (the human merges; the engine observes, §1.7). It will not tear down. It will not act on many streams at once. It will not fire an act the queue did not list, whatever a crafted request asks for.