[test-qa-hourly] test: preserve legacy waitlist attribution - #433
Conversation
QA run — 2026-09-09 18:34 JSTInspection
ActionCI was green, so this run strengthened one regression-prone behavior: offset pagination can repeat the same Added a focused regression in Commits this run:
Commands / results
Scope guardCurrent PR diff is only:
No workflow/docs/agent/ignore/coverage-threshold/refactor changes. Auto-mergeNot enabled. Repository setting is currently Next QA targetThe duplicate-row guard catches one observable form of a moving offset snapshot. Next inspect the complementary missing-row case (concurrent delete/insert shifts rows without duplication) and whether a bounded count/checksum-style consistency guard is possible without turning telemetry reads into a heavier transactional path. |
QA run update — 2026-09-09Inspection
FindingThe duplicate-row guard added in the previous run catches the most common offset-pagination shift, but a moving dataset can also return a different unique row that sorts before the last row of the previous page. Without an ordering invariant, that backward page movement is silently accepted and can overwrite a newer 24h view with stale telemetry. Change
Commits:
Commands / results
Scope guardCurrent PR diff remains limited to Control Center waitlist-growth tests plus the minimal Auto-mergeNot enabled: repository setting Next QA targetInvestigate the remaining missing-row form of offset-pagination mutation (delete/insert causing a skipped row without duplicate or backward order). Determine whether a cheap count/cursor invariant can detect it without turning telemetry reads into a heavyweight transactional snapshot. |
Hourly QA — CI-first repairInspection
ActionApplied only the formatter-required EOF normalization to Commit: No behavior, tests, workflow gates, docs, ignores, mocks, or coverage thresholds were changed in this repair. Commands / resultsRepository-authoritative checks used this run:
Local focused/broader commands are not executable in this connector runtime; GitHub Actions is the executable repository validation surface. Auto-mergeNot enabled. Updated-head CI is not green yet; do not bypass protections. Next QA targetAfter CI is green, inspect a low-cost invariant for missing-row mutation during |
QA run updateInspection / source of truth:
Change this run:
Validation / commands and results:
Auto-merge:
Next QA target:
|
Intent
Continue continuous QA from current
mainwith one small regression test for legacy waitlist attribution rows.Inspection
[test-qa-hourly], labeltest-qa, or branch prefixtest-qa/ongoing-.mainiscf2770f7ec55f7c9241c617f2e48a98ca3542b20(merge of [test-qa-hourly] test: pin deterministic metric snapshot tie-break #428).23632d7a4ccf606d00f353140a0ae60ab9db3067CI #2443 (34324571944) completed successfully.apps/control-center/src/server/services/waitlist-growth.ts: canonical attribution is keyed bysocial_publish_job_id; legacy jobs may have nulllanguage_codeand/orsocial_post_id, and the read model intentionally maps those tounknownlanguage and unavailable views without discarding attribution..github/workflows/ci.ymlstill runs quick gates (format repo contracts), code quality (type-check lint deadcode dup), tests (test analytics), E2E, security, and deploy gates.scripts/coverage.sh summary->turbo run test:coverage+scripts/coverage-summary.ts.QA change
Add
waitlist-growth-legacy-language.test.tsto assert that a signup referencing a valid legacy social publish job remains socially attributed even when that job has nolanguage_codeand nosocial_post_id. The conversion must remain present withlanguageCode = unknown, null views/rate, and the signup must not be misclassified as direct/unknown traffic.This is test-only. No implementation, workflow, docs, ignore, coverage threshold, or agent-instruction change is included.
Validation / commands and results
fetch_commit_workflow_runsfor previous QA head — PASS: CI #2443 completed successfully.waitlist-growth.ts— PASS: current implementation explicitly preserves canonical job attribution while mapping nullable legacy metadata safely..github/workflows/ci.ymlinspection — PASS: existing gates unchanged.scripts/coverage.shinspection — PASS: coverage aggregation path remains available.Scope guard
Changed file only:
apps/control-center/src/server/services/waitlist-growth-legacy-language.test.tsAuto-merge
Will only be enabled if repository settings and required checks/reviews permit it and the updated-head diff remains QA-only.
Next QA target
Inspect concurrent mutation during
social_post_metricsoffset pagination. The smallest useful next invariant is detecting duplicate metric row identities across adjacent pages so a moving snapshot degrades views instead of silently accepting stale pagination.