Lumen House · offline integrity demo
Catch a missing file.
Catch changed bytes.
The Agent Delivery Manifest Kit records each listed file’s path, byte size and SHA-256. The recipient checks the files against that saved manifest before accepting a handoff.
This is a static recorded readout, not a live browser verifier. Try the separate live one-text preview. This readout comes from an actual offline run of the unchanged v1 Kit. It reuses the Kit’s two fictional files. All three outcomes matched the expected results.
One manifest, three recipient folders
| Case | Verifier | Read / listed | Error | Exit |
|---|
| clean | MATCH | 2 / 2 | none | 0 |
|---|
| missing | MISMATCH | 1 / 2 | FILE_MISSING | 1 |
|---|
| changed | MISMATCH | 2 / 2 | HASH_MISMATCH | 1 |
|---|
The missing case removes notebooks.json. The changed case edits "pages": 12 to "pages": 13. Both JSON files are 133 bytes; only the SHA-256 check catches the content change.
Same size, different SHA-256
Before: 84b2dd77cdf7d22ed03fa11d8cdcd8c24cc860da0f98f35db11169fd303bed77
After: fa2bcdf78481a6ebdae4bb07c0185e57185d2b8ffd02bfb90c4c07aa0d9ff38b
Checks listed bytes against a sender-supplied unsigned manifest. Does not prove completeness or bootability, or certify truth, quality, safety, competence, authorship, rights, payment, or unlisted files. A match means the bytes read during that run match the supplied manifest. If a required file was never listed, this check cannot infer it. The sender could change both files and manifest. Hashing is not encryption.
What the Kit packages
A plain SHA-256 script can also detect changed bytes. This Kit packages an explicit file list, deterministic generation, a JSON schema, path checks, named errors, JSON results, exit codes, fictional examples and tests into a repeatable handoff. Completeness needs an agreed artifact checklist; bootability needs a separate restore or startup test.
Repeat with the extracted Kit
node create.mjs --root examples/files \
--delivery-id fictional-notebook-handoff \
--file message.md --file notebooks.json --json
node verify.mjs --manifest examples/delivery-manifest.json \
--root examples/files --json
node --test tests/*.test.mjs
The Kit uses Node.js 22+ APIs and no installed packages, accounts, network access or payments. This run used v24.20.0 on darwin. The local review harness also reproduces both mutations and compares each function result with the real CLI result. Individual verifier failures intentionally exit 1.
Actual results JSON · Expected results JSON
Inspect the actual machine-readable results
{
"schema_version": "lumen-kit-demo/1",
"all_expectations_met": true,
"fixture": "Existing fictional notebook handoff; no customer or service claim.",
"generator_matches_bundled_example": true,
"cli_matches_functions": true,
"mutation": {
"path": "notebooks.json",
"change": "pages 12 to 13",
"bytes_before": 133,
"bytes_after": 133,
"sha256_before": "84b2dd77cdf7d22ed03fa11d8cdcd8c24cc860da0f98f35db11169fd303bed77",
"sha256_after": "fa2bcdf78481a6ebdae4bb07c0185e57185d2b8ffd02bfb90c4c07aa0d9ff38b"
},
"claim_limit": "Checks listed bytes against a sender-supplied unsigned manifest. Does not prove completeness or bootability, or certify truth, quality, safety, competence, authorship, rights, payment, or unlisted files.",
"cases": {
"clean": {
"exit_code": 0,
"result": {
"schema_version": "lumen-delivery-verification/1",
"ok": true,
"claim": "listed_files_match_manifest",
"delivery_id": "fictional-notebook-handoff",
"files_listed": 2,
"files_checked": 2,
"errors": []
}
},
"missing": {
"exit_code": 1,
"result": {
"schema_version": "lumen-delivery-verification/1",
"ok": false,
"claim": "listed_files_do_not_match_manifest",
"delivery_id": "fictional-notebook-handoff",
"files_listed": 2,
"files_checked": 1,
"errors": [
{
"code": "FILE_MISSING",
"path": "notebooks.json",
"message": "Listed file or parent directory could not be read."
}
]
}
},
"changed": {
"exit_code": 1,
"result": {
"schema_version": "lumen-delivery-verification/1",
"ok": false,
"claim": "listed_files_do_not_match_manifest",
"delivery_id": "fictional-notebook-handoff",
"files_listed": 2,
"files_checked": 2,
"errors": [
{
"code": "HASH_MISMATCH",
"path": "notebooks.json",
"message": "SHA-256 differs from the manifest.",
"expected": "84b2dd77cdf7d22ed03fa11d8cdcd8c24cc860da0f98f35db11169fd303bed77",
"actual": "fa2bcdf78481a6ebdae4bb07c0185e57185d2b8ffd02bfb90c4c07aa0d9ff38b"
}
]
}
}
}
}
Inspect the generated sender manifest
{
"schema_version": "lumen-delivery-manifest/1",
"delivery_id": "fictional-notebook-handoff",
"description": "Fictional notebook handoff for an offline integrity demonstration.",
"files": [
{
"path": "message.md",
"size_bytes": 229,
"sha256": "7d286c5dcc9b7731fedc745d6e08c10fef0a4711b160982d42d96a8e81a18343"
},
{
"path": "notebooks.json",
"size_bytes": 133,
"sha256": "84b2dd77cdf7d22ed03fa11d8cdcd8c24cc860da0f98f35db11169fd303bed77"
}
]
}
Offline workflow companion
The separate companion ZIP adds fictional recipes to your existing installed v1 Kit. It does not replace or modify the original paid download. Read its README before running its local examples; it requires the Kit’s existing generator and verifier.
Agree a required-output checklist separately, retain the agreed sender manifest, transfer files with your own tool, then check the actual recipient root before accepting. A separate checklist gate catches required artifacts that were never declared; the hash verifier alone cannot infer them. Another fixture checks a durable destination before a simulated cleanup decision. Transfer, storage, retention, Git tracking and real cleanup remain external responsibilities.
Freeze each agreed manifest version and retain its identity independently. The sender and recipient must agree to a replacement baseline; retain prior evidence. Regenerating files and manifest together can conceal unintended changes. Unsigned hashes do not prove author identity, safety, semantic correctness or payment, and hashing is not encryption.
The original Kit uses Node.js 22+ APIs. Its unchanged 66-test suite passed on Linux x64, Node.js v24.22.1, in the November 8 baseline check. The recorded results above came from macOS, Node.js v24.20.0. Node.js 22 and Windows were not tested. The companion’s README records its own executed checks; do not infer additional platform support from these examples.
For a simple existence-only requirement, a native file-existence check may be sufficient. Use the Kit when the agreed paths and exact bytes matter. No example verifies a real purchase or service outcome.