You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit b6b9998
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: docs/developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md
+46-19Lines changed: 46 additions & 19 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,9 +7,10 @@
7
7
|---|---|
8
8
| Date | 31 October 2026, Asia/Bangkok |
9
9
| Scope | App-only bounded current-text recovery; existing Play open-testing and TestFlight channels |
10
-
| Source | Merged PR #40 at `6f5b3ea73a70342331fb49d0685938ce2a4cae11`; app tree `b12fe3621f1d100a3b3724d15ee0dea3b359acfe`|
11
-
| State | Production Android and iOS packaging verified for this source; physical acceptance and final release admission remain outstanding. The physical-device follow-up identified a keyboard-layout issue being repaired separately, so these pre-fix artifacts are provisional and must be rebuilt after that change |
12
-
| Local evidence | Ignored `local/recovery-completion/release/`: build/check logs, artifact manifest and retained signed binaries |
10
+
| Runtime source | Recovery baseline plus landscape-keyboard repair at `e54a78acf32e7ea26166a60d66573fdf9e697ad4`|
11
+
| Build checkout | Release worktree `e8aeddd8ddbda85293dcca72ad524823bd5ae66a`; app tree `d0f2a464e9886c8451a0cb046123973095f246c6`, verified identical to the runtime baseline |
12
+
| State | Production Android and iOS rebuilt cleanly with the keyboard-layout repair; packaging and the bounded Android 16 KiB runtime smoke pass. Physical acceptance and final release admission remain outstanding |
13
+
| Local evidence | Ignored `local/recovery-completion/release/candidate-e54a78a/`: build/check logs, source/artifact manifests, runtime evidence and retained signed binaries |
13
14
| Public copy |[Prepared release packet](../../../publication/app-0.3.0-build-9-release-packet.md); no submission or availability claim |
14
15
15
16
## Gate selection
@@ -24,9 +25,9 @@ claim a new firmware release, fresh firmware OI-1 qualification or a Ready badge
24
25
| Gate | Required evidence | Current disposition |
25
26
|---|---|---|
26
27
| M-02 recovery acceptance | All DR-T01–14 required evidence, including representative physical generated-text recovery and both platform offline/current-board-consent records | Reconcile against the [execution record](00_Execution_Record.md) and actual device reports; installation/scan alone is insufficient |
27
-
| App regression | Accepted source contract, red/green history, locked dependencies, ordinary tests, pinned goldens, platform builds and repository gates | PR #40 and its post-merge CI passed; 972 ordinary Flutter tests recorded; rerun affected checks for any further code change|
28
+
| App regression | Accepted source contract, red/green history, locked dependencies, ordinary tests, pinned goldens, platform builds and repository gates | PR #40/post-merge CI passed historically; the keyboard repair records 974 ordinary Flutter tests, 25 shell widget tests and clean analysis/source gates. Integrated-candidate CI and final physical acceptance remain separate|
28
29
| Five-profile app compatibility | Q01–Q10 below with exact app/firmware identity, actual observations and retained failures | Final complete candidate-bound matrix not yet established |
29
-
| Production packaging | Android upload signer/AAB/APK/native alignment; iOS distribution export/IPA validation; capability parity | Android and iOS checks below pass for the recorded source; affected checks must follow a repaired candidate|
30
+
| Production packaging | Android upload signer/AAB/APK/native alignment; iOS distribution export/IPA validation; capability parity | Android and iOS checks below pass for the repaired source and exact retained artifacts|
30
31
| Release review | Frozen artifact identity, resolved mandatory failures, supported scope, privacy/dependency review and recorded acceptance | Not yet admitted |
31
32
| M-05 channel delivery | Actual upload/processing/review/availability, followed by store-delivered installed identity and upgrade/launch checks | No upload or new channel delivery established by this preparation |
32
33
@@ -42,7 +43,7 @@ physical or packaging evidence.
42
43
| Q01 | Q02 |`esp32-4mb`| Common workflow plus affected recovery |
43
44
| Q03 | Q04 |`esp32-s3-n16r8`| Common workflow plus affected recovery; do not infer the profile from the `esp32-s3` chip string alone |
44
45
| Q05 | Q06 |`waveshare-esp32-s3-lcd-147b`| Common workflow plus affected recovery; keep its exact-board/image identity distinct from generic S3 |
45
-
| Q07 | Q08 |`esp32-c3-4mb`| Common workflow plus affected recovery and the real-app C3-G5 behavior|
46
+
| Q07 | Q08 |`esp32-c3-4mb`| Common workflow plus affected recovery and real-UI tight-loop/print-flood Stop; see scope below|
46
47
| Q09 | Q10 |`rpi-pico2-w`| Common workflow plus affected recovery on each physical platform; no new full GP2 qualification inferred |
47
48
48
49
Each common row includes ordinary service-filtered discovery/HELLO, editing and
@@ -51,12 +52,25 @@ disconnect/reconnect and workspace continuity. Retain the selected candidate's
51
52
affected lifecycle/recovery scenarios. Record the actual result of every row;
52
53
a scan result or one platform cannot stand in for another row.
@@ -78,22 +92,35 @@ manager and never written into source or logs.
78
92
| Native libraries | All 12 packaged shared objects have every ELF LOAD alignment at least 16 KiB, including `libsqlite3.so` and `libdartjni.so` on all three ABIs |
| Permissions | Expected BLE, legacy location, Internet and AndroidX signature permission; no new authored platform permission |
81
-
| Runtime page-size check | Production APK launched on the official API 36 Google APIs 16 KiB arm64 emulator; kernel `PAGE_SIZE=16384`, About `Version 0.3.0 (9)`, bundled native SQLite mapped from the APK, and fresh schema v1 created successfully |
95
+
| Runtime page-size check | Production APK launched on the official API 36 Google APIs 16 KiB arm64 emulator; kernel `PAGE_SIZE=16384`, About `Version 0.3.0 (9)`, bundled native SQLite mapped from the APK, and existing schema v1 reopened successfully; installed APK bytes match the recorded artifact hash|
82
96
83
97
The 16 KiB runtime observation also force-stopped and relaunched the same
84
98
installed package without data clearing. The normal disconnected screen
85
-
returned; the retained fresh database and WAL reopened with `integrity_check=ok`
99
+
returned without a fatal exception or native-library load error. The database
100
+
created by the earlier `6f5b3ea` production candidate and its WAL reopened with
101
+
`integrity_check=ok`
86
102
and the expected `projects`, `project_files` and `settings` tables. This is a
87
103
native packaging/startup smoke, not a physical BLE row or the full recovery
88
104
acceptance matrix. The SQLite database's own page size is independent of the
89
-
operating-system memory page size.
105
+
operating-system memory page size. The emulator uses Google APIs 16 KiB arm64
106
+
API 36 image revision 7; its fingerprint and private UI captures are recorded
107
+
with the candidate manifest.
90
108
91
109
The first local invocation incorrectly used `--no-pub` after fresh `pub get`,
92
110
leaving the integration-test plugin in a generated Android registrant. Its
93
111
failed log is retained. Repeating the canonical CI production commands,
94
112
which allow Flutter to regenerate release plugin metadata, built both artifacts
95
113
successfully without a source change.
96
114
115
+
A later incremental rebuild after the keyboard repair regenerated AOT inputs
116
+
but reused stale Gradle merged/stripped native libraries. Comparing packaged
117
+
`libapp.so` against current build inputs exposed the mismatch; those artifacts
118
+
were rejected and retained under `rejected-stale-gradle-e54a78a/`. Running
119
+
`flutter clean` and both canonical production commands rebuilt the current
120
+
artifacts above. Their packaged AOT libraries match current stripped outputs
121
+
on all three ABIs. The earlier `6f5b3ea` artifacts remain historical evidence
122
+
under `artifacts-6f5b3ea/`; they are not the repaired release candidate.
123
+
97
124
The APK uses the upload certificate, whereas Google Play can deliver its own
98
125
app-signing certificate. Do not uninstall an existing user's Play app or clear
99
126
its data merely to install this locally signed APK. Store upgrade acceptance
@@ -103,8 +130,8 @@ must use the actual delivered package.
Copy file name to clipboardExpand all lines: docs/publication/app-0.3.0-build-9-release-packet.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -13,7 +13,7 @@ contract and rebuilt artifacts, not a renamed file.
13
13
## Google Play release notes
14
14
15
15
```text
16
-
PyBLE can now keep one current Python draft locally and offer Restore or Discard after an app restart. Local recovery status is shown separately from saving to a board. Recovered text requires confirmation of the currentdestination before board Save, Run or Upload. Blocks workspaces and multi-file projects are not included in local draft recovery. A compatible MicroPython board with the PyBLE agent is still required for board workflows.
16
+
PyBLE can keep one current Python draft locally and offer Restore or Discard after restart. Local recovery status is separate from board saving. Recovered text needs current-destination confirmation before board Save, Run or Upload. Landscape editing stays usable above the keyboard. Blocks workspaces and multi-file projects are not included in draft recovery. Board workflows require a compatible MicroPython board running the PyBLE agent.
0 commit comments