What a person gets
A redacted copy of your manifest for one person: when you were active together, and the rows that name them. It is the only file that leaves.
Sam Lee and the rows are made up. The copy shown is what the tool wrote on a test folder. The tool writes the copy; it sends nothing. You send it.
The picture
Which rows go in, as a table
Your manifest, row by row. A row goes into Sam Lee's copy only when its visibility names Sam Lee. Then only its id and lastActive go.
| id | visibility | kind | path | lastActive | in Sam Lee's copy |
|---|---|---|---|---|---|
3b0e0bea… | Houston Bloom | shareable | PACKET.md | 2026-10-08 | no |
71fca610… | private | folder | Documents/contacts | 2026-10-08 | no |
0e5ee6fb… | private | folder | Documents/notes | 2026-10-08 | no |
f4a67013… | Robin Park | folder | Documents/projects-2026 | 2026-10-08 | no, it goes in Robin Park's copy |
25097f4c… | Sam Lee + public | shareable | Local Brain/03_outbox/frames/local-assembly.html | 2026-10-08 | id and lastActive |
f130a5e4… | Sam Lee | shareable | Downloads/sam-notes.md | 2026-10-09 | id and lastActive |
What each field holds
- audience
- Who the copy is for, the name given with
--to. - madeAt
- The day the copy was written.
- activity
- One entry per exchange on file with that person, newest first. Each holds only
at, the timestamp. Read fromrecords/<per_id>/exchanges.jsonlin your contacts folder when you give--person. Left out when you do not. - rows
- Each manifest row whose visibility names that person, newest first:
idandlastActive, nothing else. - id
- The row's 64 random hex characters. It gives nothing away about the folder, the file or your system.
- lastActive
- The day that row last changed.
Never in a copy: path, hash, project, sent, visibility, private rows, and rows that name only other people. What each exchange carried stays in your contacts folder.
What the file looks like inside
JSON, a plain text format. The command, what it printed, then manifest/manifest.sam-lee.redacted.json as the tool wrote it.
node map.mjs redact --to "Sam Lee" --contacts Documents/contacts --person per_sam-lee copy for Sam Lee: 2 times you were active together, 2 rows you keep them updated on: manifest/manifest.sam-lee.redacted.json
{
"audience": "Sam Lee",
"madeAt": "2026-10-09",
"activity": [
{
"at": "2026-10-09T09:15:00-05:00"
},
{
"at": "2026-10-08T14:02:00-05:00"
}
],
"rows": [
{
"id": "f130a5e423761c2d6465139f885e5db3bdf1c2dc3c3c549fa63625df35b42f8e",
"lastActive": "2026-10-09"
},
{
"id": "25097f4ce5d30f94c088f824e14bd1c9792b2e07256b26d9e7d19bfbaf797b9c",
"lastActive": "2026-10-08"
}
]
}
A server that carries the copy to the person: not built yet Whether a design principle travels in the copy is an open question.
How it connects
Sharing something →
What a contact is →
