Every record in the NextXus public ledger is a plain-text YAML file on disk. No database service. No driver. No vendor. If our servers go dark tomorrow, you can still read the entire record in Notepad.
The decision to store the public ledger as plain-text YAML was not made for convenience. It is the technical expression of an editorial principle: a system that asks the public to trust its records must be one where the public can read those records directly, without our help.
Anyone, any tool, any operating system, any era. The YAML 1.2 specification was finalized in 2009 and is implemented in every mainstream language. You can read a verification record in vi, in Notepad, on a phone, on a printout.
Zero runtime dependencies. No driver, no service, no SDK, no daemon. If NextXus is sunset, deprecated, or hacked, the data outlives the application. The format is not a hostage to a single company.
Every file's SHA-256 is recorded in MANIFEST.yaml — independent of the chain. The chain itself links entries with a separate SHA-256. (Optional third layer: git commit pinning when the data directory is mirrored to a public repository.)
Every file declares its format version in a preamble header. Every collection's schema is auto-generated at startup as schema.yaml. A future engineer can reconstruct a compatible reader from those two artifacts alone, without reading a line of NextXus source.
The data directory is a flat tree of YAML files. Any backup, archive, or git clone of /app/data/ is a complete, readable, verifiable copy. No restore procedure required — open and read.
The press kit includes the full schema (schema.yaml) and an integrity-verification script under 10 lines. A journalist can run that script years later, against the YAML files they downloaded today, and prove the chain.
Migration is a cat-and-paste away. YAML maps trivially onto JSON (one yaml.safe_load + json.dumps), onto Postgres JSONB, onto SQLite via JSON1, onto Parquet, onto S3. No proprietary format conversion is ever required.
Download the YAML export. Run this script. If the script prints OK, every record file's SHA-256 still matches the manifest, and the hash chain is intact. The system is transparent enough that you do not need to trust the system.
import yaml, hashlib, pathlib
# 1. Load the manifest
m = yaml.safe_load(pathlib.Path('MANIFEST.yaml').read_text())
# 2. Recompute SHA-256 of every record file
ok = True
for rel, meta in m['files'].items():
p = pathlib.Path(rel)
if not p.exists():
print('MISSING', rel); ok = False; continue
sha = hashlib.sha256(p.read_bytes()).hexdigest()
if sha != meta['sha256']:
print('TAMPERED', rel); ok = False
print('OK' if ok else 'INTEGRITY FAILURE')