Skip to content

ci: archive docs uploads for Vercel file limit - #16289

Merged
austinywang merged 1 commit into
mainfrom
feat-fix-main-ci
Oct 1, 2026
Merged

austinywang merged 1 commit into
mainfrom
feat-fix-main-ci

Conversation

@austinywang

@austinywang austinywang commented Sep 30, 2026 •

Copy link
Copy Markdown
Contributor

The nightly docs deployment started failing after the generated docs tree exceeded Vercel's 15,000-file request limit (15,060 files). The reusable deployment workflow now passes Vercel's supported --archive=tgz option, so the upload is sent as one archive and remains below the per-request file-count limit.

Validation:

  • git diff --check
  • python3 scripts/verify-local.py passed all applicable checks
  • tests/test_docs_deploy_auth_guard.py could not run because the checkout's Python environment lacks PyYAML

This fixes the Vercel upload failure. Separate failures on the same main run are already covered by #16094, #16265, and #16261.

Changelog: none

— unregistered


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need. Autofix is disabled.


Summary by cubic

Fixes the nightly docs deployment failing when the generated docs tree exceeded Vercel's 15,000-file request limit (15,060 files). The reusable deployment workflow now passes Vercel's --archive=tgz option, so the upload is sent as one archive and stays under the per-request file-count limit.

Written for commit 38a76a4. Summary will update on new commits.

Review in cubic

Summary by CodeRabbit

  • Chores
    • Updated production deployment packaging. This is an operational change only; it does not affect product features, appearance, or behavior. No changes to user workflows are included in this release. There are no other user-facing updates to report.

@github-actions

Copy link
Copy Markdown
Contributor

All contributors have signed the CLA ✍️ ✅
Posted by the CLA Assistant Lite bot.

@coderabbitai

coderabbitai Bot commented Sep 30, 2026 •

Copy link
Copy Markdown

Review in Change Stack →

Navigate logical layers of code changes, visualize relationships, and explore their blast radius.

Note

Repository guideline files applied to this review (1)
.github/review-bot-rules/swiftpm-package-resolved.md — configured

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Repository: manaflow-ai/cmux/.coderabbit.yaml

Review profile: ASSERTIVE

Plan: Advanced

Run ID: 340c0465-e672-401a-a545-b0c58e53b0b0

📥 Commits

Reviewing files that changed from the base of the PR and between b520727 and 38a76a4.

📒 Files selected for processing (1)
  • .github/workflows/docs-deploy-reusable.yml

Included review availability: This review used your included allowance. Your plan provides up to 10 included reviews per hour; 5 remain after this review.


📝 Walkthrough

Walkthrough

The Vercel production deploy command now passes --archive=tgz.

Changes

Production deploy

Layer / File(s) Summary
Add archive option
.github/workflows/docs-deploy-reusable.yml
The Vercel deploy command now passes --archive=tgz.

Priority: ➖ Normal

Estimated code review effort: 1 (Trivial) | ~3 minutes

Change: Bug fix

Merge Risk: ⚪ Minimal · up to 38a76

The nightly and release deployments use a supported archive option to compress uploads. No merge-blocking risk is identified.

Architecture Summary

Architecture risk: 🔵 Low · up to 38a76

The changed surface does not map to a changed system, dependency edge, entrypoint, or external dependency.

Changed systems: None identified.

Architecture concerns
No architecture-level concerns identified.

Review details

Before / after behavior

  • observed — Modified behavior in .github/workflows/docs-deploy-reusable.yml: The Vercel deploy command now passes --archive=tgz.
🚥 Pre-merge checks | ✅ 25
✅ Passed checks (25 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly identifies the CI change and its purpose: archiving docs uploads to avoid Vercel's file limit.
Description check ✅ Passed The description explains the failure, the workflow change, the resulting behavior, validation performed, and the unavailable PyYAML-dependent test. It also states that the change is internal-only. The…
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check. Docstring coverage is scoped to functions touched by this diff. Analyzed 0 functions across 0…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Cmux Cloud Persistent Session And Early Input ✅ Passed PASS: The authoritative diff changes only .github/workflows/docs-deploy-reusable.yml and adds --archive=tgz to a Vercel deployment command. It does not change Cloud terminal creation, cmux-tui tra…
Cmux Swift Actor Isolation ✅ Passed PASS: The reviewed diff changes only .github/workflows/docs-deploy-reusable.yml and adds Vercel's --archive=tgz option. It contains no Swift changes, so it cannot introduce or worsen Swift 6 actor…
Cmux Swift Blocking Runtime ✅ Passed The pull request changes only .github/workflows/docs-deploy-reusable.yml. It adds the Vercel --archive=tgz option and changes no Swift files or runtime synchronization behavior. The custom Swift b…
Cmux Browser Automation Off-Main ✅ Passed PASS: The pull request changes only .github/workflows/docs-deploy-reusable.yml by adding Vercel's --archive=tgz option. It does not change browser socket commands, WebKit/AppKit routing, worker po…
Cmux Expensive Synchronous Load ✅ Passed PASS: The review range changes only .github/workflows/docs-deploy-reusable.yml. It adds the Vercel --archive=tgz option and changes no Swift code or agent-history loading path. The custom check is…
Cmux Cache Substitution Correctness ✅ Passed The pull request changes only .github/workflows/docs-deploy-reusable.yml. It adds --archive=tgz to a Vercel deployment command. No production Swift, TypeScript, or JavaScript code changes occur, a…
Cmux No Hacky Sleeps ✅ Passed PASS. The PR changes only .github/workflows/docs-deploy-reusable.yml and adds the Vercel --archive=tgz argument. The rule explicitly excludes GitHub Actions workflow YAML, and the diff introduces …
Cmux Algorithmic Complexity ✅ Passed PASS. The PR changes only .github/workflows/docs-deploy-reusable.yml by adding the Vercel CLI flag --archive=tgz. It introduces no production Swift, TypeScript, JavaScript, shell, or runtime algor…
Cmux Swift Concurrency ✅ Passed PASS: The pull request changes only .github/workflows/docs-deploy-reusable.yml. It adds the Vercel --archive=tgz argument and introduces no cmux-owned Swift code or Swift concurrency pattern cover…
Cmux Swift @Concurrent ✅ Passed The pull request changes only .github/workflows/docs-deploy-reusable.yml by adding the Vercel --archive=tgz option. It introduces no Swift files, Swift functions, annotations, or call sites, so th…
Cmux Swift Package Boundaries ✅ Passed The pull request changes only .github/workflows/docs-deploy-reusable.yml. The authoritative diff contains no production Swift, SwiftPM, Xcode project, or workspace changes, so the Swift package boun…
Cmux Swiftpm Lockfiles ✅ Passed PASS: The PR changes only .github/workflows/docs-deploy-reusable.yml, adding Vercel’s --archive=tgz option. It does not change a SwiftPM package, Package.swift, .gitignore, an Xcode package re…
Cmux Swift Logging ✅ Passed PASS: The pull request changes only .github/workflows/docs-deploy-reusable.yml. It adds the Vercel --archive=tgz option and adds no Swift code or logging statements, so the Swift logging condition…
Cmux User-Facing Error Privacy ✅ Passed The only changed line adds --archive=tgz to .github/workflows/docs-deploy-reusable.yml. The file is a reusable GitHub Actions deployment workflow invoked by docs-channels.yml; it does not add a …
Cmux Full Internationalization ✅ Passed PASS: The PR changes only the operational GitHub Actions workflow by adding the literal Vercel configuration flag --archive=tgz. It adds no user-facing Swift or web text, metadata, API response, ren…
Cmux Swiftui State Layout ✅ Passed PASS: The pull request changes only .github/workflows/docs-deploy-reusable.yml and adds the Vercel --archive=tgz argument. It introduces no SwiftUI code, state, layout measurement, row subtree, or…
Cmux Architecture Rethink ✅ Passed PASS: The pull request changes only .github/workflows/docs-deploy-reusable.yml. It adds the Vercel --archive=tgz deployment option and changes no Swift code or architecture. The Swift architectura…
Cmux Swift Auxiliary Window Close Shortcuts ✅ Passed PASS: The pull request changes only .github/workflows/docs-deploy-reusable.yml by adding --archive=tgz to a Vercel deployment command. The authoritative diff contains no Swift changes and no cmux-…
Cmux Source Artifacts ✅ Passed The only changed path is .github/workflows/docs-deploy-reusable.yml. The diff adds a Vercel deployment option to a GitHub Actions workflow. This is an intentional configuration change, not a local/g…
Cmux No Test Or Debug Seam In Production Source ✅ Passed The pull request changes only .github/workflows/docs-deploy-reusable.yml. The authoritative diff contains no Swift files and no production Sources/ paths, so it cannot introduce a test or debug se…
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Commit to this branch
  • Create a new PR
  • Autopilot · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Autopilot is currently an internal CodeRabbit preview.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@austinywang
austinywang merged commit 0398322 into main Oct 1, 2026
57 of 58 checks passed
@austinywang
austinywang deleted the feat-fix-main-ci branch October 1, 2026 02:13
@github-actions

github-actions Bot commented Oct 1, 2026

Copy link
Copy Markdown
Contributor

Merge receipt for 38a76a489a: every check was green at merge (9 verified; 14 skipped by policy). Full suite runs on main after merge.

rustybret pushed a commit to rustybret/bmux that referenced this pull request Oct 1, 2026
90e1689 feat(ios): prefetch and remember task composer pickers (manaflow-ai#15797)
df1d958 Update computer use engine for unrestricted app access
210c429 Add an agent inbox quick view behind a feature flag (manaflow-ai#15888)
23b6447 Update computer use engine for unrestricted app access
0398322 ci: archive docs uploads for Vercel file limit (manaflow-ai#16289)

# Conflicts:
#	.github/workflows/docs-deploy-reusable.yml
austinywang added a commit that referenced this pull request Oct 1, 2026
* fix: keep cloud terminals alive after journal failure

* ci: archive docs uploads for Vercel file limit (#16289)

* Add an agent inbox quick view behind a feature flag (#15888)

* Add a durable agent message store with hook-friendly waiting

Messages to the agent in a cmux surface are stored with queued, delivered
and read receipts in an append-only JSON Lines file, validated so no
control characters can ride along, and rendered once for every delivery
path with a header that marks the body as another agent's words. Waiters
are continuations, so a long-poll from a hook never parks a thread.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* Deliver cmux agent messages through agent hooks, never keystrokes

cmux agent message <target> <text> stores a message for the agent in
another workspace or surface (agent.message.send). Claude Code gets it
through two new hooks instead of the terminal:

- hooks claude inbox-wait runs in the background (asyncRewake) after every
  session start and stop, long-polls agent.message.wait, and exits 2 with
  the message when one arrives. That wakes an idle session with the text
  as a system reminder and leaves the prompt box, and any half-typed
  draft in it, untouched.
- hooks claude inbox-drain on UserPromptSubmit attaches anything still
  queued as additionalContext when the human submits first. It fails open
  to {} and never exits 2, which would erase the prompt.

Delivery holds while the surface is waiting on a human (a question,
permission or plan prompt). agent.message.wait awaits a store
continuation on the socket worker, so a waiting hook never parks a
thread. Receipts (queued, delivered, read) go out on cmux events.

Codex handlers (inbox-drain, inbox-stop) are in place; wiring them into
the Codex launch schema is a follow-up. Remote relay stays denied.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* Document cmux agent message and point agents at it

cmux docs agents, the agent help group and the cmux-workspace skill now
say to use cmux agent message instead of typing into another agent's
terminal. docs/agent-messages.md covers delivery, limits and the socket
API; docs/events.md lists the new receipts. Strings are localized for
all nine macOS locales.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* Poll for agent messages instead of holding a socket connection

Addresses the review of the first pass:
- The Claude wake hook now checks agent.message.poll about every 2 seconds
  on a new connection, instead of a long poll that held one of the app's
  32 socket connection slots per session.
- The poll claims nothing; the hook claims right before handing messages
  to Claude, so a hook that died can no longer swallow them.
- The newest hook registers as the surface's poller; older ones (one per
  Stop) exit when superseded. Headless claude -p runs skip the inbox.
- The wait hook is also marked async, so a Claude Code without
  asyncRewake runs it in the background instead of blocking on it.
- A failed append never rewrites an existing message file.
- Options and -h after -- are message text; sender ids are canonical.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* Replace namespace enums in the agent message package

The package conventions lint rejects all-static namespace types:
validation moves to AgentMessageDraft.validated() and rendering to
[AgentMessage].agentPromptText.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* Test that a rendered agent message ends with its own id

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* End each rendered agent message with a line carrying its id

The chat view parses delivered messages out of agent transcripts. With a
bare --- as the end, a body quoting a message header could hide the real
message or fake its sender, and later hook output leaked into the body.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* Fail agent.message.send when the message can't be saved

AgentMessageStore.append now writes the journal record first and only
then adds the message to the in-memory inbox and fires onChange. An
encode, open, seek, write, or create failure throws
AgentMessagePersistenceError, and the socket command returns
storage_failed instead of reporting the message queued. A failed write
is truncated back off the file so a partial line can't swallow the next
record. State-change records stay best effort: losing one can only
repeat a delivery after restart.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix: close Claude hook settings string after rebase

* Deliver cmux agent messages to Codex through its hooks (#15313)

* Deliver cmux agent messages to Codex through its hooks

The UserPromptSubmit and Stop hook groups the Codex wrapper injects now
carry a second, direct handler: inbox-drain attaches queued messages to
the prompt the human just sent, and inbox-stop continues the turn with
them instead of going idle. The lifecycle handlers stay queued.

The previous schema moves to the exact recognized shapes, and the replay
sanitizer accepts the two-handler group only when both handlers are
cmux's. codex exec runs skip the inbox, as claude -p runs do.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* Test that value-taking Codex options do not hide codex exec

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* Test that the Codex agent message handlers fail open

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* Skip codex exec behind more options and fail open in message hooks

The headless check now knows every Codex option that takes a value, so
`codex --add-dir ../lib exec` no longer takes the pane's messages. The
agent message handlers answer {} when the CLI fails, so an unreachable
app does not show a failed hook on every prompt.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* Show cmux agent messages in the terminal chat view (#15338)

* Test that the chat view shows delivered cmux agent messages

Fixtures use the transcript shapes Claude Code 2.1.283 and Codex 0.154
write for hook context, stop feedback, idle wakes and stop continuations.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* Test that the chat view lists a terminal's queued agent messages

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* Show cmux agent messages in the terminal chat view

Delivered messages appear as "Message from <sender>" in the turn they
arrived in, read from the agent's own transcript so they survive a
sidecar restart. Queued messages show above the composer, read from the
app every 2 seconds while a page is open.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* Test the chat view against quoted, forged and trailing message text

Covers the review findings: a body quoting a header, a forged message
inside a body, hook output after a message, a task result quoting a
message, a Codex prompt recorded twice, a failed queued read, the running
state after a wake, and a sender name with replacement patterns.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* Parse agent messages by their id end line and tidy the queued view

Messages are read header by header and each ends at its own id line, so
quoted or forged text in a body and hook output after it stay out. Task
results are no longer parsed, a woken agent shows as running, Codex
prompts are not doubled by hook context, and a failed queued read keeps
the list and backs off. The queued panel scrolls past 30% of the view,
sender names are inserted literally, and the sessions list no longer
carries message bodies.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix: drop removed Dock localization entry

* ci: rerun full app validation

* fix: handle agent message main actor hop failures

* fix: keep agent message timeout helpers local

* fix: address agent message review findings

* test: define agent inbox projection behavior

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* test: track generated Claude hook groups

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* feat: add agent inbox quick view

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* test: cover agent inbox crash and reply path

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix: harden agent inbox quick view

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* test: cover agent inbox review regressions

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix: harden agent inbox quick view interactions

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix: keep agent inbox shortcut keymaps conflict-free

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* test: cover remaining agent inbox review items

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix: address agent inbox review items

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* test: add Agent Inbox dogfood tour

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* test: cover agent inbox focus notification window

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix: report the agent inbox hosting window

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix: compile reply gate assertions with Swift Testing

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* test: cover agent inbox review regressions first

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix: address agent inbox review feedback

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* chore: advance submodules with main

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* Fix main merge artifacts

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix: pass auto-naming config mode to provider overrides

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix: keep OpenCode path resolution in the CLI target

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* Update computer use engine for unrestricted app access

* fix: redact terminal output read failures

* test: preserve explicit shutdown assertion

* fix: identify terminal output read failures

---------

Co-authored-by: Austin Wang <austinwang115@gmail.com>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-authored-by: Lawrence Chen <54008264+lawrencecchen@users.noreply.github.com>
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.

1 participant