rdmsm4x-changelog-20260903-1816-rtty-build48-fleet-release-and-device-registration
[2026-09-03 18:16:18 EDT · rdmsm4x] — session window 17:11 to 18:16 EDT, claude@rdmsm4x dev-92 (session_01B5a6z5U9RfPe8XZQSpnJc6). Continues the two earlier changelogs of 2026-09-03 (13:39 Build 47 gate/canary/archives; 15:52 Build 48 candidate and decisions).
Summary: With Rich's decisions recorded (DEC-20260903-02..06), the four missing Macs and joey16pro were registered on the Apple Developer team through the portal, the Mac development profile was regenerated to cover all six Macs, and RTTy 0.3.826 Build 48 (native in-process ECSNetTop telemetry, desktop CloudKit) passed the nine-gate release QA, was deployed with armed rollback and accepted on all six Macs, cleaned up with checksum-backed archives, and audited. ecs0lib PR #4 and RTTy PR #7 are merged. FEAT-20260902-17 is resolved.
Scope (hosts changed)
- rdmsm4x: writer-tree commits; provisioning profile
regenerated (old ones moved to release backups); Build 48 installed in
/Applications (replacing Build 46, which is archived);
LaunchServices/firewall hygiene; release artifacts under
~/dev/_handoff/rtty-native-nettop-20260903/release/build48-6c81a06/. - rdmbair15m5, rdmbair13m5, jdmbair13m5, rdmpw3265m,
rdmpw3275m: Build 48 installed in /Applications; previous build
archived to
/Users/richh/FleetRecovery/rtty-build48-cleanup-20260903/and removed; transfer ZIPs in /private/tmp removed; one LaunchServices registration and one firewall entry each. - Apple Developer team ZU2882L4HT: five devices registered (see below). GitHub: RTTy PR #7 merged to main (17d2855a413dbd0f987e2ce9f0da03699334163d); ecs0lib PR #4 merged earlier (6d620dcc). Mirrors (git.ecs0.net fleet, GitHub backup) fast-forwarded.
Devices registered (portal, single-device form; the bulk upload parsed every ID as blank)
| Name | Identifier | Type |
|---|---|---|
| rdmbair13m5 | 00008142-001948160209401C | Mac |
| jdmbair13m5 | 00008142-000168E01489401C | Mac |
| rdmpw3265m | 2ED62535-C64C-528D-9592-F8EEFEBC80EB | Mac (Intel) |
| rdmpw3275m | C819BD90-6D6F-50F5-9793-E31E50D0AE32 | Mac (Intel) |
| joey16pro | 00008140-0008195C2193001C | iPhone 16 Pro |
Not registered: rdawU3 (the supplied 48-hex string is not a UDID;
portal truncated it and resolved no model), rdipadM4, rdavp1 (Rich will
do these). Quotas after: Mac 94/100, iPhone 97/100 remaining. Record:
release/build48-6c81a06/provisioning/devices-registered-20260903.md.
Commits (writer tree, branch codex/rtty-native-nettop-20260903, now merged into main)
1e1b61aPrepare RTTy 0.3.826 build 48 candidate (15:5x).6c81a06Record Build 48 candidate gate pass and gate-8 intermittency (deployed commit).220859eRecord Build 48 six-host acceptance, cleanup, and audit evidence (docs/release-evidence/build-48/fleet-deployment-and-cleanup-2026-09-03.md, RELEASE_HISTORY, SESSION-STATE).- Merge: PR #7 → main
17d2855.
Verification evidence (all under release/build48-6c81a06/, each log with a separate .rc)
- Profile:
provisioning/— new Mac Team Provisioning Profile 9d6a4fb0-44e7-40c4-aca0-f252bddecd51 (created 21:39:58Z, six ProvisionedDevices), file sha256 afadeedae4c343815a3c3631bcaaad2621663bab546d03477ecdd5facd108272. Regenerated by the auto-provisioning probe after moving the cached two-Mac profile aside (first probe run reused the cache: logged). - Gate:
logs/qa_release.logPASS all 9, rc 0, 17:40:20-17:43:28 EDT, native 794/799, Intel 794/799, 0 failures. - Direct ZIP
artifacts/RTTy-direct-0.3.826-build48-6c81a06.zipsha256 a251952642b5fd015ba503a685835ff32ce73bb4d785eb179a0aef116566600f; exe sha256 d15cbcfbb3861eb21575558ba9123162a828285e6aaeac5f94996b2c2024aa65; codesign strict deep rc 0. - Deploy receipts
receipts/<host>-deploy.txt: all STATUS=accepted; accepted after 43/59/55/54/54/54 s; 4 ping children, 0 nettop children, native statistics advancing; rollback armed (Build 47 on rdmbair15m5, Build 46 elsewhere). - Cleanup receipts
receipts/<host>-cleanup.txt: STATUS=cleanup-accepted x6; 7 rollback archives hash-verified on host and after copy-back (legacy-artifacts/<host>/); transfer ZIPs removed only on hash match. - Final audit
receipts/<host>-final-audit.txt: STATUS=final-audit-accepted x6; rdmsm4x REGISTRATIONS=3 1 2 with both stale entries under archive roots, printed (ISSUE-20260903-34). - Standard archive at 6c81a06 (verifier 1e1b61a): construct/verify/round-trip rc 0; ZIP sha256 aff36928a3f87c99b907a12eeb7ede7c4be795047b3ee29c857669eb7ff7df8a. Mobile unsigned archive rc 0; ZIP sha256 6f0507a32ee7c8d3c7d93d1d1a09d46caed662f8bb5c138a6a17983847475021.
Commands (rerunnable)
zsh release/build48-6c81a06/tools/deploy_build48_fleet.zsh HOST
zsh release/build48-6c81a06/tools/rtty_build48_cleanup.zsh HOST
ssh HOST /bin/zsh -s -- HOST < release/build48-6c81a06/tools/rtty_build48_final_fleet_audit.zsh
xcodebuild -project RTTyDirectProvisioning.xcodeproj -scheme RTTyDirectProvisioning -configuration Debug -destination generic/platform=macOS DEVELOPMENT_TEAM=ZU2882L4HT CODE_SIGN_STYLE=Automatic -allowProvisioningUpdates clean build # probe project preserved under release/build47-c9208eb/tools/direct-provisioning-probe/
Backups / undo
- Per host: the previous build is in
/Users/richh/FleetRecovery/rtty-build48-cleanup-20260903/RTTy.app.rollback-build46-6c81a06.zip(rdmbair15m5: dot-prefixed names, Build 46 and Build 47), with .sha256 and .manifest; copies underrelease/build48-6c81a06/legacy-artifacts/<host>/. Undo:pkill -x RTTy; ditto -x -k <zip> /tmp/x; sudo mv /Applications/RTTy.app /Applications/.RTTy.app.rejected-build48; sudo mv /tmp/x/RTTy.app.rollback-build46-6c81a06 /Applications/RTTy.app; open /Applications/RTTy.app. - Profiles moved (not deleted):
release/build48-1e1b61a/provisioning/backup-profiles/(8a952283 two-Mac Mac profile) andrelease/build48-6c81a06/provisioning/backup-profiles/(2ca6ad2c net.dataroo.RTTy.mobile). Registered devices cannot be un-registered without consuming the year's slot (Apple). - Git: no force push, no history rewrite; PRs merged with merge
commits; canonical
/Users/richh/dev/apps/RTTyand/Users/richh/dev/lib/ecs0libcheckouts untouched (they still need agit pullby their owners).
Defects found and fixed during the run (all fail-closed)
- cleanup v1.0: space-separated hash list split over ssh (recovery dir mis-named; fixed v1.1, dir renamed). v1.2: dot-prefixed archive names hidden from globs.
- zsh: a loop variable named
pathwiped PATH for one shell (memory saved: zsh-path-variable-is-PATH). - audit v1.0/v1.1: rdmsm4x's two archived LatencyBar copies re-register within a minute (ISSUE-20260903-34); v1.1b prints and tolerates stale registrations only under archive roots; a v1.1 receipt from an unparsed script was discarded (kept as -run3-unparsed).
Tickets
- FEAT-20260902-17 RESOLVED with evidence. DEC-20260903-02..06 resolved with Rich's choices. ISSUE-20260903-33 (gate-8 relaunch window) and ISSUE-20260903-34 (archived copies re-register) OPEN, low.
- Bus: 20260903-121636-DBF71D16 thread carries the full lifecycle.
Outstanding owner actions
- Register rdipadM4, rdavp1, and the Apple Watch Ultra 3 with real UDIDs (Xcode Devices window shows them once paired; Developer Mode on each).
- Physical iPhone/iPad CloudKit and notification validation (DEC-20260903-03).
- Pending ledger row (no codex_links note found in Notes on this Mac): https://github.com/richhdoty/RTTy/pull/7
No secrets in this record.