Repository navigation
Stamp the release script's progress lines with the local time - #1159
Merged
Merged
Conversation
Each release: line now carries HH:MM:SS after its prefix, as thirdshift's own progress lines do, so a long wait can be told from a stalled one. The --review prompt is stamped too.
Review follow-up: stamp() is the one format, the focused test pins TZ so a UTC stamp fails it, and refusal and lifetime checks assert the stamp too.
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Every
release:line fromscripts/release.shnow has the local time asHH:MM:SSafter its prefix, the same shape as thirdshift's own progress lines. A long wait can now be told from a stalled one.docs/guide.md(and the generatedsite/docs/index.html) say so. The tests read stderr throughunstamped(), which fails on anyrelease:line without a stamp.Lines that other programs print and the script passes through, such as
git push'sremote:lines and gh'sWarning:, stay unstamped. Therelease:line printed before each of them is stamped.Evidence
scripts/release.sh, new tests):cargo test --test release: 74 passed, 0 failed, 2 ignored.progressunderTZ=Pacific/Kiritimati(UTC+14) and checks the stamp against that clock. A version that stamps UTC (TZ=UTC printf …) fails it:14:24:45 not in 04:24:45..04:24:45.06.scripts/affected-tests mainpicks the full suite plus the site tests:cargo clippy --test release -- -D warningsandcargo fmt --checkpass.node generate-docs.mjs --checkpasses.cargo test: 1240 of the 1243--bin thirdshifttests passed. The other 3, theworktree::synchronization_tests::*_shadowing_branch_and_tag_namestests, fail only on this machine: its global git config hastag.gpgsign true, sogit tagasks for a message. All 3 pass withGIT_CONFIG_GLOBALpointed at a config without signing. This branch doesn't changesrc/worktree/.cargo teststopped at that failure, so the other integration-test files did not run locally. CI runs them. This change touches onlytests/release*, and that file passed in full.test_generate_release.pyfails here because this host has Python 3.9, which has notomllib. This branch doesn't changescripts/generate-release.py.Merge Danger
Door: two-way
Only the text of the maintainer's release script output changes. Reverting removes the stamps.
Blast Radius: maintainer-only
Only someone running
scripts/release.shsees it. No thirdshift command, CI workflow or release artifact reads these lines.%(…)Tneeds bash 4.2; the script already needs 4.4 forinherit_errexit.Review coverage
Both reviews read all five changed files.
site/docs/index.htmlis generated fromdocs/guide.md; both reviewers also read its one-line diff and confirmed thatgenerate-docs.mjs --checkpasses. The review ran at 0315f8a. 656689e then changedscripts/release.sh,tests/release.rsandtests/release/lifetime.rsto address its findings. No reviewer re-read those changes, but they are files the review had read.Unaddressed findings
Standards
%(…)Tneeds bash 4.2 (judgement call). The script already needs bash 4.4:scripts/release.sh:51runsshopt -s inherit_errexit, which fails underset -eon any older bash. The script's tests are also Linux-only. No new requirement.release:-prefixed line (printf 'release: open the PR with this summary? …'). Stamping it keeps everyrelease:line the same shape, which the issue asks for ("add timestamps to release script output"). The Spec review found it in scope.Spec
--reviewsummary block are unstamped. The issue asks how long it had been "since that last output". The line printed before each wait is now a stampedrelease:line, so that time can be read. Stamping other programs' output would mean wrapping everygit,ghandcargocall. thirdshift's own lines, relayed throughcargo run, are already stamped. The usage line exits 2 before any work. The summary block is the PR text the maintainer is reviewing, not a progress line.printf 'release: open the PR with this summary? [y]es / [e]dit / [n]o ' >&2). On a terminal, the maintainer's Enter ends the line.Closes #1041
Built with claude · claude-opus-5-5 · high
Security review outcome
No unaddressed introduced findings.