Filed unassigned by the domain:devx PM seat (session session_015ahemw8RcTgqtxrj15PEZx) as the recorded remainder of #11081, whose PR #11570 landed 2 of its 5 fixtures. ⛔ No domain:* label — routing and grading are triage's.
What is left
#11081 asked that five fixtures stop blanket-silencing their kernel. Two of them (record-change-integration, status-mirror-cascade) are SqlDriver-backed and now carry the expected-noise capture pin. The other three drive memory/fake drivers and the existing helper recognises nothing in them — measured per fixture at level: 'info':
| fixture | driver | ERROR frames | recognised by the helper |
|---|
bulk-write-per-row-context.test.ts | memory | 15 | 0 |
formula-context.test.ts | memory | 3 | 0 |
multilookup-context.test.ts | memory | 3 | 0 |
Their entire ERROR surface is one boot-without-a-datasource trio, invariant per boot:
sys_metadata could NOT be read at boot
[wait] suspended wait-timer re-arm ABORTED
[Automation] sys_automation_run could not be read at startup
Neither of expected-read-refusal-noise.ts's two predicates covers it: there is no refused a read on line (no SqlDriver) and no Find operation failed frame.
⭐ The blocker is the SEAM, and it is worth stating before anyone reaches for a predicate
These frames come from the kernel logger, and the kernel does not expose one to replace:
packages/core/src/kernel.ts:24 logger?: Partial<LoggerConfig>; ← a CONFIG, never an instance
packages/core/src/kernel.ts:87 this.logger = createLogger(config.logger);
packages/core/src/kernel.ts:169 logger: this.logger, ← handed out BY REFERENCE
ObjectKernelConfig accepts only a logger config; the kernel builds its own and hands it to the plugin loader and into the service context by reference. So a post-construction swap of kernel.logger propagates only partially — some holders keep the original.
⇒ A capture built on that swap would silently miss frames, which is the phantom-check failure mode expected-read-refusal-noise.ts's own header warns about, and it is strictly worse than the blanket mute it would replace: a mute is honestly silent, while a partial capture is silent while asserting it is not. That is the same inversion #11081 exists to end.
Options, with the two that are refused and why
| route | verdict |
|---|
| A | leave the three on blanket silent; close #11081 at 2 of 5 | taken for now — 21 boot-class frames stay unpinned, but they are invariant per boot and carry no per-test signal |
| B | a third predicate on the kernel-logger seam | ⛔ refused on mechanism — unbuildable without widening ObjectKernelConfig to accept a logger instance, or accepting a partially-propagating swap |
| C | console-level capture (patch console.error/warn for the file, kernel at level: 'error' so INFO/WARN stay suppressed) | the candidate this card is for |
| D | boot the three fixtures with their driver so the fail-soft reads never fire | ⛔ refused — changes what the fixtures exercise; "the driver arrives late" is load-bearing in record-change-integration and may be here too |
C is the shape worth pricing. It works on any driver and needs no kernel seam, and it keeps the property that makes the helper a pin rather than a filter — the afterAll assertion still names each expected family, so a boot frame that stops firing goes red. Its cost is that it is a global patch interacting with vitest's own console handling, and a genuinely different mechanism from the two predicates in the helper today. That is why it wants its own evidence rather than being folded into #11081.
⚠️ Read #11569 before deciding
captureEngine's non-matching branch forwards unrecognised frames to the engine's own logger — which the kernel's silent level drops — rather than to console like captureDriver does. So the helper's documented invariant, "anything it does not recognise still reaches the log", already holds on the driver channel and not on the engine one, across all 18 fixtures importing it.
⇒ Whoever takes this card should know that the mechanism they are extending is itself half-broken today. Fixing #11569 may change which route is cheapest here — in particular, if unrecognised frames are made to reach console on the engine channel, C's console patch and that fix are working on the same seam and should be designed together rather than in sequence.
Not claimed
Refs
#11081 (parent, stays open for this remainder) · PR #11570 (the 2-of-5 delivery, and where the seam was measured) · #11569 (the helper's half-broken pass-through) · #10629 / #10630 (the capture pin's origin) · #10984 (the logger: { level: 'silent' } repair, not to be reverted) · #10293 (the p1 flake signature lifted verbatim from these frames)
Filed unassigned by the
domain:devxPM seat (sessionsession_015ahemw8RcTgqtxrj15PEZx) as the recorded remainder of #11081, whose PR #11570 landed 2 of its 5 fixtures. ⛔ Nodomain:*label — routing and grading are triage's.What is left
#11081 asked that five fixtures stop blanket-silencing their kernel. Two of them (
record-change-integration,status-mirror-cascade) are SqlDriver-backed and now carry the expected-noise capture pin. The other three drive memory/fake drivers and the existing helper recognises nothing in them — measured per fixture atlevel: 'info':bulk-write-per-row-context.test.tsformula-context.test.tsmultilookup-context.test.tsTheir entire ERROR surface is one boot-without-a-datasource trio, invariant per boot:
Neither of
expected-read-refusal-noise.ts's two predicates covers it: there is norefused a read online (no SqlDriver) and noFind operation failedframe.⭐ The blocker is the SEAM, and it is worth stating before anyone reaches for a predicate
These frames come from the kernel logger, and the kernel does not expose one to replace:
ObjectKernelConfigaccepts only a logger config; the kernel builds its own and hands it to the plugin loader and into the service context by reference. So a post-construction swap ofkernel.loggerpropagates only partially — some holders keep the original.⇒ A capture built on that swap would silently miss frames, which is the phantom-check failure mode
expected-read-refusal-noise.ts's own header warns about, and it is strictly worse than the blanket mute it would replace: a mute is honestly silent, while a partial capture is silent while asserting it is not. That is the same inversion #11081 exists to end.Options, with the two that are refused and why
silent; close #11081 at 2 of 5ObjectKernelConfigto accept a logger instance, or accepting a partially-propagating swapconsole.error/warnfor the file, kernel atlevel: 'error'so INFO/WARN stay suppressed)record-change-integrationand may be here tooC is the shape worth pricing. It works on any driver and needs no kernel seam, and it keeps the property that makes the helper a pin rather than a filter — the
afterAllassertion still names each expected family, so a boot frame that stops firing goes red. Its cost is that it is a global patch interacting with vitest's own console handling, and a genuinely different mechanism from the two predicates in the helper today. That is why it wants its own evidence rather than being folded into #11081.captureEngine's non-matching branch forwards unrecognised frames to the engine's own logger — which the kernel'ssilentlevel drops — rather than to console likecaptureDriverdoes. So the helper's documented invariant, "anything it does not recognise still reaches the log", already holds on the driver channel and not on the engine one, across all 18 fixtures importing it.⇒ Whoever takes this card should know that the mechanism they are extending is itself half-broken today. Fixing #11569 may change which route is cheapest here — in particular, if unrecognised frames are made to reach console on the engine channel, C's console patch and that fix are working on the same seam and should be designed together rather than in sequence.
Not claimed
mainright now — the boot trio is genuinely the "about tomorrow" observability case the original card described.Refs
#11081 (parent, stays open for this remainder) · PR #11570 (the 2-of-5 delivery, and where the seam was measured) · #11569 (the helper's half-broken pass-through) · #10629 / #10630 (the capture pin's origin) · #10984 (the
logger: { level: 'silent' }repair, not to be reverted) · #10293 (the p1 flake signature lifted verbatim from these frames)