diff --git a/README.md b/README.md
index 73eaae8..578f74d 100644
--- a/README.md
+++ b/README.md
@@ -1,62 +1,46 @@
# Making yourself audit-ready with Verae DataCubes
-How to **prepare an organization** for HIPAA-aligned, SOC 2, or ISO 27001
-work using Verae DataCubes on **Peergos** (encrypted cryptree + hashed
-IPFS) and HPKE on an **untrusted NATS** broker.
+**Software alone does not make an organization HIPAA certified,
+SOC 2 attested, or ISO 27001 certified.**
-**This repository is not a HIPAA, SOC 2, or ISO certificate.**
-Peergos’s public pentests are **not** your Type II or ISO registrar
-certificate. They are **component security evaluations** you can attach.
+The Verae DataCube Solution gives you tools to **store**,
+**communicate**, **timestamp**, **verify**, and **audit**. To
+obtain those certifications and attestations, the organization
+still has to write **policies**, run **procedures**, operate
+**internal controls**, and sit with an **independent auditor**.
+Verae provides the tools, the background, and the software
+infrastructure for the **technical portion** of that work.
-## What we verified about Peergos (EU)
+A Verae DataCube Server Solution provides secure communications
+and storage for **data in transit** and **data at rest**:
+point-to-point encryption (routing remains visible), IPFS
+content-addressed encryption at rest with Peergos hash
+verification, global timestamped receipts, and a write-once
+Iceberg archive.
-Full sources: [`PEERGOS-VERIFICATION.md`](PEERGOS-VERIFICATION.md).
+Peergos was independently evaluated **twice in Europe** (Cure53,
+Berlin, 2019; Radically Open Security, Amsterdam, 2024). Those
+reports are public component evaluations. They are **not** a
+HIPAA, SOC 2, or ISO certificate.
-| Fact | Verified? |
-|---|---|
-| Encrypted client-side filesystem (cryptree); keys not on the storage server | Yes — Peergos book + Cure53 design review |
-| IPFS blocks content-addressed; Peergos verifies hashes (tamper-evident restore) | Yes — [trust-free layers](https://book.peergos.org/security/trust.html) |
-| Independent **EU** security audits, reports published | **Yes — two:** Cure53 **Berlin** (2019); Radically Open Security **Amsterdam** (2024, NLnet; EU Horizon 2020 NGI-POINTER mentioned on the post) |
-| “Peergos is HIPAA/SOC 2/ISO certified” | **No.** Those audits are pentest/code/design reviews, not management-system certificates |
+## Document
-So: Peergos **was designed as a trust-minimized encrypted filesystem**,
-**evaluated in Europe** by two specialist firms, with **public reports**.
-That supports the **at-rest / backup** story. It does **not** finish
-*your* audit.
-
-## Architecture (audit interview in one page)
+Sphinx sources in `source/`. Each chapter starts on a new page
+in the PDF. The Verae wordmark is at the top left of every page;
+Verae Inc contact is in the footer. Last chapters are
+biographies of James H. Garfinkel (FINRA CRD 5052743), Stuart
+Haber, and George Lambert.
```
-Endpoint (keys stay here / HSM)
- │ HPKE content (NPE suite)
- │ routing: dest + subject in the clear
- ▼
-Untrusted NATS (cannot read bodies)
- │
- ▼
-Verae DataCube chain (append-only hashes)
- │ written through Peergos client
- ▼
-Peergos cryptree (encrypted names, sizes, graph)
- │ chunks → CID / hash
- ▼
-IPFS (distributed, hash-verified ciphertext)
+make html
+make latexpdf
```
-- **At rest:** Peergos cryptree + IPFS. Hosts with disk/backup see
- **opaque hashed ciphertext**, not PHI, if they lack keys.
-- **In transit (NATS):** HPKE-Base to directory public keys. Broker is
- honest-but-curious: destinations yes, bodies no.
-- **Integrity:** cube JSONL chain + dual hash + IPFS CID check on
- restore (re-fetch blocks, re-verify hashes — not a plaintext tape).
+* HTML: `build/html/index.html`
+* PDF: `build/latex/peergos-making-yourself-audit-ready-with-verae-datacubes.pdf`
+* Published: https://docs.pfc.georgelambert.org/audit-ready/
-## BAAs / DPAs
-
-Ciphertext-without-keys **narrows** who is a Business Associate or
-GDPR processor for **content**. It does **not** automatically delete
-contracts for VMs, usernames, or logs. See [`BAA-DPA.md`](BAA-DPA.md).
-
-## Pack
+## Pack (Markdown companions)
| File | Use |
|---|---|
@@ -66,23 +50,6 @@ contracts for VMs, usernames, or logs. See [`BAA-DPA.md`](BAA-DPA.md).
| `HOWTO.md` | How to hand this to an auditor |
| `MODULE.md` | Callers / non-runtime |
-Live technical surfaces (ns1): https://pfc.georgelambert.org/health ·
-https://pfc.georgelambert.org/v1/npe/keys ·
-https://docs.pfc.georgelambert.org/controls.html
+## Related
-Related: https://git.georgelambert.org/marchon/system-git-sync
-
-## Sphinx (HTML + LaTeX PDF)
-
-Sources live in ``source/`` (Sphinx). Build:
-
-```
-make html
-make latexpdf
-```
-
-* HTML: ``build/html/index.html``
-* PDF: ``build/latex/peergos-making-yourself-audit-ready-with-verae-datacubes.pdf``
-
-LaTeX companion links are **relative PDFs** (not Markdown). Live HTML:
-https://docs.pfc.georgelambert.org/audit-ready/
+https://www.verae.com · https://git.georgelambert.org/marchon/system-git-sync
diff --git a/build/html/_images/VeraeFullLogo.png b/build/html/_images/VeraeFullLogo.png
new file mode 100644
index 0000000..4c011e8
Binary files /dev/null and b/build/html/_images/VeraeFullLogo.png differ
diff --git a/build/html/_static/VeraeFullLogo.png b/build/html/_static/VeraeFullLogo.png
new file mode 100644
index 0000000..4c011e8
Binary files /dev/null and b/build/html/_static/VeraeFullLogo.png differ
diff --git a/build/html/_static/alabaster.css b/build/html/_static/alabaster.css
index 7e75bf8..8f0f067 100644
--- a/build/html/_static/alabaster.css
+++ b/build/html/_static/alabaster.css
@@ -11,7 +11,7 @@ body {
div.document {
- width: 940px;
+ width: 980px;
margin: 30px auto 0 auto;
}
@@ -21,11 +21,11 @@ div.documentwrapper {
}
div.bodywrapper {
- margin: 0 0 0 220px;
+ margin: 0 0 0 240px;
}
div.sphinxsidebar {
- width: 220px;
+ width: 240px;
font-size: 14px;
line-height: 1.5;
}
@@ -45,7 +45,7 @@ div.body > .section {
}
div.footer {
- width: 940px;
+ width: 980px;
margin: 20px auto 30px auto;
font-size: 14px;
color: #888;
@@ -502,8 +502,12 @@ a.footnote-reference:hover {
a:hover tt, a:hover code {
background: #EEE;
}
+div.sphinxsidebar {
+ position: fixed;
+ margin-left: 0;
+}
-@media screen and (max-width: 940px) {
+@media screen and (max-width: 980px) {
body {
margin: 0;
@@ -523,7 +527,8 @@ a:hover tt, a:hover code {
display: block;
float: none;
width: unset;
- margin: 50px -30px -20px -30px;
+ margin: -20px -30px 20px -30px;
+ position: static;
padding: 10px 20px;
background: #333;
color: #FFF;
diff --git a/build/html/_static/documentation_options.js b/build/html/_static/documentation_options.js
index 7e4c114..7d7add3 100644
--- a/build/html/_static/documentation_options.js
+++ b/build/html/_static/documentation_options.js
@@ -1,11 +1,11 @@
const DOCUMENTATION_OPTIONS = {
- VERSION: '',
+ VERSION: '2026.09',
LANGUAGE: 'en',
COLLAPSE_INDEX: false,
BUILDER: 'html',
FILE_SUFFIX: '.html',
LINK_SUFFIX: '.html',
- HAS_SOURCE: true,
+ HAS_SOURCE: false,
SOURCELINK_SUFFIX: '.txt',
NAVIGATION_WITH_KEYS: false,
SHOW_SEARCH_SUMMARY: true,
diff --git a/build/html/_static/verae.css b/build/html/_static/verae.css
new file mode 100644
index 0000000..9569f89
--- /dev/null
+++ b/build/html/_static/verae.css
@@ -0,0 +1,47 @@
+/* Verae branded Sphinx HTML */
+body {
+ font-family: "Source Serif 4", "Georgia", serif;
+ color: #111;
+}
+div.document {
+ padding-top: 0.5em;
+}
+div.sphinxsidebar h3, div.sphinxsidebar h4 {
+ color: #5B2C8B;
+}
+div.body h1, div.body h2, div.body h3 {
+ color: #5B2C8B;
+}
+div.related {
+ background: #1A0A24;
+ color: #fff;
+}
+div.related a {
+ color: #e8d7f5;
+}
+div.footer {
+ background: #1A0A24;
+ color: #e8d7f5;
+ padding: 1.1em 1.5em;
+ margin-top: 2em;
+}
+div.footer a {
+ color: #d7b8f0;
+}
+.verae-page-footer {
+ border-top: 2px solid #5B2C8B;
+ margin-top: 2.5em;
+ padding-top: 0.8em;
+ font-size: 0.9em;
+ color: #5B2C8B;
+}
+div.sphinxsidebarwrapper img.logo,
+img.logo {
+ background: #1A0A24;
+ padding: 8px;
+ border-radius: 4px;
+ max-width: 100%;
+}
+.admonition.important, .admonition.warning, .admonition.note {
+ border-left: 4px solid #5B2C8B;
+}
diff --git a/build/html/architecture.html b/build/html/architecture.html
index e199add..a02de18 100644
--- a/build/html/architecture.html
+++ b/build/html/architecture.html
@@ -5,17 +5,19 @@
-
Architecture (audit interview) — Making yourself audit-ready with Verae DataCubes
+ 10. Architecture for an audit interview — Making yourself audit-ready with Verae DataCubes
-
-
+
+
+
+
-
-
+
+
@@ -24,58 +26,24 @@
-
-
-
-
-
-
-
-
-
-
-Architecture (audit interview)
- Endpoint (keys stay here / HSM)
- │ HPKE content (NPE suite)
- │ routing: dest + subject in the clear
- ▼
-Untrusted NATS (cannot read bodies)
- │
- ▼
-Verae DataCube chain (append-only hashes)
- │ written through Peergos client
- ▼
-Peergos cryptree (encrypted names, sizes, graph)
- │ chunks → CID / hash
- ▼
-IPFS (distributed, hash-verified ciphertext)
-
-
-
-At rest: Peergos cryptree + IPFS. Hosts with disk/backup see
-opaque hashed ciphertext , not PHI, if they lack keys.
-In transit (NATS): HPKE-Base to directory public keys. Broker is
-honest-but-curious: destinations yes, bodies no.
-Integrity: cube JSONL chain + dual hash + IPFS CID check on
-restore (re-fetch blocks, re-verify hashes — not a plaintext tape).
-
-NATS remains an untrusted router. Production E2E is NPE/HPKE.
-Passthrough means destination in the clear; the body is ciphertext.
-Live: https://pfc.georgelambert.org/v1/npe/keys (public keys only).
-Controls: https://docs.pfc.georgelambert.org/controls.html
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+10. Architecture for an audit interview
+
+10.1. The picture
+Endpoint ( private keys stay here / HSM )
+ | HPKE content ( point - to - point )
+ | routing : destination + subject in the clear
+ v
+Untrusted message fabric ( honest - but - curious )
+ | cannot read bodies ; can see dest / subject / size
+ v
+Organizational DataCube
+ | append - only cube chain ( prev + new + diff )
+ | private metadata , attachments , internal chain
+ v
+Peergos cryptree ( encrypted names , sizes , graph )
+ | chunks -> CID / hash , hashes verified
+ v
+IPFS ( distributed , content - addressed ciphertext )
+ |
+ +-- Verae timestamping
+ | fingerprint only -> receipt ( time + sequence )
+ | org server linked to central Verae , or direct sync
+ |
+ +-- Iceberg write - once archive
+ snapshot of cube CIDs , not under single - party delete
+
+
+
+
+10.2. Walkthrough, in the order an examiner usually asks
+Where are the keys? On the endpoint or in the customer’s
+HSM. Not on the storage host. Not in the public-key
+directory (that directory holds public keys only). Not in
+the NATS payload.
+What does the network see? Destination, subject, size,
+timing. Not the body. Production algorithm is HPKE, not a
+lab construction.
+What does the disk see? Padded encrypted chunks under
+random labels. Peergos verifies hashes. A restore re-fetches
+CIDs and re-checks them.
+How do you prove when it existed? A hash is registered
+the first time it is seen. A receipt binds hash, time, and
+sequence. The organizational chain and the central Verae
+chain cross-verify. Verae is not given the object, only the
+fingerprint.
+How do you stop delete? Live cubes replicate as hashed
+ciphertext. Committed snapshots go to an external Iceberg
+write-once tier that is specified to sit outside any one
+party’s delete control.
+How do you know the software was not quietly reconfigured?
+Configuration is Ed25519-signed. Unsigned files are
+rejected. Admin-history records previous state, new state,
+and a diff.
+How do you inspect without turning inspect into a leak?
+k-of-n officers. The author of a change is not an officer
+on that change. Log-before-reveal.
+
+
+10.3. Identity planes
+There are two login planes, and they must not be collapsed
+in an interview:
+
+Drive / Peergos identity — unwraps cubes. This is
+the cryptographic identity.
+Console identity — TOTP (RFC 6238), session cookie,
+admin actions. Google SSO, if present, does not unwrap
+cubes.
+
+Mixing those planes is how “we have SSO” becomes “SSO is
+the master key.” It is not.
+
+
+10.4. NATS remains untrusted
+The reference message fabric is NATS. It is an
+honest-but-curious broker. Destinations in the clear are
+passthrough , not a bug. Bodies are ciphertext, or the
+message is rejected. Error responses carry codes and lookup
+identifiers, not payloads.
+A public-edge NATS listener, if enabled, is token-gated and
+is not the same socket the internal services use.
+
+
+10.5. What to hand the examiner
+
+this document (HTML or PDF);
+the two public Peergos reports, labeled as component
+evaluations;
+a data-flow diagram of this instance;
+the public-key listing (public keys only);
+a restore-test ticket;
+an admin-history excerpt for a dated change;
+the organization’s policies, not Verae’s.
+
+Live technical surfaces (reference instance):
+
+
+
+
+
+
+
+
+
+
+
+
+
+