Repository navigation
Deploy the production catalog without announcing it to open tabs - #869
Conversation
The production deploy passes --no-realm-events to realm push and file write when the installed boxel-cli lists it, so a deploy indexes the new catalog without resetting open tabs. An older CLI keeps announcing. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Staging Submissions PreviewThis PR's content is pushed to the staging submissions realm: https://realms-staging.stack.cards/submissions/ Changed folders:
Updated at 2026-10-22 15:05:50 UTC for commit |
habdelra
left a comment
There was a problem hiding this comment.
[Claude Code 🤖] This review covered four things: how the flag detection behaves under Actions' bash -e -o pipefail (empty arrays, and the herestring over the captured --help output), whether the help grep can match falsely, whether every boxel call in this workflow that writes to a realm passes the flag, and whether the description could trip Merges after: parsing. It did not review the CLI or realm-server halves of the flag.
No blocking issues. There is one stale justification comment (inline) and one problem in the description's test plan.
- The comment on the production push step still says every write notifies every open session and floods Matrix. See the thread on
deploy-production.yml. - The test plan's check can't pass on the deploy it names until production runs the realm-server half.
@cardstack/boxel-cliis published from boxelmainon every merge (boxel-cli-publish.yml). Production's realm server honorsX-Boxel-Realm-Events: noneonly after Manual Deploy [boxel] to production ships that support. Until then it ignores the header, and the push still announces. Please tie the test plan, and the sentence "It takes effect once alatestboxel-cli with the flags is published", to the first catalog deploy after that boxel deploy. In lockstep, that is the run after the release, not the one before it. Non-blocking; this affects the description only. - Description nit: in "A CLI without the flag keeps announcing, as it does today.", "today" is temporal. "A CLI without the flag announces every write." says the same thing in evergreen form.
| # Indexed without announcing it to the realm's open tabs (see the | ||
| # .boxelignore step). |
There was a problem hiding this comment.
[Claude Code 🤖] Once this flag is in effect, the comment on this step ("Each file the realm writes reindexes and notifies every open session, so re-sending the whole catalog floods the realm and Matrix.") overstates. The realm holds back only the Matrix broadcast, so a silent push still reindexes every file it sends but notifies no one. Please qualify it, for example:
# Each file the realm writes reindexes, and a push without
# --no-realm-events also notifies every open session, so re-sending the
# whole catalog floods the realm (and Matrix).
Regression (this change makes the comment overstate). Non-blocking.
There was a problem hiding this comment.
[Claude Code 🤖] Fixed in 873e406, same rewording. I also updated the description: the flag takes effect only once production's realm server honors the header, so the test plan now names the first production catalog deploy after Manual Deploy [boxel] ships cardstack/boxel#6903 and #6914 (the run after the release). The temporal wording is gone too.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…eploy-no-realm-events
|
[Claude Code 🤖] Reopening. This PR doesn't depend on the shared realm event room that cardstack/boxel#6906 proposed, which was closed under ADR 011 (cardstack/boxel#6921). It only makes system-initiated indexing (public-realm deploys and syncs, the post-deploy boxel-ui reindex, Grafana reindexes, the OpenRouter sync) run without realm events, so open tabs aren't reset by indexing their users didn't ask for. That holds whichever way public-realm events are delivered, and it cuts the load on Synapse under any of the alternatives. Hassan wants it to land, and it was already approved. Reducing fan-out for public realms is being redesigned separately. |
Important
Merge order: #866 has merged; this PR targets
main.realm push --no-realm-events) and feat: index public-realm deploys and system reindexes without realm events boxel#6914 (file write --no-realm-events). Each step checks the CLI's--helpfirst, so this is safe to merge in any order relative to them. It takes effect once alatestboxel-cli with the flags is published (boxel-cli publishes on every boxelmainmerge) and the environment's realm server honorsX-Boxel-Realm-Events: none; an older realm server ignores the header and the push still announces. NoMerges after:line is needed, because nothing here breaks on an older boxel.What this changes
A catalog deploy is system-initiated: no one with the catalog open asked for it. So the realm should index the new content without announcing it, and open tabs pick it up on their next load instead of resetting their loader mid-session.
deploy-production.yml): the.boxelignorewrite and therealm pushpass--no-realm-eventswhen the installed boxel-cli lists it.A CLI without the flag announces every write.
Test plan
🤖 Generated with Claude Code