Report a parked block's last check and return its result - #364
Merged
Merged
Conversation
Codecov Report❌ Patch coverage is
🚀 New features to boost your workflow:
|
This was referenced Sep 28, 2026
Collaborator
Author
|
Reworking this for https://github.com/orgs/BristolMyersSquibb/discussions/488. The check record stays, but a parked block now reports its last check's outcome while nothing it read has changed, |
A parked block read dormant whether its last run still held, it had been edited since, or it had never run, so a consumer could not tell which off-screen blocks need a run. Every check of a needed block, including one that finds it cannot run, is now recorded and compared against once parked.
A parked block now reads the status its last check reached while nothing that check read has changed, `stale` once something has, and `unevaluated` without a check, which also covers a block that is not built yet. The check, not the render observer, records why a block cannot run, so a block checked off screen carries the reason.
A parked block that reads `ready` has to hand back the result that status describes, so `result()` returns what the block's last check left rather than `NULL`. A block last found unable to run holds no result.
nbenn
force-pushed
the
362-dormant-status
branch
from
September 29, 2026 12:23
8dffc05 to
034c39b
Compare
dormant mean current and add an unevaluated status
nbenn
marked this pull request as ready for review
September 29, 2026 12:46
This was referenced Sep 29, 2026
The revdep check installs the upstream's
main over the queued commit
BristolMyersSquibb/blockr.ci#84
Closed
Closed
Closed
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
ready,failed,waitingorunset) while nothing that check read has changed,staleonce something has, andunevaluatedwithout a check, which also covers a board block that is not built yet. Thedormantstatus goes: it reported that nothing was computing the block rather than what a run would find, so a consumer could not tell a current parked block from one that failed, cannot run, was edited since or never ran. This is the first work item of https://github.com/orgs/BristolMyersSquibb/discussions/488 and replaces the direction this PR first took, which keptdormantwith a narrower meaning.staleorunevaluateditself. An expression built from input data, such as blockr.dm'sdm_select, cannot be rebuilt while its inputs are withheld, so for such a block the state it is built from is compared instead. The block server now owns the status reactive,statusin its return list in place offailed, andboard_server()installs it as the block'srv$evalslot.result()returns what its last check left rather thanNULL, so a block readingreadyhands back the result that status describes (A block that is off screen returnsNULLfromresult(), even after it has run #363). A block last found unable to run holdsNULL. Output rendering follows the status for a parked block as well, which keeps the render observer from validating it against withheld inputs now that a parked upstream reads its heldready.evaluaterequest now carries thestatus-phase reason, and one fixed off screen drops it once it runs. Before, the first readdormantwith no conditions and the second kept its old note.mainafter Fold front-end demand into the one multi-owner claim set #337, with the tests holding blockseagerinstead ofrequired. The unreleased 0.1.4 NEWS entries that nameddormant(Dormant downstream block's status stays stale after an upstream change (deferred eval surfaces no dirty signal) #310, Provide a channel to evaluate a dormant block without making it visible #318, Collapsed stacks evaluate once before gating engages #343) are corrected in place.Migration
dormant, whatever its last run foundstaleonce it is notdormant, and an unbuilt one has no statusunevaluatedresult()isNULLevaluaterequest waits while a block readsdormantorstaleunevaluatedorstale, so a request for a current parked block is spent at onceDownstream, blockr.dock's
block_status_badge()mapsdormanttoNAand so keeps the last badge; with this change it draws the held status instead, and BristolMyersSquibb/blockr.dock#485 drops thedormantcase. In blockr.assistant,eval_deferred()and the status notes listdormant; reading the held statuses there is BristolMyersSquibb/blockr.assistant#165.Fixes #362
Fixes #363