Skip to content

Build on the toolchain Forge is actually built with - #31

Merged
thousandflowers merged 2 commits into
mainfrom
fix/ci-build
Sep 5, 2026
Merged

thousandflowers merged 2 commits into
mainfrom
fix/ci-build

Conversation

@thousandflowers

Copy link
Copy Markdown
Owner

main compiles here and does not compile on macos-14, which is what CI uses. Three errors, all mine, all from a newer compiler being more permissive:

  • Hashable on RedactionCandidate was synthesised over a CGRect. Identity is the id anyway, so it is hashed and compared by id.
  • The pressure monitor's callback read a weak self from inside the task it starts — a mutable reference read twice. Bound once, strongly, the way AppModel already does it.
  • Making a thumbnail touches no shared state, so it does not belong to the main actor; the redaction sheet reads it from a layout closure, which is on no actor.

Test plan

  • swift test — 346 green locally
  • swift build -Xswiftc -strict-concurrency=complete — no warnings in the new files
  • CI green on macos-14 — waiting for this PR's run before merging

🤖 Generated with Claude Code

https://claude.ai/code/session_018H9CZxWumc3ryumgEHd578

thousandflowers and others added 2 commits September 5, 2026 23:45
Three things the newer compiler here accepted and macos-14 did not.

Hashable on a redaction candidate was synthesised over a CGRect, which
not every toolchain will hash. Identity is the id anyway, so it is
hashed and compared by id.

The pressure monitor's callback read a weak self from inside the task it
starts, which is a mutable reference read twice. Bound once, strongly,
the way the rest of the app does it.

And making a thumbnail touches no shared state, so it does not belong to
the main actor - the redaction sheet reads it from a layout closure,
which is not on any actor.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018H9CZxWumc3ryumgEHd578
…uage

The build runner is headless: Vision fails there with "Could not create
inference context", and Natural Language has no name model to answer
with. Both were being read as Forge getting it wrong.

The half that must always hold is kept and still asserted - a size is
not a person, and calling it one would put a black box over the wrong
thing.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_018H9CZxWumc3ryumgEHd578
@thousandflowers
thousandflowers merged commit 9a8071b into main Sep 5, 2026
1 check passed
@thousandflowers
thousandflowers deleted the fix/ci-build branch September 5, 2026 21:55
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