01

Evidence and provenance

A fact carries the document, the page, the character span and the quote it came from. A fact without those is not stored — the constraint sits in the database, so no application path can write around it.

stored
Registered officeProvidence Estate, Mahé
«…whose registered office is situate at Providence Estate, Mahé, Republic of Seychelles…»
certificate-of-incumbency.pdf · p.1 · chars 402–486extracted 06.09 · confirmed by A. Kask 06.09
refused by the database
Beneficial owner, namenot stored

The assistant proposed a name from an unsourced summary page. There is no page, no span and no quote behind it, so the write was rejected. The proposal remains visible as a proposal and never becomes a fact.

constraint: fact_requires_span · rejected 06.09
02

Audit and the hash chain

Every entry stores the hash of the entry before it. Editing one entry changes its hash, and every entry after it stops verifying. There is no update path and no delete path — a correction is a new entry that points at the old one.

integrity is derived by re-computing the chain, never reported by a flag.
audit chain · C-DEMO-SC-ORION · 6 of 128 entries shownintegrity: broken from entry 003
  1. 001 · case openeda41f…09c2verifies
  2. 002 · documents requested3c60…e2b9verifies
  3. 003 · altered98d4…40aahash no longer matches
  4. 004 · documents classifiedb7c3…5510stops verifying
  5. 005 · extractions proposed7b3e…d410stops verifying
  6. 006 · outcomes recordedc902…1f77stops verifying
change one entry and every entry after it stops verifying

This screen is the tampering case, run against a copy. A supervisor recomputes the chain from entry 001 and finds the first entry whose stored parent hash no longer matches — here, 003.

what is stored in an entry

actor · role · action · subject · parent hash · own hash · timestamp (UTC) · policy version · rules version

03

Sealing and the daily root

On signature the root hash is signed with your instance key; only the hash leaves the case. The log’s daily root is signed with our own key and published, so the series can be checked against a copy kept from any earlier day — the time on it is our own statement of when we sealed, and no third party attests it yet. The seal has 4 states, and one of them is the product admitting it cannot seal — that state is drawn as carefully as the others.

Not sealed

The decision has not been signed. The file may be exported, and the export says “unsealed draft” on its cover.

127 entries · no seal yet
unsealed draft · no signing key in this deploymentSealing unavailable

No signing key is configured in this deployment. The seal action is disabled and says why. The product does not draw a seal it cannot produce.

disabled: instance key not present
Sealed

The root hash is signed. The cover carries the hash and the signature over it, and a supervisor can check both against the instance key without us — the time beside them is our own statement of when.

7f21…73af · 07.09 09:41 UTC
Verification failed

The recomputed root does not match the signed root. This is a finding about the file, and it is stated as one — no attempt is made to re-seal.

first divergence: entry 003
04

Roles and four eyes

Rights are enforced in the database, not in the interface. A blocked cell names the right that governs it — a control that goes quiet teaches an analyst nothing and survives no audit. Four eyes is the one rule that no role can hold alone: the account that prepared a recommendation cannot approve it, whatever its role.

What each role may do, and where a right is withheld or the tool is absent from the surface.
actionanalystsenior analystMLROadminprogram
Read a caseallowedallowedallowedallowedallowed
Add documents and factsallowedallowedallowedallowedallowed
Dispute or correct a factallowedallowedallowedno right: fact.disputeno right: fact.dispute
Prepare a recommendationallowedallowedallowedno right: reco.prepareallowed
Record a decisionno right: decision.recordallowedallowedno right: decision.recordtool not present
Countersign a decisionno right: decision.countersignfour eyes: not the preparing accountallowedno right: decision.countersigntool not present
Accept residual riskno right: risk.acceptno right: risk.acceptallowed, with written groundsno right: risk.acceptno right: risk.accept
Choose a lighter set of requirementsno right: policy.relaxno right: policy.relaxallowed, recorded on the caseno right: policy.relaxno right: policy.relax
Manage accounts and keysno right: tenant.adminno right: tenant.adminno right: tenant.adminallowedno right: tenant.admin
an administrator can manage the tenant and cannot touch a case. that separation is the point of the column.
05

Tenant isolation

Tenants are isolated from one another at the row level, and the isolation is a database policy rather than a query convention. All data is hosted in the European Union.

what tenant isolation does not cover

Our own administrative access to the deployment. Row-level policy separates your tenant from another tenant; it does not separate you from the people who hold the host. Section 09 says what that means today, and what is not in place.

06

What this never does

  • It never records a decision. Approval, conditions, refusal — each enters the record by a named human hand, and decision.record is offered to no program.
  • It never stores a fact it cannot point to by page, span and quote.
  • It never lets the account that prepared a recommendation approve it.
  • It never puts your data on chain. What goes there is a hash and nothing else.
  • It never runs a model inside the coverage computation.
  • It never returns your findings to a counterparty. The tools that could are not in their surface.
procurement · vendor review

The part your security team asks for, before the call.

Everything above is the product. Everything below is us as a supplier — data, keys, access, sub-processors, certifications, automated decisions, continuity and disclosure, in the order a questionnaire asks for them. Controls that are not in place are set in the same type as the ones that are, and each line says what it is checked against.

07

Data, and how long it stays

Where the data sits, how long it is kept, what erasure removes and what it leaves. The retention number is our reading of the law and is marked as our reading until a lawyer signs it.

  • Hostingin place

    One deployment, hosted in the European Union. Neither the database, the queue nor the object store publishes a port outward — reaching any of them means reaching the host first, and that is checked rather than declared.

    checked: deployment
  • Retentionpartly in place

    Five years after the business relationship ends, counted from the end of the relationship and not from the day a document arrived. The number is our reading of AMLD art. 40 and reads as a floor rather than a period, so the policy file carries it as unconfirmed — and nothing is deleted automatically on a number in that state. The product shows what has expired; a person presses erase.

    checked: code
  • Erasurein place

    Erasure runs from an explicit list of tables that a test compares against the schema in both directions — a table added without a line in that list would survive a deletion the log calls complete. What stays is the audit minimum: the case keeps existing so that the record of the decision is not itself erased.

    checked: code
  • The audit log after erasurein place

    The log is append-only, so it used to be the one place personal data outlived its retention. It is now cut into segments, each closed by a signed anchor: a segment past its term is carried out of the chain, and the chain still verifies across the join. A carried-out segment is itself an entry in the log.

    checked: code
08

Keys and the seal

The product signs two different things with two different keys, and conflating them is the fastest way to answer a questionnaire wrongly. This is what each one signs, who holds it, and what is not true yet.

  • The attestation keyin place

    Signs the attestations that go on chain. It is held by the deployment and reaches one service only — the worker that publishes. It never enters a log, a trace, a queue or an error message, and a test keeps it out of the repository. Its public half is published, so anyone can check who signed without asking us for anything.

    checked: code
  • The journal seal keyin place

    Signs the segment anchors of the audit log and the daily root. It is issued in this deployment: every published day names the key that sealed it, and that key’s public half is published beside the series. The demonstration file elsewhere on this site is drawn without a seal on purpose — it shows what a deployment holding no key shows, which is the state a product that cannot seal owes its reader.

    checked: published
  • Key custodypartly in place

    Keys live in the deployment’s own secret store, held as masked, protected variables that are never issued to a build from an unprotected branch. A hardware-backed store, where the key never leaves and the application is handed a signing operation instead, is the next step and is not in place today.

    checked: deployment
  • Rotationin place

    The question an attestation has to answer is not “is this key current” but “was this address authorised at the moment of signing”, and that answer is published on chain under its own schema. Old public keys are kept for ever: a retired key that is dropped from the list turns its own signatures into somebody else’s. What a leak or a loss costs, and the order of the steps, is written down before either happens.

    checked: published
  • A chain a supervisor can count onnot in place

    What the series has today is our own seal and a published daily root. Writing that root into a public chain is not in place: the mechanism runs end to end, but it runs against a test network, which carries no economic security and whose history can be discarded. We do not describe that as anchoring, because it is not the permanence a supervisor should count on. Moving the root to a chain that carries it is a decision not taken today; taking it would change the address written there and not who we are — the identity is the key, not the network.

    checked: deployment
  • A second, independent witnessnot in place

    The log publishes a daily root, so a copy taken once can be compared against every day after it. What the series does not carry yet is a third party’s statement of when: the field for an RFC 3161 timestamp is published as empty rather than left out, because an empty field you cannot see reads as time confirmed.

    checked: published
09

Access and accounts

Who can get in, with what, and what is written down when they do. The role matrix itself is section 04 — this is the account layer around it.

  • Sign-inpartly in place

    Sign-in by password or by Google. A second factor is available and, where the deployment carries no key for it, the profile screen says so in words instead of showing a factor that is not there. SAML and SCIM are not built.

    checked: code
  • Roles and separation of dutiesin place

    Rights are enforced in the database rather than in the interface, a blocked control names the right that governs it, and the account that prepared a recommendation cannot approve it whatever its role. The full matrix is section 04.

    checked: code
  • What is written downin place

    Every action lands in your tenant’s own hash-chained log, including the ones that failed and the ones a right refused. Integrity is recomputed, never reported by a flag.

    checked: code
  • Our own access to your deploymentnot in place

    A break-glass procedure — a named grant from your administrator, time-boxed, written into your log as an entry you can read — is not built. Today administrative access to the pilot deployment is held by named people at Evix and is bounded by trust and by a written record of who those people are, which is a weaker control than a procedure and is described here as one.

    checked: recorded decision
10

Sub-processors

Who receives what, and on whose word the retention claim stands. The register is not a wiki page: it is kept in the codebase and checked against the connected adapters in both directions, so an adapter that reaches outward without a line here fails the build.

  • The model providerin place

    Anthropic PBC receives whole document pages, the facts extracted from them and the text of a draft — the widest of the outward paths, and the only row a document reaches in full. Zero retention is switched on at the organisation level; that setting is the provider’s statement, and the register says so rather than presenting it as ours.

    checked: code
  • Registries and public sourcesin place

    Company registries, the LEI foundation, name registries and issuer portals receive an identifier — a company number, a name, a domain, a document code. No document and no finding leaves towards them, and the difference between a source that is queried live and one that is read from a snapshot held here is derived from the code, not from prose.

    checked: code
  • Infrastructure and mailin place

    Recognition and the object store run on our own host and are listed anyway, because “no answer” about your own node is itself an answer. Mail leaves to the relay the deployment names; error monitoring receives no subject data by construction.

    checked: code
  • The data processing agreementissued with the pilot agreement

    No DPA, sub-processor annex or privacy notice exists yet, and none is claimed. They are issued with the pilot agreement. Until then this section is the register, not the contract.

    checked: legal
11

Certifications

The short section, and the one most often padded. We hold no third-party certification, and we will not name one before a report exists.

  • What we hold todaynot in place

    No SOC 2 report, no ISO 27001 certificate, no audited attestation of any kind. No date is given for one either: a quarter named without a plan behind it is a promise, and a promise on a security page reads exactly like a claim.

    checked: recorded decision
  • What stands in for onein place

    The controls above are the kind an auditor can test rather than take on faith, and the product’s own output carries its proof: a sealed file verifies with a public key, against a public register, without our API, our DNS or our word. That is not a certificate, and it is not offered as one.

    checked: published
12

Automated decisions and the model

A compliance decision about a person is the exact thing the law is careful about, so this is stated precisely rather than reassuringly.

  • No decision without a humanin place

    Recording a decision is offered to no program: the tool does not exist in any machine-facing surface, so it cannot be called by a misconfigured integration or an agent. The product’s default route scheme executes nothing on its own, and a configuration that would switch automatic approval on is refused as a file rather than ignored as a field.

    checked: code
  • Where a tenant may automate, and where it may notin place

    A tenant may describe a route that executes without a hand. Where coverage is not closed, a screening alert is unresolved or a blocking limit stands open, the engine removes that possibility from the route whatever the scheme says — and the removal is not a setting anybody can turn off.

    checked: code
  • What the model is not allowed to doin place

    The model extracts, proposes and drafts. It never runs inside the coverage computation, and a proposal without a page, a character span and a quote is refused by the database rather than stored as a fact with a caveat.

    checked: code
  • The AI Actpartly in place

    Assessment in progress. We are not publishing a classification before the assessment behind it exists, and the honest interim answer is the one above: what the model does, what it is prevented from doing, and who signs.

    checked: legal
13

Continuity and exit

What happens if you leave is built into the product rather than promised in a contract: the file you took keeps verifying against a public register, with nothing of ours left in the loop. What we commit to on availability is a contract clause, and it is issued with the pilot agreement.

  • Exitin place

    The file leaves in a form that outlives the relationship: the decision record, the facts with their sources, the audit log and the seal. It verifies with a public key against a public register, so a file you took last year keeps answering for itself after you stop being a client and after we stop existing.

    checked: code
  • Availability commitmentissued with the pilot agreement

    No published availability figure and no service credits. A number without a measurement behind it is the least useful sentence on a trust page, and an SLA is a contract clause rather than a page: it is issued with the pilot agreement.

    checked: legal
14

Reporting a vulnerability

If you found something, we would rather hear it from you than from the log.

  • Where to send itin place

    The disclosure channel is published at /.well-known/security.txt in the form RFC 9116 defines, with an expiry that is recomputed on every deployment so the file cannot quietly go stale. A dedicated mailbox is not yet in place, and the file names the general address and says which one it is.

    checked: published
  • What happens thenpartly in place

    We acknowledge, we fix, and we tell you what we changed. There is no bounty programme and no legal safe-harbour text yet — both are named here as absent rather than implied by silence.

    checked: recorded decision

Send us your security questionnaire.

We answer it as written, and we mark every control that is planned rather than in place. If an answer would need a footnote to be true, you get the footnote.

Book a demoOnboarding is by hand — which is why we do the first case with you.