Agent Lab Vol 3 opens here - life-first, local, and yours - on a problem the first two volumes did not have. Vol 1 and Vol 2 shipped real fixtures: repositories, feeds, session logs. A person's renewals and letters cannot be published or borrowed, and no public corpus of household admin exists. So this fixture is invented: 24 obligations, 72 occurrences, 14 letters, a holiday calendar and a table of what each miss costs, written by hand.
The page says so in its first card, above every number, with what that costs as evidence and which way a real inbox moves each figure: extraction gets harder under duplicate notices, and the span check gets more valuable, because OCR slips are exactly what it catches. Every point estimate is a property of this fixture; the shapes transfer, because they are arithmetic rather than data.
A scheduler's self-check is not a weak correctness check. It is a different check.
business-day every date is a business day, when the rule demands one
monotone each term is after the last
interval each gap is within 7 days of the nominal period
in-horizon nothing lands outside the planning window
parses everything round-trips as ISO
That suite has zero false alarms on all four engines. Its problem is entirely recall, and the reason is one word in the third line: interval compares each term to the engine's own previous term, the only one available. A consistently wrong engine is consistently self-consistent.
| engine | dates right | self-check | wrong obligations | silent |
|---|---|---|---|---|
| rules | 72/72 | 24/24 | 0 | 0 of 0 |
| calendar | 48/72 | 19/24 | 8 | 3 |
| naive | 32/72 | 16/24 | 16 | 8 |
| plausible (control) | 33/72 | 24/24 | 18 | 18 of 18 |
plausible is naive plus a roll onto the next business day. That one change takes the self-check from 16/24 to 24/24 without making a single date less wrong. It passes every check an engine can run without the answer while being wrong about 39 of 72 dates - and the honest engine one row above it, 46% more accurate, gets flagged on five.
The span verifier splits the same way. It rejects 126 of 126 corruptions and 0 of 18 wrong-field choices, because every wrong value really is in the letter: the letter date, or last year's premium. A span says where a value came from, not what it means.
Repo: https://github.com/dev48v/life-admin-brain - PUBLIC, MIT, standard library only, 45 pytest, no key and no network. The page fetches nothing off itself: https://dev48.infy.uk/agentlab/vol3-01-life-admin-brain.html
Three nulls, and the one I was building towards
I set out to show that a correct recurrence engine buys a better outcome. It does not reproduce. naive is wrong about 40 of 72 dates and costs 0 harm; calendar, half again as accurate, is wrong about 24 and costs 1120. Date accuracy is uncorrelated with harm. The sign is what costs: naive drifts early and a longer lead inside a wide window is free, while calendar runs late and a late date is a miss.
Consequence-weighting the lead time buys nothing once the windows are respected: they already encode it, because expensive things take a long time and cannot be started late. And the two pipeline fixes are perfect substitutes: fixing extraction alone saves 8705, fixing the engine alone saves 8705.
"Remind me a week before" catches 15 of 24 tasks and leaves 70.2% of the harm.
11 of 15 projects now have a page: https://dev48.infy.uk/agentlab.php
Top comments (0)