docs/plans/2026-06-30-changeset-changelog-github-fallback.md
Objective: Fix release changelog GitHub fetch flake; done when fallback is tested, local release-version proof passes, rerun status is known, and plan check passes.
Goal plan: docs/plans/2026-06-30-changeset-changelog-github-fallback.md
Template: docs/plans/templates/task.md
Primary template: docs/plans/templates/task.md
Applied packs:
Task source:
Release and changelog failure after PR #5045 mergeTimed checkpoint:
Completion threshold:
.changeset/changelog-config.js does not abort release-version generation when GitHub metadata lookup fails.pnpm check passes before PR creation.node .agents/skills/autogoal/scripts/check-complete.mjs docs/plans/2026-06-30-changeset-changelog-github-fallback.md passes.Verification surface:
gh run view / job logs for run 28402211788.node --test .changeset/changelog-config.test.cjs.node --test tooling/scripts/release-workflow.test.mjs.pnpm lint:fix, git diff --check, and pnpm check.Constraints:
Boundaries:
.changeset/changelog-config.js, .changeset/changelog-config.test.cjs, this plan, and PR metadata.Output budget strategy:
/tmp/plate-job-*.log; avoid streaming full logs after the initial accidental large log output.Blocked condition:
Task state:
Current verdict:
Pre-solution issue challenge:
.changeset/changelog-config.js.Completion rule:
update_goal(status: complete) until local verification, PR prep, and this plan checker pass.Start Gates:
| Gate | Applies | Evidence |
|---|---|---|
| Timed checkpoint parsed | N/A | No duration requested. |
| Skill analysis before edits | yes | Used github:gh-fix-ci; used autogoal because this is a verifiable CI fix. |
| Active goal checked or created | yes | get_goal returned none; active goal created for this CI fix. |
| Source of truth read before edits | yes | Read run/job metadata and logs for 28402211788 / 84156054337. |
| Tracker comments and attachments read | N/A | Job URL only. |
| Video transcript evidence required | N/A | No video. |
| Pre-solution issue challenge required | yes | Job failure reproduced from Actions logs before patching. |
| Reproduction verdict before implementation | yes | Both original run and rerun failed in pnpm ci:version. |
| Repro escalation ladder selected | yes | Actions logs plus focused changelog tests; browser N/A. |
| Suggested fix reviewed against durable boundary | yes | Durable owner is changelog config, not one-off rerun. |
docs/solutions checked for non-trivial existing-code work | N/A | Release logs and local owner were enough. |
| TDD decision before behavior change or bug fix | yes | Added regression tests for GitHub info failure fallback. |
| Branch decision for code-changing task | yes | Created codex/fix-changeset-changelog-github-fallback from main. |
| Release artifact decision | yes | No package changeset: release tooling only. |
| Browser tool decision for browser surface | N/A | No browser surface. |
| PR expectation decision | yes | Fix will be opened as a PR against main. |
| Tracker sync expectation decision | yes | PR body/final handoff are sync surfaces. |
| Output budget strategy recorded | yes | Targeted log extracts after initial large log fetch. |
Work Checklist:
/Users/zbeyens/git/plate.Completion Gates:
| Gate | Applies | Required action | Evidence |
|---|---|---|---|
| Named verification threshold | yes | Run log readback and local checks | Focused tests, release workflow tests, diff check, and pnpm check passed. |
| Pre-solution issue challenge verdict | yes | Record failure and validity verdict | Original and rerun logs fail in pnpm changeset version with GitHub GraphQL premature close. |
| Repro escalation ladder | yes | Record relevant owner proof | Actions logs and mocked unit tests cover the release owner. |
| Bug reproduced before fix | yes | Record failing repro | Rerun job 84273207295 failed with the same Invalid response body ... Premature close. |
| Targeted behavior verification | yes | Run focused tests | node --test .changeset/changelog-config.test.cjs passed. |
| TypeScript or typed config changed | N/A | Run typecheck if changed | CommonJS release config and tests only. |
| Package exports or file layout changed | N/A | Run pnpm brl if needed | No package exports or file layout changed. |
| Package manifests, lockfile, or install graph changed | N/A | Run install if changed | No manifest/lockfile changes. |
| Agent rules or skills changed | N/A | Run skill sync if changed | No agent files changed. |
| Workspace authority proof | yes | Run checks in owning repo | /Users/zbeyens/git/plate commands recorded. |
| Browser surface changed | N/A | Capture browser proof or caveat | No browser surface. |
| Browser final proof | N/A | Attach browser proof or caveat | No browser surface. |
| CI-controlled template output changed | N/A | Restore or justify | No template output. |
| Package behavior or public API changed | N/A | Add changeset or reason | Release tooling only, not published package behavior. |
| User-visible registry output changed | N/A | Registry changelog if needed | No registry output. |
| Docs or content changed | N/A | Docs proof if needed | No docs/content. |
| High-risk mini gate | yes | Record failure mode and proof | Release PR generation fallback tested; successful GitHub metadata path remains unchanged. |
| Agent-native review for agent/tooling changes | N/A | Run agent review if needed | No agent/tooling changes. |
| Local install corruption suspected | N/A | Reinstall if suspected | Not local install corruption. |
| Autoreview for non-trivial implementation changes | N/A | Run or record reason | Waived per user's earlier "cut the autoreview". |
| PR create or update | yes | Run check, push branch, create PR | Created PR #5049 after pnpm check passed. |
| Task-style PR body verified | yes | Verify PR body with gh pr view --json body | gh pr view 5049 --repo udecode/plate --json body,url,headRefName,headRefOid verified task-style body. |
| PR proof image hosting | N/A | Host proof image if needed | No images. |
| Tracker sync-back | N/A | Post tracker sync if needed | Job URL only; PR/final response enough. |
| Final handoff contract | yes | Fill final fields | Recorded below; PR URL to be added after creation. |
| Final lint | yes | Run pnpm lint:fix | Passed; fixed one file. |
| Output budget discipline | yes | Record accidental output and recovery | Full log output was accidentally large once; subsequent reads used /tmp log artifacts and focused rg/tail. |
| Timed checkpoint | N/A | Close timed loop | No duration requested. |
| Goal plan complete | yes | Run plan checker | Passed at 2026-06-30T11:14Z. |
Phase / pass table:
| Phase | Status | Evidence | Next |
|---|---|---|---|
| Intake and source read | complete | GitHub run metadata and logs read | implementation done |
| Implementation | complete | Changelog fallback added with tests | verification |
| Verification | complete | Focused tests, release workflow tests, diff check, and pnpm check passed | PR done |
| PR / tracker sync | complete | PR #5049 created and body verified | final response |
| Closeout | complete | Plan ready for checker | final response |
Findings:
28402211788, job 84156054337, failed on main at 34fdca42f7.pnpm ci:version failed inside pnpm changeset version.@changesets/get-github-info received Invalid response body while trying to fetch https://api.github.com/graphql: Premature close.84273207295.pr: metadata, so the commit fallback path is required.Decisions and tradeoffs:
ci:version or wrap the whole Changesets action; the narrower owner is the changelog generator that calls GitHub metadata.Implementation notes:
createFallbackLinks and readGithubLinks to .changeset/changelog-config.js.@changesets/get-github-info throws.Review fixes:
Error attempts:
| Error / failed attempt | Count | Next different move | Resolution |
|---|---|---|---|
Full gh run view --log streamed too much output | 1 | Save job logs to /tmp and inspect focused slices | Used /tmp/plate-job-*.log with rg and tail. |
| Rerun failed workflow | 1 | Patch changelog fallback instead of relying on rerun | Rerun reproduced the same failure. |
Verification evidence:
/Users/zbeyens/git/plate: gh run view 28402211788 --repo udecode/plate showed original failure and rerun failure./Users/zbeyens/git/plate: node --test .changeset/changelog-config.test.cjs passed, 3 tests./Users/zbeyens/git/plate: node --test tooling/scripts/release-workflow.test.mjs passed, 21 tests./Users/zbeyens/git/plate: pnpm lint:fix passed and formatted one file./Users/zbeyens/git/plate: git diff --check passed./Users/zbeyens/git/plate: pnpm check passed; existing sidebar hook warning remains warning-only./Users/zbeyens/git/plate: PR #5049 created at https://github.com/udecode/plate/pull/5049./Users/zbeyens/git/plate: gh pr view 5049 --repo udecode/plate --json body,url,headRefName,headRefOid verified the PR body and head 8499236f2d5761efa8040e57508c6dc275bd8acc./Users/zbeyens/git/plate: node .agents/skills/autogoal/scripts/check-complete.mjs docs/plans/2026-06-30-changeset-changelog-github-fallback.md passed.Final handoff contract:
.changeset/changelog-config.js.pnpm check passed.Task-style PR body contract:
check passes.Final handoff / sync:
28402211788.Timeline:
pnpm check passed.Reboot status:
| Question | Answer |
|---|---|
| Where am I? | Closeout after PR creation. |
| Where am I going? | Run plan checker, push the final plan update, and hand off. |
| What is the goal? | Make release changelog generation resilient to GitHub metadata fetch failures. |
| What have I learned? | The failure is reproducible in Actions rerun and owned by .changeset/changelog-config.js. |
| What have I done? | Patched fallback behavior, added tests, reran the failed workflow once, ran full checks, and opened PR #5049. |
Open risks:
main run cannot pass until the fix lands and the release workflow is rerun.