Skip to content

[test-qa-hourly] fix: build distribution snapshot runtime types - #420

Merged
i-xtsu-sixyou-ken-mei merged 11 commits into
mainfrom
test-qa/ongoing-coverage-20260903
Sep 8, 2026
Merged

[test-qa-hourly] fix: build distribution snapshot runtime types#420
i-xtsu-sixyou-ken-mei merged 11 commits into
mainfrom
test-qa/ongoing-coverage-20260903

Conversation

@i-xtsu-sixyou-ken-mei

Copy link
Copy Markdown
Collaborator

Intent

Fix the currently failing Distribution Snapshot workflow before adding any new QA coverage.

Inspection

  • Current GitHub main: 661ed8c9547de494cba37467d3ac72983b4015ff.
  • No open QA PR matched [test-qa-hourly], label test-qa, or an ongoing QA head branch.
  • Latest scheduled Distribution Snapshot run 34198521912 failed at Regenerate the distribution snapshot after checkout/setup/credential validation all succeeded.
  • The failing command was pnpm --filter @zapengine/podcast-pipeline social:distribution-snapshot.
  • The exact failure is ERR_MODULE_NOT_FOUND for apps/podcast-pipeline/node_modules/@zapengine/types/dist/shared/index.js, imported by apps/podcast-pipeline/src/types.ts.
  • @zapengine/types exports its runtime entrypoints exclusively from dist/**, and a clean pnpm install does not build that directory.
  • The workflow intentionally invokes the podcast CLI directly instead of through Turbo because the production SUPABASE_* environment is supplied through the env rail and Turbo strict-env would strip it.
  • Current open PRs fix(control-center): make Growth language-first #416feat(control-center): surface PostHog product demand #419 were reviewed; none is a Test QA PR, and none already fixes this Distribution Snapshot bootstrap failure. PR fix: harden pipeline and ops transient failure recovery #417 addresses Cron Failure Alert/Sentry/ops retry behavior but not the missing @zapengine/types/dist runtime build.

QA change

Add one explicit preflight step to .github/workflows/distribution-snapshot.yml:

pnpm --filter @zapengine/types build

This preserves the direct env-railed snapshot command while ensuring its runtime package export exists in a clean Actions checkout.

No CI gate is weakened, no failure is ignored, and no application behavior/docs/agent instructions are changed.

Validation / commands and results

  • GitHub Actions run 34198521912 job inspection — FAIL reproduced from authoritative logs: setup and credential validation pass; snapshot CLI fails immediately on missing @zapengine/types/dist/shared/index.js.
  • Repository inspection: apps/podcast-pipeline/src/types.ts imports @zapengine/types/sharedconfirmed.
  • Package contract inspection: packages/types/package.json maps ./shared runtime import to ./dist/shared/index.js and provides build: tscconfirmed.
  • Workflow inspection: clean checkout currently performs dependency install but no @zapengine/types build before the direct CLI — confirmed.
  • Focused runtime rerun on the patched branch — not yet executable from this connector session; PR CI is the first general repository validation, and a Distribution Snapshot workflow dispatch/rerun will be used if the available GitHub action surface permits selecting this branch.

Scope guard

Changed file only:

  • .github/workflows/distribution-snapshot.yml

This run intentionally does not add a new behavior test because the standing QA policy requires fixing failing CI/workflows first.

Next QA target

After the Distribution Snapshot path is green, inspect recent Control Center / waitlist / PostHog changes for one regression-prone behavior with weak coverage rather than returning to formatter micro-boundaries.

Copy link
Copy Markdown
Collaborator Author

QA run update (2026-09-08)

Inspection completed against GitHub source of truth:

Commands / executable evidence:

  1. Scheduled workflow command from run 34198521912:
    node scripts/env/run.mjs --environment prod -- pnpm --filter @zapengine/podcast-pipeline social:distribution-snapshot
    FAILERR_MODULE_NOT_FOUND: .../@zapengine/types/dist/shared/index.js.
  2. Credential validation immediately before that command — PASS (SUPABASE_URL and SUPABASE_SERVICE_ROLE_KEY both present through the prod env rail).
  3. Source contract check — PASS: apps/podcast-pipeline/src/types.ts imports @zapengine/types/shared.
  4. Package contract check — PASS: packages/types/package.json maps ./shared to ./dist/shared/index.js and exposes build: tsc.
  5. Branch compare main...test-qa/ongoing-coverage-20260903PASS: 0 behind, diff is exactly one file, .github/workflows/distribution-snapshot.yml, +6/-0.
  6. Added preflight command: pnpm --filter @zapengine/types build before the direct env-railed CLI.
  7. PR CI #2385 (34200514932) — IN PROGRESS; deploy-gates already passed, remaining updated-head jobs are still running.

Focused execution of the scheduled workflow on the PR head is not available through the current connector write surface, so I am not claiming the runtime fix green until the workflow can be dispatched after merge or a branch-selectable dispatch becomes available.

Auto-merge remains disabled while updated-head CI is incomplete and the exact scheduled-workflow path has not yet been rerun.

Copy link
Copy Markdown
Collaborator Author

QA run update — 2026-09-08

Inspection

  • Reused this open [test-qa-hourly] PR / test-qa/ongoing-coverage-20260903 branch.
  • Previous head CI #2385 (34200514932) is green.
  • Latest main remains 661ed8c9547de494cba37467d3ac72983b4015ff; compare shows this branch is ahead 5 / behind 0.
  • Reviewed active PR changed-file scopes for feat: turn landing acquisition into an attributed waitlist #418 (waitlist/social attribution) and feat(control-center): surface PostHog product demand #419 (PostHog product demand). Those changes are still unmerged, so this run did not add tests against contracts that are not yet on main.
  • Rechecked CI gates: quick gates run format repo contracts; code-quality runs type-check lint deadcode dup; tests run test analytics.
  • Rechecked coverage entrypoint: pnpm coverage summary runs turbo run test:coverage then scripts/coverage-summary.ts.

QA change

The Distribution Snapshot bootstrap fix is regression-prone: removing or moving the @zapengine/types build step would recreate the clean-checkout ERR_MODULE_NOT_FOUND failure even though ordinary package tests can stay green.

Added scripts/distribution-snapshot-workflow.test.mjs and wired it into pnpm contracts check. The test asserts both commands exist and that:

pnpm --filter @zapengine/types build

appears before:

pnpm --filter @zapengine/podcast-pipeline social:distribution-snapshot

No application behavior, CI threshold, ignore, docs, README, CLAUDE, or agent instructions changed.

Commands / results

  • GitHub Actions CI #2385 on previous head — PASS.
  • GitHub compare main...test-qa/ongoing-coverage-20260903PASS: ahead 5 / behind 0; exactly 3 changed files, all within allowed QA/workflow scope.
  • Active PR feat: turn landing acquisition into an attributed waitlist #418 changed-file inspection — PASS: no overlap with this PR's workflow/contract-test files.
  • Active PR feat(control-center): surface PostHog product demand #419 changed-file inspection — PASS: no overlap with this PR's workflow/contract-test files.
  • Focused executable validation — delegated to the updated-head CI because this connector session does not provide a repository shell.
  • Updated-head CI #2387 (34205004239) — PENDING at time of this update.

Auto-merge

Not enabled yet. Blocker: updated-head CI #2387 has not completed, so the required safety condition is not met.

Next QA target

After this PR is green/merged and the waitlist PR lands, inspect first-touch/idempotent attribution at the account-engine persistence boundary, especially duplicate normalized-email submissions preserving the original social release identity.

Copy link
Copy Markdown
Collaborator Author

Hourly QA update — 2026-09-08

Inspection

  • Reused this open [test-qa-hourly] PR as required.
  • GitHub main remains 661ed8c9547de494cba37467d3ac72983b4015ff.
  • Previous head 41d902239401bfb1f9eb6758016c732ca65b8bae completed CI #2387 successfully.
  • Reviewed current PR diff: only .github/workflows/distribution-snapshot.yml, scripts/contracts.sh, and scripts/distribution-snapshot-workflow.test.mjs.
  • Reviewed active PRs fix(control-center): make Growth language-first #416feat(control-center): surface PostHog product demand #419. PR feat: turn landing acquisition into an attributed waitlist #418 contains the upcoming attributed-waitlist path; its current waitlist route tests cover normalized email/canonical job resolution, non-social acquisition, honeypot, and invalid email, but first-touch duplicate persistence is not yet directly asserted in the route test.
  • Rechecked .github/workflows/ci.yml: quick gates still run format repo contracts; code quality still runs type-check lint deadcode dup; test gates still run test analytics. No gate was weakened.
  • Rechecked coverage entrypoint: scripts/coverage.sh summary still runs turbo run test:coverage followed by tsx scripts/coverage-summary.ts.

QA change

Strengthened scripts/distribution-snapshot-workflow.test.mjs instead of adding another formatter-style edge case.

The earlier contract used whole-file indexOf() checks for the raw commands. That could false-pass if the build command remained only in a comment or was moved outside the intended workflow step. The strengthened test now requires:

  1. the named runtime-build step to exist;
  2. that step to appear before the named snapshot step;
  3. the build step itself to execute pnpm --filter @zapengine/types build;
  4. the snapshot CLI command to remain inside the Regenerate the distribution snapshot step body.

Commit: c6e0a4a4a2eaa6d9acaffbb63eb471b8cda1a06f (test(ci): strengthen distribution snapshot step contract).

Commands / results

  • GitHub CI for prior head 41d9022...PASS, CI #2387 completed successfully.
  • GitHub compare main...test-qa/ongoing-coverage-20260903PASS: branch ahead 6 / behind 0; exactly 3 QA-scope files changed.
  • PR diff review — PASS: no docs/README/CLAUDE/agent files, no ignores, no CI threshold changes, no unrelated refactor.
  • .github/workflows/ci.yml inspection — PASS: repository gates unchanged.
  • scripts/coverage.sh inspection — PASS: coverage aggregation unchanged.
  • Active PR feat: turn landing acquisition into an attributed waitlist #418 changed-file + waitlist.test.ts patch review — PASS for overlap check; no files overlap this QA PR.
  • Updated-head CI #2388 (34210612693) — IN PROGRESS. deploy-gates is already green; quick-gates/tests/code-quality/coverage/security/E2E are still running.

Auto-merge

Not enabled yet. Blocker: updated-head CI #2388 has not completed, so the PR is not yet eligible for safe auto-merge under the QA policy.

Next QA target

Once the waitlist PR lands, directly test duplicate normalized-email first-touch behavior at the account-engine route/persistence boundary: a second signup must not overwrite the first social release / UTM identity.

Copy link
Copy Markdown
Collaborator Author

Hourly QA update — 2026-09-08

CI-first check:

  • Previous head c6e0a4a4 CI #2388: PASS.
  • Current GitHub main: 661ed8c9547de494cba37467d3ac72983b4015ff.
  • QA branch remains safely synced: ahead 8 / behind 0.

Inspection:

  • Reviewed recent main commits; the newest behavior/config change relevant to QA is 7e1a2075 (chores: openrouter remove m3 from free model list), which changed both config/env/dev.env and config/env/prod.env from minimax/minimax-m3:free to minimax/minimax-m3.
  • Reviewed open PR feat: turn landing acquisition into an attributed waitlist #418 (waitlist/social attribution) and feat(control-center): surface PostHog product demand #419 (PostHog product demand). Both are still open and neither overlaps this QA PR's files, so this run did not write tests against unmerged behavior.
  • Re-checked CI gates: quick=format repo contracts; code-quality=type-check lint deadcode dup; tests remain separate. Coverage entry remains turbo run test:coverage followed by scripts/coverage-summary.ts.

QA change:

  • Added scripts/llm-fallback-config.test.mjs.
  • The contract locks two regression-prone config behaviors:
    1. dev/prod must expose the same LLM_FALLBACK_MODELS chain;
    2. Minimax M3 must use minimax/minimax-m3 and must not regress to the removed minimax/minimax-m3:free variant.
  • Wired the test into pnpm contracts check via scripts/contracts.sh, so quick-gates enforce it.

Commands / results:

  • GitHub compare main...test-qa/ongoing-coverage-20260903PASS: ahead 8 / behind 0; current PR scope is 4 QA/workflow files only.
  • Open PR feat: turn landing acquisition into an attributed waitlist #418 changed-file inspection — PASS: no overlap with this QA change.
  • Open PR feat(control-center): surface PostHog product demand #419 changed-file inspection — PASS: no overlap with this QA change.
  • Focused Node test (using the exact branch test logic and current GitHub dev/prod fallback values): node --test scripts/llm-fallback-config.test.mjsPASS, 2 tests / 0 failures.
  • Full repository test/lint/typecheck/coverage — not run locally because the repository checkout is not available in this runtime; updated-head GitHub Actions are the authoritative broader validation.

Current CI:

  • New head da29251c CI #2390 (34215997798) is pending.

Auto-merge:

  • Not enabled yet. Blocker: updated-head CI #2390 has not completed.

Next QA target:

Copy link
Copy Markdown
Collaborator Author

QA run update — shared platform identity regression

CI-first check:

  • Previous QA head da29251cdfcd470f330ed9bdc701a3eb35b0df41: GitHub Actions CI #2390 — PASS.
  • Current main: 661ed8c9547de494cba37467d3ac72983b4015ff.
  • Branch compare after this run: ahead 10 / behind 0; no sync required.

Inspection:

QA change:

  • Added apps/control-center/src/client/platform.test.tsx.
  • Locks the shared identity component used by Growth, PipelineQueuesBoard, and QueueDrawer:
    • X / Threads / Rednote / YouTube retain canonical labels and /platform-icons/*.svg assets.
    • Unknown platform/language values remain readable and do not invent a broken image asset; unknown language uses the globe fallback.
  • Test-only change; no production behavior, docs, CI gates, ignores, thresholds, or unrelated refactors changed.

Validation / commands and results:

  • GitHub Actions CI #2390 on the previous head — PASS.
  • GitHub compare main...test-qa/ongoing-coverage-20260903PASS: ahead 10 / behind 0; QA diff remains scoped to the existing workflow fix/contracts plus this new Control Center test.
  • Static source/test contract review — PASS: PlatformIdentity maps the four supported platforms to the asserted canonical labels/icon paths; unknown platforms return no icon; LanguageIdentity uses the globe fallback for unknown language codes.
  • Focused local Vitest — NOT RUN in this connector runtime because no repository execution shell is available. Updated-head GitHub Actions CI #2392 is the authoritative executable validation and is currently queued.

Auto-merge:

  • Not enabled yet: updated-head CI #2392 has not completed.

Next QA target:

Copy link
Copy Markdown
Collaborator Author

QA run update

CI-first this run: PR head 67697408fe35ee2d517f3bf7b317d6f08218c961 had CI #2392 failing only in quick-gates; code-quality, coverage, e2e, check-dead-env, and deploy/security-related jobs were green.

I downloaded and inspected the authoritative quick-gates-verify-1 artifact. result.json shows:

  • format — FAIL (exit 1)
  • repo — PASS
  • contracts — PASS

The format log identifies exactly one changed file: apps/control-center/src/client/platform.test.tsx. Prettier rewrites the it.each(...)(...) call into the canonical multiline form. This was introduced by the previous QA regression test, not by main.

Action

Committed the exact Prettier output to the existing QA branch:

  • commit 8ccf465ba0471cf0439fb627a089c719654e4581
  • test(control-center): apply canonical formatting to platform regression

No behavior, CI gate, workflow, docs, ignores, or production implementation changed in this fix.

Commands / evidence and results

Updated-head CI is the next executable validation. Auto-merge remains disabled until the new head is green and mergeability/check requirements are re-confirmed.

Next QA target after CI is green: the waitlist first-touch invariant after #418 lands — duplicate normalized email must not overwrite the original social/UTM acquisition identity.

@i-xtsu-sixyou-ken-mei
i-xtsu-sixyou-ken-mei merged commit 847480b into main Sep 8, 2026
12 checks passed
@i-xtsu-sixyou-ken-mei
i-xtsu-sixyou-ken-mei deleted the test-qa/ongoing-coverage-20260903 branch September 8, 2026 12:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant