This is the whole machine on one page. The eight boxes are one loop: a problem is found by testing the real app, grouped with others like it, written up as a job, built by an AI coder, checked twice, merged, and rebuilt — then tested again. The five boxes underneath are what watches the loop. Every lamp is live. Point at any box for a plain-English description.
Hover a box to read it · click to keep it open · Esc closesTap a box to read it · the diagram scrolls sideways · the dashes are moving because work is moving
Right noweach figure carries the time of its own source
What it producedtwo different things, never added together
"Fixes to the app" are changes a person using VoiceCoach could feel. "Fixes to the machine" are the pipeline repairing itself — real work, but invisible to a user. They are counted separately on purpose; adding them together is how a busy night can be made to look like a productive one. The bottom row counts the same thing from the app's own code history. The two rows are measured differently and will not always agree — when they diverge, the code history is the harder evidence.
| Merged and verified | Last hour | Last 24 hours | Last 7 days |
|---|---|---|---|
| Fixes to the appwhat a user would feel | 0 | 7 | 36 |
| Fixes to the machinethe pipeline fixing itself | 0 | 16 | 34 |
| Cross-check: merges recorded in the app's own historycounted a different way, from the code history | 0 | 6 | 12 |
1 of the 6 fixes that the app's own code history says landed in the last 24 hours are not marked as merged on the job board. The code went in; something after the merge did not finish, and the job was set aside instead. Each one's recorded reason is below, in the machine's own words. Until this is reconciled, read the counts above as a floor, not a total.
- UI-CARD-CUTOVER-REGRESSION park: ⛔ WRONG TARGET — CLOSED, superseded. I diagnosed this against App.tsx:2441/2447/8189, but App.tsx DOES NOT SHIP: /private/tmp/voicecoach-stack/…
Merged in the last 24 hoursnewest 8 of 12
- app Deixis/pending residue (post-92b) 5h ago
- app ⛔ P1 THE TEST SUITE CERTIFIES CAPABILITIES BY REGEX-MATCHING App.tsx — A FILE THAT CANNOT RUN. This is why FOOD-ASYNC-P… 5h ago
- app ⛔ P1 "ACTUALLY …" CORRECTIONS ARE PARSED AS NEW LOGS, THE DISCOURSE MARKER LANDS IN THE EXERCISE SLOT, AND THE REFUSE M… 5h ago
- app ⛔ P0 THE SCREEN-DESTROYER (this is what Howard saw, and it is NOT App.tsx). MECHANISM: VoiceCoachNewShell.tsx:1815-1819… 5h ago
- app Ongoing: identify GOOD old code (frozen file+old services) not wired into the new shell, port/wire it; feed MIGRATION_L… 5h ago
- app Garbage-guard completion (NEXT IN QUEUE) 5h ago
- app Pending-answer reparse (planner crash surfaced to user) 5h ago
- machine fix-queue draftBranch can point at a branch that DOES NOT EXIST — automated merge would find nothing. Evidence 07-25 01… 9h ago
Testing in progressas of Jul 25, 1:50 PM
| Script | Area | State | Answers captured | Last progress |
|---|---|---|---|---|
| workout-corpus-a | workout | running | 248 | 7s ago |
| food-corpus-b-FROZEN-20260712 | food | running | 231 | 7s ago |
| food-corpus-mixed-F | food | running | 140 | 7s ago |
| food-corpus-mixed-G | food | running | 120 | 18s ago |
| acceptance-corpus-conversational | food | done | 178 | 1 min ago |
| notes-todos-lists-A | notes | failed | 0 | — |
| acceptance-corpus-new-types | food | failed | 0 | — |
| food-corpus-typed | food | failed | 0 | — |
| util-corpus-a | food | failed | 5 | 26 min ago |
| workout-corpus-typed | workout | done | 100 | 27 min ago |
| compound-dishes-A | food | failed | 3 | 26 min ago |
| food-corpus-a | food | done | 199 | 2 min ago |
| multifood-corpus-a | food | done | 60 | 32 min ago |
| food-corpus-mixed-C | food | done | 197 | 2 min ago |
| food-corpus-mixed-D | food | done | 198 | 2 min ago |
| query-frozen-A | food | done | 78 | 28 min ago |
| food-corpus-mixed-E | food | done | 197 | 2s ago |
How well the app is doingbuild a37268c9
22% of answers correct, across the
3 scripts that have finished
running on build a37268c9
(52 of 238 answers).
The other 15 are still mid-run and deliberately have no number yet.
A score is only shown when the whole script has finished AND every answer came from one single build of the app — the one under test. Anything else is marked "not attributable yet", because a number you cannot trace to one version of the app is worse than no number at all.
| Script | Score | Detail | Answers | Graded |
|---|---|---|---|---|
| food-corpus-mixed-E | not attributable yet | still running | 197 of 200 | 2s ago |
| food-corpus-b-FROZEN-20260712 | not attributable yet | still running | 231 of 300 | 7s ago |
| workout-corpus-a | not attributable yet | still running | 248 of 362 | 7s ago |
| food-corpus-mixed-F | not attributable yet | still running | 140 of 200 | 7s ago |
| food-corpus-mixed-G | not attributable yet | still running | 120 of 200 | 17s ago |
| acceptance-corpus-conversational | not attributable yet | still running | 178 of 180 | 1 min ago |
| food-corpus-mixed-C | not attributable yet | still running | 197 of 200 | 2 min ago |
| food-corpus-mixed-D | not attributable yet | still running | 198 of 200 | 2 min ago |
| food-corpus-a | not attributable yet | still running | 199 of 200 | 2 min ago |
| compound-dishes-A | not attributable yet | still running | 3 of 15 | 12 min ago |
| util-corpus-a | not attributable yet | still running | 5 of 43 | 12 min ago |
| workout-corpus-typed | 45% | 45 of 100 answers correct | 100 of 100 | 27 min ago |
| query-frozen-A | 4% | 3 of 78 answers correct | 78 of 78 | 28 min ago |
| multifood-corpus-a | 7% | 4 of 60 answers correct | 60 of 60 | 32 min ago |
| notes-todos-lists-A | not attributable yet | still running | 90 of 150 | 89 min ago |
| food-corpus-typed | not attributable yet | still running | 19 of 100 | 2h ago |
| acceptance-corpus-new-types | not attributable yet | still running | 9 of 90 | 2h ago |
| adversarial-corpus | not attributable yet | no build fingerprint on these rows — last graded 5d ago | unknown | 5d ago |
Health registerfrom health-monitor · checked 2 min ago
These are the machine's own checks — the same ones the alarm uses. "Since" is how long the check has been in its current state.
| Check | State | What it saw | Since |
|---|---|---|---|
| Fix scheduler is alive and doing work | Good | exactly one live instance; log fresh | 25h ago |
| Test scheduler is alive and doing work | Good | exactly one live instance; log fresh | 3 min ago |
| Ledger driver is alive and doing work | Good | exactly one live instance; log fresh | 27h ago |
| Publisher is alive and doing work | Good | exactly one live instance; log fresh | 9 min ago |
| Nothing is crashing and restarting in a loop | Good | no crash-looping VoiceCoach launchd jobs | 11h ago |
| Work is actually moving through the queue | Problem | frozen: queuedWork=13 schedQueued=0 but no unit lastTransitionAt / lastMergeTrainAt within advanceWindow=30m (heartbeat-only does not count: queueUpd… | 5h ago |
| Scores refer to a recent build of the app | Good | fresh: grade=food-corpus-mixed-C-a37268c9-c10-20260725-grade.json stampAgeMin=315 | 27h ago |
| The critical programs restart themselves | Good | durable=3 manual=0 noUnitDefined=1 other=0 | 27h ago |
| Disk space and log sizes are sane | Good | disk ok usedPct=78; no log balloons | 27h ago |
| AI coders are being launched successfully | Good | dispatch ok: hitsInWindow=0 (hitsIgnoredAsStale=9 hitsIgnoredPreAnchor=61 hitsIgnoredNoTime=0); historical/out-of-window noise does not pin RED (look… | 15h ago |
| Background jobs can find the tools they need | Good | env-equivalence node ok: 3 durable agent(s) resolve node; skipped/missing=1 · fable-binary ok: ~/.local/bin/claude (mode=fable-bin-override) | 15h ago |
| No orphaned or over-limit test lanes | Good | fleet ok: orphans=0 running=9 cap=12 | 15h ago |
The always-on programs
| Program | What it does | State | If it dies |
|---|---|---|---|
| Fix scheduler | Hands jobs to the AI coders and moves them through the pipeline. | Running | restarts itself |
| Test scheduler | Keeps test scripts running on simulators, forever. | Not running | restarts itself |
| Build stamper | Rebuilds the app and records which build is under test. | Running | restarts itself |
| Health monitor | Checks the machine every couple of minutes. | Running | restarts itself |
| Permanence guard | Makes sure the must-always-run parts are running. | Running | restarts itself |
| Ledger driver | Chases commitments that have gone quiet. | Running | restarts itself |
| Publisher | Renders and pushes the pages you read. | Running | restarts itself |
| Message delivery | Pokes a worker thread when something needs attention. | Off on purpose | restarts itself |
Must always runfrom permanence-guard
The difference between "broken" and "switched off on purpose" — every deliberate pause needs a written reason, recorded here.
| Component | State | Reason on record |
|---|---|---|
| Fix scheduler | Always on | process up; launchd loaded; no disable-receipt |
| Test scheduler | Always on | process up; launchd loaded; no disable-receipt |
| Ledger driver | Always on | process up; launchd loaded; no disable-receipt |
| Publisher | Always on | process up; launchd loaded; no disable-receipt |
| Health monitor | Always on | process up; launchd loaded; no disable-receipt |
| Fleet liveness watchdog | Off on purpose | INTENTIONALLY_OFF: FLEET_KILL_SWITCH (repo root) + ~/.wakebus_disabled — automated AI-thread wake/poke banned; source-complete but must not be supervised keep-alive… |
| Blocked-work watchdog | Off on purpose | INTENTIONALLY_OFF: Cadence historically owned by fleet-liveness-watchdog; furnace ban parks that owner. Library remains callable; no independent keep-alive until a… |
| Message delivery | Off on purpose | INTENTIONALLY_OFF: ~/.msgdelivery_disabled and/or ~/.wakebus_disabled armed — process may exist under launchd StartInterval but must not re-enable AI wake; permanen… |