rdmsm4x-changelog-20260926-2320-rtty-freemium
Implemented RTTy Free plus the one-time Pro unlock on its isolated branch, preserving paid customers and existing data.
Host/scope: rdmsm4x only. Ticket TASK-20260926-72; DEC-20260926-17. Production source, no installation or release. Worktree: /Users/richh/dev/_worktrees/rtty-freemium-20260926; commit bede5fc7d73e1d9be6e618764871cc63c3f1a546; no merge/push/ASC or protected release-metadata changes.
Exact project files
- /Users/richh/dev/_worktrees/rtty-freemium-20260926/AGENTS.md
- /Users/richh/dev/_worktrees/rtty-freemium-20260926/Apps/RTTyStandard/Config/StandardSources.txt
- /Users/richh/dev/_worktrees/rtty-freemium-20260926/Apps/RTTyStandard/ProTestHost/ProTestHost.swift
- /Users/richh/dev/_worktrees/rtty-freemium-20260926/Apps/RTTyStandard/ProTests/ProStoreKitTests.swift
- /Users/richh/dev/_worktrees/rtty-freemium-20260926/Apps/RTTyStandard/RTTyStandard.xcodeproj/project.pbxproj
- /Users/richh/dev/_worktrees/rtty-freemium-20260926/Apps/RTTyStandard/RTTyStandard.xcodeproj/xcshareddata/xcschemes/RTTyProTestHost.xcscheme
- /Users/richh/dev/_worktrees/rtty-freemium-20260926/Apps/RTTyStandard/StoreKit/RTTy.storekit
- /Users/richh/dev/_worktrees/rtty-freemium-20260926/Apps/RTTyStandard/project.yml
- /Users/richh/dev/_worktrees/rtty-freemium-20260926/FEATURES.md
- /Users/richh/dev/_worktrees/rtty-freemium-20260926/Package.swift
- /Users/richh/dev/_worktrees/rtty-freemium-20260926/Project/SESSION-STATE.md
- /Users/richh/dev/_worktrees/rtty-freemium-20260926/Sources/RTTy/Services/CustomTargetPolicy.swift
- /Users/richh/dev/_worktrees/rtty-freemium-20260926/Sources/RTTy/Services/ProStore.swift
- /Users/richh/dev/_worktrees/rtty-freemium-20260926/Sources/RTTy/Stores/ObservationStore.swift
- /Users/richh/dev/_worktrees/rtty-freemium-20260926/Sources/RTTy/Views/DashboardView.swift
- /Users/richh/dev/_worktrees/rtty-freemium-20260926/Sources/RTTy/Views/MenuBarPanel.swift
- /Users/richh/dev/_worktrees/rtty-freemium-20260926/Sources/RTTy/Views/ProSheet.swift
- /Users/richh/dev/_worktrees/rtty-freemium-20260926/Sources/RTTy/Views/SettingsView.swift
- /Users/richh/dev/_worktrees/rtty-freemium-20260926/Tests/RTTyTests/FeatureInventoryTests.swift
- /Users/richh/dev/_worktrees/rtty-freemium-20260926/Tests/RTTyTests/ProEntitlementTests.swift
- /Users/richh/dev/_worktrees/rtty-freemium-20260926/docs/FEATURE_MATRIX.md
- /Users/richh/dev/_worktrees/rtty-freemium-20260926/docs/FREEMIUM.md
Additional durable records
- /Users/richh/dev/_handoff/rtty-freemium-20260926/SPLIT.md
- /Users/richh/dev/_handoff/rtty-freemium-20260926/HANDOFF.md
- /Users/richh/dev/_handoff/rtty-freemium-20260926/source-manifest.json and COMMIT.txt
- Test/build logs, generated PBX JSON, and light/dark PNGs in that handoff directory.
- /Users/richh/dev/PROJECTS.md (additive milestone note)
- /Users/richh/.agent-coordination/checkins/codex-rtty-freemium-20260926.json
- Temporary edit helpers /tmp/rtty_apply_freemium.py and /tmp/rtty_split.py; no source recovery data was removed.
Commands and verification
- swift test --disable-swift-testing, with writable CLANG_MODULE_CACHE_PATH and SWIFTPM_MODULECACHE_OVERRIDE: arm64 full suite 1,902 tests, 8 existing skips, 0 failures.
- arch -x86_64 xcrun swift test --disable-swift-testing --arch x86_64: same counts, 0 failures.
- xcodebuild test -project Apps/RTTyStandard/RTTyStandard.xcodeproj -scheme RTTyProTestHost -destination platform=macOS (local derived data, ad-hoc test-only signing): 2 StoreKit tests, 0 failures.
- xcodebuild build -scheme RTTyStandard (unsigned Debug): passed; source-policy PBX allowlist: passed.
- python3 script/check_feature_inventory.py --features FEATURES.md
: all 258 cited tests passed on both; 70 rows. - xcodegen generate --spec Apps/RTTyStandard/project.yml; git diff --check; explicit git add paths and AGENT_LLM=codex git commit.
- standard_project_test.sh is blocked by pre-existing VERSION/BUILD_NUMBER versus xcconfig drift; protected files unchanged as explicitly required.
- Light/dark Pro sheet render inspected. Full release gates and production paid-account grandfathering not claimed.
Preservation / undo / owner actions
Source rollback base: 296039520a17c2f7d1d3c8c3c52e194063f7649a; revert the freemium commit if needed. No installed app or user data was changed by a tier migration. The tier gate preserves archives/checks/settings and does not add analytics or receipt uploads.
Rich/release owner: create RTTy Pro non-consumable com.eastcoastscience.rtty.pro, price $29.99, add final Store-binary review screenshot, time Free download with release, submit first IAP with next binary. Full steps and grandfathering cutoff invariant (0.3.850 marketing version) are in HANDOFF.md. No unresolved design fork.
Apple Notes entry is pending publication; this file is the durable archive. Current harness is Background rather than Aqua; publication result is recorded in the handoff.