Fan board changes out to the feed that serves the board - #47
Merged
Conversation
`projects_v2_item` reached only `.github-private`. But a card moved on org project #2 — a Status drag, a Score edit — changes the board's RANKING, and front-desk-feed queries the board itself, so nothing that wakes the private projection wakes the feed. Measured 2026-08-30: the projection updated at 22:52 and desk.bounded.tools was still serving the 21:25 snapshot, a full cron slot behind and by construction up to an hour. That was merely stale until desk gained Web Push. Desk now sends a payload-less push on a board change and the service worker fetches the board to learn what the push was about, so an unwoken feed turns a stale page into a wrong notification: it says the board changed and hands the reader a board that has not. Worse than not notifying at all. Claim-issue: #44 Co-authored-by: Claude <noreply@anthropic.com>
…loses it The push comes from the first target's lane (front-desk-projection.yml is NOTIFY_WORKFLOW_REFS[0] in desk's src/oidc.js) and the board it points at is the second target's `feed` branch. This dispatches to both at once, so the fast lane can still notify before the slow one has published. front-desk-feed's publish.yml mints a broker token, queries the whole board, signs twice and force-pushes; it is not going to win that race. Fanning out here takes the skew from up to an hour down to the length of that job, which is all a sender can do — ordering two repos' Actions lanes is not something this Worker can express. Claim-issue: #44 Co-authored-by: Claude <noreply@anthropic.com>
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.
projects_v2_itemreached only.github-private. But a card moved on org project #2 — a Status drag, a Score edit — changes the board's ranking, andfront-desk-feedqueries the board itself, so nothing that wakes the private projection wakes the feed.Measured 2026-08-30: the projection updated at 22:52 and
desk.bounded.toolswas still serving the 21:25 snapshot — a full cron slot behind, and by construction up to an hour.That was merely stale until desk gained Web Push. Desk now sends a payload-less push on a board change and the service worker fetches the board to learn what the push was about, so an unwoken feed turns a stale page into a wrong notification: it says the board changed and hands the reader a board that has not. Worse than not notifying.
What it does not fix, recorded in the code
Fanning out to both targets narrows the window; it does not close it. The push comes from the first target's lane (
front-desk-projection.ymlisNOTIFY_WORKFLOW_REFS[0]in desk'ssrc/oidc.js) and the board it points at is the second target'sfeedbranch — and this dispatches to both at once, so the fast lane can still notify before the slow one has published.front-desk-feed'spublish.ymlmints a broker token, queries the whole board, signs twice withcosign sign-bloband force-pushes. It is not going to win that race.What a sender can do is take the skew from up to an hour down to the length of that job. Ordering two repos' Actions lanes is not something this Worker can express — that would need an ordering neither repo has.
Verification
bun test— 130 pass, 0 fail.tsc --noEmitclean.Why
Claim-issueand notCloses#44's code half merged in #43. What remains on that issue is provisioning that is not mine to do — creating and installing
bs-door-dispatch, subscribingbs-door-hooksto the three events. A squash merge reads closing keywords from the commit message, so aCloseshere would have silently closed an issue with your setup work still outstanding.Pairs with front-desk-feed#5, which adds the receiving half.
Claim-issue: #44
🤖 Generated with Claude Code
https://claude.ai/code/session_01EmJrUXmQBxc6Gsf3Lqvp4f
Generated by Claude Code