Tell us what the document is, in your words
Local names, model numbers, nicknames — all fine. We do the translating.
{{ err.cause }}
{{ err.todo }}
This is the step that writes to the registry — nothing before it touches the graph. It needs an APAS token; the operator's own token is refused here with a 403.
Written to the registry. Both approvals are on record, and the document now has a permanent address.
While verifying this bundle, a relationship was found that links a Riverbend asset to an asset belonging to another utility. Tenant isolation is enforced before anything reaches the graph, so a relationship like this should not have been possible to create.
Relationships for this bundle are not shown, because a partial list would look like a normal one. This is not something you can correct from here, and retrying will not clear it — it may make it harder to trace. It has been escalated as a data-isolation incident.
{{ serr.cause }}
{{ serr.todo }}
Information architecture
Five milestone pages become three task areas plus a shared object. Navigation is filtered by role, never by capability shipped.
One rendering paradigm: server JSON, client renders
FastAPI stays a pure JSON API; every pixel is rendered client-side from that JSON. Python emits no HTML strings — that path is deleted, not deprecated.
Confidence language
Operators never see the word “confidence” or a raw probability. They see what to do.
One error envelope, three tiers of treatment
Every failure arrives in the same shape. The UI branches on error, never on message, and request_id is on screen and one click from the clipboard in every single state.