Skip to content

Deploy the production catalog without announcing it to open tabs - #869

Merged
habdelra merged 3 commits into
mainfrom
cs-14191-production-deploy-no-realm-events
Oct 22, 2026
Merged

habdelra merged 3 commits into
mainfrom
cs-14191-production-deploy-no-realm-events

Conversation

@habdelra

@habdelra habdelra commented Oct 22, 2026 •

Copy link
Copy Markdown
Contributor

Important

Merge order: #866 has merged; this PR targets main.

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 to production (deploy-production.yml): the .boxelignore write and the realm push pass --no-realm-events when the installed boxel-cli lists it.

A CLI without the flag announces every write.

Test plan

🤖 Generated with Claude Code

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>
@github-actions

github-actions Bot commented Oct 22, 2026 •

Copy link
Copy Markdown

Staging Submissions Preview

This PR's content is pushed to the staging submissions realm: https://realms-staging.stack.cards/submissions/

Changed folders:

  • .github/

Updated at 2026-10-22 15:05:50 UTC for commit 4afec60. Shared realm: only this PR's changed files are pushed; files touched by multiple PRs reflect whichever pushed last, and deleted files are not removed.

@habdelra habdelra left a comment

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[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.

  1. 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.
  2. The test plan's check can't pass on the deploy it names until production runs the realm-server half. @cardstack/boxel-cli is published from boxel main on every merge (boxel-cli-publish.yml). Production's realm server honors X-Boxel-Realm-Events: none only 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 a latest boxel-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.
  3. 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.

Comment on lines +232 to +233
# Indexed without announcing it to the realm's open tabs (see the
# .boxelignore step).

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[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.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[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>
@habdelra
habdelra requested a review from a team October 22, 2026 13:10
@habdelra
habdelra changed the base branch from cs-14190-deploy-push-changed-since to main October 22, 2026 14:01
@lukemelia lukemelia closed this Oct 22, 2026
@habdelra habdelra reopened this Oct 22, 2026
@habdelra

Copy link
Copy Markdown
Contributor Author

[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.

@habdelra
habdelra merged commit d2431b7 into main Oct 22, 2026
11 of 17 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants