diff --git a/packages/plugins/plugin-approvals/src/status-mirror-cascade.integration.test.ts b/packages/plugins/plugin-approvals/src/status-mirror-cascade.integration.test.ts index fbf0390bd0..e7c9e38b95 100644 --- a/packages/plugins/plugin-approvals/src/status-mirror-cascade.integration.test.ts +++ b/packages/plugins/plugin-approvals/src/status-mirror-cascade.integration.test.ts @@ -123,7 +123,7 @@ describe('an approval decision cascades as the deciding user (#3783)', () => { }); beforeEach(async () => { - const kernel = new ObjectKernel({ logLevel: 'silent' }); + const kernel = new ObjectKernel({ logger: { level: 'silent' } }); await kernel.use(new ObjectQLPlugin()); await kernel.use(new AutomationServicePlugin()); await kernel.use(new RecordChangeTriggerPlugin()); diff --git a/packages/runtime/src/notification-schema-conformance.integration.test.ts b/packages/runtime/src/notification-schema-conformance.integration.test.ts index 55824b3fef..2c4e4aecd2 100644 --- a/packages/runtime/src/notification-schema-conformance.integration.test.ts +++ b/packages/runtime/src/notification-schema-conformance.integration.test.ts @@ -209,7 +209,7 @@ describe('[#5792] the notification wire bodies conform to the schemas the catalo const noise = captureExpectedAbsentTableNoise(); beforeAll(async () => { - kernel = new ObjectKernel({ logLevel: 'silent' }); + kernel = new ObjectKernel({ logger: { level: 'silent' } }); // [#10380] The driver is named rather than inlined so its logger can be // scoped before it ever runs a statement. const driver = new SqliteWasmDriver({ filename: ':memory:' }); diff --git a/packages/runtime/src/notifications.hono.integration.test.ts b/packages/runtime/src/notifications.hono.integration.test.ts index 31bc4246ea..777c9daeaa 100644 --- a/packages/runtime/src/notifications.hono.integration.test.ts +++ b/packages/runtime/src/notifications.hono.integration.test.ts @@ -109,7 +109,7 @@ describe('in-app notifications over a real hono server (integration, #3362)', () const noise = captureExpectedReadRefusals([...ABSENT_AUTHZ_TABLES]); beforeAll(async () => { - kernel = new ObjectKernel({ logLevel: 'silent' }); + kernel = new ObjectKernel({ logger: { level: 'silent' } }); // In-memory SQLite backs persistence; ObjectQL (registered after the // driver so it discovers it) provides `objectql` + `data` + `manifest`; // MessagingServicePlugin registers the `notification` service the dispatcher diff --git a/packages/triggers/trigger-record-change/src/bulk-write-per-row-context.test.ts b/packages/triggers/trigger-record-change/src/bulk-write-per-row-context.test.ts index fd15a307a3..6d7afb730c 100644 --- a/packages/triggers/trigger-record-change/src/bulk-write-per-row-context.test.ts +++ b/packages/triggers/trigger-record-change/src/bulk-write-per-row-context.test.ts @@ -113,7 +113,7 @@ function makeDriver(): any { } async function bootStack() { - const kernel = new ObjectKernel({ logLevel: 'silent' }); + const kernel = new ObjectKernel({ logger: { level: 'silent' } }); await kernel.use(new ObjectQLPlugin()); await kernel.use(new AutomationServicePlugin()); await kernel.use(new RecordChangeTriggerPlugin()); diff --git a/packages/triggers/trigger-record-change/src/formula-context.test.ts b/packages/triggers/trigger-record-change/src/formula-context.test.ts index cebccd818b..3672183f8e 100644 --- a/packages/triggers/trigger-record-change/src/formula-context.test.ts +++ b/packages/triggers/trigger-record-change/src/formula-context.test.ts @@ -67,7 +67,7 @@ function makeDriver(): any { describe('record-change context hydrates read-time formula fields (#3426)', () => { it('resolves a formula field ({record.full_name}) in a seeded flow record', async () => { - const kernel = new ObjectKernel({ logLevel: 'silent' }); + const kernel = new ObjectKernel({ logger: { level: 'silent' } }); await kernel.use(new ObjectQLPlugin()); await kernel.use(new AutomationServicePlugin()); await kernel.use(new RecordChangeTriggerPlugin()); diff --git a/packages/triggers/trigger-record-change/src/multilookup-context.test.ts b/packages/triggers/trigger-record-change/src/multilookup-context.test.ts index a7ea2fe483..6f5624b092 100644 --- a/packages/triggers/trigger-record-change/src/multilookup-context.test.ts +++ b/packages/triggers/trigger-record-change/src/multilookup-context.test.ts @@ -56,7 +56,7 @@ function makeDriver(): any { describe('record-change context hydrates multi-lookup from input (#1872)', () => { it('fires a record-after-create flow gated on a multi-lookup the driver did not echo', async () => { - const kernel = new ObjectKernel({ logLevel: 'silent' }); + const kernel = new ObjectKernel({ logger: { level: 'silent' } }); await kernel.use(new ObjectQLPlugin()); await kernel.use(new AutomationServicePlugin()); await kernel.use(new RecordChangeTriggerPlugin()); diff --git a/packages/triggers/trigger-record-change/src/record-change-integration.test.ts b/packages/triggers/trigger-record-change/src/record-change-integration.test.ts index 7602cb9b10..2b805285d0 100644 --- a/packages/triggers/trigger-record-change/src/record-change-integration.test.ts +++ b/packages/triggers/trigger-record-change/src/record-change-integration.test.ts @@ -227,7 +227,7 @@ const beforeHookObjectDef = (name: string) => ({ */ describe('a system write must not fire a record-change flow UNSCOPED (#3760)', () => { it("refuses the flow's data op when the triggering write carried isSystem and no user", async () => { - const kernel = new ObjectKernel({ logLevel: 'silent' }); + const kernel = new ObjectKernel({ logger: { level: 'silent' } }); await kernel.use(new ObjectQLPlugin()); await kernel.use(new AutomationServicePlugin()); await kernel.use(new RecordChangeTriggerPlugin()); @@ -272,7 +272,7 @@ describe('a system write must not fire a record-change flow UNSCOPED (#3760)', ( }, 15000); it('the same flow still works normally when a real user made the write', async () => { - const kernel = new ObjectKernel({ logLevel: 'silent' }); + const kernel = new ObjectKernel({ logger: { level: 'silent' } }); await kernel.use(new ObjectQLPlugin()); await kernel.use(new AutomationServicePlugin()); await kernel.use(new RecordChangeTriggerPlugin()); @@ -300,7 +300,7 @@ describe('a system write must not fire a record-change flow UNSCOPED (#3760)', ( describe('record-change trigger — end-to-end (#1491)', () => { it('fires a record-after-create flow registered AFTER the trigger (engine.registerFlow path)', async () => { - const kernel = new ObjectKernel({ logLevel: 'silent' }); + const kernel = new ObjectKernel({ logger: { level: 'silent' } }); await kernel.use(new ObjectQLPlugin()); await kernel.use(new AutomationServicePlugin()); await kernel.use(new RecordChangeTriggerPlugin()); @@ -351,7 +351,7 @@ describe('record-change trigger — end-to-end (#1491)', () => { }, }; - const kernel = new ObjectKernel({ logLevel: 'silent' }); + const kernel = new ObjectKernel({ logger: { level: 'silent' } }); await kernel.use(new ObjectQLPlugin()); await kernel.use(seeder as any); await kernel.use(new AutomationServicePlugin()); @@ -376,7 +376,7 @@ describe('record-change trigger — end-to-end (#1491)', () => { }, 15000); it('a single record-after-write flow fires on BOTH create and update (#3427)', async () => { - const kernel = new ObjectKernel({ logLevel: 'silent' }); + const kernel = new ObjectKernel({ logger: { level: 'silent' } }); await kernel.use(new ObjectQLPlugin()); await kernel.use(new AutomationServicePlugin()); await kernel.use(new RecordChangeTriggerPlugin()); @@ -410,7 +410,7 @@ describe('record-change trigger — end-to-end (#1491)', () => { }, 15000); it('record-after-write start condition uses `previous == null` to discriminate create vs update (#3427)', async () => { - const kernel = new ObjectKernel({ logLevel: 'silent' }); + const kernel = new ObjectKernel({ logger: { level: 'silent' } }); await kernel.use(new ObjectQLPlugin()); await kernel.use(new AutomationServicePlugin()); await kernel.use(new RecordChangeTriggerPlugin()); @@ -455,14 +455,15 @@ describe('record-change trigger — end-to-end (#1491)', () => { * total, with no assist from the after-row merge #1872 fixed. */ it('a record-before-write start condition sees an UNTOUCHED declared field\'s real value, and a NEVER-SET one as null — not a fault (#4953)', async () => { - // `{ logger: { level: 'silent' } }`, not this file's OTHER `{ logLevel: - // 'silent' }` — `ObjectKernelConfig` declares only `logger` - // (`packages/core/src/kernel.ts`); the sibling spelling is an untyped - // excess property `tsc` never catches on this test-hiding package (a - // pre-existing `check:type-check-debt` TEST_DEBT site, not this PR's to - // sweep) and, measurably, does NOTHING — `createLogger(config.logger)` - // never reads it, so every sibling `it` below actually logs at its - // default level despite the option. + // `{ logger: { level: 'silent' } }` — the only spelling + // `ObjectKernelConfig` declares (`packages/core/src/kernel.ts`), and now + // the uniform spelling in this file. This note used to contrast against a + // sibling `{ logLevel: 'silent' }`; that spelling is gone from the repo. + // It was an untyped excess property `tsc` never caught on this + // test-excluded package (a frozen `check:type-check-debt` TEST_DEBT site) + // and, measurably, did NOTHING — `createLogger(config.logger)` never read + // it, so every `it` that carried it logged at the default level despite + // the option. const kernel = new ObjectKernel({ logger: { level: 'silent' } }); await kernel.use(new ObjectQLPlugin()); await kernel.use(new AutomationServicePlugin()); @@ -614,10 +615,10 @@ describe('hydration schema gate — real ObjectQL engine findOne count (#8482)', } it('does NOT re-read via findOne on update for an object with no formula field', async () => { - // `{ logger: { level: 'silent' } }`, NOT this file's other `{ logLevel: - // 'silent' }` — see the doc comment on the #4953 test above for why (a - // pre-existing TS2353 in the frozen TEST_DEBT ledger this new test must - // not add to). + // `{ logger: { level: 'silent' } }` — the spelling `ObjectKernelConfig` + // actually reads; see the doc comment on the #4953 test above. The + // sibling `{ logLevel: 'silent' }` this note used to contrast against no + // longer exists in this file. const kernel = new ObjectKernel({ logger: { level: 'silent' } }); await kernel.use(new ObjectQLPlugin()); await kernel.use(new AutomationServicePlugin());