Design 62: the page is read-only and its reach internal before assignment (ADR 0481 v4)
mesh/merge-gate head 46d6840c67f2 merged into trunk 82343be78f51 — pass: the change touches no module of the mesh's graph
mesh/repo-check head 46d6840c67f2 merged into trunk 82343be78f51 — pass: its merge-check.sh passed
mesh/delivery delivered

This commit is contained in:
jochen
2026-10-21 11:56:03 +02:00
parent b717900700
commit 46d6840c67
@@ -55,8 +55,9 @@ machine then reaches the service without being copied between machines.
## 3. Who may see it
The page requires `route` with an internal reach and `oidc-client` from Keycloak, as the mail web client does (ADR
0440 §2, §3). A trusted setting `operators` names the identities let in by the ID token's user name; it is empty by
The home server's route `reach` is set to `internal` before the page is assigned there, so the route proxy composes
only the internal name, and the page answers 404 to any other host (ADR 0440 §2, ADR 0481 §6). It requires
`oidc-client` from Keycloak, as the mail web client does (ADR 0440 §3). A trusted setting `operators` names the identities let in by the ID token's user name; it is empty by
default, so nobody is let in until the operator names themself. Nothing about the page is public.
## 4. What it shows
@@ -69,14 +70,14 @@ default, so nobody is let in until the operator names themself. Nothing about th
- **Documents and transactions.** Searchable lists for a period; a document opens as the file the service keeps,
streamed through `bookkeeping.document`.
The page reads live and keeps no copy (ADR 0481 §4). Keeping the history in a database of the mesh's own is the own
The page only reads: it calls no verb that changes the service, and keeps no copy (ADR 0481 §4). Keeping the history in a database of the mesh's own is the own
bookkeeping research (issue 1457), and a decision of its own.
## 5. What the accountant has done is never undone
Every verb of `okioki` that changes the service reads the booking or document first and refuses one the accountant
has reviewed, approved for sending or booked, naming it and why, and sends nothing (issue 1608, ADR 0481 §5). The
page shows such items as locked. This holds for the agent's calls as much as for the page's.
Every tool of `okioki` that changes the service, whoever calls it, reads the booking or document first and refuses
one the accountant has reviewed, approved for sending or booked, naming it and why, and sends nothing (issue 1608,
ADR 0481 §5). The page shows such items as locked.
## 6. In what order it is built
@@ -84,11 +85,12 @@ page shows such items as locked. This holds for the agent's calls as much as for
from mail, the accountant guard (1608); assigned to the home server, its password given at its desk prompt, the
laptop's retired on the operator's Approve.
2. **The read-only page**: `okioki-web` with the overview, the to-do and the lists, behind Keycloak.
3. **Changes from the page**: linking, tagging, marking paid and closing, each through the same guarded verbs.
3. **Changes from the page** (linking, tagging, marking paid, closing) are not part of this design: they need a decision
of their own (ADR 0481 §4), and would go through the same guarded tools.
## 7. Still open
- **The route proxy on the home server** did not answer its tools on 2026-10-21; whether it serves an internal name
there is checked before step 2.
- **Changes from the page** (step 3) wait for the guard's fields to be known: which of the service's fields an
accountant's submission sets is read from the service before 1608 is built.
- **The guard's fields**: which of the service's fields an accountant's submission sets is read from the service
before 1608 is built.