The format · version 0.1.1
The format
A record file is plain JSON. Any AI assistant, tool or register can write it, and any auditor can read it and recompute its fingerprint without the tool that made it.
The words of a record
- project
- the AI output under review
- record
- what this format captures, like a sealed envelope: the project, the report, the follow-up and their proof
- record file
- the record saved in a file, which you keep and upload to have it checked
- second reader
- whoever examines the project: a protocol, an agent or a person
- signer
- the person who decides and signs
- verifier · owner
- the human role who checks an assumption · answers a question
- follow-up
- who checked, who owns each question, the decision
- outcome
- what became of the decision, months later (planned)
- register
- where an organisation will keep its register entries (the record without the texts), on its own servers (planned)
Three parts. Each one useful on its own.
01 · Structure
What was examined
The project, its context and the second reader’s report, word for word: triage and its criteria, findings ranked by impact, assumptions with a named human verifier, questions with their owners. A structured form for registers is planned.
content.project · content.context
content.report02 · Follow-up
What the signer did with it
Filled in by the signer, never by a model: who checked, what they checked themselves, who owns each open question, the decision and a signature, with its own fingerprint, seal and signature. It can name the final document and be completed later, without erasing the previous follow-up. Planned: one closed answer per finding, and months later the outcome.
follow_up · decision · signature
03 · Proof
That it was not changed
A SHA-256 fingerprint, recomputed by every verifier from the record file; the issuer’s seal on it, with its time stamp, and its signature, which anyone checks with the public key. The format provides for qualified time stamps (RFC 3161); at Riftveil, this will be an AttestScope traceability option. The fingerprint lets you confirm a text you already have, without containing it. No ledger: everyone keeps their own record files, and can delete them.
proof.fingerprint · proof.seal
What sets it apart
01
A scope is attested, not a blanket “yes”
The follow-up says what the person checked themselves, the questions assigned, the decision and its conditions. A structured scope, finding by finding, is planned.
follow_up.checked · questions · conditions
02
Every open question has a named owner
The report suggests an owner for each question; the signer assigns it to someone, by name.
questions[].suggested_owner · assigned_to
03
The follow-up is written by the person, never by a model
No model writes, suggests or completes the ID, the fingerprint, the seal or any field of the follow-up.
Specification §04 · MUST NOT
04
Two seals: the assessment, then the decision
The follow-up has its own fingerprint, which includes that of the report: a follow-up belongs to one report only, and the seal time is inside the sealed message.
riftveil-seal-v1 · riftveil-decision-v1
05
riftveil.ai keeps neither the texts nor a list of records
The record file stays with the person or in their organisation. The issuer keeps no text, no list of IDs and no list of fingerprints.
Specification §05 · privacy
06
Anyone can verify, without signing up
The fingerprint is recomputed in the verifier’s browser, which also checks the Ed25519 signature with riftveil.ai’s public key; only the ID, the fingerprints and the seals go to riftveil.ai, which checks the seals.
POST /api/verify · riftveil.ai/verify
07
Independent of the AI assistant
Report generated on riftveil.ai, or made in another AI assistant and then registered: the origin is distinct, with one seal label per origin.
riftveil-seal-v1 · riftveil-register-v1
08
An open format
Specification published on attestscope.ai and on GitHub, with a JSON Schema and test vectors: another tool can write or verify a record, under its own issuer prefix.
0.1 · attestscope.ai
How a record is made
From a review to a proof anyone can check.
Six steps, three actors. A second reader writes the review, the signer fills the follow-up, and the issuer seals the fingerprint. To check a record, anyone recomputes the fingerprint from the record file, then asks the issuer to confirm the seal.
No model fills the follow-up. A record leaves step 2 with every follow-up field empty; only the signer fills them in step 3.
The fingerprint follows a published profile. Anyone can recompute it from the record file. Canonical JSON (RFC 8785), for a hash independent of the tool that wrote it, is planned.
Technical layer · version 0.1.1
The format in three diagrams.
The target data model of the format. Version 0.1.1 implements the record file: the texts, their fingerprint, seal and signature, and the follow-up with the decision, the final document and the follow-ups it completes. The structured fields drawn here are planned for the register entry (version 0.2).
1 · Data model
2 · Proof chain
What the proof establishes
The texts have not changed since the issuer sealed them, at the time given by its clock. The issuer checks the seal, from fingerprints alone; anyone checks the signature with the issuer’s public key. Qualified time stamps (RFC 3161) are planned.
3 · Chain of second readers
A project may pass through several second readers before the signer: a protocol, a specialist agent, a human expert. Planned for version 0.2: each one will be named in the record (readers[]) with its type, model family and session, so the rule that the second reader is never the author can be checked, not just claimed.
Anatomy of a record · planned register entry (version 0.2)
Everything in it can be counted and checked, and the project is never in it.
The register entry will hold the structure of the review, not the project under review. Counts will have to match their lists, so a script can check a record without understanding the business behind it.
from the Riftveil report schema added by AttestScope
{
"format": "attestscope",
"protocol_version": "1.3.3",
"context": { "stakes_level": "CRITICAL",
"levels_applied": [0,1,2,3,4] },
"readers": [ { "type": "model", "model_family": "…",
"session": "separate" } ],
"independence": "different_model_family",
"findings": [
{ "id": "F1", "impact": "CRITICAL", "level": 4, "technique_id": "4.3",
"follow_up": { "answer": "treated", "at": "2026-09-27" } },
{ "id": "F2", "impact": "HIGH", "level": 1, "technique_id": "1.4",
"follow_up": { "answer": "deferred", "owner": "Finance" } }
],
"assumptions": [ { "id": "A1", "who_can_verify": "Procurement" } ],
"questions": [ { "id": "Q1", "owner": "Procurement" } ],
"outcome": { "answer": "held", "at": "2027-03-27" },
"fingerprint": "sha256:9f3c…e71a",
"seal": "S1-7Q2M-…-4MH1"
}Illustration of a planned register entry.
Four ways to keep record files
Every record file is produced the same way. What changes is where it is kept, and who is responsible for it: always the organisation, never the format.
1 · Self-kept
With the report
People and teams, today
The person who signs keeps the exported report (PDF) and its record file (JSON) on their computer, or in a shared folder on their organisation’s server. No register, no set-up.
Available
2 · Microsoft 365
In your tenant
Teams on Microsoft 365
A register kit: SharePoint list, item-level permissions, Purview retention, Power Automate notifications. Half a day for a SharePoint administrator.
Planned for the Riftveil Pro Kit · data stays in the tenant
3 · Your servers
On your infrastructure
Organisations with their own IT
A documented procedure for your IT team: storage, access rules, fingerprint and timestamp steps, on systems you already run.
Planned · your responsibility
4 · Hosted
By Riftveil, in the EU
Teams without an administrator
Register entries stored for you, in the EU: the record without the project.
Planned
For implementers
Four steps, all on open standards.
- Write the record file as JSON, following the published JSON Schema.
- Validate it against the published JSON Schema, with any validator.
- Fingerprint it with SHA-256, following a published profile.
- Seal the fingerprint and publish a verification endpoint; qualified time stamps (RFC 3161) are planned.
Questions
- Is an AttestScope Record a certification?
- No. It is the signer’s attestation, on the scope of their own review: sealed, it establishes what was examined, at the time given by the issuer’s clock.
- Does it contain the project?
- The record file, kept by the signer or in their organisation’s shared folder, does: it is what lets anyone check that the text is intact; share it as you would share the report. The organisation’s register, planned for version 0.2, will keep the structure of the review and the fingerprints.
- Who governs the format?
- Riftveil publishes the format. Comments go to hello@riftveil.ai.
Keeping the record, verifying it months later
The record stays with the person who signed, or in their organisation: riftveil.ai keeps no copy of it. Months later, anyone can verify, on the record file, that nothing has changed since the seals.
Issuer · riftveil.ai Signer Planned
A · Where to keep itThe record file stays with you, never with the issuer
Today
On their computer
In the decision file, next to the exported PDF. The file is downloaded from the report page; riftveil.ai keeps no copy of it.
Riftveil XT-261026-143205-7K3M-Q9XD-2B8F.json
Today
In a shared folder of the organisation
On its own servers, with the other documents of the decision. Possible today, with no development at all.
Decisions › 2026 › Cloud contract › Riftveil XT-….json
Planned
Organisation register
Version 0.2: one entry per record, without the texts, to count, follow up and find. With the rule set, find the decisions signed under a given version.
register entry = the record without its content
Whoever holds the record file holds the texts and the names in the follow-up: share it as you would share the report.
Nobody verifies? The answer is organisational: make the record file mandatory in the decision file.
B · VerifyingThree checks, in this order; each part stops at the first anomaly
- Record filereceived or retrieved
- 1 · Recompute the fingerprintfrom the text in the file, following its profile, in the browser
Identical to the one written in the file?
- no
Content altered
The fingerprint recomputed from the text in the file does not match the one it states.
- no
- yes2 · Check the sealID, recomputed fingerprint and seal sent to riftveil.ai
Answer from riftveil.ai
- not valid
Seal not valid
This file was not issued by riftveil.ai under this ID, or it was altered.
- other origin
Forged origin
The seal is valid, but for another origin than the one the file states.
- valid
Valid seal
“Report generated on riftveil.ai on … The text below is intact.”
- not valid
- Comparethe sealed text with the document you were given
- 3 · Check the follow-uprecomputed fingerprint (it includes that of the report), then seal and time sent
Result for the follow-up
- different
Decision altered
Its content no longer matches its fingerprint. Do not rely on it.
- no seal
Decision present but not sealed
Nothing proves when it was taken or that it was not changed.
- not valid
Decision seal not valid
Do not rely on it.
- valid
Follow-up sealed
“Follow-up sealed by riftveil.ai on …”, at its server time.
- different
The rule
The record file is what gets verified, never a PDF, a screenshot or a printout alone: the ID, the fingerprint and the seal can be copied onto an altered document.
Reading the diagram
Green: the result holds; show the sealed text.
Red: do not rely on this document.
Slate: present, but nothing proves it.
Each check stops at the first anomaly, for the part concerned, as the specification requires. The follow-up is checked only if the report is intact.
Who verifies? Anyone, without signing up, on riftveil.ai/verify or with the widget embedded in another site.
What goes to riftveil.ai
- The ID
- The fingerprints, recomputed by the verifier
- The seals
- The time of the follow-up seal
Never
- The texts: project, context, report, follow-up
- A fingerprint as written in the file: it is always recomputed
Request
POST /api/verify
{ id, fingerprint, seal,
decision?: { fingerprint,
seal, sealedAt } }Answer
{ valid: true, id, issuedAt,
origin, decision?: {
valid, sealedAt } }
or { valid: false }Endpoint open to any site: it receives fingerprints only and keeps nothing. Recognised prefixes: riftveil.ai/issuers.json.
C · Six months laterWhat internal audit sees, and what a PDF alone cannot show
Record intactInternal audit, six months after the decision
“Who approved this contract, and on what basis?”
Elena sends the record file. The verification page recomputes the fingerprints in the browser, has riftveil.ai check the two seals, then displays:
Valid seal. Report generated on riftveil.ai on 26 October 2026 … The text below is intact. · Origin: generated on riftveil.ai
Follow-up sealed by riftveil.ai on 26 October 2026 …
- What the person checked
- The prices for years 2 to 5 of the three offers, with procurement.
- Question 1
- “What does leaving the contract cost if the price rises after the first year?” Assigned to Daniel Murphy, Head of Procurement.
- Decision
- I proceed with conditions
- Conditions
- Contract signed only after the exit-cost analysis, presented to the board.
- Signature
- Elena Lambert, Chief Financial Officer · simple electronic signature
The seal concerns the date and the integrity of the text; the substance of the project and the decision remain those of the person who signs, under the name they declared.
Illustration: a real file carries the RV prefix of riftveil.ai; an XT test file would be refused at verification.
Document alteredThe PDF circulates, the record file is what counts
Before the meeting, someone edits the PDF.
The decision becomes “I proceed”, with no conditions. The ID, the fingerprint and the seal printed on the PDF have not changed: the PDF alone proves nothing. The record file, for its part, shows the sealed text; the difference appears.
Record file · text sealed on 26 October 2026 at 16:05:12 UTC
- Decision
- I proceed with conditions
- Conditions
- Contract signed only after the exit-cost analysis, presented to the board.
PDF given to the board · edited
- Decision
- I proceed
- Conditions
- Contract signed only after the exit-cost analysis, presented to the board.
D · The scope of the proofWhat the record proves, and what stays with the person who signs
What the record proves
- What was examined: the exact project, context and report.
- What the person did with it and the scope they declare: what they checked themselves, who each question is assigned to, their decision and its conditions.
- The time, by the Riftveil server’s clock.
- That nothing has changed since.
What stays with the person who signs
- Judging whether the decision is the right one.
- Riftveil asks the questions. The person who signs attests what they examined, and within what limits. The decision, and its compliance with the rules that apply, are your organisation’s responsibility.
- Today, on riftveil.ai: a simple electronic signature, under the name the person declared; verified identity is the organisation’s responsibility. Planned: identity provided by the organisation’s account, or a qualified signature.
Today
In service · specification 0.1.1
Each seal is applied by riftveil.ai (HMAC-SHA256) and is checked on riftveil.ai, from fingerprints alone. In the online tool, the date is the Riftveil time stamp: the time of its clock.
Every 0.1.1 record carries an Ed25519 signature, with published public keys, to redo the check without going through riftveil.ai. Planned: an optional qualified time stamp, or the organisation’s own, for an independent date.
Illustrative example: people, organisations and amounts are fictitious. The prefix XT is reserved for tests: the seals and signatures in the example are made with the public test keys and are never valid for a decision. Example as currently in service (specification 0.1.1): the report and the follow-up each carry a seal and a signature from riftveil.ai; the signature is checked with riftveil.ai’s public key, without going through riftveil.ai.