|
| 1 | +<!-- SPDX-License-Identifier: MIT --> |
| 2 | +<!-- Part of PyBLE (https://pyble.dev) — see /LICENSE. --> |
| 3 | + |
| 4 | +# iPad recovery acceptance continuation |
| 5 | + |
| 6 | +| Field | Record | |
| 7 | +|---|---| |
| 8 | +| Date | 31 October 2026, Asia/Bangkok | |
| 9 | +| Scope | Remaining normal-app recovery and affected workflow observations for PYB-006.2 / PYB-008.1 | |
| 10 | +| Current outcome | Candidate installation and launch pass; automated native UI execution awaits the device owner's iPadOS authentication | |
| 11 | +| Source | PR #40 merged at `6f5b3ea73a70342331fb49d0685938ce2a4cae11`; subsequent planning changes do not change app runtime bytes | |
| 12 | +| Candidate | PyBLE Preview `0.3.0 (9)`, normal `lib/main.dart`, signed profile mode, isolated `dev.pyble.recoveryqualification` identity | |
| 13 | +| Physical platform | iPad Air 13-inch (M4), model `iPad16,10`, iPadOS `26.6.2` | |
| 14 | +| Operator | Automated engineering run on the maintainer's Mac; no independent human review or participant observation claimed | |
| 15 | +| Prior results | [Platform observations](02_Platform_Qualification.md); native storage seed/kill/verify is distinct from normal-app interaction acceptance | |
| 16 | + |
| 17 | +## Candidate and initial state |
| 18 | + |
| 19 | +The signed app archive is retained privately as |
| 20 | +`local/recovery-implementation/ipad-preview-0309/PyBLE-Preview-0.3.0-9-profile.app.zip`. |
| 21 | +Its SHA-256 is |
| 22 | +`c91bc6f7e14f421a528668bd3723e3f965d55f79f11ea90fec707a8fb15a4d1a`. |
| 23 | +The copied Dart runtime matches merged source; only the isolated native identity |
| 24 | +and display name distinguish the installation. Signature verification, |
| 25 | +installation and foreground launch passed. The disconnected scan displayed all |
| 26 | +five board labels. Discovery alone does not establish a connection or completed |
| 27 | +board workflow. |
| 28 | + |
| 29 | +The existing TestFlight `dev.pyble.pyble` installation remains version |
| 30 | +`0.2.0 (6)`. The Preview application support files were copied privately before |
| 31 | +continuation. The copied SQLite database passes `integrity_check` and contains |
| 32 | +zero draft rows and zero content bytes. No storage reset, user-data deletion or |
| 33 | +board write was used to establish that initial state. |
| 34 | + |
| 35 | +## Native UI runner attempt |
| 36 | + |
| 37 | +| Step | Actual observation | |
| 38 | +|---|---| |
| 39 | +| Build | Native XCTest helper builds successfully against the connected physical-device SDK; it operates the separately installed normal app | |
| 40 | +| Runner startup | Signed helper starts on the iPad | |
| 41 | +| OS authentication | iPadOS displays **Touch ID for “XCTest” — Enable UI Automation** | |
| 42 | +| Result | Runner initialization times out after 60 seconds while enabling automation mode; the test body does not run | |
| 43 | +| Classification | Operator-access dependency, not a failed PyBLE recovery assertion | |
| 44 | +| Required action | Device owner authenticates the iPadOS prompt; retry the retained test and then execute the remaining workflow steps | |
| 45 | + |
| 46 | +The owner was asked to authenticate on the device. No passcode or biometric |
| 47 | +material was requested, captured or substituted. Raw screenshots and the |
| 48 | +`.xcresult` remain in ignored `local/recovery-completion/ipad/`; they are not |
| 49 | +public documentation assets. |
| 50 | + |
| 51 | +## Acceptance accounting |
| 52 | + |
| 53 | +| Evidence | State after this attempt | |
| 54 | +|---|---| |
| 55 | +| Installed normal candidate, version and signature | Pass, limited to the local Preview identity | |
| 56 | +| Foreground launch and five-board discovery | Pass, disconnected discovery only | |
| 57 | +| Native storage process termination/reopening | Prior passing seed/verify evidence retained in the platform report | |
| 58 | +| DR-T12 normal Blocks-to-Editor checkpoint/relaunch | Not run in this continuation; native UI access pending | |
| 59 | +| DR-T14 normal offline Restore and physical current-board consent | Not run in this continuation; native UI access pending | |
| 60 | +| Remaining applicable P01–P15 steps | Execute and record actual outcomes after UI authorization; the prepared test is not execution evidence | |
| 61 | +| Five-profile iPad release rows | Pending; no qualification inferred from the five scan results | |
| 62 | +| M-02 / release admission | Remain pending until mandatory evidence and review are complete | |
| 63 | + |
| 64 | +The [operator recipe](01_Operator_Recipe.md) and |
| 65 | +[normative scenario matrix](../../../specifications/App/current-draft-recovery.md#7-required-evidence-before-acceptance) |
| 66 | +remain the acceptance authority. This record does not change their requirements. |
0 commit comments