Read the current Lumion RFC sources in lumions-rfc/src/:
draft-shearer-lumion-00.mddraft-shearer-lumion-encoding-00.md
Create a small educational Python demo implementation in lumions-rfc/demo/lumion_demo.py, plus a matching lumions-rfc/demo/README.md.
The Python demo may use the cryptography package for Ed25519 and ChaCha20-Poly1305; document that dependency in the README.
Implement the Lumion features currently specified by those RFCs. Keep the code deliberately small and readable.
Demo scenario: Alice's employee record:
message = "signed row"name = "Alice"department = "research"salary = "100000"initially, then"110000"in an updateemployee_id = "E123"private_note = "private note"
Use the scenario to build a ladder of example Lumions with increasing capability:
- signed row
- named row
- versioned row using a prior link
- redactable row where
salaryis removed - confidential row where
private_noteis encrypted - access-rules row where
salaryhas permitted writers andemployee_idis immutable
Use these output filename stems for the ladder:
01-signed-row02-named-row03-versioned-row04-redactable-fulland04-redactable-without-salary05-confidential-row06-access-rules-v0and06-access-rules-v1
The CLI should provide these commands:
selftestsignednamedversionedredactableconfidentialaccessladderinspect
The ladder command should write binary .lumion files and unpadded base64url .b64url files under demo/out.
Use a deterministic demo signing key so examples are easy to inspect. Use fresh salts and encryption nonces by default.
Also provide a deterministic test mode, such as --seed. With the same seed,
salts, nonces, generated content keys, and output bytes must match.
Add an --asciiart option that prints a readable structural view of a generated
or inspected Lumion: header, name, signer, version/prior link, part-hash root,
signature, and part summaries.
The README should describe only implemented RFC features. Do not describe append-only provenance or other authority-layer features.
The selftest command should verify successful verification, redaction
preserving name and signature, a valid writer update, rejection of an invalid
writer update, rejection of an access-rule change, and byte-identical seeded
output.