You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Reworked replacement for #52, rebased onto current main.
This makes watcher PR/check wakes lossless by moving repeated-output suppression into fm-watch.sh: check output is written to the durable wake queue before the watcher advances its .seen-check-* marker.
Why
state/*.check.sh was the remaining wake source whose suppression could happen inside an opaque check script. A legacy edge-triggered check could advance its own .babysit-*.seen marker before its stdout became a delivered watcher wake; if that stdout was lost by a timeout, crash, or concurrent watcher run, the terminal transition could be swallowed permanently.
That violates the durable wake invariant used by status and stale-pane signals: enqueue first, suppress second.
Changes
Adds watcher-owned dedupe for stateless check output via .seen-check-*.
Enqueues check wakes before advancing the dedupe marker.
Keeps a catch-all for legacy .babysit-*.seen sidecars that already self-suppressed a terminal MERGED or CLOSED state.
Marks matching legacy sidecars as already escalated when a normal check wake is delivered, avoiding duplicate catch-all wakes.
Cleans check-related watcher state during teardown.
Updates the PR-check contract docs and adds focused regression coverage.
Validation
tests/fm-wake-queue.test.sh - passed
tests/fm-teardown.test.sh - passed
for test_script in tests/*.test.sh; do "$test_script"; done - passed
bash -n bin/*.sh tests/*.sh - passed
shellcheck -x bin/*.sh tests/*.sh - passed
no-mistakes run 01KVWAJEV4K1D91FS6J8Q400ZX - checks-passed
The no-mistakes review found and fixed one issue in this branch before final validation: the legacy catch-all could duplicate a check wake after a normal check output had already delivered. The final branch includes that fix.
GitHub currently reports no status checks configured for this fork PR, so the validation evidence is the local/no-mistakes run above.
this already shipped - you can set the bind address with the LAVISH_AXI_HOST env var (landed in #61, the day after you filed this), plus LAVISH_AXI_LINK_HOST to control the URL it prints. so the remote/SSH case works today, e.g. LAVISH_AXI_HOST=0.0.0.0 lavish-axi <file>.
closing as done. if you specifically want a --host CLI flag on top of the env var, say so and i'll add it.
this already shipped - you can set the bind address with the LAVISH_AXI_HOST env var (landed in #61, the day after you filed this), plus LAVISH_AXI_LINK_HOST to control the URL it prints. so the remote/SSH case works today, e.g. LAVISH_AXI_HOST=0.0.0.0 lavish-axi <file>.
closing as done. if you specifically want a --host CLI flag on top of the env var, say so and i'll add it.
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
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
Reworked replacement for #52, rebased onto current
main.This makes watcher PR/check wakes lossless by moving repeated-output suppression into
fm-watch.sh: check output is written to the durable wake queue before the watcher advances its.seen-check-*marker.Why
state/*.check.shwas the remaining wake source whose suppression could happen inside an opaque check script. A legacy edge-triggered check could advance its own.babysit-*.seenmarker before its stdout became a delivered watcher wake; if that stdout was lost by a timeout, crash, or concurrent watcher run, the terminal transition could be swallowed permanently.That violates the durable wake invariant used by status and stale-pane signals: enqueue first, suppress second.
Changes
.seen-check-*..babysit-*.seensidecars that already self-suppressed a terminalMERGEDorCLOSEDstate.Validation
tests/fm-wake-queue.test.sh- passedtests/fm-teardown.test.sh- passedfor test_script in tests/*.test.sh; do "$test_script"; done- passedbash -n bin/*.sh tests/*.sh- passedshellcheck -x bin/*.sh tests/*.sh- passedno-mistakesrun01KVWAJEV4K1D91FS6J8Q400ZX-checks-passedThe no-mistakes review found and fixed one issue in this branch before final validation: the legacy catch-all could duplicate a check wake after a normal check output had already delivered. The final branch includes that fix.
GitHub currently reports no status checks configured for this fork PR, so the validation evidence is the local/no-mistakes run above.