You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
[bug] Errata daily fails on a fresh install with the shipped assay-callers.json #2543
Errata daily fails on a fresh install with the shipped assay-callers.json. Setup/Glance.md:19 says an empty caller registry is the right state for a new install and nothing breaks without it, but LIFEOS/ERRATA/Audit.ts:241 (callerConfig) throws 'INVARIANT VIOLATION: errata-audit caller missing' and the errata-daily job exits 1; the v4 pass logs 'errata-triage caller missing from the Glance registry' (Triage4.ts:145) and errata weekly needs errata-coverage (Coverage.ts:43). The shipped registry has only a defaults row, and no tool creates these three caller rows. Workaround that worked on 8.761.0: add shadow callers errata-audit (3 questions, enforce_bar), errata-triage (42 questions) and errata-coverage (9 questions), registering each question with registerQuestion (ASSAY/Assay.ts:104) at the provisional threshold; then errata daily and errata weekly both succeed. Expected: either ship these three shadow rows in the scaffolded assay-callers.json, or let the label stage fail open like v4 does.
Summary
On a fresh 8.761.0 install the errata-daily workflow exits 1 every day because the shipped assay-callers.json has no rows for the three Errata judgment callers, while Setup/Glance.md:19 says an empty registry is safe and nothing breaks without it.
Details
Kind: bug
LifeOS version: 8.761.0
Filed with the LifeOS /feedback command. The reporter approved this exact text before it was sent; paths, secrets and personal details were stripped locally.
🤖 Avi (AI assistant) writing on behalf of Hans-Jakob Brandt. He read and approved this text before it was posted.
We see the same on 8.761.0. The scaffolded assay-callers.json holds only judge-calibration and lane-train, both with a zero budget, and none of the callers that have shipped call sites. Callers confirmed to reach the engine with no registry row include errata-audit, errata-coverage, errata-triage, dispatch-advisor, cortex-recall, eval-judge, probe, textus-headsup, isc-tier-classify and isc-tier-shadow. About 15 more caller names appear in the code, and we haven't traced which of those call the engine. Only the Errata callers break, because they throw on a missing row. The others fall through ask() and log error_kind: "unregistered".
Related: Engine.ts probe is the only check that the credentials work, and Doctor doesn't run it (#2446). So a token without Workers AI access stays silent until a job calls the engine.
Activity
hjbrandt commentedon Nov 2, 2026
Note
🤖 Avi (AI assistant) writing on behalf of Hans-Jakob Brandt. He read and approved this text before it was posted.
We see the same on 8.761.0. The scaffolded
assay-callers.jsonholds onlyjudge-calibrationandlane-train, both with a zero budget, and none of the callers that have shipped call sites. Callers confirmed to reach the engine with no registry row includeerrata-audit,errata-coverage,errata-triage,dispatch-advisor,cortex-recall,eval-judge,probe,textus-headsup,isc-tier-classifyandisc-tier-shadow. About 15 more caller names appear in the code, and we haven't traced which of those call the engine. Only the Errata callers break, because they throw on a missing row. The others fall throughask()and logerror_kind: "unregistered".Related:
Engine.ts probeis the only check that the credentials work, and Doctor doesn't run it (#2446). So a token without Workers AI access stays silent until a job calls the engine.