Recorded while measuring the disarm shape for the late-console teardown card (measurement methodology and per-suite table live there, in the os-dev-report comment). Filing the volume itself as its own observation, because the disarm makes it VISIBLE where it used to be silently discarded.
The measurement (origin/main 240aad5, all 72 vitest-running packages, one full run each)
- 8,066 intercepted console RPCs per full-repo test run, carrying 61,086 lines. Before the repo-wide
disableConsoleIntercept sweep these were serialized to the vitest main thread and then DISCARDED by the non-TTY default reporter (silent: 'passed-only'); after it they write to worker stdout and land in CI shard logs. - Distribution, not a mean:
packages/qa/dogfood alone carries 41,115 lines (67%); packages/objectql 5,077; packages/rest 2,902; packages/verify 2,544; packages/runtime 1,987; packages/cli 1,563 — top 6 = 90%. 33 of 72 suites emit zero. - The bulk of the heavy suites' output is
[Registry] Registered object/namespace ... registration chatter and engine lifecycle INFO lines emitted at default log level while apps boot in tests.
Why this is a logger-default question, not an interception question
The showcase disarm docblock (examples/app-showcase/vitest.config.ts) already records this boundary: quieting the chatter is a question about @objectstack/objectql's (and the registry's) default log level under test, separate from the teardown-race mechanism. Re-arming interception would not remove the cost — it would only hide it again while paying an RPC round-trip per write and re-exposing suites to the teardown race.
What a fix could look like (for triage, not prescribed here)
- A quieter default level for the registry/engine loggers when running under vitest (
process.env.VITEST), or - a documented
OS_LOG_LEVEL default in test harnesses, or - deliberate demotion of per-object registration lines to debug.
No urgency claimed: the cost today is CI log volume (one shard log grows by ~41k lines), not correctness.
Generated by Claude Code
Recorded while measuring the disarm shape for the late-console teardown card (measurement methodology and per-suite table live there, in the os-dev-report comment). Filing the volume itself as its own observation, because the disarm makes it VISIBLE where it used to be silently discarded.
The measurement (origin/main 240aad5, all 72 vitest-running packages, one full run each)
disableConsoleInterceptsweep these were serialized to the vitest main thread and then DISCARDED by the non-TTY default reporter (silent: 'passed-only'); after it they write to worker stdout and land in CI shard logs.packages/qa/dogfoodalone carries 41,115 lines (67%);packages/objectql5,077;packages/rest2,902;packages/verify2,544;packages/runtime1,987;packages/cli1,563 — top 6 = 90%. 33 of 72 suites emit zero.[Registry] Registered object/namespace ...registration chatter and engine lifecycle INFO lines emitted at default log level while apps boot in tests.Why this is a logger-default question, not an interception question
The showcase disarm docblock (examples/app-showcase/vitest.config.ts) already records this boundary: quieting the chatter is a question about
@objectstack/objectql's (and the registry's) default log level under test, separate from the teardown-race mechanism. Re-arming interception would not remove the cost — it would only hide it again while paying an RPC round-trip per write and re-exposing suites to the teardown race.What a fix could look like (for triage, not prescribed here)
process.env.VITEST), orOS_LOG_LEVELdefault in test harnesses, orNo urgency claimed: the cost today is CI log volume (one shard log grows by ~41k lines), not correctness.
Generated by Claude Code