Skip to content

feat(memory): link every record to the cards it names - #274

Merged
arthware-dev merged 4 commits into
feature/0.5.0-beta.1from
feat/memory-links
Oct 19, 2026
Merged

arthware-dev merged 4 commits into
feature/0.5.0-beta.1from
feat/memory-links

Conversation

@arthware-dev

Copy link
Copy Markdown
Contributor

Summary

  • Every link in the memory points at a card (ADR-017 §3, §4, §10): records name people by id and link each person's own file, a correspondent and a topic each get a card of their own, Person: tags are gone. New records get this from the archivist; existing ones from migrations memory/0003 and memory/0004.
  • Diary cards keep their names for now; they need their own change to the diary writer and its signature.

Upgrade: ./stack restart puts the archivist on this release, then ./stack up memory runs memory/0003 (people by id) and memory/0004 (correspondent and topic cards), one commit each in the memory repo. Older releases read the result.

A record now points at cards in the memory repo, as ADR-017 §3, §4
and §10 define it:

- `persons` holds person ids, and the meta block links each person's
  file (`family/people/<id>.md`). A name no declared person goes by
  stays a plain name and is left out of `persons`.
- No `Person: <name>` tags in the memory. Paperless keeps its own.
- The first document from a correspondent writes its card,
  `family/correspondents/<slug>.md`, with the classifier's aliases. The
  first record filed into a topic writes `<bucket>/<topic>/topic.md`.
  Neither is rewritten afterwards.
- The card browser links records to these cards, and the wiki sends a
  link to a person's or a topic's card to its page.
Migration `memory/0003` brings existing records to the shape the
archivist files now (ADR-017 §3, §4), in one commit by the memory bot:

- In each document, note, bookmark and email, a `persons` entry a
  declared person goes by becomes their id, a meta block link to a
  person's compiled page (`homer/about.md`) links their card, and
  `Person: <name>` tags are dropped.
- A link to a document that moved since points at where it is now,
  when its Paperless id names exactly one document.

A name no declared person goes by, and a link no one document answers,
stay as they are and are listed in the output. Diary cards are left
alone: they are signed with a digest. Undo: revert the commit in
`family/memory`.

Upgrade: `./stack up memory` runs it, after `./stack restart` has put
the archivist on this release so new records are filed the same way.
Older releases read the result; their archivist names people by
display name again.
Migration `memory/0004` writes the cards the archivist now declares the
first time a record names them (ADR-017 §10), in one commit by the
memory bot:

- `family/correspondents/<slug>.md` for each correspondent a document
  names, with `type`, `card_id` and `title`.
- `<bucket>/<topic>/topic.md` for each topic a record is filed into,
  titled from the folder's name.
- A correspondent's file of the old shape (`kind: correspondent`, no
  `type`) gets `type: correspondent` and its card id, nothing else.

A card that is there is never rewritten. Undo: revert the commit in
`family/memory`.

Upgrade: `./stack up memory` runs it, after migration `memory/0003`.
Older releases read the cards; their wiki shows a topic's card as a
page of its own.
The stack reference and the vault format now say that `persons` holds
person ids, that records link the cards of their people and their
correspondent, that correspondents and topics have declared cards, and
which migrations brought the files written before to that shape.
@arthware-dev
arthware-dev merged commit c950c13 into feature/0.5.0-beta.1 Oct 19, 2026
1 check passed
arthware-dev added a commit that referenced this pull request Oct 20, 2026
Every link in the memory points at a card (ADR-017 §3, §4, §10).
Records name people by id and link each person's own file; a
correspondent and a topic each get a card of their own; `Person:` tags
are gone. New records get this from the archivist, existing ones from
migrations `memory/0003` and `memory/0004`. Diary cards keep their
names for now.

Upgrade: `./stack restart` puts the archivist on this release, then
`./stack up memory` runs `memory/0003` (people by id) and `memory/0004`
(correspondent and topic cards), one commit each in the memory repo.
Older releases read the result.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant