One family's real deeds build a small isometric house, member by member and room by room, on a private multiplayer floor. Logging a deed is one tap on a fixed tile, and one brick appears in the room that deed grows. You are looking at the public view of that game: a static page compiled from the deed record, at day grain, family total only, nobody named. It is the sibling of the household's mission control, and it plays by the same rule: the picture may not out-claim the data.
Built in one evening on 2026-08-07 and published the same night, because that is the house rule here. What existed when this was first compiled: the private family app, selftested, in a repo on the family's own machine, its hosting link still a deliberate human step away, and a deed record with nothing in it. Nobody has logged anything. Update 2026-08-10: that hosting step is done. The private floor is live, refuses a stranger with 401 and opens to a member’s own key link. That was checked end to end, not assumed. The number below has not moved: still no deed, so the house is still dark. The chips and the house below are re-emitted by every compile and may only carry integers, dates no finer than a day, and four room tokens; today they show day zero, and the page would rather show a dark house than a flattering one.
The record is empty. This house is dark because nothing has been logged, and it will stay honest about that: the first brick appears when the first real deed does.
every figure above is re-emitted by the compile through a closed allowlist: integers, dates no finer than a day, and four room tokens. It refuses anything else, and the refusals are selftested. Compiled 2026-08-08.
The private floor has four rooms and a bench for each family member. Play is deliberately small:
The public view is safe the boring way: the dangerous surface does not exist. Five absences, each structural rather than filtered:
On top of the absences, the compiler that emits this page refuses unknown fields, out-of-vocabulary strings, non-integer counts and any timestamp finer than a date, and its selftest forces every one of those refusals to fire against poisoned records before the tool counts as a gate. The emitted bytes are then swept again on disk. A page that cannot pass does not ship.
One family plays this. There is no community behind this page, no waitlist and no sign-up, and it would be overselling to imply one. What there is instead: the pattern, small enough to rebuild in an evening, published so a second household could exist without asking us anything.
The rules that make it work, in the order they earn their keep:
The one-evening build order: a static login-gated app on your own hosting, a blob store, one POST endpoint that accepts a tile from the enum and mints the timestamp server-side, one GET endpoint that folds the log into rooms, a page that draws it, and the public compiler with its refusal gate and selftest. Cut the drawings if the evening runs short; never cut per-member keys and never cut the gate.
Federation is a hyperlink. If you build one, put your own public page on your own domain and link it wherever you like, including at us. There is no shared backend and no network to join; two honest pages that link each other are already a federation.