Archived
fix: close Nearlight release blockers
This commit is contained in:
1 parent
5577162594
commit
b7cec80a99
7 files changed
+310
-179
No files matched your search
+74
-65
@@ -1,77 +1,86 @@
|
||||
# Verification — 2026-09-08
|
||||
# Verification — 2026-09-12
|
||||
|
||||
## Scope and implementation
|
||||
## Scope
|
||||
|
||||
The requested model migration was canceled: Qwen 2.5 remains configured.
|
||||
The native redesign separates Talk, Music and Activity; simplifies the welcome
|
||||
and connection controls; supports light/dark appearance and Dynamic Type;
|
||||
adds recoverable error states; and gives transcript clearing explicit confirmation.
|
||||
The Impeccable native-iOS guidance informed system controls, hierarchy, readable
|
||||
spacing and touch targets. Settings, transcripts and task updates are observed
|
||||
directly so asynchronous changes render promptly.
|
||||
Qwen 2.5 remains configured; the canceled subscription-login migration was not
|
||||
revived. The embedded music player was removed by user decision. The current app
|
||||
is the Astra-designed **Nearlight** native interface with shared Talk and Activity
|
||||
tabs, adaptive semantic styling, the Lightwell conversation indicator, rebuilt
|
||||
conversation controls, readable transcripts, actionable failure states, explicit
|
||||
Settings saves, and revised Activity/detail surfaces.
|
||||
|
||||
Music fixes include standalone control requests, current download metadata,
|
||||
visible failures, pinned artwork, server-change cleanup, cached AAC delivery,
|
||||
and correct AVFoundation content-type identifiers in the pinned resource loader.
|
||||
## Current iOS evidence
|
||||
|
||||
## Evidence
|
||||
Project: `Voice.xcodeproj`; scheme: `Voice_iOS`; simulator: iPhone 17 Pro
|
||||
`AFDA137E-1657-428E-BF01-E5CD7989772C`.
|
||||
|
||||
Project: `Voice.xcodeproj`; scheme: `Voice_iOS`; simulator: iPhone 17 Pro.
|
||||
- Full combined simulator run: **50 passed, 0 failed, 1 live skip** in 104.9
|
||||
seconds. It includes unit/state tests and five offline UI scenarios.
|
||||
- The offline UI scenarios cover navigation/offline recovery; persisted voice and
|
||||
server validation; normalized same-address and changed-address save feedback;
|
||||
transcript clearing and Activity details; restored-history reading position and
|
||||
explicit Latest recovery; and accessibility-size navigation.
|
||||
- A second targeted run after the final VoiceOver eligibility strengthening passed
|
||||
`testRestoredTranscriptStaysAtTopUntilLatest`: **1 passed, 0 failed**.
|
||||
- Fresh runtime inspection showed the long restored transcript at its beginning
|
||||
with the **Latest** affordance visible. The regression tapped Latest and verified
|
||||
the final row became visible.
|
||||
- GPT-6 Astra re-read its design specification and prior findings, inspected the
|
||||
final source, and performed an isolated Settings runtime reproduction. Its
|
||||
round-four verdict was **PASS**: reading eligibility, ready-session microphone
|
||||
recovery visibility, and save-confirmation lifetime were resolved; the earlier
|
||||
selection and pending-Send fixes remained intact.
|
||||
- Astra's Settings reproduction saved ` https://127.0.0.1:2 ` using isolated
|
||||
UI-test preferences. Settings stayed open, the field normalized, and the
|
||||
checkmark plus “Server address saved.” remained visible. The next user edit
|
||||
cleared both indicators. It did not touch normal preferences or the NAS.
|
||||
|
||||
- 68 unit tests passed, including standalone media controls, retry error clearing,
|
||||
download metadata, transcript persistence/deduplication, session replacement,
|
||||
and interruption state handling.
|
||||
- Five offline UI tests passed: navigation/offline recovery, voice persistence and
|
||||
URL validation, music search failure/station validation, transcript confirmation
|
||||
and task details, and accessibility-size navigation.
|
||||
- Two live UI tests passed together against the NAS at 17:56 UTC: real Qwen
|
||||
response, background task completion, disconnect/reconnect, library playback
|
||||
with advancing media time, pause, forward seek and stop.
|
||||
- Backend integration run: 16 passed, 7 skipped, 2 deselected. This is not a claim
|
||||
that the skipped or slow integration cases were verified.
|
||||
- AAC conversion regression: one passed, checking original-file preservation,
|
||||
AAC output, cache reuse and HTTP byte ranges. Deployed range request returned 206.
|
||||
|
||||
XcodeBuildMCP result bundles are under
|
||||
Result bundles under
|
||||
`~/Library/Developer/XcodeBuildMCP/workspaces/voice-ios-9eb036fdea81/result-bundles/`:
|
||||
|
||||
- Unit/offline UI: `test_sim_2026-09-08T11-48-52-164Z_pid87175_79b1a610.xcresult`.
|
||||
This combined run's two live cases failed after long stalls; its unit/offline
|
||||
results above passed.
|
||||
- Latest live pair: `test_sim_2026-09-08T17-56-51-984Z_pid30949_ec504db2.xcresult`.
|
||||
- Earlier live rerun: `test_sim_2026-09-08T17-46-07-841Z_pid30949_bd804a04.xcresult`
|
||||
failed agent join and advancing playback. Their intermittent cause has not
|
||||
been established. The subsequent passing pair did not require a server restart.
|
||||
- Full run:
|
||||
`test_sim_2026-09-12T14-03-09-058Z_pid95846_2ca9da7e.xcresult`
|
||||
- Targeted restored-history run:
|
||||
`test_sim_2026-09-12T14-05-21-070Z_pid98187_bd3e531a.xcresult`
|
||||
|
||||
## Physical-device evidence
|
||||
|
||||
iPhone 14 Pro Max `BF93D35E-0853-5470-A125-6EB0DB3F17AB` was paired, built for,
|
||||
signed with personal team `YJFYRB92NW`, installed, trusted, and launched through
|
||||
`devicectl`. This proves device signing/install/launch only, not microphone or
|
||||
speaker behavior. Free provisioning expires after seven days.
|
||||
|
||||
The final source also completed a signed generic-iOS build at
|
||||
`/tmp/voice-ios-device-derived/Build/Products/Debug-iphoneos/Voice.app`. The
|
||||
device was unavailable to `devicectl`, so this artifact was not installed. The
|
||||
successful earlier install therefore predates the last Nearlight
|
||||
reading-safety, microphone-notice, and save-confirmation corrections.
|
||||
|
||||
## Historical live and backend evidence
|
||||
|
||||
Earlier live NAS runs verified Qwen replies, background task completion,
|
||||
disconnect/reconnect, and three consecutive Qwen/task/reconnect iterations. Older
|
||||
music playback evidence is historical only: the player and its tests no longer
|
||||
exist in the iOS app.
|
||||
|
||||
Backend integration previously passed 16 tests with 7 skipped and 2 deselected.
|
||||
The AAC compatibility regression passed and the deployed byte-range request
|
||||
returned HTTP 206. That patch remains in a separate backend repository and is not
|
||||
published by this iOS branch.
|
||||
|
||||
## Not yet qualified
|
||||
|
||||
Passing simulator tests do not prove audible speaker/headphone output, microphone
|
||||
capture, barge-in, phone/Siri interruption recovery, background audio, or network
|
||||
loss recovery on hardware. Follow `DEVICE_TESTING.md` with a physical iPhone on
|
||||
the LAN. Navigation at large text sizes is tested, not a complete VoiceOver audit.
|
||||
Live tests use an existing library track; they do not prove new YouTube downloads
|
||||
or every radio stream format.
|
||||
- Audible speaker/headphone output, physical microphone capture, barge-in,
|
||||
phone/Siri interruption recovery, lock/background behavior, and live
|
||||
network-loss recovery.
|
||||
- A real microphone-permission-denied session. The visibility/recovery branches
|
||||
are source-reviewed, but no permission was changed during final verification.
|
||||
- A full VoiceOver audio/focus session, exhaustive contrast audit, every Dynamic
|
||||
Type/layout combination, or strict conformance to every Nearlight design detail.
|
||||
Astra explicitly accepted the remaining visual/adaptive/presentation debt for
|
||||
this personal release.
|
||||
- The final corrected binary on the physical iPhone while it remains unavailable.
|
||||
|
||||
## Repeatability follow-up — 18:04 UTC
|
||||
|
||||
Three consecutive Qwen/task/reconnect iterations passed. Music passed twice and
|
||||
failed on the third iteration; runtime logs captured AVPlayer's request timeout
|
||||
while the TLS loader buffered a whole 6 MB response. The loader now delivers
|
||||
bounded 256 KB ranges to AVPlayer, retaining cancellation and EOF handling.
|
||||
After that change, **all three consecutive live playback iterations passed**
|
||||
in about 13 seconds each. This addresses the observed music buffering failure;
|
||||
the earlier isolated agent-join failure has not been reproduced or explained.
|
||||
|
||||
- Reproduction bundle: `test_sim_2026-09-08T18-00-03-993Z_pid30949_49da9d2c.xcresult`.
|
||||
- Post-fix playback bundle: `test_sim_2026-09-08T18-04-30-014Z_pid30949_df323119.xcresult`.
|
||||
- Live tests now attach failure screenshots and UI hierarchy, and attempt to stop
|
||||
test-initiated music during teardown even after an assertion failure.
|
||||
|
||||
The initial hardware check found an unavailable iPhone. A later USB check detected
|
||||
the phone running iOS 26.6.1, explicitly marked **unpaired** by XcodeBuildMCP.
|
||||
No successful device install or hardware qualification is recorded. See
|
||||
`PROJECT_STATUS.md` for the current pairing blocker and next steps.
|
||||
|
||||
Deployment and rollback are recorded in `DEPLOYMENT.md`. The NAS image includes
|
||||
the compatibility patch; the sibling backend source still requires its own commit
|
||||
and safe deployment workflow. See `PROJECT_STATUS.md` for repository handoff scope.
|
||||
Follow [DEVICE_TESTING.md](DEVICE_TESTING.md) for hardware qualification and
|
||||
[PROJECT_STATUS.md](PROJECT_STATUS.md) for current priorities and deployment
|
||||
dependencies.
|
||||
Reference in new issue
Block a user