The registry canary's server-log scan cannot name a WARN-level boot failure, so when the boot is the defect the job reports a downstream probe instead. Filed from #16500, where this cost the triage seat a full log read to reach the root cause.
Evidence
Run 34084559243, job 101626009369. The defect was one line, at boot:
AuthPlugin failed to load: The requested module '@better-auth/core/db'
does not provide an export named 'createLocalAccountIssuer'
The job did not exit on that. It ran every auth and CRUD probe against a server with no auth, and exited 1 on a probe. The log scan that could have named the cause runs after those probes.
Mechanism
scripts/publish-smoke.sh section 4 (log scan) is the last thing in the script, after section 3 (probes), and its pattern matches error and fatal only:
grep -nE '^\[(error|fatal)\]|"level":"(error|fatal)"|^\S+Z ERROR |Failed to register OIDC discovery routes'
Two properties combine:
- Severity. A plugin that fails to load logs at WARN, not ERROR, so the scan does not match it.
- Order. Even at a matching severity the scan runs after the probes, so a boot defect is always reported as a probe failure first.
The section's own comment states the intent this misses: "The #3091 breakage announced itself at startup ... and would have been caught by ANY error-level line." That held for #3091 because that breakage logged at error level. This one did not, and the scan was structurally unable to see it.
Why it matters
The canary's whole value is naming which of several owners a failure belongs to. A boot-load failure and a genuine auth-behaviour regression are different owners, and today they produce the same job output — a red probe.
Not in this card
Suggested shape
Scan the boot log for failed to load between the boot and the probes, and fail there with the plugin named. That is a new assertion on the smoke's contract, not a mechanical edit, which is why it is filed rather than carried into #16500's PR.
Generated by Claude Code
The registry canary's server-log scan cannot name a WARN-level boot failure, so when the boot is the defect the job reports a downstream probe instead. Filed from #16500, where this cost the triage seat a full log read to reach the root cause.
Evidence
Run
34084559243, job101626009369. The defect was one line, at boot:The job did not exit on that. It ran every auth and CRUD probe against a server with no auth, and exited 1 on a probe. The log scan that could have named the cause runs after those probes.
Mechanism
scripts/publish-smoke.shsection 4 (log scan) is the last thing in the script, after section 3 (probes), and its pattern matches error and fatal only:Two properties combine:
The section's own comment states the intent this misses: "The #3091 breakage announced itself at startup ... and would have been caught by ANY error-level line." That held for #3091 because that breakage logged at error level. This one did not, and the scan was structurally unable to see it.
Why it matters
The canary's whole value is naming which of several owners a failure belongs to. A boot-load failure and a genuine auth-behaviour regression are different owners, and today they produce the same job output — a red probe.
Not in this card
Server is readyshould print on a degraded boot is [finding] the server prints✓ Server is readyon a degraded boot — the ready signal is independent of the degraded-capabilities warning, and the louder one is wrong #16630.mainalready (fix(plugin-auth): pin the better-auth family to an exact 1.7.2, and gate the declared range against our own import surface #16634) and the guidance half in Registry canary failed: fresh npx create-objectstack install is broken #16500.Suggested shape
Scan the boot log for
failed to loadbetween the boot and the probes, and fail there with the plugin named. That is a new assertion on the smoke's contract, not a mechanical edit, which is why it is filed rather than carried into #16500's PR.Generated by Claude Code