From 6924db05f506263fc3d884dba40d6a69b672add9 Mon Sep 17 00:00:00 2001 From: JSONbored <49853598+JSONbored@users.noreply.github.com> Date: Sun, 26 Jul 2026 10:23:47 -0700 Subject: [PATCH] fix(test): repoint the cadence-signal seed helper from review_targets to pull_requests #9041 repointed getSubmitterCadence's query from review_targets (frozen since the 2026-06-22 self-host cutover) to the live pull_requests ledger, but the local seedReviewTarget helper inside "submission-cadence signal (#4514)" still inserted into review_targets -- so its own test seeded a table the code no longer reads, making "FLAG-ON: true for a machine-paced submitter" fail on main for everyone (cadence always resolves to 0 samples against the real query). Renamed to seedCadencePullRequest and repointed at pull_requests (repo_full_name/author_login, matching the real query shape) so the test again exercises the code path it names. The module-level seedReviewTarget (used elsewhere in this file for the separate quality/burst signal, which #9041 did not change) is untouched. --- test/unit/reputation-wiring.test.ts | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/test/unit/reputation-wiring.test.ts b/test/unit/reputation-wiring.test.ts index ba0c166194..e049dd13b3 100644 --- a/test/unit/reputation-wiring.test.ts +++ b/test/unit/reputation-wiring.test.ts @@ -278,12 +278,15 @@ describe("shouldSkipAiForReputation (helper)", () => { }); describe("submission-cadence signal (#4514)", () => { - async function seedReviewTarget(env: Env, args: { number: number; submitter: string; createdAt: string }) { + // #9041 repointed getSubmitterCadence from the frozen review_targets table to the live pull_requests + // ledger (repo_full_name + author_login, not project + submitter) -- this seed helper follows suit so + // these tests exercise the query the code actually runs today, not the dead one it used to. + async function seedCadencePullRequest(env: Env, args: { number: number; submitter: string; createdAt: string }) { await env.DB.prepare( - `INSERT INTO review_targets (id, project, kind, repo, number, submitter, status, decision_json, terminal_at, created_at) - VALUES (?, 'acme/widgets', 'pull_request', 'acme/widgets', ?, ?, 'merged', ?, ?, ?)`, + `INSERT INTO pull_requests (id, repo_full_name, number, title, state, author_login, created_at) + VALUES (?, 'acme/widgets', ?, ?, 'open', ?, ?)`, ) - .bind(`acme/widgets:pull_request:acme/widgets#${args.number}`, args.number, args.submitter, JSON.stringify({ reasonCode: "dual_review_approved" }), args.createdAt, args.createdAt) + .bind(`acme/widgets#${args.number}`, args.number, `cadence probe #${args.number}`, args.submitter, args.createdAt) .run(); } @@ -294,7 +297,7 @@ describe("shouldSkipAiForReputation (helper)", () => { const t0 = Date.now() - 2 * 60 * 60_000; for (let i = 0; i < 5; i++) { // All merged/approved -- the QUALITY signal alone stays neutral/trusted; only cadence should trip this. - await seedReviewTarget(env, { number: i, submitter: "speedster", createdAt: new Date(t0 + i * 5 * 60_000).toISOString() }); + await seedCadencePullRequest(env, { number: i, submitter: "speedster", createdAt: new Date(t0 + i * 5 * 60_000).toISOString() }); } expect(await shouldSkipAiForReputation(env, { project: "acme/widgets", submitter: "speedster" })).toBe(true); }); @@ -303,7 +306,7 @@ describe("shouldSkipAiForReputation (helper)", () => { const env = createTestEnv({ LOOPOVER_REVIEW_REPUTATION: "true" }); const t0 = Date.now() - 20 * 60 * 60_000; for (let i = 0; i < 5; i++) { - await seedReviewTarget(env, { number: i + 100, submitter: "steady", createdAt: new Date(t0 + i * 3 * 60 * 60_000).toISOString() }); + await seedCadencePullRequest(env, { number: i + 100, submitter: "steady", createdAt: new Date(t0 + i * 3 * 60 * 60_000).toISOString() }); } expect(await shouldSkipAiForReputation(env, { project: "acme/widgets", submitter: "steady" })).toBe(false); });