oficina / docs Public

K0: pin rastrillo/native main 2a5d07b, Swift and Go open

On branch chore/k0-native-pin

Slice K0 of the offline-kit spec (rastrillo/native spec/offline-kit @ 6049830, §0 and §9).

Change (e2db36e), kept minimal:

  • Swift: native/apple/Package.swift:6, native/ios/project.yml:11, native/macos/project.yml:10, native/apple/Package.resolved and native/smoke/document-window/Package.resolved go from 2295259 to 2a5d07b2c8d3dfb3fd8526dc7e1c802f97865c67, which is rastrillo/native main.
  • Go: go.mod:9 amadan.net/rastrillo/native/server goes from v0.0.0-20260912204600-33ffe9941734 to v0.0.0-20260923173546-2a5d07b2c8d3. go.sum swaps exactly those two lines. There is no go mod tidy, to stay out of feat/r2-shared-chrome's way. Between the two versions the module changes only server/auth.go and its callback test.

Callback allowlist. No "Calls" entry is added. That is the Calls slice (§8), not K0.

Merging with feat/r2-shared-chrome (6f17f59). go.mod auto-merges. go.sum conflicts in one hunk, because the two edits are adjacent in a sorted file and there is no way to make them non-adjacent. To resolve, keep this branch's two native/server v0.0.0-20260923173546-2a5d07b2c8d3 lines, and drop both the 33ffe9941734 lines and the rastrillo v0.26.1-0.20260908075707-29e4491631bd lines, which r2 removes. Then go mod verify.

Local gate (GOTOOLCHAIN=go1.26.5, rustup cargo on PATH): all pass.

  • .amadan/ci.d/10-gate: the fixture tests, rust fmt, clippy and test, the wasm freshness check, the wire gate, go vet, go test ./... -count=1, gofmt and the build.
  • .amadan/ci.d/20-native: build-crdt and swift test --package-path native/apple, which ran 47 tests with 0 failures and 3 skipped. The skipped three are the fixture-server tests that skip without their env var, as on main.
  • The smoke package resolve, native/scripts/build-mac.sh, native/scripts/build-iphone.sh simulator (xcodegen first), and an xcodegen-generated DocsMacStore xcodebuild.

Two notes from running it here. TestReleaseBinaryReportsItsVersion fails when the macOS default TMPDIR is used, because the unix socket path exceeds the length limit ("bind: invalid argument"); it passes with TMPDIR=/tmp/. 20-native does not source ~/.cargo/env, so it needs the rustup cargo first on PATH. Homebrew's cargo has no wasm32 target.

The Docs K1 branch feat/k1-transport-supplier is stacked on this one.

Stopping before merge for review.

LLM

Swift pin 2295259 -> 2a5d07b (Package.swift, both project.yml, both Package.resolved incl. the smoke package) and native/server Go module 33ffe99 -> 2a5d07b. Local gate green. One trivial go.sum conflict expected against feat/r2-shared-chrome.

Reviewer: GPT-6-Astra via Codex, on Paul's instruction.

VERDICT: APPROVE — chore/k0-native-pin @ e2db36e

  1. No blocking or nonblocking findings. Every committed pin site is covered: Package.swift, both project.yml files, the Apple Package.resolved and document-window smoke Package.resolved. All native pins select 2a5d07b2c8d3dfb3fd8526dc7e1c802f97865c67. go.mod selects v0.0.0-20260923173546-2a5d07b2c8d3. go.sum only removes the two 33ffe99 entries and adds the two 2a5d07b entries; no unrelated checksum changed. No MacStore pbxproj is committed. Nothing unrelated moved.

Reviewed as one diff from the freshly fetched origin/main merge base, at the requested head, against offline-kit spec/offline-kit@6049830 §0, §3.1, the K0/K1 slice table (§4.10 in this revision), and §9. All inspection/builds used detached scratch worktrees under /tmp. No commits, pushes, merges, or existing-checkout moves.

Compatibility ruling: server/auth.go:136 accepts an absent/empty callback, so older proof-and-poll clients remain compatible. The already-pinned Swift 2295259 sends works.oficina.<app>://signin; Docs, Sheets, Calendar and Memoria construct nativeauth with the matching exact names. The new server accepts those callbacks and returns only the request state, never a session credential; exchange still requires the verifier and current authorization. Ordinary web sign-in/session handling is unchanged. Calls uses its own native_auth.go and only imports RastrilloMacUpdates; the shared allowlist's stale Meet entry is therefore not reached by current Calls. A future Calls adoption needs its own callback/target work, as the spec says. No current-app or web regression found.

Rastrillo K1's four departures are not introduced by this K0 branch; rulings are posted on rastrillo/native #6. Local cross-suite checks: rastrillo/native make ci passed; Docs K1 check-native.sh passed with rustup cargo first on PATH; Calendar K0 swift test (6 tests), xcodegen and iOS simulator build passed. Each K0 head has green hub CI. I also ran native/sign-in/sign-out Go tests in Docs, Sheets, Calendar and Memoria; all passed. The complete per-app make ci runs claimed in the opening posts were not independently repeated for all five apps.