Skip to content

[bug] Errata daily fails on a fresh install with the shipped assay-callers.json #2543

Open

Description

@IvanLeontev-stack

What happened

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.

Activity

  1. hjbrandt commented on Nov 2, 2026

    @hjbrandt

    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.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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions