Docs · The House Daily
docs/HOUSE-DAILY-REPORT-20260917.md in the ZoeyOS source. Last verified 2026-09-17. State the code moved since: 2026-10-08.The House Daily: one report for the owner
About twenty routines write into a deliverables folder or a log. The owner reads one page.
The claim, measured first
Before the page was built, every routine that claimed to maintain or improve the house was audited, and the audit was corrected by an adversarial review the same morning. What held: the keeper's lane restarts, the hold sweep's releases, the kit re-apply, the weekly janitor, nightly apply and rollback. What did not: a janitor restart branch that could never fire, a sweep gated off 93 % of the time by an unreachable VRAM floor, a test battery whose failures nobody read, a research funnel that in fourteen days took about 312 bullets to 147 cards to 18 rulings to 11 tries to 1 commit to 0 live. The page exists so those numbers are seen every day.
Slips in, one page out
Every routine's own detail file stays where a process reads it. The owner stops being asked to open them.
- The slip. Every routine ends by writing one small JSON, atomically: when it ran, when it is next due, a status (ok, warn, bad, skipped, unknown), a one-line headline that is a fact and not a mood, facts with a measured-at time and a source, what needs the owner, what changed with evidence, what could not be verified, and the path to the full report. A caught exception writes bad, never an exit-0 silence. A gate yield writes skipped with the reason. A change with no evidence on disk is dropped.
- The consolidator. No model. Reads slips only. Two slips that disagree are shown as a conflict, both cited. A measured fact beats a carried one whatever their ages; only among measured facts does the newest win. Built at the close of the owner's off-hours window, as the ticker's last job, and on demand.
- The registry, not self-report. One schedule file lists every routine with its interval and grace. A routine with no slip inside its interval plus grace shows as "did not report". A routine parked by the current mode shows as parked by design and is not an alarm.
- Effect probes. A slip records that a routine ran. Whether it worked is the consolidator's own check, one cheap read per claim: red samples against restarts and closed cards; cards closed against opened; voters counted; a window job's own exit, not "it was started".
- Who writes "needs you". Two sources only: a card blocked for hands, root or an irreversible step, with the ask and the options written by whoever blocked it; and a fixed table of mechanical cases (a reboot flag, pending security updates, a disk past a threshold, a hold older than twelve hours). Software decisions go to Zoey's queue; the page shows a count and the age of the oldest.
The template, for every report
One kit, blocks in fixed order, each optional: the verdict as a sentence → at most three lamps → needs you (at most five, options, the last is Leave it) → broken or at risk, worst first, with evidence, since when, and an owner → changed, evidence required → the topic block → roll-call and sources → could not verify, mandatory.
State is a shape and a colour: fine, watch, broken, did not report. Numbers sit in rows, not sentences. Exceptions are shown; everything fine collapses to a count. Target: one screen and a half, no scrolling to find what needs the owner.
What was built
- The page and its JSON twin, a dated pair each day; 1.7 s to build, no model, no network. The index puts it first.
- Keyed to the window: it starts when ten minutes of the owner's off-hours are left, whatever their length. The house day runs close to close.
- Adapters for the structured sources only: janitor samples, disk, the nightly battery, the maintenance trail, the board (read-only), the ranking JSON, the ideas ledgers, the keeper, the security-gate ledger, the memory night, the mechanical asks. One adapter failing costs one "could not verify" line.
- Measured beats carried: facts older than three hours are carried; a carried-bad health key is re-measured before it is shown.
- Muted alerts reach the page: every announcement skipped for quiet hours, mic off or mute is a row, with its count and last time.
- Improving now ends at the effect: the funnel reads filed → agreed → with Zoey → try in work → landed → measured better, where better means the idea's KPI moved the right way seven days on. A landing with no KPI is named as unmeasurable; one that made its KPI worse turns the lamp red.
- Anything installed "for a night" gets an entry with an end date and becomes a row past it.
One standing board
The daily board roll was where the jam came from: a roll re-created every open card with a new id, dropping comments, runs, parent links, parks, retry counts and the reach of the idempotency key. Seven of seven parked cards were claimed and spawned on arrival. The board now stands; done cards are archived after 36 hours when their tree is closed.