Skip to content

Commit cf07c12

Browse files
committed
feat(devx): ratchet the declared registry log level across engine-booting suites
objectql's `SchemaRegistry` logs one `[Registry] Registered <kind>: <name>` line per registered item per construction, at its shipped `'info'` default. A suite that boots app stacks pays items x boots of that on a CI shard log nobody reads. PR #13985 and PR #14016 declared `OS_REGISTRY_LOG` in four harnesses and removed ~47,900 console-carried lines — and nothing held them there. Deleting one `env` line restored five figures of output while every assertion stayed green and every outcome was unchanged. This gate asserts the declaration. It reuses `check-console-intercept-disarm`'s exported `workspacePackageDirs` walk and its verdict format, so only the assertion and the population are new. THE POPULATION IS DERIVED, not a roster. A vitest-running package is selected when its OWN TEST SOURCES construct a `SchemaRegistry`, boot a stack through `@objectstack/verify`'s `bootStack`, or import an `@objectstack/example-*` app. On this tree that selects 8 of 72 with zero over- and zero under-selection. A roster of the four suites that already declared would have been a hand list this repo could show to be wrong on the day it shipped: docs/audits/2026-09-test-log-volume-census.md measures `packages/rest` — its own named control — at 528 residual `[Registry]` lines, eight times declared objectql's 66. The four packages the predicate newly selects adopt the declaration in the four commits preceding this one. Comment masking is what makes the predicate honest rather than merely plausible: `packages/cli` names `bootStack` and `@objectstack/verify` in eight places, all of them prose, and would otherwise be selected while booting no stack in any test. The registry-construction signal additionally masks string and template content, so a spelling inside a literal is never the setting. The level vocabulary is READ from objectql's own `REGISTRY_LOG_LEVELS` rather than copied, because `registry.ts` resolves an unrecognised value to the `'info'` DEFAULT silently — `OS_REGISTRY_LOG: 'quiet'` would read as a considered choice and quiet nothing. Out of scope and untouched: which level any suite picks, objectql's shipped `'info'` default, and any library awareness of a test runner. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012zGPuVVX3deAx9LdjK8jCk
1 parent 0bafd00 commit cf07c12

3 files changed

Lines changed: 976 additions & 0 deletions

File tree

.github/workflows/lint.yml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3140,6 +3140,23 @@ jobs:
31403140
- name: Console-intercept disarm
31413141
run: node scripts/check-console-intercept-disarm.mjs --self-test && node scripts/check-console-intercept-disarm.mjs
31423142

3143+
# Declared registry log level (#15425, origin #13517). objectql's
3144+
# SchemaRegistry logs one `[Registry] Registered …` line per registered
3145+
# item per construction, at its shipped `info` default; a suite that boots
3146+
# app stacks pays items x boots of that on a shard log nobody reads.
3147+
# PR #13985 and PR #14016 declared `OS_REGISTRY_LOG` in four harnesses and
3148+
# removed ~47,900 lines — and nothing held them there, so deleting the
3149+
# line restored five figures of output with every suite still green. This
3150+
# asserts the declaration in every package whose OWN TEST SOURCES boot the
3151+
# engine, a DERIVED population (registry construction / `bootStack` /
3152+
# example-app import), not a roster: the tree's own audit
3153+
# (docs/audits/2026-09-test-log-volume-census.md) measures packages/rest at
3154+
# 528 residual `[Registry]` lines, so a roster of the four that already
3155+
# declared would have shipped a known-incomplete list. Self-test first,
3156+
# then the real scan; reads ~72 manifests and their test sources.
3157+
- name: Declared registry log level
3158+
run: node scripts/check-registry-log-declared.mjs --self-test && node scripts/check-registry-log-declared.mjs
3159+
31433160
# Live-server database isolation (#10382). CI provisions ONE Postgres and
31443161
# ONE MySQL for the whole temporal-conformance job and points every live
31453162
# leg at them, and every live suite in the repo issues a `drop` when it

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,7 @@
134134
"check:examples-live-imports": "node scripts/check-examples-live-imports.mjs --self-test && node scripts/check-examples-live-imports.mjs",
135135
"examples:live-imports": "node scripts/check-examples-live-imports.mjs --list",
136136
"check:test-source-alias": "node scripts/check-test-source-alias.mjs --self-test && node scripts/check-test-source-alias.mjs",
137+
"check:registry-log-declared": "node scripts/check-registry-log-declared.mjs --self-test && node scripts/check-registry-log-declared.mjs",
137138
"check:refd-timer-probe": "node scripts/check-refd-timer-probe.mjs --self-test && node scripts/check-refd-timer-probe.mjs",
138139
"check:type-source-resolution": "node scripts/check-type-source-resolution.mjs --self-test && node scripts/check-type-source-resolution.mjs",
139140
"check:undeclared-dep-imports": "node scripts/check-undeclared-dep-imports.mjs --self-test && node scripts/check-undeclared-dep-imports.mjs",

0 commit comments

Comments
 (0)