test(reply): seed channel fixtures for dedupe tests#93104
Conversation
|
Codex review: needs maintainer review before merge. Reviewed June 14, 2026, 9:07 PM ET / 01:07 UTC. Summary PR surface: Source +1, Tests -11. Total -10 across 2 files. Reproducibility: Partly: source inspection confirms current main can fall from reply dedupe into getChannelPlugin's bundled fallback when the active registry omits the provider. I did not run the flaky 120-second shard in this read-only review, so the timeout magnitude rests on the PR's reported benchmark and CI context. Review metrics: none identified. Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Next step before merge
Security Review detailsBest possible solution: Land this narrow loaded-registry dedupe fix after the normal required check gates pass, preserving provider-specific matching only from the active plugin registry. Do we have a high-confidence way to reproduce the issue? Partly: source inspection confirms current main can fall from reply dedupe into getChannelPlugin's bundled fallback when the active registry omits the provider. I did not run the flaky 120-second shard in this read-only review, so the timeout magnitude rests on the PR's reported benchmark and CI context. Is this the best way to solve the issue? Yes, this appears to be the best narrow fix: dedupe already uses loaded-only target normalization, and switching the remaining matcher/thread hooks to the same loaded-registry reader removes the cold bundled load without adding a new contract. A lightweight bundled matcher would preserve more fallback behavior, but it would keep special fallback semantics in the hot path that the scoped policy is trying to avoid. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against e82d19fb06b5. Label changesLabel changes:
Label justifications:
Evidence reviewedPR surface: Source +1, Tests -11. Total -10 across 2 files. View PR surface stats
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
|
Summary
telegramanddiscordchannel fixtures inagent-runner-payloads.test.ts.#90943route/thread dedupe behavior intact, including bundled Telegram fallback matching when the active registry omits Telegram.Root cause: the flaky
agent-runner-payloads.test.tscases used Telegram/Discord provider ids without installing those channels in the active test registry. The first route-dedupe test could therefore fall through to bundled channel loading, which is expensive enough to trip the 120s CI timeout depending on shard timing. The test now provides lightweight loaded channel fixtures, so the integration tests exercise reply-payload dedupe without materializing bundled channel runtime.Refs #91587.
Verification
c67dc59b02/ fix(reply): deliver final reply when queued follow-up claims session; scope dedupe to routed thread #90943; preserved its intentional Telegram bundled-fallback behavior and restored the existing omitted-registry Telegram unit coverage.git diff --checkpnpm exec oxfmt --check --threads=1 src/auto-reply/reply/agent-runner-payloads.test.ts src/auto-reply/reply/reply-payloads-dedupe.ts src/auto-reply/reply/reply-payloads.test.tsnode scripts/run-vitest.mjs src/auto-reply/reply/agent-runner-payloads.test.ts src/auto-reply/reply/reply-payloads.test.ts src/auto-reply/reply/followup-delivery.test.ts -- --reporter=dotnode scripts/run-vitest.mjs --config test/vitest/vitest.auto-reply-reply.config.ts src/auto-reply/reply/abort.test.ts src/auto-reply/reply/acp-projector.test.ts src/auto-reply/reply/acp-stream-settings.test.ts src/auto-reply/reply/agent-runner-cli-dispatch.test.ts src/auto-reply/reply/agent-runner-direct-runtime-config.test.ts src/auto-reply/reply/agent-runner-execution.test.ts src/auto-reply/reply/agent-runner-helpers.test.ts src/auto-reply/reply/agent-runner-memory.dedup.test.ts src/auto-reply/reply/agent-runner-memory.test.ts src/auto-reply/reply/agent-runner-payloads.test.ts src/auto-reply/reply/agent-runner-reminder-guard.test.ts src/auto-reply/reply/agent-runner-runtime-config.test.ts src/auto-reply/reply/agent-runner-session-reset.test.ts src/auto-reply/reply/agent-runner-usage-line.test.ts src/auto-reply/reply/agent-runner-utils.secret-resolution.test.ts src/auto-reply/reply/agent-runner-utils.test.ts src/auto-reply/reply/agent-runner.final-media-runreplyagent.test.ts src/auto-reply/reply/agent-runner.media-paths.test.ts src/auto-reply/reply/agent-runner.misc.runreplyagent.test.ts src/auto-reply/reply/agent-runner.runreplyagent.e2e.test.ts src/auto-reply/reply/bash-command.stop.test.ts src/auto-reply/reply/block-reply-pipeline.test.ts src/auto-reply/reply/block-streaming.test.ts -- --reporter=dot