chadtmiller.com/knotless
git that lives in your Atmosphere account
The iOS check holds writes to lexicons, and words to each pull state
MergedThis pull moves the iOS app's writes and merge-state wording into Writes.swift and Standing.swift, which build on Linux. check-models.sh now holds each write to its lexicon and each merge state to its words. The ejected reason is rewritten in plain words. The login test now reads the team, bundle id and associated domains from ios/project.yml and the entitlements file.
I read the whole diff and found nothing that must change. Standing.ejected strips the older runner's command and the commits in the right order. Its output on the sample reason matches the expectation in main.swift, and Standing.of and canQueue keep the old MergeSection logic. Client.call is now private, so every write goes through Write.
I couldn't run any of it. At this head, ios is still queued, test is queued, and check and e2e are running; docs passed and the rest were skipped. That includes ios and the Rust assertion, which the body says are first runs.
One small thing: ios.yml now depends on the uses: steps, but its paths list doesn't include .knotless/uses.lock. docs.yml and web.yml list it. A change to a step's pin wouldn't run this check on a pull.
The one new commit, cd0429d, answers the ios failure at the earlier head. That run failed at node / needs because the Swift image has no curl. The commit adds a tools step that installs curl, ca-certificates and xz-utils with apt-get before the Node step. That is a sound fix. It assumes the image runs as root, which swift:6.2 does by default.
I couldn't confirm it works. At this head, ios, test, check and e2e are all still queued. The earlier ios run never got past the Node step, so the models step has not run on Linux yet. Watch that first run.
My earlier note is still open, and it is small: ios.yml's paths list doesn't include .knotless/uses.lock, though the workflow now depends on uses: steps. docs.yml and web.yml list it. A change to a step's pin would not run this check on a pull.
8 passed, 2 skipped
- The iOS check holds writes to lexicons, and words to each pull state
- main
What changes
An ejected pull says why in plain words. It read
its batch failed its checks at 6f89484c63a3, on main at 226488be4afa: test (failure). It now says "Taken out of the merge queue", then "Its batch failed its checks: test (failure)". The page's own removal of an older runner's command is kept.The
ioscheck covers more. The app's writes and what it says of a pull move out of the views, intoios/Knotless/API/Writes.swiftandStanding.swift, which build on Linux. The check now holds each write to its method's lexicon, and each state ofgetMergeStatusto its words and whether the queue is offered, with no line that reads like the command line. It needs Node and the harness's packages for the lexicons.The login test holds the server to the app's build. It reads the team, bundle and associated domains from
ios/project.ymland the entitlements file, and compares them with what/.well-known/apple-app-site-associationanswers.webcredentialsgoing missing from either side now failstest.Why
Three bugs reached a phone that these would have caught:
webcredentialsmissing from the association, the command line's words in the merge section, and the queue offered to a pull it would refuse. The new write check also caught a requiredbodyleft out while this was written.This doesn't run the app against a server. That would need Rust, a PDS and Swift in one image, for writes the pages' flows already run through to the PDS (
harness/e2e/flows.spec.mjs), and the login test already uses the app's session as a cookie. So a write's name and fields are checked here and what it does is checked there.How it was checked
ios/check-models.shpasses on a Mac, and fails on a misspelt method name. The ejected and failed states were looked at withjust ios-look. The app builds. Linux and the Rust test are this pull's first run of each.Shortcomings
Queries aren't held to their lexicons, only writes. Taps and layout still have no check, as Xcode needs macOS:
just ios-lookis the way to see them.🤖 Generated with Claude Code