# Stilllight · verification record

8–9 September 2026 · Xcode 26.6 (17F113), iOS 26.5 simulator runtime. Minimum deployment target is iOS 17; that runtime is not installed, so minimum-OS runtime behaviour is not claimed from the deployment setting alone.

## Completed local evidence

- **26 core tests pass.** The actual shared economy code covers opening purchases, bulk pricing, companion milestones, automation, resonance, capped offline integration and boost expiry, clock rollback and duplicate settlement, studies, both prestige layers, persistent constellations, cosmetic spending, transaction idempotence, invalid states, primary/backup recovery and failed-write protection.
- **Eight StoreKit app-host tests pass** in Xcode's local environment. Both currency packs deliver exact persistent amounts. All permanent products survive both resets and restore. Ask to Buy, unfinished delivery recovery, refund/revocation, cancellation, unavailable purchases, and a verified transaction held unfinished until saving recovers are covered. No real payment was made.
- **Six app-host model/audio tests pass.** All ten audio assets load, gameplay stems last exactly 160 seconds, player positions remain synchronised, background pause/resume and interruption resume flags behave correctly, volume zero works, offline settlement and preferences persist, damaged saves are preserved, failed writes roll back, and Quiet Skies grants its reward without presenting an ad.
- **Seven UI tests pass on iPhone 17 Pro Max and iPhone SE (3rd generation).** Opening taps and first-companion purchase/relaunch; persistent Night/haptics settings; Reflection and Renewal confirmation/cancellation; shop metadata and five products; largest accessibility text navigation; automatic accessibility checks; and a bounded tap sequence with CPU/memory measurements. The large-iPhone complete run contains the 14 app-host tests plus these seven UI tests. The final small-iPhone run contains the seven UI tests.
- A final styling correction gives native segmented controls readable dark chrome while preserving the device-following appearance. Accessibility, both prestige flows and marketing/shop captures were rerun on both sizes after that correction: **three further UI tests pass per size**. Screenshots are genuine, unedited app captures; per-file result-bundle provenance is included beside them. Transient collection notices are allowed to clear before marketing captures.
- **Two Release-configuration UI tests pass** on iPhone 17: ordinary opening/companion purchase/relaunch, and unavailable advertising returning a clear message while core play remains usable. This scheme contains neither a StoreKit test catalogue nor Debug gameplay fixtures.
- Device-following appearance was independently checked on the SE simulator: changing system appearance from light to dark without relaunch changed the navigation background from RGB 19/21/36 to 6/8/14. Raw captures and measurements are in `Release/QA`. Manual Night selection and persisted preferences are covered separately.
- Three deterministic thirty-day economy policies complete with valid states and no purchases/videos. First constellation is approximately seven minutes; first Reflection approximately seven and a half. All eight constellations remain achievable with twice-daily visits. See BALANCE.md for assumptions. This is model evidence, not a human retention study.
- Original audio masters have measured duration, peak/RMS and zero loop-boundary discontinuity. The complete three-layer mix peaks at approximately -11.62 dBFS. These checks establish usable files and playback behaviour, not subjective physical-speaker listening quality.
- **51 release-asset checks pass**: original images, 1024-square icon, screenshot dimensions, ten playable masters, five product records and field lengths, privacy manifest and required documents. The validator deliberately reports submission readiness as false while external gates remain.

## Accessibility and performance scope

The automatic audit covers contrast, hit regions, meaningful descriptions and traits at the top and one scrolled position of Tend, Grow and Sky. It excludes only contrast reports for static text proven to belong to the scroll view whose frame is partly or wholly outside its visible bounds; excluded labels and frames are logged. Fully visible text, controls, descriptions and traits are not blanket-excluded. This does not certify every possible state or replace manual VoiceOver testing.

The final large-simulator five-tap sample averaged approximately 70.3 MB peak physical memory and 0.184 seconds CPU time. Simulator measurements include the automation environment and have no physical-device regression baseline. They do not establish frame rate, battery life or thermal behaviour on a phone.

Visual review corrected an initially blank SpriteKit surface by using an explicitly managed SKView and screen compositing. Final title, star/companions, Grow, Sky, Night and large-text captures were inspected. Early broken-render captures are excluded from release screenshots.

## Build and distribution evidence

`Stilllight-1.0-V1.xcarchive` was successfully rebuilt from the final source using the configured development team. This is a **development-signed Release archive**, not an App Store distribution package. Its provisioning profile grants `get-task-allow`; successful distribution export must replace that profile/signature and remove the entitlement.

An App Store export attempt failed with Xcode's exact account-dependent errors: `No Accounts`, `No signing certificate "iOS Distribution" found`, and `No profiles for 'com.gallaxgames.stilllight' were found`. No distributable IPA, App Store upload or processing result is claimed.

An empty production ad ID originally triggered Google's SDK startup exception. Default Release now compiles out the advertising adapter and does not link its startup implementation. The real adapter remains in Debug with Google sample identifiers. A build check rejects enabling Release ads with missing/sample IDs or missing linker settings. Runtime unavailable handling and the Quiet Skies bypass are tested. Dedicated production AdMob/UMP configuration and test-device ad delivery/consent still require external setup.

## Website evidence

The existing Gallax Games website project builds, passes TypeScript, and has no ESLint errors (six existing Fast Refresh warnings in shared components). Its local HTTP check covers 36 routes and 114 local pages/assets with no failures. Stilllight information, genuine screenshots, two soundtrack previews, support, privacy and the document library are integrated into that existing project.

Fresh headless browsers verified the local page, real navigation from game to document library to privacy, desktop and 390-pixel mobile layouts, no horizontal overflow, no missing images, no framework overlay and no browser errors. Both AAC previews decode and play, initially paused with autoplay disabled. Playback verification was muted; it is not a subjective listening test. Browser snapshots and screenshots were inspected. These clean test browsers did not access the owner's signed-in browser profile.

The website upload was confirmed on GitHub and in the connected Lovable project at commit `1ff0a9e94f798becea92317e8430064bdd8437ad`; its document manifest was read back. Lovable remains private and unpublished. The intended Vercel hosting account is not connected: the CLI reports Logged out and the connector returned no teams. Both gallaxgames.com and www still returned HTTP 403 on the final check. No DNS change or publication of the earlier private Emberwake support site has been made. See WEBSITE_DELIVERY.md for the source-upload evidence; a Git push does not establish public custom-domain availability.

## Remaining external and hardware checks

No live Stilllight App Store Connect record, production product availability, Sandbox/TestFlight round trip, production AdMob/UMP setup, public custom-domain policy availability or Apple approval is established. The paired physical iPhone was listed as unavailable. Speakers/headphones, real call/route changes, haptics, manual VoiceOver, minimum-OS runtime, sustained thermal behaviour and battery use remain hardware checks. Ordinary gameplay, saving, prestige, audio lifecycle and local purchase handling are implemented and locally verified; these external gaps must not be described as complete.

Use RELEASE_CHECKLIST.md for the remaining steps. Final App Store privacy answers must reflect the distributed configuration and any enabled SDK behaviour. The app's own privacy manifest is not by itself a whole-app “Data Not Collected” declaration. References: https://developer.apple.com/app-store/app-privacy-details/ and https://developers.google.com/admob/ios/privacy/data-disclosure.
