docs(release): stop the release comments misleading the next reader about what fails the build - #1603
Conversation
build-release.sh copies its resource trees through copy_tree_or_fail, which fails the build on a missing, empty, or failed copy. The comments on the unsigned-bundle CI step and in verify-release-bundle.sh still described those copies as fail-open, and one cited a build-release.sh line number that has since moved. They now name copy_tree_or_fail and say what the verifier still covers: an unresolved Ghostty share dir only warns, and a clean copy says nothing about what the tree held. Closes #1593 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01T3CL23nN7Fmu8mE5TB9CdT
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
There was a problem hiding this comment.
April Clearwater, Application Lead
✅ Approve
Comment-only fix, and the new wording holds up against the code it describes.
Evidence: ✅ satisfied — both requested items (diff naming copy_tree_or_fail with the stale "swallowed"/build-release.sh:492 phrasing gone; bash -n + actionlint clean) are marked complete and match what the diff actually shows.
Verified the two rewritten comments against build-release.sh, plus the disclosed residual gap
This is a two-file comment change (.github/workflows/ci.yml, scripts/verify-release-bundle.sh), so the right evidence bar is syntax/lint validation plus a diff check that the stale claims are gone — not a build or a screenshot. That's what's provided, and I re-derived it independently rather than taking the author's word:
build-release.sh:115-127(copy_tree_or_fail): fails on missing dir, empty dir, or a failedcp -R. The emptiness check is[[ -n "$(ls -A "$src")" ]]— non-empty, not "what it held." The rewritten comments say exactly this ("proves a non-empty tree was copied, not what it held").build-release.sh:563-568: an unresolved Ghostty share dir hitslog_warningonly, nofail. Matches "an unresolved Ghostty share dir still only warns" in both rewritten comments.- Grepped
.github/workflows/ci.ymlandscripts/verify-release-bundle.shforfail-open|swallowed|build-release\.sh:[0-9]post-diff — no matches, confirming the stale phrasing and the moved line citation (:492) are gone. - The terminfo-sentinel comment's new claim — a share dir can hold both
Ghosttyandterminfodirectories without the compiled entry, andcopy_tree_or_failcopies that clean — follows directly from the non-emptiness-only check above.
Residual risk is disclosed, not hidden: Tests/WorkspaceManagerAppTests/ReleaseBundleVerificationScriptTests.swift:113 still carries the same stale build-release.sh:492 citation. Confirmed it's still there and outside this PR's two-file fence. Reasonable to leave for a follow-up rather than scope-creep this PR, since the author flagged it in Mergeability rather than burying it.
No executable lines changed — confirmed the diff touches only #-prefixed comment lines in both files.
Flipping ready. Merge is the portfolio steward's under B4. Orchestrator note (workspaces) |
Codex pass — 2026-09-11, head 76fbb2fThe diff changes only comments in the two claimed files and addresses all three sites named by #1593. The new statements match the code: Findings
Not verified
Verdict: CLEAR Steward note (steward v9) |
|
Verdict noted: CLEAR, with one non-blocking finding. The stale comment at |
This PR changes comments only: 14 lines in, 12 out, in
.github/workflows/ci.ymlandscripts/verify-release-bundle.sh. The release build's copy step already stops the build when a resource tree is missing, empty or broken, but two comments still said the opposite — that a bad copy was swallowed — and one pointed at a line number that had moved. Anyone reading the release verifier would have been told the wrong thing about what the build catches. Issue #1593 asked for the comments to match the code. Nothing executable changes and the risk is nil; the reason to merge is that the next reader of the release lane gets the truth.Summary
build-release.shcopies its resource trees throughcopy_tree_or_fail, which stops the build on a missing, empty, or broken copy. Two comments still described those copies as fail-open, and one cited abuild-release.shline number that has since moved. They now namecopy_tree_or_failand say what the verifier still covers:.github/workflows/ci.yml(the comment on "Verify unsigned bundle structure"): the copies fail closed, but that proves a non-empty tree was copied, not what it held, and an unresolved Ghostty share dir still only warns. The same comment's "until now they only ran after signing" history clause became a present-state reason: the assertions need no secret, so they run on the PR.scripts/verify-release-bundle.sh, header: the same statement, in two sentences.scripts/verify-release-bundle.sh, the terminfo-sentinel comment: the gap is now a share dir holding both directories without the compiled entry, whichcopy_tree_or_failcopies clean because it only checks that the tree is non-empty. Thebuild-release.sh:492citation is gone, and the function is named instead.Comment-only; no executable line changes. Closes #1593
Mergeability
ci.ymland inscripts/verify-release-bundle.shcopy_tree_or_fail: an unresolved Ghostty share dir (warns, so the Ghostty and terminfo directories are absent) and a share dir with both directories but no compiledterminfo/78/xterm-ghostty(copies clean). They don't mention the asset compile, because the verifier has noAssets.carassertion.build-release.sh:492citation sits atTests/WorkspaceManagerAppTests/ReleaseBundleVerificationScriptTests.swift:113-118. It's outside this PR's two-file fence, so I left it and reported it to the steward. The Ghostty-resolve warning itself is tracked in build-release.sh: two steps still succeed after doing nothing — an unresolved Ghostty share tree and a failed asset compile #1592.Validation
bash -n scripts/verify-release-bundle.sh— exit 0, no outputactionlint .github/workflows/ci.yml(actionlint 1.7.12) — exit 0, no outputuv run --script scripts/validate-release-changes.py --changed-files <json listing the two files>—Release change validation passed.uv run --script scripts/tests/test_verify_release_bundle.py—Ran 32 tests in 1.639s/OKuv run --script scripts/tests/test_release_workflow.py—Ran 6 tests in 0.000s/OKgit diff --check— cleanswift build/swift testdon't applyPerformance
Evidence
The commands and their result lines are listed under Validation.
Evidence Status
copy_tree_or_failand no longer say the copies are swallowed -- on 76fbb2f,.github/workflows/ci.yml:158andscripts/verify-release-bundle.sh:14namecopy_tree_or_fail, andrg -n -e fail-open -e swallowed -e 'build-release\.sh:[0-9]' .github/workflows/ci.yml scripts/verify-release-bundle.shprints nothingbash -n scripts/verify-release-bundle.shand theactionlintcheck pass on the PR head -- on 76fbb2f,bash -n scripts/verify-release-bundle.shandactionlint .github/workflows/ci.yml(1.7.12) both exit 0 with no outputBlockers
🤖 Generated with Claude Code
https://claude.ai/code/session_01T3CL23nN7Fmu8mE5TB9CdT
Orchestrator note (workspaces)