What the manifest is
One file on your computer. One row per top-level folder you name, and one per thing you make to share.
The rows below are made up to show the shape. Paths are shortened. The ids came from a real run of the tool on a test folder.
The picture
The manifest, as a table
One row is one folder or one shareable. A field is one column. Ids are shown by their first 8 characters; the tool accepts that too.
| id | visibility | kind | path | lastActive | from | sent | relates_to |
|---|---|---|---|---|---|---|---|
3b0e0bea… | Houston Bloom | shareable | PACKET.md | 2026-10-08 | Houston Bloom | ||
71fca610… | private | folder | Documents/contacts | 2026-10-08 | |||
0e5ee6fb… | private | folder | Documents/notes | 2026-10-08 | |||
f4a67013… | Robin Park | folder | Documents/projects-2026 | 2026-10-08 | |||
25097f4c… | Sam Lee + public | shareable | Local Brain/03_outbox/frames/local-assembly.html | 2026-10-08 | 2026-10-08 to Sam Lee, published | ||
f130a5e4… | Sam Lee | shareable | Downloads/sam-notes.md | 2026-10-09 | Sam Lee | 25097f4c… |
projects until it was renamed. It kept its id. Row 6 answers row 5.What each field holds
- id
- 64 random hex characters, given once, never changed. It is not made from the name, the path or the contents, so it gives nothing away.
- kind
folder, for a top-level folder you named, orshareable, for something made to send or something that came back.- path
- Where it sits on your computer. In the manifest only, never in a redacted copy.
- visibility
- Who may see the row, as a list.
["private"]stands alone. Otherwise any ofpublicand people's names, read aspublic + Sam Lee. Every folder starts private. - lastActive
- The day it last changed, from its modified time. Checked at session end.
- mappedAt
- Folders: the day it was mapped.
- madeAt
- Shareables: the day it was made or received.
- sent
- Shareables: each send, with the day, who, and whether it was published.
- from
- A shareable that came back: who sent it.
- relates_to
- The id of the shareable this one answers.
- project
- The project a shareable belongs to, when it has one.
- hash
- A fingerprint of a shareable's contents, to tell an edit from a touch. Never shared.
- notes
- Transformation notes attached to a shareable: the day and the note's path.
- missing
- The day session end could not find the row. Nothing is deleted.
What the file looks like inside
JSON, a plain text format. This is manifest/manifest.json, rows 1, 4 and 5. The real file holds the full path; it is shortened here.
{
"schema": "cls-manifest/v1",
"createdAt": "2026-10-08",
"rows": [
{ "id": "3b0e0bea147116e94f01dab371c678c233371b5b0dbefdc65d3123bbf722913a", "kind": "shareable",
"path": "PACKET.md",
"visibility": ["Houston Bloom"], "madeAt": "2026-10-08", "lastActive": "2026-10-08",
"hash": "3d5d45cf8e17", "from": ["Houston Bloom"], "sent": [] },
{ "id": "f4a6701333975e386d67d9a0fe2706a71a2d6118e5cbf68edd3c0410ac478d97", "kind": "folder",
"path": "Documents/projects-2026",
"visibility": ["Robin Park"], "mappedAt": "2026-10-08", "lastActive": "2026-10-08" },
{ "id": "25097f4ce5d30f94c088f824e14bd1c9792b2e07256b26d9e7d19bfbaf797b9c", "kind": "shareable",
"path": "Local Brain/03_outbox/frames/local-assembly.html",
"visibility": ["Sam Lee", "public"], "madeAt": "2026-10-08", "lastActive": "2026-10-08",
"hash": "b18105d0da7c", "project": "Relational Spaces",
"sent": [{ "on": "2026-10-08", "to": ["Sam Lee"], "public": true }] }
],
"updatedAt": "2026-10-09"
}
Beside it, manifest/manifest.log.jsonl: one line per change. These are the lines for row 4.
{"at":"2026-10-08T13:43:04.039Z","change":"mapped","id":"f4a6701333975e386d67d9a0fe2706a71a2d6118e5cbf68edd3c0410ac478d97"}
{"at":"2026-10-08T13:43:04.279Z","change":"visibility","id":"f4a6701333975e386d67d9a0fe2706a71a2d6118e5cbf68edd3c0410ac478d97","visibility":["Robin Park"]}
{"at":"2026-10-09T13:43:05.663Z","change":"missing","id":"f4a6701333975e386d67d9a0fe2706a71a2d6118e5cbf68edd3c0410ac478d97"}
{"at":"2026-10-09T13:43:06.763Z","change":"moved","id":"f4a6701333975e386d67d9a0fe2706a71a2d6118e5cbf68edd3c0410ac478d97"}
The commands that wrote them, and what each printed:
node map.mjs receive PACKET.md --from "Houston Bloom" received from Houston Bloom: id 3b0e0bea node map.mjs add Documents/contacts Documents/notes Documents/projects mapped contacts: private, id 71fca610 mapped notes: private, id 0e5ee6fb mapped projects: private, id f4a67013 node map.mjs set Documents/projects --visibility "Robin Park" projects: Robin Park node map.mjs update checked 5 · changed 0 · missing 1 node map.mjs moved f4a67013 Documents/projects-2026 moved: projects is now projects-2026, id f4a67013 kept
The manifest must sit outside every mapped folder; the tool refuses otherwise. These lines show in your activity view, 00_contacts/activity.html, built by activity.mjs. Session start reading the manifest: not built yet
How it connects
What a person gets →
What a contact is →
