Scope matters here. Article 15 access and Article 17 erasure operate
today on the developer’s sandbox tenant — the configuration and
ledger blob keyed to that developer. The separate runtime-ingest
plane that holds end-user PII (anonymised viewer ID, IP, user-agent,
device ID) does not yet have per-subject access/erasure; that is
on the roadmap. Where this page describes a control as planned, it
is not implemented today.
Controller / processor split
For AR and spatial-measurement workloads, EnfinitOS acts as a processor. The operator that runs the estate is the controller: they decide why and how end-user personal data is processed, and — critically — they are responsible for capturing and evidencing end-user consent at the point of collection. EnfinitOS processes that data only on the operator’s documented instructions. EnfinitOS does not operate a server-side data-subject or consent register today; the only consent mechanism in the codebase is the marketing website’s own cookie banner, which governs this website and not end-user measurement data. A signed, platform-side consent register — with consent state recorded into the provenance chain — is a roadmap item and is not implemented.Article 15 — Subject Access Request
Access runs as an asynchronous DSAR job pipeline: create a job, run it, download the export bundle.
Job states are
REQUESTED, COLLECTING, PACKAGING, READY,
DELIVERED, EXPIRED, FAILED. Each tenant can hold 5 active
(non-terminal) jobs at once. The download link expires 7 days after
the job runs: an undownloaded READY job sweeps to EXPIRED, and a
fresh job regenerates an identical bundle, because the builder is
deterministic.
The export bundle carries its sections in the requested format
(JSON, CSV, NDJSON, or PARQUET), an audit report — who
requested it, what was included, and which rows were filtered out
and why — and an integritySha256 digest over the canonical bundle
that any auditor can re-derive. DATA_SUBJECT exports exclude
tenant configuration sections under data minimisation.
For a synchronous whole-tenant Article 15 read there is also
GET /v1/compliance/export, which returns the full export inline.
Article 17 — Right to erasure
Erasure is exposed today asPOST /v1/compliance/erase. It is
treated as the destructive operation it is: the key must carry the
wildcard * scope and the body must be exactly {"confirm":"ERASE"}
(double opt-in). The endpoint deletes the developer’s sandbox
tenant — the configuration and ledger blob keyed to that developer
(bases, rights, offers, challenges, proof packs, and the event log) —
and returns an erasure receipt counting every record class removed.
The developer-account profile itself is preserved; erasing the
account is handled out-of-band (contact privacy@enfinitos.com).
Why this does not break the proof chain
A common worry with immutable, signed audit trails is that erasing a person forces you to break a signature. EnfinitOS avoids that by data minimisation at the design layer (Article 25): the signed proof and provenance payloads are scoped to organisations, rights, and content hashes — not to natural persons. They carry no name, email, device identifier, or other end-user PII. Because there is no natural-person PII inside a signed pack, erasing a data subject does not require removing anything from — or invalidating — a proof pack. The cryptographic chain and the subject-erasure obligation do not collide.The current erasure endpoint operates on the sandbox tenant
blob. It performs a flat delete of that tenant’s records; it does
not crypto-shred, and it does not pseudonymise per subject.
Those mechanisms are not implemented today.
What is not yet implemented (roadmap)
The natural-person PII that does exist — runtime ingest identifiers (anonymised viewer ID, IP, user-agent, device ID) and account/ applicant contact emails — lives in a separate processing plane from the signed proof structures. Per-subject erasure of that plane is planned but not yet built. Specifically, the following are roadmap items, not current controls:- Per-subject erasure of the runtime-ingest PII plane — selective deletion or anonymisation of a single data subject’s ingest records (today, erasure operates at sandbox-tenant granularity, not per-subject across the ingest plane).
- Crypto-shredding — destroying per-subject encryption keys to render data unrecoverable rather than issuing row deletes.
- A pseudonym → subject mapping with destruction-on-erasure — not built. (Earlier versions of this document described pseudonymising the subject in future packs and destroying a pseudonym mapping; that mechanism does not exist and is not how erasure works, because, as above, the signed packs contain no natural-person PII to pseudonymise.)
Data map
A formal, machine-maintained “data map” — a structured inventory that enumerates every category of personal data, its legal basis, its retention period, and the controllers / processors involved, surfaced per-tenant on the operator dashboard — is on the roadmap and not yet implemented. The authoritative descriptions of what personal data is processed, on what basis, and by which subprocessors, are today maintained in this documentation set and in the public privacy policy and subprocessor list. TheGET /v1/compliance/export response returns the sandbox tenant’s own
records; it is not a substitute for that controller-level data map.
Where the proof shows up
DSAR access jobs record their lifecycle in the export’s audit report (who requested it, what was included, and which rows were filtered out and why), and that report carries anintegritySha256 digest any
auditor can re-derive with the
open-source auditor. Routing every compliance action
(including erasure receipts) into the tenant’s signed proof chain as a
first-class proof event is a roadmap item; today the erasure endpoint
returns a counts receipt to the caller rather than emitting a signed
chain event.