Induscript · Structural Atlas v1.0
IAM service-role matrix
Exact privileges. No shared accounts.
The matrix is the protocol. public_api is the only role this page assumes. Break-glass is audited and temporary.
| Role | Z₁ Ledger | Z₂ Analytics | Z₃ Graph/Model | Z₄ Ontology |
|---|---|---|---|---|
| curator | INSERT (new) · EXECUTE supersede SP. No UPDATE/DELETE. | Read published snapshots. | No access. | SELECT, INSERT reviewed notes. |
| evidence_reviewer | SELECT drafts and published. | Read published snapshots. | Read model outputs. | SELECT, UPDATE approval flags. |
| snapshot_exporter | SELECT approved records only. | WRITE immutable Parquet. | No access. | No access. |
| analytics_runner | Explicitly revoked. | READ snapshots / WRITE features. | WRITE named projections. | No access. |
| graph_loader | Explicitly revoked. | READ named projections. | WRITE graph DB. | No access. |
| model_runner | Explicitly revoked. | READ features. | READ/WRITE embeddings & results. | DENY SELECT. Hard quarantine. |
| ontology_editor | No access. | No access. | No access. | INSERT/UPDATE hypotheses only. |
| public_api | SELECT published release views only. | READ released aggregates. | READ approved model outputs. | SELECT with speculative warnings attached. |
| break_glass_admin | ALL — audited, temporary. | ALL — audited. | ALL — audited. | ALL — audited. |
Curator supersession
Direct UPDATE and DELETE on artefacts are revoked. The only write after insert is canonical.supersede_artefact_revision: close the current revision, insert a draft child, write an audit event. That is how the ledger stays a ledger.