Repository navigation
fix(cli): a command waiting on the project lock says what it waits for - #7184
Merged
Merged
Conversation
Contributor
There was a problem hiding this comment.
Approve at 85816cb1. I found no blocker.
What I verified
- The
fails without the fix:test does what the body says. WithprojectLock.tsfrom merge-base2679bcde, it fails withexpected "error" to be called 1 times, but got 0 times. The updated timeout-message assertion also fails. With the fix, all 9 tests inprojectLock.test.tspass. Both runs were local. - Loop: the first notice comes 5 s after the command starts waiting, then one every 30 s. The notices go to stderr with the existing
[hyperframes]prefix, so--jsonstdout stays clean. If the holder file is gone, nothing is printed. TheDate.nowandconsole.errorspies are restored. - CI at this head: Format, Lint, Typecheck,
Test (cli 1/2)andTest (cli 2/2)are green. Studio and producer jobs were still running when I approved; this diff doesn't touch them.
Nits (non-blocking)
- When
waitMs≤ 5 s, the first notice can print in the same iteration that then throws the timeout. The user gets a "waiting up to 5s" line immediately followed by the refusal. You could checkremaining > 0before printing.
miguel-heygen
enabled auto-merge
November 4, 2026 20:51
Contributor
Edit accuracy: accurate 267 (base branch 267), smooth 102 of thoseThe gate passes. Quarantined, measured but not gated (8)
Unstable (1)
|
Merged
SanHsien
added a commit
to SanHsien/hyperframes
that referenced
this pull request
Nov 5, 2026
Ports: heygen-com#7165 (font preflight and system TTC names), heygen-com#7166 (font shorthand var(), weight-suffixed names, linked font sheets), heygen-com#7168 (render lock and --wait, effect-scan/session watchdog without the heygen-com#7104 retry, font_face_local_only lint), heygen-com#6972, heygen-com#7183 (adapted), heygen-com#7184; docs heygen-com#7132, heygen-com#7196; prerequisites heygen-com#6665, heygen-com#6697, heygen-com#6716 (cache-dir helper only). Deferred heygen-com#7182, heygen-com#7176. Package size budgets follow upstream's heygen-com#7168 increments. Watermarks: commit 15b1de4, PR 7189; monitored 92. Co-authored-by: Miguel Ángel <[email protected]> Co-authored-by: WaterrrForever <[email protected]> Co-authored-by: Ular Kimsanov <[email protected]> Co-authored-by: James Russo <[email protected]> Co-Authored-By: Claude Opus 5.5 <[email protected]>
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.
What
When the host asks for the project lock (the
project-lockcapability),check,snapshotand the other locked commands queue behind whichever command holds the project. The queue was silent: nothing printed until the wait ran out. After 5 seconds of waiting the command now writes one line to stderr naming the holder, how long it has run, and how long this command will wait, then repeats it every 30 seconds.Example:
[hyperframes] waiting for snapshot (pid 4242, running 38s) to finish with this project; waiting up to 300sWhy
Field report:
checkqueued behind a film gate and a snapshot and then timed out "before it ran". The check's own deadline already starts after the lock is taken (the lock wraps the pipeline that creates it), so no time is lost there; what the agent saw was silence for the whole queue, which reads as a hang. Short waits stay quiet so parallel commands do not add noise.Fails without the fix:
packages/cli/src/utils/projectLock.test.ts> "says who it is waiting for after a few seconds, so a queued command does not read as hung".Not covered
How long the host lets a command wait (
waitMs) is set by the host, not here. A holder that hangs still holds the project until it ends; the check hang fixes in the sibling PRs shorten those holds.Size
Small: one helper and one test.