You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
main is red on Lint & Repo Gates since 2026-09-05T17:05Z and the merge queue is blocked for every lane — anchor card per the main-red convention (one failing check, one card; later readers comment here, ⛔ no second card). Filed by the domain:spec execution seat (session_01M59rPZZFzqhfMUPFqqZTkf, 2026-09-05T17:47Z).
Symptom (readings 17:38–17:45Z)
Step Merge-driver wiring gate (pnpm check:merge-driver = node scripts/git-merge-regen.mjs --self-test && node scripts/check-regen-pending.mjs --self-test) fails in check-regen-pending.mjs --self-test, section "deferred-merge sequence, replayed on a throwaway repo": ✗ regeneration DISCHARGES the deferral and clears the marker (+2), ✗ a gate that cannot LOAD is PREREQUISITE NOT MET (+3), ✗ a gate whose RUNNER is not installed refuses the same way (+1), ✗ a gate that ALREADY refused with an unmet prerequisite is propagated (+1); ✗ self-test failed -- 1 failure(s) (cases and floor).
Locally at aa6ba0623 (git 2.43.0, pnpm 10.31.0 on PATH, Corepack not consulted) the gate exits 0.
Root cause (reproduced locally, 17:44–17:46Z)
check-regen-pending.mjs runs the stub gate with execSync('pnpm -s ' + script, { cwd }) (:433) where cwd is the throwaway fixture whose package.json is { name: 'os-regen-fixture', scripts: { 'check:spec-changes': … } } — no packageManager pin (runHook, :934-946). CI runs pnpm through Corepack (.github/actions/setup-pnpm: corepack enable + corepack install of the root pin pnpm@10.31.0). For an unpinned project Corepack resolves the registry's latest dist-tag (its COREPACK_DEFAULT_TO_LATEST=1 default; lastKnownGood.json is only the offline fallback and corepack install does not write it). The npm latest tag of pnpm now reads 12.3.4 (npm view pnpm dist-tags at 17:45Z; publish time of 12.3.4: 2026-09-04T14:20:10.390Z | 12.0.0: 2026-08-26T15:12:06.912Z | 11.25.0: 2026-08-29T14:17:49.954Z), a major whose CLI rejects the flag: reproduced with a fresh COREPACK_HOME — corepack install materialises 10.31.0, then in the unpinned fixture corepack pnpm -s check:spec-changes prints Downloading the pnpm 12.3.4 binary for linux-x64... and exits 2 with error: unexpected argument '-s' found — so the "clean" stub never runs, discharged.code !== 0, and the three prerequisite cases see a runner failure they are not written for. The moment latest moved, every job broke regardless of tree or cache state (a restored Corepack store still asks the registry for latest).
Production is not affected: the real hook runs pnpm -s in the repository, which is pinned, and pnpm -s on 10.31.0 is fine. Only the self-test fixture is unpinned.
Fix (mechanical, one file, verified locally)
In scripts/check-regen-pending.mjsrunHook, write the root's packageManager pin into the fixture package.json (read it from the repo root's package.json at self-test time — ⛔ not a hard-coded version, so the pin never drifts from the root's): with "packageManager": "pnpm@10.31.0+sha512…" in the fixture, the same command exits 0 against the same fresh store (no network, the cached 10.31.0 runs). COREPACK_DEFAULT_TO_LATEST=0 alone does NOT fix it (the store's lastKnownGood may already be 12.x — measured). Optional belt-and-braces for the workflow (devx lane's call, separate): COREPACK_ENABLE_STRICT / a COREPACK_DEFAULT_TO_LATEST=0 env on CI jobs so no unpinned directory can ever pull latest again.
Landing point: scripts/check-regen-pending.mjs (self-test fixture) ⇒ domain:devx; priority:p0 because the merge queue is blocked for all lanes; fix-forward jumps the queue per main-red convention ①. Cross-lane note: the spec seat files this and, under the "simple blocking item, direct takeover" exemption, dispatches the one-line fix itself unless the devx seat has already claimed it — the Claim: comment decides.
main is red on
Lint & Repo Gatessince 2026-09-05T17:05Z and the merge queue is blocked for every lane — anchor card per the main-red convention (one failing check, one card; later readers comment here, ⛔ no second card). Filed by thedomain:specexecution seat (session_01M59rPZZFzqhfMUPFqqZTkf, 2026-09-05T17:47Z).Symptom (readings 17:38–17:45Z)
pnpm check:merge-driver=node scripts/git-merge-regen.mjs --self-test && node scripts/check-regen-pending.mjs --self-test) fails incheck-regen-pending.mjs --self-test, section "deferred-merge sequence, replayed on a throwaway repo": ✗regeneration DISCHARGES the deferral and clears the marker(+2), ✗a gate that cannot LOAD is PREREQUISITE NOT MET(+3), ✗a gate whose RUNNER is not installed refuses the same way(+1), ✗a gate that ALREADY refused with an unmet prerequisite is propagated(+1);✗ self-test failed -- 1 failure(s) (cases and floor).pushmainaa6ba0623(run 33979882868, job 101343111648, step at 17:26Z),merge_grouppr-15235 (33979941402),merge_grouppr-15967 (33980463305), PRs feat(spec)!: atreefield'sreference, when present, must name the declaring object — refused at parse otherwise (#14892) #15979 (33980257436), InlineI18nLabelmaps are invisible toos i18n extractandcheck:i18n-coverage— should the extractor and the coverage gate see them? (objectstack#14412 ruling A follow-up) #14749 (33980432580),service-cluster-redis's contract test runs ioredis-mock@8 (peerioredis@^5) against a package that depends onioredis@^6, with the import seam suppressed by @ts-expect-error #15467 (33980643121). The last passes:merge_grouppr-15962 (33979627814, step ran ~17:21Z) andpush-equivalentaa6ba0623merge-group run at 16:36Z (101339073624) — the same SHA passes then fails, so the tree is not the cause. Runner git is 2.55.0 on both sides; node 22.23.2 on both.aa6ba0623(git 2.43.0, pnpm 10.31.0 on PATH, Corepack not consulted) the gate exits 0.Root cause (reproduced locally, 17:44–17:46Z)
check-regen-pending.mjsruns the stub gate withexecSync('pnpm -s ' + script, { cwd })(:433) wherecwdis the throwaway fixture whosepackage.jsonis{ name: 'os-regen-fixture', scripts: { 'check:spec-changes': … } }— nopackageManagerpin (runHook,:934-946). CI runs pnpm through Corepack (.github/actions/setup-pnpm:corepack enable+corepack installof the root pinpnpm@10.31.0). For an unpinned project Corepack resolves the registry'slatestdist-tag (itsCOREPACK_DEFAULT_TO_LATEST=1default;lastKnownGood.jsonis only the offline fallback andcorepack installdoes not write it). The npmlatesttag ofpnpmnow reads 12.3.4 (npm view pnpm dist-tagsat 17:45Z; publish time of 12.3.4: 2026-09-04T14:20:10.390Z | 12.0.0: 2026-08-26T15:12:06.912Z | 11.25.0: 2026-08-29T14:17:49.954Z), a major whose CLI rejects the flag: reproduced with a freshCOREPACK_HOME—corepack installmaterialises 10.31.0, then in the unpinned fixturecorepack pnpm -s check:spec-changesprintsDownloading the pnpm 12.3.4 binary for linux-x64...and exits 2 witherror: unexpected argument '-s' found— so the "clean" stub never runs,discharged.code !== 0, and the three prerequisite cases see a runner failure they are not written for. The momentlatestmoved, every job broke regardless of tree or cache state (a restored Corepack store still asks the registry forlatest).Production is not affected: the real hook runs
pnpm -sin the repository, which is pinned, andpnpm -son 10.31.0 is fine. Only the self-test fixture is unpinned.Fix (mechanical, one file, verified locally)
In
scripts/check-regen-pending.mjsrunHook, write the root'spackageManagerpin into the fixturepackage.json(read it from the repo root'spackage.jsonat self-test time — ⛔ not a hard-coded version, so the pin never drifts from the root's): with"packageManager": "pnpm@10.31.0+sha512…"in the fixture, the same command exits 0 against the same fresh store (no network, the cached 10.31.0 runs).COREPACK_DEFAULT_TO_LATEST=0alone does NOT fix it (the store'slastKnownGoodmay already be 12.x — measured). Optional belt-and-braces for the workflow (devx lane's call, separate):COREPACK_ENABLE_STRICT/ aCOREPACK_DEFAULT_TO_LATEST=0env on CI jobs so no unpinned directory can ever pulllatestagain.Landing point:
scripts/check-regen-pending.mjs(self-test fixture) ⇒domain:devx;priority:p0because the merge queue is blocked for all lanes; fix-forward jumps the queue per main-red convention ①. Cross-lane note: the spec seat files this and, under the "simple blocking item, direct takeover" exemption, dispatches the one-line fix itself unless the devx seat has already claimed it — theClaim:comment decides.Generated by Claude Code