Skip to content

base red: compile, #31087's test Link class is fileprivate so @Observable can name it - #31117

Merged
lawrencecchen merged 1 commit into
feat-cmux-nextfrom
fix/base-red-cloudstart-link-private
Nov 1, 2026
Merged

lawrencecchen merged 1 commit into
feat-cmux-nextfrom
fix/base-red-cloudstart-link-private

Conversation

@lawrencecchen

@lawrencecchen lawrencecchen commented Nov 1, 2026 •

Copy link
Copy Markdown
Contributor

Fixes #31087

Base red (compile, priority zero): the CmuxNext test target does not compile at the feat tip (tip watcher STATUS 3916, job 93d8d8e613bc7df8e78570b6 at 6dee40a):

CloudStartChatMachineTests.swift:224:2: error: 'Link' is inaccessible due to 'private' protection level (in macro expansion @Observable:1:38)

#31087 added @MainActor @Observable private final class Link nested in the test suite. The @Observable macro emits an extension at file scope that names the type, and a private nested type is not visible there. fileprivate makes it visible to that extension and still keeps it out of every other file.

One word in one test file; no product code.

Observed / Not run

  • Observed: the compile error in the tip watcher's job; prepush-gate.py: no new violations.
  • Not run yet: the fleet compile at this head (follows in a comment).

Changelog

none


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


Summary by cubic

Fixes #31087 by changing the Link test class from private to fileprivate so the CmuxNext test target compiles.

The @Observable macro emits a file-scope extension that names the type, and a private nested type isn't visible there. fileprivate keeps the type out of every other file while allowing the macro's extension to reference it. No product code is affected.

Written for commit d92da50. Summary will update on new commits.

View guided diff Turn on auto-fix

…servable macro can name it

CmuxNext test compile at the feat tip 6dee40a (job 93d8d8e613bc7df8e78570b6):
CloudStartChatMachineTests.swift:224:2: error: 'Link' is inaccessible due to 'private' protection level
(in macro expansion @observable). The @observable macro emits an extension at file scope that names the
type; a private nested class is not visible there. fileprivate keeps it out of every other file.
@github-actions

github-actions Bot commented Nov 1, 2026 •

Copy link
Copy Markdown
Contributor

cmux status (one comment, edited in place; each line is updated by the job that owns it)

Review d92da50: HQ feed card · gallery before/after runs · checks

App of this head (app.zip, kept 1 day)

gh workflow run reload-build.yml -R manaflow-ai/cmux --ref feat-cmux-next -f tag=pr31117 -f ref=fix/base-red-cloudstart-link-private -f platform=macos -f backend_mode=local

Shipped in:

@lawrencecchen

Copy link
Copy Markdown
Contributor Author

Review (subagent, correctness first): SHIP at d92da50

  • One-word change (private to fileprivate) on the nested Link in CloudStartChatMachineTests.swift; the diff has nothing else.
  • Minimal and correct: @Observable expands to a file-scope extension ...Link: Observable, which cannot see a private member of the enclosing struct. fileprivate is the narrowest level that fixes line 224's error, and the type stays unreachable from other files.
  • Other Link names in the test target (CloudMachineSecretsTests) are qualified as CloudMachineSecrets.Link, so nothing else refers to this one.

@github-actions github-actions Bot added the risk:low Risk tier (docs/ci/risk-tiers.md) label Nov 1, 2026
@teamleaderleo

Copy link
Copy Markdown
Collaborator

Thanks for catching this. #31087 was ours: we merged it before its swift test reported.

We checked the diff against #31087's test: the @Observable macro adds an extension outside the suite that names Link, so fileprivate is the right fix, and nothing else in #31087's test needs it. We're holding our revert of #31087 so as not to duplicate this, and will watch it land.

@lawrencecchen

Copy link
Copy Markdown
Contributor Author

Fleet compile at d92da50 (recipe 2, --package CmuxNext --app): job 75cf911a62f0046ca3e59b1a: CmuxNext ok, app ok, cmux-tui ok. The tip's compile red (STATUS 3916) is gone at this head. (lead)

@lawrencecchen lawrencecchen added the ready-to-land Reviewed at this head; next-autoland merges it into feat-cmux-next when its only reds are base reds label Nov 1, 2026
@lawrencecchen
lawrencecchen merged commit 1d9d0c8 into feat-cmux-next Nov 1, 2026
191 of 202 checks passed
@lawrencecchen
lawrencecchen deleted the fix/base-red-cloudstart-link-private branch November 1, 2026 16:29

This branch was previously deployed

1 inactive deployment
ci-routing-agent — d92da509 Deployed Nov 1, 2026 by lawrencecchen via wait for same-key tree publisher #96809
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ready-to-land Reviewed at this head; next-autoland merges it into feat-cmux-next when its only reds are base reds risk:low Risk tier (docs/ci/risk-tiers.md)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants