Emit the app catalog's connector symbol at SF Symbols 6 too - #344
Merged
Ryanmello07 merged 1 commit intoSep 9, 2026
Merged
Conversation
CI has been red on main since 2026-09-03. Every run fails in the same
place, before any artwork is read:
error: Template format 7.0 is newer than the version that this
software supports (6.0)
app/network/Assets.xcassets:./ur.symbols.connector.fill.symbolset:
The SVG file provided for the symbol image set is not suitable
The build dies there, so three steps never run at all: the extension size
budget, the whole macOS leg of a check named "iOS + macOS", and the unit
tests. Inside the iOS step the app target is never compiled either -- its
Swift task is scheduled and cancelled milliseconds later -- so main has
had no compile coverage of the app, and no test coverage at all, for six
days and roughly 25k lines.
This is a regression of a fix that already landed. urnetwork#338 downgraded the
symbols to Template v.6.0 and added gen_connector_symbols.py, whose
docstring states the constraint: CI pins Xcode 16.4 and its actool
rejects a newer template outright. That fix generated only the widgets
catalog. A later SF Symbols 7 export landed a fresh copy of the same
symbol in app/network, which nothing here owned, so the constraint
silently did not apply to it.
Regenerate that copy from the same script. The diff is the version stamp
and the SF Symbols 7 style attributes -- motion groups and layer tags,
which the pinned toolchain cannot read anyway; not one path element
changes. Verified by generating into a temp directory and diffing: the
script reproduces the committed widgets catalog byte for byte, so its
output is exactly what has been building in CI all along.
Also record in the docstring that TWO catalogs carry these symbols and
that both are subject to the 6.0 rule, with the commands for each.
Generating only one of them is precisely how the constraint was lost.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01AWV4MaF9JBcQppSX9UxATa
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
CI has been red on
mainsince 2026-09-03Every run fails in the same place, before any artwork is read:
It hides more than one red check
The build dies in the first of four post-SDK steps, so three never execute on any run:
Check the network extension size budget,Build for macOS (unsigned)— the entire macOS half of a check named "iOS + macOS" — andRun unit tests on the iOS Simulator. The recurringNo files were found with the provided path: apple/app/build/networkTests.xcresultwarning is a symptom of that, not a second defect.And inside the iOS step, the app target is never compiled.
Ld …/URnetwork.app/URnetworkappears zero times in the logs, andSwiftCompile … URnetworkis announced 30–350 ms before exit 65 — scheduled, then cancelled by theactoolfailure. A whole-module compile of 238 files does not happen in 30 ms; the much smaller widgets module takes 5–16 s.URnetworkWidgetsandURnetworkVPNdo compile and link, so the failure is narrowly the app target plus everything downstream of it.So
mainhas had no compile coverage of the app target and no test coverage at all for six days and roughly 25,000 lines.This is a regression of a fix that already landed
#338 downgraded these symbols to
Template v.6.0and addedapp/widgets/Assets.xcassets/gen_connector_symbols.py, whose docstring already states the constraint — CI pins Xcode 16.4 atbuild-and-test.yml:93and itsactoolrejects a newer template outright.That fix generated only the widgets catalog. A later SF Symbols 7 export landed a fresh copy of the same symbol in
app/network, which nothing owned, so the constraint silently did not apply to it. Two catalogs carry this symbol; one was protected.The change
Regenerate the
app/networkcopy from that same script. The diff is the version stamp and the SF Symbols 7 style attributes —-sfsymbols-motion-group,-sfsymbols-layer-tags,-sfsymbols-draw-reverses-motion-groups— which the pinned toolchain cannot read anyway. Not one<path>element changes, andContents.jsonis untouched.I verified the script is a faithful source rather than trusting it: generating into a temp directory reproduces the committed widgets catalog byte for byte, so its output is exactly what has been building in CI all along. Only the
.fillsymbolset is copied across —app/networkdoes not carry the outline variant and this does not add one.The docstring now records that two catalogs carry these symbols and both are subject to the 6.0 rule, with the command for each. Generating only one of them is precisely how the constraint was lost.
Trade-off
The SF Symbols 7 motion-group and layer-tag metadata is dropped from this copy. It is unreadable on Xcode 16.4 and inert on every shipping OS. If symbol motion animation is wanted later, those attributes come back together with moving the Xcode pin — which is a deliberate, documented pin matching
objectVersion 77/LastUpgradeVersion 1620, and not something to change for a one-file problem.Verification
Builds clean for iOS locally, and that build gets past the asset catalog and compiles the full app target.
Being straight about the limit: my local Xcode is 27, which reads
v7.0happily, so a green local build does not by itself prove the fix. The evidence that it does is that this file is now byte-identical in form to the widgets copy that CI has been compiling successfully for weeks. This PR's own run is the actual proof — and it should be the first run since 2026-09-03 to reach the app-target compile, the macOS build, the size gate and the test suite. Expect it to take noticeably longer than the current ~7 minutes, and do not be surprised if something further back in that 25k-line window surfaces once the build can finally get there.🤖 Generated with Claude Code
https://claude.ai/code/session_01AWV4MaF9JBcQppSX9UxATa