Skip to content

Commit 4acf399

Browse files
committed
[docs] record production scope and audience qualification hold
Signed-off-by: Viwat Vchirawongkwin <viwat.v@chula.ac.th>
1 parent 3a87088 commit 4acf399

9 files changed

Lines changed: 136 additions & 14 deletions

File tree

‎README.md‎

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,9 @@ open-testing build 9 is submitted with **Changes in review**
118118
([submission record](docs/developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md#31-october-google-play-open-testing-submission)).
119119
Neither review state establishes approval or tester delivery. Lenovo still
120120
offers and runs Play `0.2.0 (8)`.
121+
The subsequently requested [Android production promotion](docs/developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md#31-october-android-production-scope-decision)
122+
is held before submission while the saved child audience and Bluetooth
123+
implementation are reconciled. The existing open-testing review is unchanged.
121124

122125
### Firmware
123126

‎docs/developments/2026-q4-reliable-workflow/03_Milestones.md‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,12 @@
1414

1515
**31 October acceptance update:** scoped current-text recovery (PYB-006.2 / M-02) and the app-only M-04 candidate pass engineering review at `bef67bd`: 984 ordinary tests, 36 frozen-runtime CI checks, both-platform recovery/keyboard evidence and all ten declared app/profile rows. The [C1-S2 record](c1-s2/00_Execution_Record.md) preserves exact artifacts, firmware baselines, earlier-row impact assessments and the temporary Android qualifier battery-policy condition. Signed packages and the release packet are prepared; original device policy and normal board advertising are restored, and owned fixtures are cleaned. [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) merged after all 36 checks on its final head passed. Internal-account TestFlight `0.3.0 (9)` offer/Open, production About and bounded device smoke are verified ([delivery record](c1-s2/06_Release_Readiness.md#31-october-testflight-delivery-and-published-metadata)); the update transaction was not observed. PYB-002.1 public-description correction is complete. M-05 remains partial: external build 9 is submitted and Waiting for Review; Google Play open-testing build 9 is submitted with Changes in review; approval and delivery remain pending. S1 remains six Done / two Prepared / four Awaiting evidence; S2 has ten engineering tasks Done and participant follow-up unfinished. Original dates/hours remain the baseline; the [continuation plan](04_Sprint_Plan.md#31-october-continuation-order-and-reforecast) records the next work and unresolved human capacity.
1616

17+
**Production continuation:** the subsequent Android production request is held
18+
before submission on the [saved child-audience/Bluetooth requirement](c1-s2/06_Release_Readiness.md#31-october-android-production-scope-decision).
19+
The existing open-testing review is unchanged. Scoped engineering acceptance
20+
remains valid; it is not unconditional production-policy admission. M-05 remains
21+
partial while the owner clarifies the intended audience and delivery is pending.
22+
1723
## Assessment and evidence states
1824

1925
Use **Proposed** until work is selected. At a milestone assessment, record one of

‎docs/developments/2026-q4-reliable-workflow/04_Sprint_Plan.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ measured velocity or a new delivery deadline. The original C1-S3 window is
6666
|---|---|---|
6767
| 1 — M-02 recovery acceptance | Accepted: DR-T01–14 reviewed against automated and exact platform evidence, including generated text and current-target consent | Completed outcome on 31 October; no measured human effort inferred from agent execution |
6868
| 2 — M-04 release qualification | Engineering pass: frozen `bef67bd` artifacts, ten declared app/profile rows, packaging and scoped review; device closeout complete; branch integration tracked separately | This outcome covers the same later forecast batches; do not repeat them without a changed artifact or invalidated evidence |
69-
| 3 — M-05 distribution | Internal-account TestFlight delivery and bounded smoke verified; track Apple external Waiting for Review and Google Play open-testing Changes in review, then verify actual availability and Android delivery | Next release stage; external review outcomes and duration remain unresolved |
69+
| 3 — M-05 distribution | Internal-account TestFlight delivery and bounded smoke verified; track Apple external Waiting for Review and Google Play open-testing Changes in review; resolve the [actual audience/CDM production hold](c1-s2/06_Release_Readiness.md#31-october-android-production-scope-decision) before the newly requested production submission, then verify actual delivery | Next release stage; owner audience decision and external review outcomes remain unresolved |
7070
| Parallel — M-01 pilot baseline | Confirm pilot owner, primary cohort, exact reference setup and actual weekly capacity; collect real consented baseline sessions using the prepared kit | Awaiting human inputs; engineering observations are not participant starts |
7171
| Later — M-03/M-06 learning | Collect useful-task and prospective day-7–14 follow-up observations from actual consenting activations | Preserve original recruitment targets; reforecast dates after real recruitment and capacity are known |
7272
| Conditional — Ready rehearsal | Use an assigned second operator for one exact profile only after capacity is selected | Remains optional; it is not a prerequisite for unrelated maintenance delivery |

‎docs/developments/2026-q4-reliable-workflow/05_Product_Backlog_and_Stories.md‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@
4545
| 8 | PYB-011 / P0 usability | Understand useful first and repeat tasks in the primary cohort | 011.1, 011.2 | Main activation collection C1-S3–S4; rolling follow-up from the first consented activation through C1-S6; 003, 004, recorded tested setup | Proposed; recruitment and follow-up are not assumed |
4646
| 9 | PYB-012 / P0 if severe | Resolve the highest-impact observed failure | 012.1 | C1-S4 candidate or earlier when evidence warrants | Conditional; reorder promptly when a real severe failure appears |
4747
| 10 | PYB-013 / P0 release | Make a candidate-specific release decision with applicable evidence | 013.1 | C1-S5 forecast; applicable 008/009 and included fixes | Done for scoped engineering admission; device closeout and integration complete; Apple and Google Play build-9 submissions accepted; channel outcomes tracked separately |
48-
| 11 | PYB-014 / P0 when ready | Make the qualified app build installable through the selected existing channel | 014.1, 014.2 | C1-S5 submission/C1-S6 verification forecast; 013 and owner access | Partial — Apple upload and internal-account TestFlight installation/launch/smoke verified; external build 9 submitted, Waiting for Review; Google Play open-testing build 9 submitted, Changes in review; approval/delivery pending |
48+
| 11 | PYB-014 / P0 when ready | Make the qualified app build installable through the selected existing channel | 014.1, 014.2 | C1-S5 submission/C1-S6 verification forecast; 013 and owner access | Partial — Apple upload and internal-account TestFlight installation/launch/smoke verified; external build 9 submitted, Waiting for Review; Google Play open-testing build 9 submitted, Changes in review; newly requested production submission held on [audience/CDM decision](c1-s2/06_Release_Readiness.md#31-october-android-production-scope-decision); approval/delivery pending |
4949
| 12 | PYB-007 / P1 | Share a previewed, privacy-preserving support record | 007.1 | Optional capacity; 003 and approved export contract | Proposed; manual template is the base fallback |
5050
| 13 | PYB-010 / P1 | Read accurate setup and recovery guidance in Simplified Chinese | 010.1 | Optional capacity and named language reviewer | Proposed |
5151
| 14 | PYB-015 / P1 | Discover the verified release through accurate supporting material | 015.1 | C1-S6 optional; verified claims, 002/013 | Proposed |

‎docs/developments/2026-q4-reliable-workflow/06_Sprint_Backlogs.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -159,7 +159,7 @@ An analysis task can finish with fewer than 12 starts, but PYB-011.1 remains unf
159159
| C1-S5-T04 | PYB-008.2 | Complete applicable cross-version/affected regressions and review unresolved defects | T01; named baselines; prior findings | QA + App/firmware | 3 | Covered by declared-baseline and affected-regression review |
160160
| C1-S5-T05 | PYB-013.1 | Assemble immutable evidence index, limitations and accurate release notes | T02–T04 actual results; prior accepted evidence | Release | 3 | Prepared — exact artifacts, evidence index, limitations and release notes retained |
161161
| C1-S5-T06 | PYB-013.1 | Review release admission and record sign-off or blocking conditions | T05/T09; all mandatory gates | Release + reviewer | 2 | Covered by scoped engineering admission and closeout; PR #41 subsequently merged after all 36 final-head checks passed |
162-
| C1-S5-T07 | PYB-014.1 | If admitted and authorized, submit exact artifact to selected existing channel and retain receipt/state | T06 pass; owner access/authorization | Release | 2 | Done for submission on 31 October — Apple external build 9 Waiting for Review and Google Play open-testing build 9 Changes in review; approval/delivery remain separate |
162+
| C1-S5-T07 | PYB-014.1 | If admitted and authorized, submit exact artifact to selected existing channel and retain receipt/state | T06 pass; owner access/authorization | Release | 2 | Done for initial test-channel submissions on 31 October — Apple Waiting for Review and Play open testing Changes in review. Newly requested production submission held on [audience/CDM decision](c1-s2/06_Release_Readiness.md#31-october-android-production-scope-decision); approval/delivery separate |
163163
| C1-S5-T08 | PYB-011.2 | Collect follow-up in due windows and account for closed windows; label immature windows and missing responses | Consented activation records; agreed method | Pilot | 2 | Proposed |
164164
| C1-S5-T09 | PYB-013.1 | Verify update/recovery instructions against selected artifacts and accepted scope | T01; current operator/distribution guide | Release + QA | 2 | Prepared for admitted scope; actual store-upgrade observations remain 014.2 |
165165
| **C1-S5 total** | | | | | **24** | |
@@ -178,7 +178,7 @@ The required matrix may cost more than these batches. Use the S1/Planning estima
178178

179179
| Task ID | Parent child item | Proposed task and expected output | Dependency | Contribution role | h | Status |
180180
|---|---|---|---|---|---:|---|
181-
| C1-S6-T01 | PYB-014.1 | Verify submission/processing/availability state and remaining distribution actions | 013 admission; submission/access as applicable | Release | 2 | Partial — Apple upload and internal-account availability verified; external build 9 submitted, Waiting for Review; Google Play open-testing build 9 submitted, Changes in review; approval/delivery pending |
181+
| C1-S6-T01 | PYB-014.1 | Verify submission/processing/availability state and remaining distribution actions | 013 admission; submission/access as applicable | Release | 2 | Partial — Apple internal-account availability verified; external Waiting for Review and Play open testing Changes in review. New production submission held on audience/CDM decision; approval/delivery pending |
182182
| C1-S6-T02 | PYB-014.2 | If Android is selected, verify eligible installation of its qualified candidate, installed build and applicable smoke behavior | Actual selected-candidate Android availability | Release + QA | 2 | Awaiting channel availability — build 9 submitted and Changes in review; enrolled Lenovo still offers/has build 8 |
183183
| C1-S6-T03 | PYB-014.2 | If iPad is selected, verify eligible installation of its qualified candidate, installed build/provenance and applicable smoke behavior | Actual selected-candidate TestFlight availability | Release + QA | 2 | Covered for the existing internal-account updated installation on 31 October; exact update transaction unobserved; external-group scope remains separate |
184184
| C1-S6-T04 | PYB-014.2 | Reconcile user-facing installation/update/support guidance with actual channel outcomes | T01 and selected-channel T02/T03 results | Release + Docs | 2 | Partial — internal-account iPad result and published test details recorded; external build 9 submitted, Waiting for Review; Google Play open-testing build 9 submitted, Changes in review; approval/delivery pending |

‎docs/developments/2026-q4-reliable-workflow/c1-s2/00_Execution_Record.md‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -260,7 +260,11 @@ human sign-off or a Scrum ceremony.
260260
separate from the 36 passing frozen-runtime checks.
261261
- **Next release stage — M-05:** track the submitted Google Play open-testing
262262
build 9 in Changes in review and verify its availability and installed identity
263-
after approval; production build 8 remains unchanged. Internal-account TestFlight
263+
after approval. The subsequently requested production promotion is
264+
[held before submission](06_Release_Readiness.md#31-october-android-production-scope-decision)
265+
on the saved audience/Bluetooth requirement while the owner confirms the
266+
intended audience; earlier production-build-8 observations remain history.
267+
Internal-account TestFlight
264268
delivery is verified in the [delivery record](06_Release_Readiness.md#31-october-testflight-delivery-and-published-metadata);
265269
external build 9 is assigned and submitted with status Waiting for Review.
266270
Track Apple's decision and subsequent external availability separately.

‎docs/developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md‎

Lines changed: 71 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66
| Field | Record |
77
|---|---|
88
| Date | 31 October 2026, Asia/Bangkok |
9-
| Scope | App-only bounded current-text recovery; existing Play open-testing and TestFlight channels |
9+
| Scope | App-only bounded current-text recovery; existing Play open-testing and TestFlight channels, with subsequent explicit owner authorization to promote the same accepted Android build to production |
1010
| Runtime source | Recovery baseline plus landscape layout, native keyboard dismissal and iPad palette-geometry repairs at `bef67bded9e5b83437e3eb0e2ec4be6a4cfd1a64` |
1111
| Build checkout | Release worktree `c6e685dd3ebe718ed89fcfe58e441331eb174648`; app tree `60b3a68b693551af5d83076547c502f69838e052`, verified identical to the runtime baseline |
12-
| State | M-02 and app-only M-04 engineering admission accepted on 31 October for the frozen artifacts below. [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) merged at `247e58a` after all 36 final-head checks passed; M-05 is partial: internal-account TestFlight delivery verified; external build 9 is submitted and Waiting for Review; Google Play open-testing build 9 is submitted with Changes in review; approval and delivery remain pending |
12+
| State | M-02 and app-only M-04 engineering admission accepted on 31 October for the frozen artifacts below. [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) merged at `247e58a` after all 36 final-head checks passed; M-05 is partial: internal-account TestFlight delivery verified; external build 9 is submitted and Waiting for Review; Google Play open-testing build 9 is submitted with Changes in review; production promotion is blocked on the audience/Bluetooth requirement below; approval and delivery remain pending |
1313
| Local evidence | Ignored `local/recovery-completion/release/candidate-bef67bd/`: build/check logs, source/artifact manifests, runtime evidence and retained signed binaries |
1414
| Public copy | [Release packet](../../../publication/app-0.3.0-build-9-release-packet.md); build-9 test details saved and app description publicly verified; TestFlight delivery observed for the existing internal account only |
1515

@@ -516,3 +516,72 @@ The uniquely staged Downloads AAB was removed after hash/size verification;
516516
No store approval, live build-9 rollout or Android installation of the update
517517
has been observed. PYB-014.1 submission is complete for the selected channels;
518518
PYB-014.2 and M-05 remain partial until the remaining delivery evidence exists.
519+
520+
## 31 October Android production scope decision
521+
522+
After the open-testing submission above, the user explicitly requested Android
523+
production release of `0.3.0 (9)`. This is the separate production decision
524+
required by [PYB-014.1](../05_Product_Backlog_and_Stories.md#35-release-and-channel-verification).
525+
It extends the selected track scope to production using the same accepted AAB
526+
from the Play artifact library; it does not authorize a new binary or another
527+
build-9 upload. The frozen source, signed artifact hash, packaging checks and
528+
app-only M-04 engineering admission remain unchanged. The earlier
529+
`15:23:55 UTC` open-testing receipt and production-build-8 baseline remain dated
530+
history.
531+
532+
The production draft uses accepted build `9` from the artifact library. Its
533+
preview passed and requested a full rollout to the existing 178 countries and
534+
regions. The final Restart review confirmation was **not confirmed**; production
535+
build `9` has not been submitted for review or observed live. The earlier
536+
open-testing review remains separate.
537+
538+
The actual maintained target-audience settings include ages **9–12, 13–15,
539+
16–17 and 18+**, with a Families commitment last updated on 7 August. Console
540+
showed no required actions, ten completed App content declarations and no
541+
policy issues. Those automated/account views do not resolve the specific
542+
implementation requirement found during source review.
543+
544+
For an audience including children, the current [Google Play Families policy](https://support.google.com/googleplay/android-developer/answer/9893335?hl=en)
545+
requires Companion Device Manager (CDM) when requesting Bluetooth, with an
546+
exception only for apps targeting OS versions that cannot support CDM.
547+
[Android documents CDM from API 26](https://developer.android.com/develop/connectivity/bluetooth/companion-device-pairing).
548+
This candidate supports API 24 and later and targets API 36, including the tested
549+
API-31 Lenovo; the incompatible-OS-only exception does not apply. The frozen
550+
[scan adapter](../../../../app/lib/ble/fbp_ble_adapter.dart) invokes
551+
`FlutterBluePlus.startScan`. The [locked](../../../../app/pubspec.lock)
552+
`flutter_blue_plus_android 7.0.4` path requests `BLUETOOTH_SCAN` directly and calls
553+
`BluetoothLeScanner.startScan`; the reviewed path does not use CDM.
554+
555+
This is a pre-existing Android package/audience issue, also relevant to the
556+
ongoing open-testing review and existing production baseline; it is not a
557+
requirement unique to production promotion. The previously submitted open-testing
558+
review has not been changed while the owner clarifies the audience. Its accepted
559+
submission does not establish policy clearance.
560+
561+
The newly requested production promotion is therefore **blocked by the saved
562+
audience and the Bluetooth implementation mismatch**, not by a Google validation
563+
error. The owner's actual intended audience must be established before choosing an
564+
accurate audience correction or a separately specified and qualified
565+
implementation change. No audience declaration has been changed to bypass
566+
this decision. The broader Data safety worksheet remains a conservative
567+
proposal, not a newly attested declaration or an additional established
568+
production blocker. Existing scoped M-02/app-only M-04 engineering results stay
569+
valid; they do not establish current Families compliance or unconditional
570+
production admission.
571+
572+
The production preparation and unchanged App content observations are retained
573+
in `local/recovery-completion/android/play-console-production/production-release-preparation.json`,
574+
SHA-256 `c8504d5dbf278c8c2d7544e084979afcc181928bdb58be5458b2f8582ed32e86`.
575+
Its hold was recorded at `2026-10-31T15:37:16Z` with the final confirmation still
576+
open and unconfirmed. The [Data safety assessment](../../../publication/google-play-data-safety.md#31-october-2026--actual-console-inspection-and-audience-hold)
577+
records the observed saved answers without adopting or reattesting them.
578+
579+
The immutable source/policy audit is retained privately as
580+
`local/recovery-completion/android/play-console-production/policy-review/families-bluetooth-review.json`,
581+
SHA-256 `44f6a9ffefc12b7be4a60a1f0ef91ed791072f303eb934c3c0d0efbb4fa7c8a0`.
582+
It binds the frozen source, admitted AAB, supported API range, locked plugin and
583+
saved audience evidence; the same directory retains the reviewed policy page.
584+
585+
The iPad's final observed external state remains Waiting for Review at
586+
`15:23:25 UTC`; its verified internal-account delivery is separate. No further
587+
iPad operation is required to document that snapshot.

0 commit comments

Comments
 (0)