diff --git a/docs/continuation.md b/docs/continuation.md index 393c636..e12cbcb 100644 --- a/docs/continuation.md +++ b/docs/continuation.md @@ -39,8 +39,28 @@ Set `PLAYWRIGHT_HOST_PLATFORM_OVERRIDE=ubuntu24.04-x64` on this Ubuntu 26 host. Reference output is ignored under `artifacts/visual/pwa-360x592`; native screenshots are in the external build's `app/outputs/native-screenshots`. The side-by-side compositor is tooling only; screenshots are evidence, not automated parity approval. +The committed source `7ac9882` also passed a separate clean-archive build in +`/tmp/opencode/yuvomi-design-clean-1fknxqpt`, outputs at +`/home/neste/yuvomi-design-clean-build-7ac9882`. All three inspected native packages +are collected in ignored `artifacts/android/`; the installable CI debug APK is a +separate artifact with its own signature/checksum, not assumed identical. +Gitea run 670/build job 1079 succeeded at `7ac9882`. The actual 0.2.2/code-4 CI APK +was downloaded, signature/version/contents checked, installed and cold-launched +on `emulator-5554`; link and SHA-256 are in `validation.md`. It is now the installed +local preview, with a certificate different from the local Gradle debug key. +Remove only that known synthetic preview/use a fresh AVD before local device tests +if an install mismatch occurs; zero tests must still fail verification. +Remote emulator jobs 1080/1081 still report inaccessible `/dev/kvm`. Signing remains +paused, and the complete Android run is not green despite its successful build job. -iOS is unchanged. No module has accepted full functional/visual parity, the rest +iOS is unchanged by this design pass. Later inspection of run 669/job 1078 at +`bd0e4cc` verified 16 portable tests, 16 simulator XCTest tests, one onboarding UI +test and an unsigned device archive. The historical CoreSimulator timeout is no +longer the current blocker; see `validation.md` and the retained external job log. +Run 671/job 1082 at `7ac9882` subsequently repeated those successful Apple checks; +the actual log was downloaded and its test counts/archive markers inspected. +This is not iOS native API/Keychain/device or visual-parity acceptance. +No module has accepted full functional/visual parity, the rest of the inventory remains open, and signing stays paused. Continue refinement from actual comparison images, including non-default font sizes/devices and native module functionality; do not declare the whole user request finished from this @@ -177,8 +197,9 @@ validation must happen on macOS with Xcode and real supported devices. ## Highest-priority external work -1. Typecheck/build the iOS app against Apple SDKs, run its actual XCTest/UI tests, - and produce an unsigned archive. Fix any failures; none of these ran locally. +1. Extend the now-successful Apple SDK/simulator/archive validation beyond the + basic onboarding UI test to authenticated native API flows, Keychain runtime, + visual comparisons and physical devices. These did not run on Linux. 2. Run the API 37 permission grant/denial/revocation scenarios on a working image or device, plus the minimum-supported Android and current WebView matrix. 3. Review iOS unknown-length download disk-pressure handling before release. diff --git a/docs/native-design.md b/docs/native-design.md index 0af260c..aeaa528 100644 --- a/docs/native-design.md +++ b/docs/native-design.md @@ -74,7 +74,9 @@ not replace either screenshot, normalize away UI differences or assert acceptanc visual refinement and broader device/font-size/accessibility testing. - The three supported favorites stand in for unavailable native destinations; this is not full preference/navigation parity. -- Apple UI/build validation remains blocked as recorded in [validation](validation.md). +- The unchanged iOS slice now has a verified Apple simulator build/test/archive + run, but no new design comparison or native real-server parity acceptance; + see [validation](validation.md). Screenshot existence and passing CRUD tests are evidence, **not visual acceptance**. See [native parity](native-parity.md) for the complete scope. diff --git a/docs/validation.md b/docs/validation.md index b23d0c1..3cd3702 100644 --- a/docs/validation.md +++ b/docs/validation.md @@ -34,8 +34,62 @@ Logs: `/home/neste/yuvomi-design-build-final.log`, `/home/neste/yuvomi-design-secure-final.log`. The [design comparison](native-design.md) includes reviewed synthetic images and documents the exact 360 × 592 content viewport and intentional fixture scope. -**This is not accepted 1:1 parity.** iOS was not changed or newly validated. -Remote KVM/CoreSimulator prerequisites and production signing remain open. +**This is not accepted 1:1 parity.** iOS was not changed in this design pass. +Remote Android KVM prerequisites and production signing remain open. The earlier +Mac blocker has since cleared, as verified below. + +A separate `git archive` checkout of committed source `7ac9882` was rebuilt at +`/tmp/opencode/yuvomi-design-clean-1fknxqpt`, with outputs under +`/home/neste/yuvomi-design-clean-build-7ac9882`. JVM tests, both lint variants and +debug/unsigned release APK/AAB builds succeeded (`/home/neste/yuvomi-design-clean-build.log`). +The artifact collector verified version/code, debug signature, unsigned release +outputs, production TLS-only/system-CA policy and absence of test certificates or +private signing files. Local copies are in ignored `artifacts/android/`. Collection +records the documentation-only dirty worktree honestly; the build itself used the +clean committed-source archive, not those later documentation edits. + +### Downloaded and installed CI artifact + +Gitea Android run **670**, build job **1079**, source `7ac9882`: the build/test/lint, +repository/script/format/dependency checks and artifact upload succeeded. The +actual ZIP was downloaded; its sole `app-debug.apk` is +`0.2.2-native-preview` / code **4**, and `apksigner` verified its signature. No +fixture certificate or private signing files were present. The downloaded APK was +then installed and cold-launched successfully on authorized `emulator-5554`. + +- [Download Android 0.2.2 native preview](https://git.nesterovic.cc/nessi/Yuvomi-App/actions/runs/670/artifacts/android-native-debug-apk) +- APK SHA-256: `6efea6c2fbafc0702f6cd8c665817dd93a1d63590b00da4def09d246df900e44` +- Local downloaded copy/verification: ignored `artifacts/android-ci-670/`. +- The CI debug certificate differs from the local development certificate. Only + the known synthetic local preview was removed for this installation. A user + whose older preview has a different debug certificate may need to uninstall it + before installing this APK and then log in again; server data is not deleted. + +The whole Android run is **not green**: emulator jobs **1080/1081** failed preflight +because `/dev/kvm` is not exposed/read-write accessible inside their jobs. Their +logs explicitly report this prerequisite; no remote emulator pass is claimed. +All device-test results above are the actual local API-35 executions. + +### Verified Apple runner recovery + +Inspection of Gitea run 669/job 1078 at `bd0e4cc` found an actual successful Apple +run, not just green bootstrap steps. The downloaded job log contains: + +- Successful bounded `simctl` preflight and native app simulator compilation. +- 16 portable tests, then 16 simulator XCTest tests with zero failures. +- One `OnboardingTests.testRejectsCleartextWithoutNetwork` UI test, zero failures; + it checks cleartext rejection and absence of a WebView in the native hierarchy. +- `** TEST SUCCEEDED **` and `** ARCHIVE SUCCEEDED **` for the explicitly unsigned + generic-iOS device archive. + +Log retained outside Git: `/home/neste/yuvomi-ios-job-1078.log`. This supersedes the +earlier CoreSimulator timeout as a **current** blocker, while leaving its historical +diagnosis intact. It is not a native login/CRUD, Keychain runtime, real-device or +visual-parity certification, nor an installable signed iOS distribution. +The current design source `7ac9882` also completed the same Apple checks in run +671/job 1082. Its downloaded log again contains the 16-test XCTest and one-test +onboarding successes plus `TEST SUCCEEDED` / `ARCHIVE SUCCEEDED` markers +(`/home/neste/yuvomi-ios-job-1082.log`). The iOS UI itself is unchanged. ## Android 0.2.1 / code 3: reproduced login regression @@ -147,9 +201,11 @@ Evidence paths in the local external build directory: passed. The runner administrator must repair CoreSimulator availability for the runner user before Apple application validation can proceed. -No Apple SDK application build, simulator UI test or physical-device result is -claimed from the Linux runs or the stalled Mac job. Runner prerequisites were -not weakened or counted as passing, and no host license/settings were changed. +At that point no Apple SDK application build or simulator UI result was available +from the Linux runs or stalled Mac job. The later verified run 669 above supersedes +that limitation for compilation/basic simulator tests/archive only. No physical- +device result is claimed. Runner prerequisites were not weakened, and this agent +did not change host license/settings. ## Commands @@ -170,7 +226,7 @@ devices are not test targets. ## External gates -Apple SDK builds, real supported devices/current engines, Android API 37, native +Broad Apple UI/runtime coverage, real supported devices, Android API 37, native SSO/reset/invite protocols, permission/role cases, files/offline/notifications, complete module and settings parity, visual baselines, accessibility and human security review remain open. Missing modules are listed in