Repository navigation
feat(wiki): write wiki pages from templates in the family's voice - #193
Merged
Merged
Conversation
A person page rebuilt after new filings cited the wrong diary entries: "heart-shaped pancakes" linked to the Halloween entry, and most dated lines on a page with diary sources pointed at a neighbouring entry. Document and note citations were right. A rebuild renumbers the previous page's citations by matching each reference to the current evidence. The References block links a diary entry to its month page, but the match looked for the entry's own path, so no diary citation matched, kept its old number, and every diary entry was offered to the model as new. - Match a source by the title and link its References row shows, read from one helper the References block uses as well. - Stamp the person pages the compiler writes. A page without the stamp is rebuilt once from the evidence alone, so the wrong citations already in a page's text are not carried forward as its baseline. Fixes: 64336b7 ("feat(wiki): restructure and polish the wiki (#159)")
A person without a chat account, such as the baby, appeared nowhere on the home page: the Members list held only account holders and told the model to add nobody else, and Broader Family is for relatives outside the household. The home page now lists everyone the person files declare, linked to their page, account holders first. Fixes: b9fe4e4 ("feat(memory): give every person the family knows a file of their own")
A German household read "## References" under every generated page. The
block is now titled in the household language ("Quellen" in German) on
the home, person and topic pages, and a rebuild finds the old block
under either heading, so a household that changes its language does not
end up with two.
Person pages read like a records report ("a complex, transactional
relationship"), opened with placeholders such as "No explicit family
role defined", listed diary entries as documents, and carried dates the
model had rewritten.
A person page is now filled from a Markdown template per language,
`stacklets/memory/bot/templates/person.<lang>.md`, in English and
German:
- The model writes only the prose, as JSON: a one-line tagline, a short
About, what the person loves, one line for each of their latest
entries, and optionally a section with a heading of its own. It is
asked for the warm, concrete voice of a family member describing
someone to a visiting relative.
- The compiler fills the rest: the latest entries with their real dates,
and the documents that name the person, linked.
- A section with nothing in it is left out with its heading. An answer
that is not the expected JSON keeps the page as it was.
Every person page is regenerated once in the new layout, by the next
rebuild that touches it or the nightly sweep at the latest.
The home page listed the family alphabetically, put Bart's friends and classmates under Broader Family, split Maggie into Maggie and a twin called Margaret, and filled empty sections with "No vehicle details are recorded". The home page is now filled from a Markdown template per language, `stacklets/memory/bot/templates/home.<lang>.md`, in English and German: - The family: everyone the person files declare, oldest first, each linked to their page with one warm line. Nobody is dropped and nobody appears twice, whatever the model answers. - Relatives, friends and neighbours, and the people who help the family (doctor, school, teachers) each have a section of their own. - The home, vehicles, insurance, subscriptions and memberships hold plain facts with citations, and appear only when there are some. The model answers in JSON, one field per section, and is given every name a person goes by. The compiler formats the lists, so citations appear once at the end of a line.
A topic page was one dense paragraph in the first person or in report
voice, credited actions to the wrong person ("Homer has confirmed a
lodge booking" that Marge made), and left the topic's open todos off the
page.
A topic page is now filled from a Markdown template per language,
`stacklets/memory/bot/templates/topic.<lang>.md`, in English and
German:
- At a glance: the key facts as label and value, with citations.
- Where things stand: what has been booked, bought or decided, and by
whom. The model is told who filed each source.
- Still to do: the open items of the topic's todo list, as the family
keeps it.
- Notes, links, documents and what was filed elsewhere, listed by the
compiler with who filed each and when, newest first.
The model answers in JSON with the facts and the state only; plans and
to-dos stay on the todo list. A section with nothing in it is left out.
A person page credited one person with what another did ("Homer
confirmed the booking for two rooms" that Marge made) and read a
family member's other name as someone new ("the birth of his daughter,
Margaret" for Maggie's birth certificate).
The model now sees who filed each source, as the topic page already
does, and the whole family with every name each person goes by. It is
told to credit only who filed a source or who the source names as
doing it, and that another name of a family member is the same person.
A person page told who someone is but not what a relative looks up: when they were born, their school or job, their doctor, the car they drive. Under the About text, a person page now lists up to five such facts as label and value, each with its source, read only from sources that name the person. With none, the section is left out. Every person page is regenerated once in the new layout, by the next rebuild that touches it or the nightly sweep at the latest.
The home page hid the household facts at the bottom, after every friend and teacher, left the pets off, and wrote policy numbers into the insurance list. The home page now has: - **At a glance**, right after the welcome: the home (owned or rented, the mortgage lender), each car, the family doctor and the children's school, at most six lines with citations. It replaces the Home and Vehicles sections. - **Pets**, listed with the family. - Insurance named by kind and insurer, and each person or place in one section only.
The home page said who the family is but nothing about what they have been up to. Right after the welcome, a Lately section now tells the last month in three or four warm sentences, with citations. The compiler picks the sources, the diary entries and notes of the last 31 days, and the model writes from those only, so an old story never reads as news and a bill that arrived is not an event. A month with nothing filed has no such section.
The home page told what the family did, but not what is ahead or what comes round every week or year. After Lately, a Schedule section now lists: - What is ahead in the next 90 days, by date, soonest first: trips, bookings, appointments, school events, payments due. The model reads the dates out of the sources; the compiler keeps only real dates from today on, drops what is over or too far off, and formats them in the household language (`14–16 Oct 2026`, `14.–16. Okt. 2026`). - What recurs, after the dates: practices and clubs, monthly payments, yearly renewals and birthdays, as a source states them. Each line cites its source. With nothing ahead and nothing recurring, the section is left out.
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.
Summary
templates/<kind>.<lang>.md): the model answers in JSON, the compiler fills the slots and leaves out any section with nothing in it.Eleven commits that each stand alone, so this is meant for a rebase merge.