feat: structure topic wiki pages as real reference pages#39
Merged
Conversation
Append a dated addendum to knowledge-structure.md: the entity graph in the vault is the ontology of record; ontology.toml demoted to the classifier vocabulary seed. Keeps the 2026-04 design intact above it and explains why we moved (Obsidian-native, one source per fact, auto-extends, portable).
Group a topic's captures by kind (read from the vault path) so the page shows Bookmarks, Notes, and Documents as their own sections instead of one flat Recent Activity feed; only kinds with captures get a heading. About becomes a recency-weighted overview that folds in recent developments rather than a changelog. Citations keep list-order [N] so the deterministic References mapping stays aligned.
Record the submitter on every capture two ways at capture time, when the data is free: a filed_by frontmatter field (the Matrix localpart) and the git commit author derived from their id (@Marge:merles.eu -> marge <marge@merles.eu>), with the bot still the committer. So 'who added this' is answerable from a plain file read, a Dataview query, or git log --author. Falls back to the bot when there's no submitter.
Index the filed_by frontmatter field and surface it in the topic evidence, and ask the typed Bookmarks/Notes/Documents bullets to attribute each item to who filed it. Reads the attribution that capture now records, so a topic page shows not just what was added but by whom.
stack messages send gains --as <user> (symmetric with upload), sharing one resolve_login helper so text from a family member is captured and attributed like a real person's instead of bot chatter. Add tools/family-docs/topic-demo.py: a messy, realistic Simpsons trip topic filed as Homer and Marge (links, notes, todo-shaped messages) to eyeball the topic page — the bookmarks/notes split and who-filed attribution, and the gaps (no task list yet, dropped short todos).
Classification ran at the model's default (non-zero) temperature, so the same note got a different title each run — even flipping language (English vs German), which then forked the filename and broke dedup. Pin the classifier to temperature 0 so identical content classifies identically. Separately, the capture prompt never carried today's date (the Q&A prompt does), so the model couldn't resolve 'this Friday' or 'the 14th to 16th' into concrete dates; thread it in.
A capture's filename is <title-slug>-<hash>.md; the hash is stable per URL/body but the slug follows the title. So the same link re-pasted with different framing, or content re-classified to a different title, forked a near-duplicate. Look up an existing capture by its <entity>/<kind>s/ folder + -<hash>.md suffix (like documents match by -p<id>.md), and update or rename that file instead of creating a second one.
Reference links 404'd in the web wiki for topic pages: page-relative paths like notes/2026/06/x worked for flat member pages but, two levels deep under family/<topic>/, Quartz's shortest link resolution shortened them to a vault- root slug that doesn't exist. Emit full paths from the vault root and switch Quartz to absolute link resolution, so one link form resolves at any page depth (Obsidian reads vault-root paths the same way). Verified 200 on the rig.
Clicking a topic's notes/ or bookmarks/ folder landed on Quartz's bare auto listing (one year folder, then a drill through YYYY/MM). Generate an index.md landing page per capture folder: every item newest-first, grouped by month, with who filed it and its content tags, links absolute so they resolve at any depth. Reused for both topics and member buckets. Lift the kind->label mapping into one canonical source feeding both the index and the topic-page sections.
Index tags were inline code-spans — dead text that cluttered the scannable date/title/who line. Move them to their own line and link each to Quartz's /tags/ page, so they're clickable theme navigation here like they are on the capture page. Keeps the Person: filter.
A chip row under every item buried the title and made the list hard to scan. The index is now just date, title, and who filed it; tags stay on each capture page where they're clickable.
Members and topics generated notes/bookmarks index pages, but the shared bucket's own captures (a note dropped in the main family room, not under a topic) did not. Hook the home generator so <shared>/notes/ and bookmarks/ get the same index. Now consistent across home, members, and topics.
A bot with a bucket of its own (mail-bot/) was swept into the member roster and got a member page. Exclude the -bot convention from _member_slugs, matching how the archivist already treats bot users, so bots don't appear as family members.
Index page titles and the who separator used em-dashes (Notes — Topic, title — who), against the house style. Use a colon for the title and a middot for the attribution.
The placeholder .example URLs failed DNS and fandom 403s the fetcher (Cloudflare bot block), so bookmarks never filed. Use Simpsons Wikipedia articles, which the extractor fetches cleanly.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Reworks the family-memory wiki so topic pages read like a real wiki entry
instead of a flat capture feed.
Documents instead of one undifferentiated list.
filed_byfrontmatter field and the git commit author.
notes/andbookmarks/get a newest-first,month-grouped index for browsing.
across runs; the classify prompt now includes today's date for relative-time
phrases.
link filed twice updates in place instead of forking.