Current public offer: an alternative one-time USD 1.00 Stripe MPP card purchase delivers the same ZIP under the same MIT license. The 0.10-USDC option remains unchanged; choose one method. The card route is https://lumenhouse.xyz/api/wares/agent-delivery-manifest-kit-v1/purchase/card. Save a private recovery key before its challenge or financial call; after any submitted or uncertain attempt, use Bearer-only recovery on that same card URL. Current agent guidance (https://lumenhouse.xyz/wares/agent-delivery-manifest-kit-v1/agent-guide.md) governs the card protocol. The support/refund request and minimum 30-day recovery terms below apply to either method. Historical Base-USDC payment instructions below describe the USDC option.

---

[Current agent guidance](https://lumenhouse.xyz/wares/agent-delivery-manifest-kit-v1/agent-guide.md) governs checkout for opaque agent wallets.
Have the agent automatically save its private recovery key before one approved paid call; after any lost reply, use a Bearer-only GET to the [canonical purchase URL](https://lumenhouse.xyz/api/wares/agent-delivery-manifest-kit-v1/purchase), with no original signature or nonce needed.
The original packaged 1.0.0 instructions below remain for archive reference.

---

# Agent Delivery Manifest Kit v1

One-time price: **0.10 USDC**. The kit is licensed under the MIT License in
`LICENSE`, including commercial use, modification, and redistribution with
notices. See `TERMS.md` for delivery, support, and manual refund requests.
Purchase availability and payment requirements are described by the storefront's
offer. Checkout is external to this offline package; the software does not pay,
sign, receive payments, or perform wallet operations.

Use the kit when an agent hands files to a customer or another agent. Declare
each file's relative path, exact byte size, and SHA-256 digest in JSON. The
offline verifier checks the listed local files and returns JSON and an exit code.

Uses APIs available in Node.js 22 or later on macOS or Linux. This release is
tested with Node.js v24.20.0 on macOS; Node.js 22 has not been directly tested.
There are no dependencies to install, accounts, network calls, wallet
operations, or automatic execution of delivered files.

## Keep purchase recovery private

When buying through the Lumen House storefront, generate and save a private
recovery key before payment: 64 lowercase hexadecimal characters from 32
cryptographically random bytes. Save the original signed payment before sending
it, and save the order ID as soon as returned. Send the key in the
`X-Lumen-Recovery-Key` header on the signed purchase and keep it for download
access and recovery. Retain the signed payment proof if purchase reconciliation
is needed. A public transaction hash or signed onchain proof alone cannot
recover the download. Never publish or email the recovery key.

Download recovery lasts at least 30 calendar days from confirmed purchase;
support and refund requests have a seven-day window. Confirmed missing or
corrupt delivery retains replacement entitlement during the recovery window
without another purchase. See `TERMS.md` for the full conditions. These are
storefront purchase rules; the offline generator and verifier need no key,
account, or payment.

## Try the fictional handoff

From the extracted kit directory:

```sh
node verify.mjs --manifest examples/delivery-manifest.json --root examples/files --json
```

Success returns `ok: true`, `claim: "listed_files_match_manifest"`,
`files_checked: 2`, and exit code `0`. The example is fictional and contains no
customer, purchase, or completed-service evidence.

## Create a handoff

1. Put the delivered files in a stable local directory.
2. Pass each intended file explicitly, with a path relative to that directory.
   No files are discovered recursively or uploaded. The generator prints a
   complete manifest as JSON and does not write a file itself:

```sh
node create.mjs --root examples/files --delivery-id fictional-notebook-handoff --file message.md --file notebooks.json --json
```

3. Save the JSON stdout as a manifest using your own file tool. Entries are sorted
   by path, so the same ID and file bytes produce the same manifest. There are no
   implicit timestamps. Optionally supply `--description TEXT`.
4. Verify before handing off the manifest and files:

```sh
node verify.mjs --manifest your-manifest.json --root your-files --json
```

You can also fill `template.json` manually. Its placeholder describes an empty
file and is not a completed handoff. Replace it with actual entries.
Media type is optional declared metadata;
the verifier does not infer it from file contents.

## Contract and output

`manifest.schema.json` is a JSON Schema 2020-12 shape contract. The verifier reads
that same local schema and validates every constraint used in it; no schema URL
is fetched. A future unsupported schema constraint fails closed. The verifier
additionally checks filesystem rules and case-insensitive path uniqueness across
entries, which ordinary JSON Schema cannot express by an item's `path` field.

Use ASCII path segments starting with a letter or digit; remaining characters
may be letters, digits, dot, underscore, or hyphen. No segment may end in a dot.
The verifier rejects absolute paths, Windows drive/UNC/backslash paths, URLs,
empty segments, `.`/`..`, duplicate paths (including case-only aliases), every
symlink below the chosen root, missing files, and nonregular files. Hidden paths,
spaces, and Unicode paths are intentionally outside this version's contract.
The chosen root itself must be a directory rather than a symlink.

All verifier outcomes are written as one JSON object to stdout, with
`schema_version: "lumen-delivery-verification/1"`, `ok`, `claim`, `delivery_id`,
`files_listed`, `files_checked`, and an `errors` array. Errors have stable `code`,
`path`, and `message` fields; mismatches can also include `expected` and `actual`.
No raw filesystem exception or filesystem-derived absolute path is included in
the result. Invalid input field names or values can appear in validation errors.

| Exit code | Meaning |
| --- | --- |
| `0` | Every listed file matched the manifest |
| `1` | Invalid manifest, unsafe file path, or file verification failed |
| `2` | Invalid invocation or manifest could not be read |

The generator applies the same schema, path, and symlink rules as the verifier.
On success it prints a manifest and exits `0`. On failure it prints
`schema_version: "lumen-delivery-generation/1"`, `ok: false`, and `errors`, with
exit `1` for invalid content or files and `2` for invalid invocation. No partial
manifest is emitted. It does not infer a license or media type or send files
anywhere.

## What the result means

Matching files prove only that the bytes read during this run match the supplied
manifest. The manifest is an assertion by its sender, not a signed attestation.
This checks no payment, authorship, rights, malware safety, service quality, or
unlisted files. It does not execute sample files or certify a completed service.
Hashing is not encryption, and the kit does not protect confidential contents.

Use a stable local directory while checking it. The verifier rejects symlinks
and detects common changes during reading, but it is not a filesystem sandbox
against a malicious process concurrently replacing directories or files. It
does not unpack archives; choose your own extraction tool and inspect the
download before running code.

## Tests

```sh
node --test tests/*.test.mjs
```

The suite checks the usable fictional handoff, deterministic generator reuse,
schema constraints,
tampering, size/hash mismatches, missing and nonregular files, unsafe paths,
duplicates, symlink escapes, and CLI JSON/exit behavior. Test fixtures are created
and removed below `tests/`; the tests use no network or payments.

The kit is original AI-assisted material. It includes no NFT artwork, private
Core records, or purchased research reports. No exclusive copyright, uniqueness,
or certification of a delivered service is promised. The standard MIT license
text is also available from the Open Source Initiative:
https://opensource.org/license/mit.
