fix(ci): restore SDK closure checks - #4614
Conversation
The SDK closure check runs the root guard test from the coding-agent workspace, so cwd-relative fixture reads failed before validating the generation pin. Anchor disk reads to the test module repository root while preserving repo-relative repair-plan keys. Lore-id: 4c9f2a71 Constraint: repair-plan maps must retain repository-relative file identifiers Rejected: change the check:sdk-closure working directory | later package-local commands depend on it Confidence: high Scope-risk: narrow Reversibility: simple Tested: bun test ../../scripts/telegram-daemon-generation-guard.test.ts from packages/coding-agent
The generated Telegram baseline omitted three existing inbound-notification suites, so check:sdk-closure rejected the committed manifest after the cwd fix exposed the next gate. Regenerate the manifest from the canonical inventory. Lore-id: b7138de4 Constraint: generated test manifests must exactly match their canonical inventory Rejected: bypass the manifest check | would leave inbound notification coverage outside the baseline gate Confidence: high Scope-risk: narrow Reversibility: simple Tested: bun scripts/generate-telegram-baseline-manifest.ts --check; three added inbound notification suites
PR #4614 — Terminal disposition: SUPERSEDED (fixes already on
|
| PR change | Dev carrier | Equivalence evidence |
|---|---|---|
a82b61d435 — resolve guard fixtures from repo root |
e8393b9020 (fix(gates): anchor generation-guard fixture reads to repo root, Yeachan-Heo, 2026-08-17 12:20:53 +0900) |
Same two reads pinned to path.*join(import.meta.dir, "..") under the same scripts/ dir. Only deltas: dev hoists the root into a module-level repositoryRoot const and keeps the .text(); semicolons — no behavioral difference (git diff -w 749111d0c8 origin/dev -- scripts/telegram-daemon-generation-guard.test.ts = 3 lines of cosmetics) |
749111d0c8 — refresh Telegram baseline 54 → 57 commands |
9bfb62521a (fix(gates): regenerate Telegram baseline manifest for the three inbound suites, Yeachan-Heo, 2026-08-17 12:31:50 +0900) |
git diff --quiet 749111d0c8 origin/dev -- packages/coding-agent/test/manifests/telegram-baseline-v1.json → byte-identical |
The exact check:sdk-closure failure mode this PR fixes is therefore already closed on canonical dev; merging the conflicting head would add zero functional delta and reintroduce a cosmetic conflict in scripts/telegram-daemon-generation-guard.test.ts (merge base c83ffe3d7f has both sides changed: .our = dev's hoisted const, .their = this PR's inline variant — mergeStateStatus: DIRTY, mergeable: CONFLICTING).
Exact-head reproduction (2026-08-17, dedicated worktree, Bun 1.3.14)
bun test scripts/telegram-daemon-generation-guard.test.tsfrom repo root → 75 pass / 0 fail.- Same suite with cwd
packages/coding-agent(thecheck:sdk-closurewrapper condition) → 75 pass / 0 fail. bun ../../scripts/telegram-daemon-generation-guard.ts --validate-current-treefrompackages/coding-agent→ exit 0.bun scripts/generate-telegram-baseline-manifest.ts --checkfrompackages/coding-agent→ exit 0.- The PR's technical claim (guard fixtures now resolve under both cwds) is confirmed correct — the failure was never the code.
Dev-tip control (8711c555da490ad36475f94368bcdd8d8f01048e): identical results — 75/75 from both cwds, validate exit 0, --check exit 0; Dev CI at that tip is green (run completed success at 2026-08-17T11:19:18Z).
Exact-head CI findings (run 31965676727 / 31965676723)
PR contract bootstrap— FAIL (reproduced locally, exit 1):Expected exactly one verdict line; found 0.The PR body contains nogajae.pr-review-verdict.v1 merge-approved …line, and the contract additionally requires an effective exact-head APPROVED review from a non-author write-authorized reviewer (0 reviews exist;sj0618holdsread). Structural for an unreviewed draft, by design — not a code defect.- All 21 material jobs pass: affected-path plan/cargo/ts-build/native-build/cli-smoke/coding-agent check/
test:scripts/telegram-daemon-generation-guard.test.ts, evidence producer, Telegram daemon generation guard, Windows Telegram daemon safety, virtual integration validation, all fourgjc-state-gatesshards + aggregate, local public surfaces. (Windows dev:doctor and darwin tab-worker jobs skipped by matrix condition.)
Review status
0 reviews; reviewDecision empty. The PR body already records needs-human-equivalent status ("remains draft because the required independent review lane could not return evidence").
Sole-carrier scan
None of the 36 other open PRs touch scripts/telegram-daemon-generation-guard.test.ts or packages/coding-agent/test/manifests/telegram-baseline-v1.json (nearest sibling #4613 is disjoint: packages/utils/src/env-file.ts + utils test/changelog). dev is the sole carrier of the fix.
Disposition
- CLOSED as superseded. No fix-forward, no successor PR: the exact change set is already on canonical
dev(e8393b9020,9bfb62521a), byte-identical manifest and behaviorally identical guard test; a successor would duplicate9bfb62521a's content and violate the one-change-one-carrier rule. Author credit for the correct root-cause diagnosis (cwd-relative fixture resolution under the package-levelcheck:sdk-closurewrapper) is preserved in this record — the dev commits implement the same diagnosis. - Fix-forward on the existing branch was not taken: authority is limited to maintainer-canonical
dev(this session operates theYeachan-Heoowner account;sj0618/gajae-codehead-branch pushes are not authorized), and the branch's content is already merged upstream in equivalent form — pushing a rebase would churn an exact head whose delta is zero. - Human-only blocker (terminal): none outstanding for
dev— the fix is live and gated green at8711c555da. The only remaining actor-optional step is author-side: close/delete the fork branch at the author's discretion.
—
[repo owner's gaebal-gajae (clawdbot) 🦞]
|
Closing as superseded: both changes landed on canonical — |
Summary
Root cause
The package-level
check:sdk-closurecommand invokes the root guard test while the working directory ispackages/coding-agent. Two fixture reads used cwd-relative paths, which incorrectly resolved beneath a duplicatedpackages/coding-agentsegment.The committed Telegram baseline had also drifted from generator discovery and omitted three existing inbound notification test files.
Commit structure
Each modified file has its own commit as required:
a82b61d43—scripts/telegram-daemon-generation-guard.test.ts749111d0c—packages/coding-agent/test/manifests/telegram-baseline-v1.jsonValidation
packages/coding-agent: 75 passed--check: passedThe full
check:sdk-closurerun reaches the final canonicalization gate, which fails with 27 existingmcp-serve.tsdependency violations. The same gate was run againstupstream/dev; exit status, violation count, and complete output are identical, so this branch does not introduce that failure.Review status
CLEARcode-reviewerlane: unavailable because this deployment rejects that operationThis PR remains draft because the required independent review lane could not return evidence.