Dashboard › opencode-lore › Distillation
9aabce8e-3cf8-4206-9d0a-317d689fb675["lore_tm_v1_xBiUXgnt8onv0OIKWtQk2k2MobU-QMHkFO4S4KqSKCs","lore_tm_v1_xs4yEf8Xp954jXY9gxD5Q18Ywa9bkOtLI90J4qzO0ig","lore_tm_v1_AgGPKu9M9TB2ToN2_QItFI4utMJ-_w_gVyKF0szcC10"]
Date: Sep 16, 2026
quality/MUTATION_TESTING.md explains Stryker’s purpose: killed mutants identify behavior constrained by tests; surviving mutants identify unconstrained lines, though some are behaviorally equivalent. It ties mutation testing to sync bugs from issue #828 and lifecycle edge cases from issue #816.quality/MUTATION_TESTING.md currently documents .github/workflows/mutation.yml as running weekly plus on demand, replacing the prior characterization of the schedule as nightly plus on demand.quality/MUTATION_TESTING.md currently describes mutation scope as the sync engine files sync-data.ts and sync.ts, with vitest.mutation.config.ts narrowing each mutant run to those modules’ direct tests; ltm.ts and gradient.ts remain deferred because their coverage is spread across many test files.sync-data.ts mutation baseline was 68.98% overall and 70.26% of covered code: 274 total mutants, 189 killed, 80 survived, 5 had no coverage, and runtime was 13m38s on 4 cores with concurrency 2. Approximately 52 of the 80 survivors were low-value string/array/object-literal mutations in the SYNCED_TABLES registry and SQL fragments; 28 were hand-verified logic-mutator survivors. (meaning Jun 20, 2026)packages/core/src/sync-data.ts:624, classifyRemoteRow, where replacing the remoteHash !== null operand with true survives because no test supplies a null remote hash/tombstone. Follow-up task: classify remoteHash = null for both a present and an absent local row.packages/core/src/sync-data.ts:296, serializeValue, where changing v === null || v === undefined from || to && survives. Follow-up task: prove contentHash distinguishes a null column from literal string "null" while treating null and undefined identically.packages/core/src/sync-data.ts:243 (meta() unknown-table if (!m) throw guard is unasserted), :270 (pickSyncColumns absent-column skip), and :422 (rowIdExpr single-versus-composite branch); further gaps remain in reports/mutation/mutation.json.packages/core/src/sync-data.ts:378 affect pruneOutbox guard if (minCursor <= 0) return 0;: both changing <= 0 to < 0 and removing the conditional are behaviorally indistinguishable because DELETE … WHERE seq <= 0 deletes nothing when AUTOINCREMENT seq starts at 1.if (remoteHash !== null && localHash === remoteHash): the surviving mutation is specifically if (true && localHash === remoteHash), not if (true). The whole-condition mutant is killed; the operand mutant survives because no test passes remoteHash = null.quality/MUTATION_TESTING.md: copy the exact replacement from the report, apply it to source, and run pnpm vitest run <the test file(s) that exercise it>; failing tests indicate a real killable gap, while passing tests indicate an equivalent mutant or an uncovered edge no current input reaches.response.failed returned at least 100 matches and was truncated. packages/gateway/test/openai-responses-recall-aware-stream.test.ts contains extensive positive and negative wire assertions, malformed/duplicate lifecycle cases, upstream-close handling, hidden-recall failures, and checks that provider text such as "provider failed" is not leaked into captured logs.packages/gateway/test/sentry-recall-continuation-failure.test.ts with category "follow_up_failed" and fingerprint ["recall-continuation-failure", "follow_up_failed"]; packages/gateway/test/sentry-recall-continuation-envelope.test.ts also exercises reportRecallContinuationFailure("follow_up_failed").response.failed coverage appears in packages/gateway/test/recall-exhaustion.test.ts, packages/gateway/test/recall-codex-stream.test.ts, and packages/gateway/test/recall-buffered-transaction.test.ts; these cover suppression during exhaustion, sparse/malformed/duplicate Codex streams, and failed-versus-completed buffered terminal selection.packages/gateway/test/llm-adapter.test.ts, packages/gateway/test/session-adoption.e2e.test.ts, packages/gateway/test/responses-upstream-error-relay.test.ts, and packages/gateway/test/pipeline-streaming.test.ts.packages/gateway/test/responses-upstream-error-relay.test.ts uses sensitive upstream status text "provider secret status" in relay-sanitization coverage; packages/gateway/test/pipeline-streaming.test.ts similarly includes provider messages "provider failed" and "provider secret" while asserting when event: response.failed must or must not appear.