From 4c904ec820d8ac000754c6b671d85e514252cb8c Mon Sep 17 00:00:00 2001 From: Viwat Vchirawongkwin Date: Sat, 31 Oct 2026 21:08:46 +0700 Subject: [PATCH 1/6] [docs] record merged recovery candidate and accepted Apple upload Signed-off-by: Viwat Vchirawongkwin --- .../c1-s2/00_Execution_Record.md | 36 ++++++--- .../c1-s2/06_Release_Readiness.md | 81 ++++++++++++++----- .../app-0.3.0-build-9-release-packet.md | 30 ++++--- 3 files changed, 105 insertions(+), 42 deletions(-) diff --git a/docs/developments/2026-q4-reliable-workflow/c1-s2/00_Execution_Record.md b/docs/developments/2026-q4-reliable-workflow/c1-s2/00_Execution_Record.md index 396a87b6..93da1525 100644 --- a/docs/developments/2026-q4-reliable-workflow/c1-s2/00_Execution_Record.md +++ b/docs/developments/2026-q4-reliable-workflow/c1-s2/00_Execution_Record.md @@ -11,7 +11,7 @@ | Candidate | App `0.3.0+9`; recovery baseline merged at `6f5b3ea`, landscape repair `e54a78a`, native dismissal `01a7ac8`, and guide correction `bef67bd` under PR #41; platform and release reports bind each actual artifact | | Scope | PYB-006.2 bounded current-text recovery; supporting PYB-009.1 recipe and applicable PYB-008.1 observations | | Contract | [Current-draft recovery](../../../specifications/App/current-draft-recovery.md), [ADR-0048](../../../decisions/0048-bounded-current-text-draft-recovery.md) | -| Overall state | Scoped PYB-006.2 / M-02 and app-only M-04 pass engineering review at frozen runtime `bef67bd`: 984 ordinary tests, 36 runtime-head CI checks, both-platform recovery/keyboard evidence and all ten declared app/profile rows. Device policy, owned fixtures and normal board advertising are restored; [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) tracks final integration; required CI and merge precede publishing. M-05 channel delivery and S2 participant follow-up remain unfinished | +| Overall state | Scoped PYB-006.2 / M-02 and app-only M-04 pass engineering review at frozen runtime `bef67bd`: 984 ordinary tests, 36 runtime-head CI checks, both-platform recovery/keyboard evidence and all ten declared app/profile rows. Device policy, owned fixtures and normal board advertising are restored; [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) merged at `247e58a` after all 36 final-head checks passed. M-05 channel delivery and S2 participant follow-up remain unfinished | | S1 state | Unchanged: six Done, two Prepared, four Awaiting evidence; M-01/SG0 and pilot work remain unfinished | | Capacity/calendar | Original S2 allowance 24h and 12–25 October dates remain historical forecasts. The 45–72h estimate / 60h S2–S4 option is not measured effort or confirmed human capacity | | Method | Separate storage, coordinator and UI Git worktrees; root integrates board/session guards, regressions, release records and qualification attempts | @@ -25,7 +25,7 @@ console output strip compact while the keyboard is open and make navigation scrollable. The repaired app tree is `d0f2a464e9886c8451a0cb046123973095f246c6`. At that revision, the ordinary suite had 974 passing tests, the focused shell suite had 25 passing tests and analysis was clean. [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) -tracks the repair and its current CI/review state. These new results are separate from the +merged the repair and subsequent acceptance record. These results are separate from the 972-test PR #40 baseline below. Physical checks and artifact packaging must use or explicitly revalidate the repaired candidate; version `0.3.0 (9)` alone is not enough to equate the earlier and repaired binaries. @@ -54,7 +54,7 @@ scope; no M-02/M-04 acceptance follows from packaging alone. |---|---|---| | iPad normal workflow | [iPad acceptance continuation](04_iPad_Acceptance.md) | Normal Preview passes offline Unicode Restore/current-board consent at `e54a78a`, generated-text handoff/recovery at `01a7ac8`, and Editor/native Blocks palette Hide→Show/dismissal at `bef67bd`; exact text and usable viewports are retained. All five iPad Q rows pass on their recorded candidates; exact firmware baselines and unchanged-behavior impact assessment remain explicit | | Android normal workflow | [Android acceptance continuation](05_Android_Acceptance.md) | Recorded P01–P15 scope and all five Q rows pass with explicit earlier-source/accessibility limits. Final `bef67bd` normal profile `945e9746…` passes Editor/native Blocks keyboard checks and generated-text/offline recovery after actual launcher start under temporary qualifier-only Unrestricted battery policy; original watchdogs and the policy condition remain recorded | -| Production artifacts and channel packet | [Release readiness](06_Release_Readiness.md) | Current `bef67bd` signed Android/iOS artifacts pass packaging and repeated 16 KiB Android startup/storage checks. Earlier artifacts are historical; scoped engineering acceptance is recorded below, with device closeout complete. [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) tracks final integration; required CI and merge precede publishing. Actual channel delivery remains pending | +| Production artifacts and channel packet | [Release readiness](06_Release_Readiness.md) | Current `bef67bd` signed Android/iOS artifacts pass packaging and repeated 16 KiB Android startup/storage checks. Earlier artifacts are historical; scoped engineering acceptance is recorded below, with device closeout complete. [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) merged at `247e58a` after all 36 final-head checks passed. Apple accepted the `0.3.0 (9)` upload and started processing; actual channel delivery remains pending | | Pilot and capacity | [Pilot kit](../c1-s1/02_Pilot_Protocol_and_Observation_Kit.md) and [continuation order](../04_Sprint_Plan.md#31-october-continuation-order-and-reforecast) | Human owner/cohort/setup/capacity and actual consented sessions remain pending | The subsequent guide correction is integrated at @@ -172,7 +172,7 @@ Done; participant follow-up is a separate unfinished task, so the whole Sprint i | C1-S2-T07 / PYB-006.2 | Done — applicable automated regression | 984 ordinary tests; 36 frozen-runtime CI checks including pinned goldens/native WebView; later documentation integration tracked separately | | C1-S2-T08 / PYB-008.1 | Done — Android observations reviewed | [Android report](05_Android_Acceptance.md): exact sources, final affected checks, OEM qualifier condition and retained failures | | C1-S2-T09 / PYB-008.1 | Done — iPad observations reviewed | [iPad report](04_iPad_Acceptance.md): offline/consent/generated text, final palette regression and all five app/profile rows | -| C1-S2-T10 / PYB-006.2 | Done — scoped review, evidence reconciliation and device closeout | Actual policy restoration, owned-fixture cleanup and restored advertising recorded; final branch CI/review/merge remains an integration step | +| C1-S2-T10 / PYB-006.2 | Done — scoped review, evidence reconciliation and device closeout | Actual policy restoration, owned-fixture cleanup and restored advertising recorded; PR #41 subsequently merged after all 36 final-head checks passed | | C1-S2-T11 / PYB-011.2 | Awaiting participant evidence | No consenting activation dates or mature follow-up records supplied | ## Required scenario evidence @@ -210,7 +210,7 @@ source gates; physical observations remain bound to their recorded artifacts. | Full app regression and repository gates | At app source `90311f3`: 972 ordinary Flutter tests pass; analysis clean; 204 Dart files formatted; no-leak/SPDX/import/locale/DCO pass; 42 publication tests and Markdown links pass after documentation updates | | Android additional harness | Lenovo Android 12 separate-process seed/verify and production-entry offline UI checks pass in an isolated app; [scope/artifacts](02_Platform_Qualification.md) | | iPad additional harness | Signed profile build/install/launch succeed. Seed and verify assertion receipts pass across a killed process; closed database hash unchanged. Flutter debug path remains unavailable | -| Candidate store state | No Google Play/TestFlight submission, approval, new public availability or installed-store verification established by this work | +| Candidate store state | Apple accepted the `0.3.0 (9)` upload on 31 October at `14:03:25 UTC` and started processing; see the [channel receipt](06_Release_Readiness.md#31-october-app-store-connect-upload-receipt). Processing completion, new TestFlight availability and an installed-channel upgrade remain unverified. No Google Play upload is established | | Firmware and Ready | No new firmware publication or complete five-profile qualification; no second-operator reproduction or PyBLE Ready award | ```mermaid @@ -256,11 +256,12 @@ human sign-off or a Scrum ceremony. ordinary RTS reset, with no firmware/filesystem write; all five boards then advertised. That restoration is not counted as an app reconnect pass. The platform/release reports retain the private receipts. [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) - tracks final integration; required CI and merge precede publishing and remain + merged after all 36 final-head checks passed; those integration checks are separate from the 36 passing frozen-runtime checks. -- **Next release stage — M-05:** verify store access and unused build numbers, - upload only the admitted artifacts after final integration, then record processing, - actual availability and store-delivered upgrade/launch evidence separately. +- **Next release stage — M-05:** verify Google Play access and the unused build + number before uploading its admitted artifact; follow the accepted Apple + upload through processing. Record actual channel availability and + store-delivered upgrade/launch evidence separately. Prepared binaries, local Preview installs and passing engineering tests do not establish channel delivery. @@ -293,3 +294,20 @@ Its workspace exactly matched an intentional invalid-media fixture left by an earlier qualification run. A fresh backup and the verified valid original workspace were preserved; restoring only that region returned `8C9E` to normal advertising. No firmware or scan-count logic changed. + +### PR #41 final integration receipt + +[PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) merged on +31 October 2026 at `14:01:01 UTC` as +`247e58adadd52ebe46c6f684a6ee06f36a90a9bf`. All 36 checks on final reviewed head +`34dd89e40bc69b97a0d1caf198f234eab6cf1e02` passed across the +[push workflow](https://github.com/PyBLE-dev/PyBLE/actions/runs/41206669043) and +[PR workflow](https://github.com/PyBLE-dev/PyBLE/actions/runs/41206673197). +After fetching `main`, both commits resolved to the exact repository tree +`b32115d210dcd198f0289f0b4486f1bce4a0b108`. + +This proves integration of the reviewed source and evidence. The accepted +production artifacts remain bound to frozen runtime `bef67bd` and app tree +`60b3a68b693551af5d83076547c502f69838e052`; the later explanatory comment and +reports do not change their executable behavior. Merge and CI do not establish +store upload, processing, availability or an installed-channel upgrade. diff --git a/docs/developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md b/docs/developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md index 883668c6..cb9b8458 100644 --- a/docs/developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md +++ b/docs/developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md @@ -9,9 +9,9 @@ | Scope | App-only bounded current-text recovery; existing Play open-testing and TestFlight channels | | Runtime source | Recovery baseline plus landscape layout, native keyboard dismissal and iPad palette-geometry repairs at `bef67bded9e5b83437e3eb0e2ec4be6a4cfd1a64` | | Build checkout | Release worktree `c6e685dd3ebe718ed89fcfe58e441331eb174648`; app tree `60b3a68b693551af5d83076547c502f69838e052`, verified identical to the runtime baseline | -| 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) tracks final integration; required CI and merge precede publishing; M-05 delivery remains pending | +| 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 delivery remains pending | | Local evidence | Ignored `local/recovery-completion/release/candidate-bef67bd/`: build/check logs, source/artifact manifests, runtime evidence and retained signed binaries | -| Public copy | [Prepared release packet](../../../publication/app-0.3.0-build-9-release-packet.md); no submission or availability claim | +| Public copy | [Release packet](../../../publication/app-0.3.0-build-9-release-packet.md); Apple upload accepted and processing started, with no new channel-availability claim | A post-freeze comment correction clarifies Android's asset/file-access adapter semantics. It changes no executable behavior or loading path; the retained @@ -29,11 +29,11 @@ claim a new firmware release, fresh firmware OI-1 qualification or a Ready badge | Gate | Required evidence | Current disposition | |---|---|---| | M-02 recovery acceptance | All DR-T01–14 required evidence, including representative physical generated-text recovery and both platform offline/current-board-consent records | Accepted: mandatory DR-T01–14 evidence is reconciled in the [execution record](00_Execution_Record.md) and its iPad/Android reports, including final normal-candidate generated-text recovery, offline restore and current-target Cancel checks | -| App regression | Accepted source contract, red/green history, locked dependencies, ordinary tests, pinned goldens, platform builds and repository gates | Accepted runtime evidence: 984 ordinary Flutter tests, including 28 shell widget tests, six iOS guide/platform-control tests and one platform-fallback test; 36 frozen-runtime CI checks; pinned goldens and clean analysis/source gates. The final documentation/rebase head must pass required CI for [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) before merge and publishing | +| App regression | Accepted source contract, red/green history, locked dependencies, ordinary tests, pinned goldens, platform builds and repository gates | Accepted runtime evidence: 984 ordinary Flutter tests, including 28 shell widget tests, six iOS guide/platform-control tests and one platform-fallback test; 36 frozen-runtime CI checks; pinned goldens and clean analysis/source gates. Final head `34dd89e` passed all 36 integration checks and merged as `247e58a`; the [merge receipt](00_Execution_Record.md#pr-41-final-integration-receipt) records workflow links and exact repository-tree equality | | Five-profile app compatibility | Q01–Q10 below with exact app/firmware identity, actual observations and retained failures | Accepted Q01–Q10 on the exact named firmware inputs below, with source-impact mapping for earlier unaffected rows and final affected keyboard/recovery reruns on both tablets; retained failures remain visible in the device reports | | 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 | | Release review | Frozen artifact identity, resolved mandatory failures, supported scope, privacy/dependency review and recorded acceptance | Accepted app-only M-04 engineering admission for `bef67bd` and the hashes below, with the Lenovo OEM precondition and historical firmware limits retained | -| 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 | +| M-05 channel delivery | Actual upload/processing/review/availability, followed by store-delivered installed identity and upgrade/launch checks | Apple upload accepted on 31 October at `14:03:25 UTC`; processing started. Processing completion, TestFlight availability and installed upgrade remain unverified. Google Play upload remains unverified | Pilot participation and useful-return evidence remain separate from maintenance release admission. A second operator is required for the optional reproduction @@ -161,7 +161,7 @@ must use the actual delivered package. | SHA-256 | `54552bbb0cadf5f33c0bebd4e869623ea17308cd73281680c986daa6509e2c3d` | | Identity | `dev.pyble.pyble`, `0.3.0 (9)`, normal `lib/main.dart` | | Build / deployment floor | Xcode 27.2 / iOS SDK 27.2; app and compiled deployment floor at least iOS 15.0 | -| Export | App Store Connect distribution export; automatic signing with build-number management disabled; export destination only, no upload | +| Initial export | App Store Connect distribution export; automatic signing with build-number management disabled; export destination only. The subsequent archive-upload receipt is recorded below | | Provisioning | Production App Store profile; debugging disabled, no development-device list, beta reporting enabled; valid through 17 May 2027 | | Validation | `tools/validate_ios_ipa.sh` passes code-signature, compiled minimum OS, embedded-asset mode/classification and Xcode `swinfo` checks; only the three expected unsigned resource-bundle records are excluded | @@ -332,14 +332,13 @@ uploaded or consumed in a store account; that question remains an account check. No dedicated Play/App Store Connect connector or configured standalone command-line store credential was found in the standard locations inspected. -However, Xcode preferences contain one configured production Apple-account -reference, and its cached provisioning metadata includes the candidate signing -team. The existing Xcode account may therefore support an archive upload after -admission without a separate App Store Connect API key. Account metadata alone -does not verify a live session, App Store Connect role or whether build 9 has -already been consumed; these remain **unverified**. Read-only browser discovery -did not establish an authenticated console session. This is not a claim that -the owner lacks web-console access or that Xcode has no potential upload route. +The initial inspection found one configured production Apple-account reference +in Xcode and cached provisioning metadata for the candidate signing team. +Those local records did not establish a live session, role or unused build +number. The later successful upload below verifies that this existing account +could upload the unchanged `0.3.0 (9)` archive without a build-number conflict. +Read-only browser discovery did not establish an authenticated console session; +that observation does not imply that the owner lacks web-console access. A read-only GitHub audit found zero repository Actions secrets and zero repository environments. The only authored active workflow is @@ -350,10 +349,52 @@ proven absent. No existing repository workflow consumes a Play or App Store publisher credential. This inspection found no configured CI upload route; it does not infer that the owner lacks credentials elsewhere. -Engineering admission is complete for the frozen artifacts. After the final -required PR checks and merge, the authorized distribution operator must verify -the exact package, unused build numbers and current declarations, upload the -retained artifacts, resolve processing/review findings, and record actual -availability and installed-store results separately. The existing Xcode account -is a concrete route to attempt, with server authentication and receipts retained. -The prepared packet and artifact records do not substitute for channel delivery. +Engineering admission and PR #41 integration are complete. Apple accepted the +archive upload below; resolve subsequent processing/review findings and record +actual availability and installed-store results separately. Google Play account +history, unused build number and submission remain separate pending work. A +successful upload does not substitute for channel delivery. + +## 31 October App Store Connect upload receipt + +The existing configured Xcode account uploaded `dev.pyble.pyble` version +`0.3.0`, build `9`, after PR #41 merged. The upload command exited zero at +`2026-10-31T14:03:25Z`. Xcode reported “Uploaded package is processing.” and +“Upload succeeded.” Automatic build-number changes were disabled; the upload +reported no build-number conflict. Apple has accepted and consumed build `9`; +do not repeat that upload. A replacement Apple binary requires an explicit +next-build contract and rebuilt artifacts. This establishes accepted upload and +the start of server processing only. + +| Observation | Recorded result | +|---|---| +| Submitted transport IPA | `PyBLE-0.3.0-build-9-submitted.ipa`, 23,795,921 bytes; SHA-256 `2235ebcb46362871b5722ca9416b62fe109ce5fd42a4f235f1b3e87841ca5de3` | +| Admitted archive input | `PyBLE-0.3.0-build-9.xcarchive.zip`, the complete archive including dSYMs; SHA-256 `0e52d142ee14009a947422a6ded5ffa25ad70ad2297dae6735db802f5a6310dd` | +| Re-export identity | Xcode re-exported and re-signed the archive for transport, so the submitted IPA differs from the prepared `54552bbb…` export above. All five Mach-O executables match outside their code-signature regions; resources, `Info.plist` and provisioning profile match. Differences are signatures, `CodeResources` and regenerated Symbols entries | +| Submitted-package checks | `tools/validate_ios_ipa.sh` and deep/strict code-signature verification pass on the actual retained transport IPA | +| Server upload receipt | Version `0.3.0`, build `9`, platform `IOS`; uploaded at `2026-10-31T14:03:24Z`; state `PROCESSING`, with empty errors and warnings in that receipt | +| Processing completion / TestFlight availability | Not established by the upload receipt | +| TestFlight snapshot | At approximately `14:04–14:05 UTC`, the connected iPad's actual TestFlight detail for PyBLE offered version `0.2.0`, build `6`, with an Open button and build-6 notes; no `0.3.0` availability was observed in that snapshot | +| Installed-app provenance limit | The separate device query found the same bundle/build and marked it developer-accessible. The TestFlight channel view and device query are distinct evidence; neither is reconstructed as a new store-install receipt | +| Installation / data | No update, uninstall or app-data clearing was performed during that channel check | +| Remaining delivery evidence | Processing result, tester/group availability, then actual channel upgrade, About identity and scoped launch/workflow observations | + +The submitted IPA, command/validation logs, selected server responses and +code-equivalence comparisons remain under ignored +`local/recovery-completion/release/candidate-bef67bd/store-upload/20261031T140128Z/`. +The `selected-server-receipts.json` SHA-256 is +`c92ec28f87a42bfee8c2bb7b2e2b0afacb2b284472ed26bea5f649ee416afaba`; +`submitted-code-equivalence.json` is +`24db92bf0f8256859a29d0db5fc041e4b718a1988bb2974e456a7c8296f0c0ee`. +The opaque server delivery identifier and account metadata remain private. +A later read-only command-line status request required separate authenticated +credentials and yielded no newer processing state; no credential was extracted. +The iPad Safari App Store Connect check reached Apple's sign-in page, without +an authenticated browser session. Follow-through on processing and tester-group +availability therefore remains pending authenticated account access. Its private +capture is `local/recovery-completion/ipad/asc-session-after-upload.{log,xcresult}`. + +The timestamped TestFlight captures are retained privately as +`local/recovery-completion/ipad/testflight-pyble-after-upload.{log,xcresult}`. +M-05 remains unfinished; no Play submission or completed TestFlight delivery is +inferred from this Apple upload. diff --git a/docs/publication/app-0.3.0-build-9-release-packet.md b/docs/publication/app-0.3.0-build-9-release-packet.md index 8b0bf687..25bfd195 100644 --- a/docs/publication/app-0.3.0-build-9-release-packet.md +++ b/docs/publication/app-0.3.0-build-9-release-packet.md @@ -3,13 +3,17 @@ # PyBLE 0.3.0 (9) — prepared app release packet -Prepared 31 October 2026. This is candidate copy for the existing Google Play -open-testing and TestFlight channels. It does not announce availability, a -submission, or store delivery. Engineering admission is accepted for the frozen -artifacts; final PR checks and merge precede publishing. The [readiness record](../developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md) -owns the artifact and gate states. Confirm that build 9 is unused in each -account before uploading; a consumed number requires a new source version -contract and rebuilt artifacts, not a renamed file. +Prepared 31 October 2026 for the existing Google Play open-testing and +TestFlight channels. Engineering admission and [PR #41 integration](../developments/2026-q4-reliable-workflow/c1-s2/00_Execution_Record.md#pr-41-final-integration-receipt) +are complete. Apple accepted the unchanged `0.3.0 (9)` upload at `14:03:25 UTC` +and started processing; the [channel receipt](../developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md#31-october-app-store-connect-upload-receipt) +does not yet establish processing completion, new TestFlight availability or +an installed-channel upgrade. Apple build 9 is consumed: do not repeat that +upload; a replacement Apple binary requires an explicit next-build contract +and rebuilt artifacts. Google Play submission remains unverified; check its +account history before uploading build 9. A consumed number requires a new +source version contract and rebuilt artifacts, not a renamed file. This packet +does not announce new channel availability. ## Google Play release notes @@ -44,12 +48,12 @@ store review result. No tester invitation is sent by preparing this packet. | Platform | Existing production/store identity | Release implication | |---|---|---| -| iPad | PyBLE `0.2.0 (6)` | Preserve this installed-store baseline for the eventual TestFlight upgrade receipt; the local Preview `0.3.0 (9)` is separate evidence | +| iPad | Actual TestFlight detail offered PyBLE `0.2.0 (6)` with Open at approximately `14:04–14:05 UTC` on 31 October; the separate device query found the same bundle/build but marked it developer-accessible | Preserve the existing installation and record the eventual actual TestFlight upgrade. The current channel view is not an installation-origin receipt; local Preview `0.3.0 (9)` remains separate evidence | | Lenovo Android | `dev.pyble.pyble` `0.2.0`, versionCode `8`; installing and initiating package `com.android.vending`, with the Play certificate recorded in readiness | Preserve this Play-signed app and its data; the isolated qualifier `0.3.0 (9)` is separate evidence and the upload-key APK is not a compatible replacement for the Play-signed install | -These installed baselines do not reveal whether a newer build number has -already been uploaded to either account. Confirm account history before -submission and record store-delivered About identity after actual delivery. +These baseline observations do not reveal full account upload history. Apple +has accepted the recorded build-9 upload; confirm Google Play history +before submission. Record store-delivered About identity after actual delivery. ## Artifact and channel handoff @@ -59,8 +63,8 @@ submission and record store-delivered About identity after actual delivery. | Android package | `dev.pyble.pyble`, production flavor, normal `lib/main.dart`; existing owner upload signer, AAB validation and native alignment checks | | iOS package | `dev.pyble.pyble`, normal `lib/main.dart`, distribution export and successful `tools/validate_ios_ipa.sh` | | Admission | Accepted recovery evidence, required app/profile matrix, packaging/provenance review and no unresolved release-blocking defect | -| Account checks | Unused build numbers; current upload/signing identity, account role, declarations, review contact and hardware instructions | -| Submit | Upload only admitted artifacts; record processing and review outcomes independently on Play and App Store Connect | +| Account checks | Apple accepted build 9; do not repeat it. Verify Google Play build-9 availability, upload/signing identity, account role, declarations, review contact and hardware instructions | +| Submit | Follow the accepted Apple upload through processing/review. Upload the admitted Android artifact only after its independent account checks; retain each platform outcome | | Verify delivery | Record actual track/group availability, then store-delivered installation/upgrade, About identity and a scoped launch/workflow check | | Public copy | Update release availability only after observing it; preserve each platform's actual status | From d7c3c3cc574260b78e1e0198dca1d70a3f172b92 Mon Sep 17 00:00:00 2001 From: Viwat Vchirawongkwin Date: Sat, 31 Oct 2026 21:11:02 +0700 Subject: [PATCH 2/6] [docs] align release summaries with merge and Apple upload Signed-off-by: Viwat Vchirawongkwin --- CHANGELOG.md | 6 +++--- README.md | 6 ++++-- docs/ROADMAP.md | 3 ++- .../01_Overview_and_Scrum_Framework.md | 2 +- .../2026-q4-reliable-workflow/02_Product_Roadmap.md | 4 ++-- .../2026-q4-reliable-workflow/03_Milestones.md | 4 ++-- .../2026-q4-reliable-workflow/04_Sprint_Plan.md | 4 ++-- .../05_Product_Backlog_and_Stories.md | 6 +++--- .../2026-q4-reliable-workflow/06_Sprint_Backlogs.md | 10 +++++----- .../PyBLE_Implementation_Plan_and_Strategy_v1.0.md | 11 +++++------ 10 files changed, 29 insertions(+), 27 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0bb968b2..e48f3519 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,9 +12,9 @@ remains a separate historical baseline built from its annotated tag. The merged app source now targets `0.3.0+9`. Its local Android and iPad Preview installations support scoped engineering acceptance for bounded recovery and -the declared app-only matrix. Device closeout is complete. [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) tracks final -integration; required CI and merge precede publishing. Actual channel delivery -remains pending. The recorded existing-channel baseline is Android +the declared app-only matrix. Device closeout is complete. [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) merged after all 36 checks on its final head passed. Apple accepted the +`0.3.0 (9)` upload and started processing; the [receipt](docs/developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md#31-october-app-store-connect-upload-receipt) +does not establish TestFlight delivery. Actual channel delivery remains pending. The recorded existing-channel baseline is Android Play `0.2.0 (8)` and iPad TestFlight `0.2.0 (6)`; the earlier build-5 Transporter and build-8 submission handoffs remain historical artifact records. diff --git a/README.md b/README.md index 73182a66..824704a5 100644 --- a/README.md +++ b/README.md @@ -108,8 +108,10 @@ for accepted automated and candidate-specific device evidence, including the declared five-profile × two-platform app matrix and test conditions. Local Android and iPad Preview installations remain separate from store delivery. The [release readiness record](docs/developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md) -tracks the engineering-qualified artifacts, completed device closeout and channel handoff; -`0.3.0 (9)` is not yet established as a store-delivered update. +tracks the engineering-qualified artifacts, completed device closeout and channel handoff. +Apple accepted the `0.3.0 (9)` upload and started processing ([receipt](docs/developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md#31-october-app-store-connect-upload-receipt)); +TestFlight delivery and Google Play submission remain unverified. This candidate +is not yet established as a store-delivered update. ### Firmware diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index 25f5cc71..6e91d83f 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -45,7 +45,8 @@ v0.7.0 remains non-normative and requires separate maintainer approval. - Correct the [stale public TestFlight description](developments/2026-q4-reliable-workflow/c1-s1/05_TestFlight_Metadata_Correction.md) through the distribution owner; replacement copy is prepared, not published. - Complete [channel delivery](developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md) for qualified app `0.3.0+9`. - [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) tracks final integration; required CI and merge precede publishing. + [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) merged after all 36 checks on its final head passed. + Apple accepted the upload and started processing ([receipt](developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md#31-october-app-store-connect-upload-receipt)); TestFlight delivery and Google Play submission remain unverified. Retain the recorded 0.2.0 channel baseline until the new channel is verified. The [Android publication review](testing/website/android-open-testing-2026-09-25.md) records live open-testing availability. The diff --git a/docs/developments/2026-q4-reliable-workflow/01_Overview_and_Scrum_Framework.md b/docs/developments/2026-q4-reliable-workflow/01_Overview_and_Scrum_Framework.md index 1f740e61..af507fd6 100644 --- a/docs/developments/2026-q4-reliable-workflow/01_Overview_and_Scrum_Framework.md +++ b/docs/developments/2026-q4-reliable-workflow/01_Overview_and_Scrum_Framework.md @@ -18,7 +18,7 @@ This package derives execution views from the strategy. It does not replace normative specifications, expand hardware claims, create GitHub issues, or authorize store/website publication. The strategy and original package were recorded together in planning baseline `d039db0`. The [C1-S1 execution record](c1-s1/00_Execution_Record.md) owns actual results and blockers. -**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) tracks final integration; required CI and merge precede publishing. Actual M-05 store delivery remains 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. +**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. Apple accepted the upload and started processing ([receipt](c1-s2/06_Release_Readiness.md#31-october-app-store-connect-upload-receipt)); actual M-05 store delivery remains 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. ## Navigation and ownership of information diff --git a/docs/developments/2026-q4-reliable-workflow/02_Product_Roadmap.md b/docs/developments/2026-q4-reliable-workflow/02_Product_Roadmap.md index 2624a31a..e3dee856 100644 --- a/docs/developments/2026-q4-reliable-workflow/02_Product_Roadmap.md +++ b/docs/developments/2026-q4-reliable-workflow/02_Product_Roadmap.md @@ -5,7 +5,7 @@ | Control | Value | |---|---| -| Status | C1-S1 remains partial; bounded recovery and app-only qualification pass 31 October engineering review. [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) tracks final integration; required CI and merge precede publishing. M-05 delivery and pilot/capacity inputs remain outstanding | +| Status | C1-S1 remains partial; bounded recovery and app-only qualification pass 31 October engineering review. [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) merged after all 36 checks on its final head passed. M-05 delivery and pilot/capacity inputs remain outstanding | | Planning date | 25 September 2026; dates use Asia/Bangkok | | Source | [Implementation strategy revision 1.8](../../planning/PyBLE_Implementation_Plan_and_Strategy_v1.0.md), particularly §§1, 6–9, 12, 14, and 19 | | Inspected baseline | `main` at `23ed764b0ef88dce9720c66fbd1c0655268860cf` | @@ -13,7 +13,7 @@ | Planning authority | Product Owner orders the Product Backlog; Developers forecast feasible work during Sprint Planning; names and capacity remain unassigned | | Related documents | [Framework](01_Overview_and_Scrum_Framework.md), [milestones](03_Milestones.md), [Sprint Plan](04_Sprint_Plan.md), [stories](05_Product_Backlog_and_Stories.md), [Sprint Backlogs](06_Sprint_Backlogs.md) | -**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) tracks final integration; required CI and merge precede publishing. Actual M-05 store delivery remains 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. +**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. Apple accepted the upload and started processing ([receipt](c1-s2/06_Release_Readiness.md#31-october-app-store-connect-upload-receipt)); actual M-05 store delivery remains 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. ## Product Goal and decision principle diff --git a/docs/developments/2026-q4-reliable-workflow/03_Milestones.md b/docs/developments/2026-q4-reliable-workflow/03_Milestones.md index 290ae9d6..3802035d 100644 --- a/docs/developments/2026-q4-reliable-workflow/03_Milestones.md +++ b/docs/developments/2026-q4-reliable-workflow/03_Milestones.md @@ -5,14 +5,14 @@ | Control | Value | |---|---| -| Status | M-01/SG0 remains Blocked on 25 September by pilot ownership/cohort/setup and capacity decisions; existing channel installations verified on retry. M-02 and scoped app-only M-04 pass 31 October engineering review; device closeout is complete. [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) tracks final integration; required CI and merge precede publishing. M-05 channel delivery remains pending; forecast windows need replanning | +| Status | M-01/SG0 remains Blocked on 25 September by pilot ownership/cohort/setup and capacity decisions; existing channel installations verified on retry. M-02 and scoped app-only M-04 pass 31 October engineering review; device closeout is complete. [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) merged after all 36 checks on its final head passed. M-05 channel delivery remains pending; forecast windows need replanning | | Planning date | 25 September 2026; dates use Asia/Bangkok | | Source | [Implementation strategy revision 1.8](../../planning/PyBLE_Implementation_Plan_and_Strategy_v1.0.md), especially §§4, 8–10, 14, and 19 | | Inspected baseline | `main` at `23ed764b0ef88dce9720c66fbd1c0655268860cf` | | Related documents | [Framework](01_Overview_and_Scrum_Framework.md), [roadmap](02_Product_Roadmap.md), [Sprint Plan](04_Sprint_Plan.md), [stories](05_Product_Backlog_and_Stories.md), [Sprint Backlogs](06_Sprint_Backlogs.md) | | Meaning | Milestones describe inspectable outcomes and decision evidence; they are not additional Scrum events or promised releases | -**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) tracks final integration; required CI and merge precede publishing. Actual M-05 store delivery remains 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. +**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. Apple accepted the upload and started processing ([receipt](c1-s2/06_Release_Readiness.md#31-october-app-store-connect-upload-receipt)); actual M-05 store delivery remains 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. ## Assessment and evidence states diff --git a/docs/developments/2026-q4-reliable-workflow/04_Sprint_Plan.md b/docs/developments/2026-q4-reliable-workflow/04_Sprint_Plan.md index 78328338..1ab9ddfc 100644 --- a/docs/developments/2026-q4-reliable-workflow/04_Sprint_Plan.md +++ b/docs/developments/2026-q4-reliable-workflow/04_Sprint_Plan.md @@ -12,7 +12,7 @@ | Acceptance criteria | [Product backlog and stories](05_Product_Backlog_and_Stories.md) | | Task-level proposal | [Sprint backlogs](06_Sprint_Backlogs.md) | -**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) tracks final integration; required CI and merge precede publishing. Actual M-05 store delivery remains 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. +**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. Apple accepted the upload and started processing ([receipt](c1-s2/06_Release_Readiness.md#31-october-app-store-connect-upload-receipt)); actual M-05 store delivery remains 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. ## Forecast and commitment boundary @@ -66,7 +66,7 @@ measured velocity or a new delivery deadline. The original C1-S3 window is |---|---|---| | 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 | | 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 | -| 3 — M-05 distribution | Prepared handoffs; verify account/build-number state, submit the admitted artifact after final integration, then record processing/availability and installed-channel evidence | Next release stage; owner access and external review duration remain unresolved | +| 3 — M-05 distribution | Apple upload accepted and processing started; verify Google Play account/build-number state before its submission, then record actual processing/availability and installed-channel evidence | Next release stage; owner access and external review duration remain unresolved | | 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 | | 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 | | 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 | diff --git a/docs/developments/2026-q4-reliable-workflow/05_Product_Backlog_and_Stories.md b/docs/developments/2026-q4-reliable-workflow/05_Product_Backlog_and_Stories.md index 41eb2703..0f2e0ece 100644 --- a/docs/developments/2026-q4-reliable-workflow/05_Product_Backlog_and_Stories.md +++ b/docs/developments/2026-q4-reliable-workflow/05_Product_Backlog_and_Stories.md @@ -9,11 +9,11 @@ | Source | [Implementation strategy revision 1.8](../../planning/PyBLE_Implementation_Plan_and_Strategy_v1.0.md), initially derived 25 September; reconciled 31 October 2026 | | Cycle | Proposed 28 September–20 December 2026; Asia/Bangkok | | Baseline | `23ed764b0ef88dce9720c66fbd1c0655268860cf`; completed publication work is evidence, not a new commitment | -| Status | C1-S1: PYB-001.1/.2 and PYB-006.1 scoped work Done; pilot preparation awaits setup and observation work awaits evidence. PYB-006.2/M-02, scoped 008/009 and app-only M-04 pass engineering review; [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) tracks final integration; required CI and merge precede publishing. M-05 delivery remains pending | +| Status | C1-S1: PYB-001.1/.2 and PYB-006.1 scoped work Done; pilot preparation awaits setup and observation work awaits evidence. PYB-006.2/M-02, scoped 008/009 and app-only M-04 pass engineering review; [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) merged after all 36 checks on its final head passed. M-05 delivery remains pending | | Accountabilities | Product Owner orders the backlog; Developers size and select work in Sprint Planning; named people and capacity remain to be assigned | | Navigation | [Overview and Scrum](01_Overview_and_Scrum_Framework.md) · [Roadmap](02_Product_Roadmap.md) · [Milestones](03_Milestones.md) · [Sprint plan](04_Sprint_Plan.md) · [Sprint Backlogs](06_Sprint_Backlogs.md) | -**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) tracks final integration; required CI and merge precede publishing. Actual M-05 store delivery remains 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. +**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. Apple accepted the upload and started processing ([receipt](c1-s2/06_Release_Readiness.md#31-october-app-store-connect-upload-receipt)); actual M-05 store delivery remains 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. ## 1. How to use this backlog @@ -44,7 +44,7 @@ | 7 | PYB-008 / P0 for claims | Establish the exact candidate's applicable compatibility evidence | 008.1, 008.2 | Representative checks C1-S2; staged matrix C1-S3–S5; 001, 009.1, artifacts | 008.1/.2 Done for the declared app-only matrix; exact candidate/firmware/OEM-condition limits retained | | 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 | | 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 | -| 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 complete; final integration and account checks precede submission | +| 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 upload accepted; Google Play account checks remain pending | | 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 | Preparation in progress; store-account build history, upload, processing and installed-channel verification remain pending | | 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 | | 13 | PYB-010 / P1 | Read accurate setup and recovery guidance in Simplified Chinese | 010.1 | Optional capacity and named language reviewer | Proposed | diff --git a/docs/developments/2026-q4-reliable-workflow/06_Sprint_Backlogs.md b/docs/developments/2026-q4-reliable-workflow/06_Sprint_Backlogs.md index b45ffba7..36e85572 100644 --- a/docs/developments/2026-q4-reliable-workflow/06_Sprint_Backlogs.md +++ b/docs/developments/2026-q4-reliable-workflow/06_Sprint_Backlogs.md @@ -5,7 +5,7 @@ | Field | Rule | |---|---| -| Status | C1-S1: six Done, two Prepared, four Awaiting evidence. C1-S2: ten engineering tasks Done, T11 Awaiting participant evidence. M-02 and app-only M-04 accepted 31 October; [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) tracks final integration; required CI and merge precede publishing. M-05 delivery remains pending. Original allowances/calendar remain historical | +| Status | C1-S1: six Done, two Prepared, four Awaiting evidence. C1-S2: ten engineering tasks Done, T11 Awaiting participant evidence. M-02 and app-only M-04 accepted 31 October; [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) merged after all 36 checks on its final head passed. M-05 delivery remains pending. Original allowances/calendar remain historical | | Product/Sprint Goals | [Framework](01_Overview_and_Scrum_Framework.md) and [Sprint plan](04_Sprint_Plan.md) | | Acceptance authority | [Product backlog and stories](05_Product_Backlog_and_Stories.md); task completion never overrides a parent story's acceptance criteria | | Selection | Developers confirm scope, ownership, estimates and task plan at each Sprint Planning | @@ -20,7 +20,7 @@ The initial tasks are small planning units, generally 1–4 hours. If a task or Record optional follow-up consent and the prospective day-7–14 window at each activation. Collect follow-up as windows arrive, starting with the first cohort; do not postpone early cohorts until S5. S1 observation allowances include any follow-up due within S1; S2-T11, S3-T10 and later follow-up rows continue it. Developers must reallocate headroom or other selected work if actual pilot effort exceeds these allowances, preserving required recovery review and tests. Record missed windows as missing/late evidence rather than reconstructing an on-time response. -**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) tracks final integration; required CI and merge precede publishing. Actual M-05 store delivery remains 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. +**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. Apple accepted the upload and started processing ([receipt](c1-s2/06_Release_Readiness.md#31-october-app-store-connect-upload-receipt)); actual M-05 store delivery remains 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. ## C1-S1 — reproduce the current workflow and size recovery @@ -70,10 +70,10 @@ Five baseline starts is a target, not the implied result of reserving six hours. | C1-S2-T04 | PYB-006.2 | Implement the minimal accepted durable storage/migration behavior until relevant tests pass | T02/T03 red evidence | App | 4 | Done — durable storage/schema and both native restart baselines accepted | | C1-S2-T05 | PYB-006.2 | Implement hydration and specified recovery/discard behavior through existing providers | T04 and accepted UI contract | App | 4 | Done — startup choices and normal-app recovery accepted | | C1-S2-T06 | PYB-006.2 | Complete non-destructive error handling, truthful scope and localized recovery guidance | T04/T05 | App | 2 | Done — guidance/error/localization and required scoped evidence accepted | -| C1-S2-T07 | PYB-006.2 | Run affected controller/widget/lifecycle regressions and repository gates; resolve scoped failures | T04–T06 | App + QA | 2 | Done — 984 ordinary tests and 36 frozen-runtime CI checks pass; final branch integration separate | +| C1-S2-T07 | PYB-006.2 | Run affected controller/widget/lifecycle regressions and repository gates; resolve scoped failures | T04–T06 | App + QA | 2 | Done — 984 ordinary tests and 36 frozen-runtime CI checks pass; PR #41 subsequently merged after all 36 final-head checks passed | | C1-S2-T08 | PYB-008.1 | Run representative Android restart/interruption scenarios on the recorded candidate; retain actual results | T01/T07; device/candidate | QA | 2 | Done — Android recovery, final affected checks and declared Q rows accepted with OEM test condition | | C1-S2-T09 | PYB-008.1 | Run representative iPad restart/interruption scenarios on the recorded candidate; retain actual results | T01/T07; device/candidate | QA | 2 | Done — iPad recovery, final palette regression and declared Q rows accepted | -| C1-S2-T10 | PYB-006.2 | Review integration/evidence and update user guidance plus carried A-24/Blocks limitations | T07–T09 and all applicable acceptance | App + reviewer | 1 | Done — scoped engineering review and device closeout; final branch integration tracked separately | +| C1-S2-T10 | PYB-006.2 | Review integration/evidence and update user guidance plus carried A-24/Blocks limitations | T07–T09 and all applicable acceptance | App + reviewer | 1 | Done — scoped engineering review and device closeout; PR #41 subsequently merged after all 36 final-head checks passed | | C1-S2-T11 | PYB-011.2 | Collect due consented follow-up and account for early windows, missing responses and task opportunity | 004 prospective method; actual activation dates | Pilot | 1 | Awaiting participant evidence — no activation dates supplied | | **C1-S2 total** | | | | | **24** | | @@ -158,7 +158,7 @@ An analysis task can finish with fewer than 12 starts, but PYB-011.1 remains unf | C1-S5-T03 | PYB-008.2 | Execute the next required batch and retain outstanding rows honestly | T01; exact devices | QA + firmware | 4 | Current candidate rows covered; rerun only invalidated or newly selected scope | | 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 | | 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 | -| 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; final integration separate | +| 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 | | 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 | Pending — store-account/build-number verification and actual submission receipt | | 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 | | 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 | diff --git a/docs/planning/PyBLE_Implementation_Plan_and_Strategy_v1.0.md b/docs/planning/PyBLE_Implementation_Plan_and_Strategy_v1.0.md index 57310f20..c6c9185b 100644 --- a/docs/planning/PyBLE_Implementation_Plan_and_Strategy_v1.0.md +++ b/docs/planning/PyBLE_Implementation_Plan_and_Strategy_v1.0.md @@ -13,8 +13,8 @@ |---|---| | Document version | 1.8 — accepted bounded recovery and app-only qualification; channel/pilot continuation; original filename retained | | Prepared | 25 September 2026 | -| Last reviewed | 31 October 2026; bounded M-02 and app-only M-04 engineering acceptance recorded with exact candidate, firmware and OEM test conditions; device closeout complete; [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) tracks final integration; required CI and merge precede publishing; channel delivery pending | -| Status | C1-S1 has six tasks Done, two Prepared awaiting pilot setup and four Awaiting evidence; Sprint and SG0 remain unfinished. Bounded recovery and app-only qualification pass scoped engineering review; device closeout is complete. [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) tracks final integration; required CI and merge precede publishing. Actual channel delivery remains pending. Human capacity and recruitment dates need replanning; no new protocol behavior approved | +| Last reviewed | 31 October 2026; bounded M-02 and app-only M-04 engineering acceptance recorded with exact candidate, firmware and OEM test conditions; device closeout complete; [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) merged after all 36 checks on its final head passed; channel delivery pending | +| Status | C1-S1 has six tasks Done, two Prepared awaiting pilot setup and four Awaiting evidence; Sprint and SG0 remain unfinished. Bounded recovery and app-only qualification pass scoped engineering review; device closeout is complete. [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) merged after all 36 checks on its final head passed. Actual channel delivery remains pending. Human capacity and recruitment dates need replanning; no new protocol behavior approved | | Product | PyBLE — Python over Bluetooth Low Energy | | Organization | SciLabPro | | Planning horizon | Immediate 12-week delivery cycle, followed by conditional expansion through September 2028 | @@ -188,7 +188,7 @@ Do not spend the first sprint rebuilding a large analytics dashboard. A small pr | [Device information types](../../app/lib/pble/types.dart) | Negotiated chip, agent version, and capabilities | A support export must distinguish observed data from operator-supplied profile/provenance; current HELLO does not prove an artifact hash | | [Host conformance fixtures](../../tests/firmware_tests/host/conformance/README.md), [HIL guide](../../tests/firmware_tests/hil/README.md) | Shared vectors, compiled-native/portable tests, physical benches and release evidence tools | Add a coverage map and operator recipe before creating another harness or schema | -**Accepted next-release engineering increment:** PYB-006.2 closes the bounded current-text part of the carried A-24 persistence gap. The [C1-S2 record](../developments/2026-q4-reliable-workflow/c1-s2/00_Execution_Record.md) binds its 31 October engineering acceptance, exact artifacts, physical conditions and carried limits. One acknowledged Drift checkpoint can be restored offline; generated Blocks text is covered only after explicit adoption into Editor. Full projects, Blocks graphs and new protocol operations remain outside this increment. [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) tracks final integration; required CI and merge precede publishing. Complete M-05 distribution next, while arranging real pilot observations and confirmed human capacity. The original design/sizing estimates remain historical forecasts, not measured effort.[^app-contract] +**Accepted next-release engineering increment:** PYB-006.2 closes the bounded current-text part of the carried A-24 persistence gap. The [C1-S2 record](../developments/2026-q4-reliable-workflow/c1-s2/00_Execution_Record.md) binds its 31 October engineering acceptance, exact artifacts, physical conditions and carried limits. One acknowledged Drift checkpoint can be restored offline; generated Blocks text is covered only after explicit adoption into Editor. Full projects, Blocks graphs and new protocol operations remain outside this increment. [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) merged after all 36 checks on its final head passed. Apple accepted the upload and started processing ([receipt](../developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md#31-october-app-store-connect-upload-receipt)). Complete M-05 distribution next, while arranging real pilot observations and confirmed human capacity. The original design/sizing estimates remain historical forecasts, not measured effort.[^app-contract] ## 3. Target users and positioning @@ -390,8 +390,7 @@ The cycle intentionally excludes a complete new protocol version, full classroom **31 October continuation:** bounded recovery M-02 and app-only M-04 pass engineering review at frozen `bef67bd`, with required automated/platform evidence, exact firmware inputs and the documented Lenovo qualifier condition. -Device closeout is complete. [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) tracks final integration; required CI and -merge precede publishing. M-05 account, submission and installed-channel +Device closeout is complete. [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) merged after all 36 checks on its final head passed. M-05 account, submission and installed-channel verification remain the next release stage. Do not schedule the same accepted matrix again without changed scope or invalidated evidence. The [dated continuation order](../developments/2026-q4-reliable-workflow/04_Sprint_Plan.md#31-october-continuation-order-and-reforecast) @@ -879,7 +878,7 @@ At cycle end, choose one principal next investment: Reliable Projects, partner p - [ ] Assign one owner and one review path for each initial issue. - [ ] Inventory exact test boards, tablets, cables, and available recovery equipment. - [ ] Freeze Task A/B/C definitions, assistance/timeout rules, prospective follow-up windows and task-opportunity questions, consent procedure, and manual support template; observe initial eligible participants. -- [x] Specify and peer-review the bounded current-text contract and its acceptance scenarios; size the safe increment. Runtime implementation and bounded engineering acceptance are recorded in C1-S2. The dated continuation order preserves original forecasts and moves remaining release work to final integration and channel delivery. +- [x] Specify and peer-review the bounded current-text contract and its acceptance scenarios; size the safe increment. Runtime implementation and bounded engineering acceptance are recorded in C1-S2. The dated continuation order preserves original forecasts; source integration and the Apple upload are recorded, while channel delivery remains pending. - [ ] If operator/capacity is available, include one existing-profile Ready rehearsal and draft record in PYB-009; show installation status and pending evidence explicitly. ### 20.2 Issue template From e8e751152f4f1164dd9f32554ab2aa97625293cd Mon Sep 17 00:00:00 2001 From: Viwat Vchirawongkwin Date: Sat, 31 Oct 2026 22:07:24 +0700 Subject: [PATCH 3/6] [docs] record TestFlight delivery and external review submission Signed-off-by: Viwat Vchirawongkwin --- CHANGELOG.md | 22 +++-- README.md | 11 ++- docs/ROADMAP.md | 8 +- .../0010-working-loop-in-memory-document.md | 8 +- ...048-bounded-current-text-draft-recovery.md | 6 +- .../01_Overview_and_Scrum_Framework.md | 4 +- .../02_Product_Roadmap.md | 4 +- .../03_Milestones.md | 6 +- .../04_Sprint_Plan.md | 4 +- .../05_Product_Backlog_and_Stories.md | 14 +-- .../06_Sprint_Backlogs.md | 14 +-- .../c1-s1/00_Execution_Record.md | 8 +- .../c1-s1/01_Channel_and_Artifact_Ledger.md | 4 +- .../05_TestFlight_Metadata_Correction.md | 61 ++++++++++-- .../c1-s2/00_Execution_Record.md | 14 +-- .../c1-s2/04_iPad_Acceptance.md | 6 +- .../c1-s2/06_Release_Readiness.md | 97 ++++++++++++++++--- ...E_Implementation_Plan_and_Strategy_v1.0.md | 10 +- .../app-0.3.0-build-9-release-packet.md | 55 +++++++---- .../App/current-draft-recovery.md | 6 +- 20 files changed, 255 insertions(+), 107 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e48f3519..7caac9ff 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,11 +12,13 @@ remains a separate historical baseline built from its annotated tag. The merged app source now targets `0.3.0+9`. Its local Android and iPad Preview installations support scoped engineering acceptance for bounded recovery and -the declared app-only matrix. Device closeout is complete. [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) merged after all 36 checks on its final head passed. Apple accepted the -`0.3.0 (9)` upload and started processing; the [receipt](docs/developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md#31-october-app-store-connect-upload-receipt) -does not establish TestFlight delivery. Actual channel delivery remains pending. The recorded existing-channel baseline is Android -Play `0.2.0 (8)` and iPad TestFlight `0.2.0 (6)`; the earlier build-5 Transporter -and build-8 submission handoffs remain historical artifact records. +the declared app-only matrix. Device closeout is complete. [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](docs/developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md#31-october-testflight-delivery-and-published-metadata)); +the exact update transaction was not observed. External build 9 is submitted +and Waiting for Review; Google Play submission/delivery remain pending. Lenovo still has Play `0.2.0 (8)`; earlier +iPad `0.2.0 (6)`, build-5 Transporter and build-8 handoff records remain historical. ### App source @@ -111,11 +113,11 @@ and build-8 submission handoffs remain historical artifact records. failure handling and document/session guards in ADR-0048 and the App contracts. The bounded successor is implemented in the 0.3.0 source candidate; acceptance and broader persistence obligations follow the C1-S2 record. -- Verified live Android open-testing wording and prepared correction of the - older public TestFlight description. Installed identities are now recorded; - Android code/assets match the retained build-8 AAB, while iPad build-6 source - mapping and a minimum-OS metadata discrepancy need distribution-owner - follow-up. The TestFlight metadata change remains pending. +- Verified live Android open-testing wording and completed the public + TestFlight description correction on 31 October. English (U.S.) app-level + copy was saved/reloaded and independently verified in the public response; + build-9 What to Test was separately saved and exactly reloaded. Historical + iPad build-6 source/minimum-OS questions remain separate from this correction. - Prepared Google Play open-testing listing text, reviewer hardware setup, tester instructions, data-use assessment, and reproducible store artwork with authentic screenshot provenance. Store availability remains a separate diff --git a/README.md b/README.md index 824704a5..f6b41900 100644 --- a/README.md +++ b/README.md @@ -91,7 +91,7 @@ does not establish its installed build/source identity or mean those earlier artifacts contain later connection-lifecycle fixes. Both platforms share the same Flutter source and app test gates. The iOS/iPadOS project minimum is 15. -### Next app candidate: local draft recovery +### Local draft recovery in app 0.3.0 The merged `0.3.0+9` candidate adds one on-device current-text recovery copy. After restart, preview and explicitly Restore or Discard the last committed @@ -109,9 +109,12 @@ declared five-profile × two-platform app matrix and test conditions. Local Android and iPad Preview installations remain separate from store delivery. The [release readiness record](docs/developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md) tracks the engineering-qualified artifacts, completed device closeout and channel handoff. -Apple accepted the `0.3.0 (9)` upload and started processing ([receipt](docs/developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md#31-october-app-store-connect-upload-receipt)); -TestFlight delivery and Google Play submission remain unverified. This candidate -is not yet established as a store-delivered update. +TestFlight `0.3.0 (9)` is verified for the existing internal account on the +connected iPad, including production About and a bounded board smoke check +([delivery record](docs/developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md#31-october-testflight-delivery-and-published-metadata)). +The exact update transaction was not observed. Build 9 is submitted to the +existing external group and is **Waiting for Review**; Google Play submission +remains pending. This is not an all-tester availability claim. ### Firmware diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index 6e91d83f..441f58f2 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -42,12 +42,12 @@ v0.7.0 remains non-normative and requires separate maintainer approval. and declared app-only matrix with exact test conditions recorded. Full A-24 and Blocks graph persistence remain separate scope. The original 45–72 hour estimate remains a forecast, not measured effort. -- Correct the [stale public TestFlight description](developments/2026-q4-reliable-workflow/c1-s1/05_TestFlight_Metadata_Correction.md) - through the distribution owner; replacement copy is prepared, not published. +- Maintain the [corrected public TestFlight description](developments/2026-q4-reliable-workflow/c1-s1/05_TestFlight_Metadata_Correction.md#31-october-published-description-and-closure): + English (U.S.) copy was saved/reloaded and independently verified publicly on 31 October. - Complete [channel delivery](developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md) for qualified app `0.3.0+9`. [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) merged after all 36 checks on its final head passed. - Apple accepted the upload and started processing ([receipt](developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md#31-october-app-store-connect-upload-receipt)); TestFlight delivery and Google Play submission remain unverified. - Retain the recorded 0.2.0 channel baseline until the new channel is verified. The + Internal-account TestFlight `0.3.0 (9)` offer/Open, installed identity and bounded smoke are verified ([delivery record](developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md#31-october-testflight-delivery-and-published-metadata)); the update transaction was not observed. + External build 9 is submitted and Waiting for Review; Google Play submission remains pending. Lenovo still has Play `0.2.0 (8)`; earlier iPad build-6 evidence remains historical. The [Android publication review](testing/website/android-open-testing-2026-09-25.md) records live open-testing availability. The [prepared build-8 handoff](testing/google-play/0.2.0-build-8.md) remains a diff --git a/docs/decisions/0010-working-loop-in-memory-document.md b/docs/decisions/0010-working-loop-in-memory-document.md index 3c218b11..752ad03c 100644 --- a/docs/decisions/0010-working-loop-in-memory-document.md +++ b/docs/decisions/0010-working-loop-in-memory-document.md @@ -70,6 +70,8 @@ That 25 September inspection was design-only. The 31 October candidate now implements the bounded current-text successor; its [C1-S2 execution record](../developments/2026-q4-reliable-workflow/c1-s2/00_Execution_Record.md) records scoped engineering acceptance after integrated/physical checks, with -exact test conditions and completed device closeout. [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) tracks final -integration; required CI and merge precede publishing. Channel delivery remains pending. The remaining A-24 project, settings, console, import and -Blocks obligations remain carried. +exact test conditions and completed device closeout. [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) +merged after all 36 final-head checks passed. The [delivery record](../developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md#31-october-testflight-delivery-and-published-metadata) +verifies internal-account TestFlight `0.3.0 (9)`; external build 9 is submitted +and Waiting for Review, while Google Play delivery remains pending. The remaining A-24 project, settings, console, import +and Blocks obligations remain carried. diff --git a/docs/decisions/0048-bounded-current-text-draft-recovery.md b/docs/decisions/0048-bounded-current-text-draft-recovery.md index 4e2bf853..50835806 100644 --- a/docs/decisions/0048-bounded-current-text-draft-recovery.md +++ b/docs/decisions/0048-bounded-current-text-draft-recovery.md @@ -8,8 +8,10 @@ 2026-09-25 during C1-S1. PR #40 merged the source and integrated CI passes. Scoped recovery acceptance and app-only qualification are recorded for frozen runtime `bef67bd` after required automated and physical checks. Device closeout -is complete. [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) tracks final integration; required CI and merge precede -publishing. Channel delivery remains pending; no named human sign-off is claimed. +is complete, and [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) merged after +all 36 final-head checks passed. The [delivery record](../developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md#31-october-testflight-delivery-and-published-metadata) +verifies internal-account TestFlight `0.3.0 (9)`; external build 9 is submitted +and Waiting for Review, while Google Play delivery remains pending. No named human sign-off is claimed. ## Context diff --git a/docs/developments/2026-q4-reliable-workflow/01_Overview_and_Scrum_Framework.md b/docs/developments/2026-q4-reliable-workflow/01_Overview_and_Scrum_Framework.md index af507fd6..2ed73120 100644 --- a/docs/developments/2026-q4-reliable-workflow/01_Overview_and_Scrum_Framework.md +++ b/docs/developments/2026-q4-reliable-workflow/01_Overview_and_Scrum_Framework.md @@ -12,13 +12,13 @@ | Strategy | [Implementation Plan, revision 1.8](../../planning/PyBLE_Implementation_Plan_and_Strategy_v1.0.md) | | Repository baseline | `23ed764b0ef88dce9720c66fbd1c0655268860cf` | | Proposed cycle | 28 September–20 December 2026; six two-week Sprints | -| Status | C1-S1: six Done, two Prepared and four Awaiting evidence. The 31 October continuation accepts M-02 and app-only M-04; S2 has ten Done tasks and T11 awaiting participants. Channel delivery and human capacity remain unresolved; no staffed-team ceremony is inferred | +| Status | C1-S1: six Done, two Prepared and four Awaiting evidence. The 31 October continuation accepts M-02 and app-only M-04; S2 has ten Done tasks and T11 awaiting participants. External TestFlight/Google Play delivery and human capacity remain unresolved; no staffed-team ceremony is inferred | | Primary audience | Tablet-owning makers, provisionally; confirm one reachable cohort before observation | | Authoritative contracts | [Contributor rules](../../../AGENTS.md), [App specification](../../specifications/App/specs.md), [App TDD](../../specifications/App/TDD.md), [PBLE/1](../../specifications/protocol.md), and applicable firmware/release specifications | This package derives execution views from the strategy. It does not replace normative specifications, expand hardware claims, create GitHub issues, or authorize store/website publication. The strategy and original package were recorded together in planning baseline `d039db0`. The [C1-S1 execution record](c1-s1/00_Execution_Record.md) owns actual results and blockers. -**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. Apple accepted the upload and started processing ([receipt](c1-s2/06_Release_Readiness.md#31-october-app-store-connect-upload-receipt)); actual M-05 store delivery remains 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. +**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 delivery remains 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. ## Navigation and ownership of information diff --git a/docs/developments/2026-q4-reliable-workflow/02_Product_Roadmap.md b/docs/developments/2026-q4-reliable-workflow/02_Product_Roadmap.md index e3dee856..71161c6a 100644 --- a/docs/developments/2026-q4-reliable-workflow/02_Product_Roadmap.md +++ b/docs/developments/2026-q4-reliable-workflow/02_Product_Roadmap.md @@ -5,7 +5,7 @@ | Control | Value | |---|---| -| Status | C1-S1 remains partial; bounded recovery and app-only qualification pass 31 October engineering review. [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) merged after all 36 checks on its final head passed. M-05 delivery and pilot/capacity inputs remain outstanding | +| Status | C1-S1 remains partial; bounded recovery and app-only qualification pass 31 October engineering review. [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) merged after all 36 checks on its final head passed. External TestFlight/Google Play delivery and pilot/capacity inputs remain outstanding | | Planning date | 25 September 2026; dates use Asia/Bangkok | | Source | [Implementation strategy revision 1.8](../../planning/PyBLE_Implementation_Plan_and_Strategy_v1.0.md), particularly §§1, 6–9, 12, 14, and 19 | | Inspected baseline | `main` at `23ed764b0ef88dce9720c66fbd1c0655268860cf` | @@ -13,7 +13,7 @@ | Planning authority | Product Owner orders the Product Backlog; Developers forecast feasible work during Sprint Planning; names and capacity remain unassigned | | Related documents | [Framework](01_Overview_and_Scrum_Framework.md), [milestones](03_Milestones.md), [Sprint Plan](04_Sprint_Plan.md), [stories](05_Product_Backlog_and_Stories.md), [Sprint Backlogs](06_Sprint_Backlogs.md) | -**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. Apple accepted the upload and started processing ([receipt](c1-s2/06_Release_Readiness.md#31-october-app-store-connect-upload-receipt)); actual M-05 store delivery remains 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. +**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 delivery remains 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. ## Product Goal and decision principle diff --git a/docs/developments/2026-q4-reliable-workflow/03_Milestones.md b/docs/developments/2026-q4-reliable-workflow/03_Milestones.md index 3802035d..432adab9 100644 --- a/docs/developments/2026-q4-reliable-workflow/03_Milestones.md +++ b/docs/developments/2026-q4-reliable-workflow/03_Milestones.md @@ -5,14 +5,14 @@ | Control | Value | |---|---| -| Status | M-01/SG0 remains Blocked on 25 September by pilot ownership/cohort/setup and capacity decisions; existing channel installations verified on retry. M-02 and scoped app-only M-04 pass 31 October engineering review; device closeout is complete. [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) merged after all 36 checks on its final head passed. M-05 channel delivery remains pending; forecast windows need replanning | +| Status | M-01/SG0 remains Blocked on 25 September by pilot ownership/cohort/setup and capacity decisions; existing channel installations verified on retry. M-02 and scoped app-only M-04 pass 31 October engineering review; device closeout is complete. [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) merged after all 36 checks on its final head passed. M-05 is partial: internal TestFlight delivery verified; external submission Waiting for Review; Google Play delivery pending; forecast windows need replanning | | Planning date | 25 September 2026; dates use Asia/Bangkok | | Source | [Implementation strategy revision 1.8](../../planning/PyBLE_Implementation_Plan_and_Strategy_v1.0.md), especially §§4, 8–10, 14, and 19 | | Inspected baseline | `main` at `23ed764b0ef88dce9720c66fbd1c0655268860cf` | | Related documents | [Framework](01_Overview_and_Scrum_Framework.md), [roadmap](02_Product_Roadmap.md), [Sprint Plan](04_Sprint_Plan.md), [stories](05_Product_Backlog_and_Stories.md), [Sprint Backlogs](06_Sprint_Backlogs.md) | | Meaning | Milestones describe inspectable outcomes and decision evidence; they are not additional Scrum events or promised releases | -**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. Apple accepted the upload and started processing ([receipt](c1-s2/06_Release_Readiness.md#31-october-app-store-connect-upload-receipt)); actual M-05 store delivery remains 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. +**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 delivery remains 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. ## Assessment and evidence states @@ -50,7 +50,7 @@ no role in this table implies committed staffing or independent review. | M-02 — Pass (31 Oct; bounded scope) | A usable, bounded local-draft recovery increment protects accepted user work after interruption | C1-S2–C1-S3, 12 Oct–8 Nov; selected PYB-006 scope, supporting 009/008, observed 005 only if selected | Accepted App specification/TDD and ADR-0010 change; text/Blocks scope; persistence boundary; relaunch, interrupted-write, and corrupt-state scenarios; no implicit board overwrite/run; relevant regression and physical evidence | Review against the selected story acceptance criteria and Definition of Done; Developers with a named review path | | M-03 — Proposed | Observed first-use and meaningful second-task evidence explains activation and its largest obstacle | C1-S4, 9–22 Nov; PYB-004/011 and justified 005/012 | Safe recorded pilot setup; at least 12 eligible primary-cohort task starts, all outcomes retained; successful unassisted timing; Task C attempts, prior workflow, assistance and reasons | SG2: assess provisional completion/timing targets and severe failures; pilot lead supplies evidence, Product Owner records next investment | | M-04 — Engineering pass (31 Oct; app-only scope) | A frozen maintenance candidate is qualified for its declared release scope | Normally C1-S5, 23 Nov–6 Dec; PYB-008/009/013 and included fixes | Applicable exact-artifact matrix and normative gates pass; provenance/recovery/instructions; no unresolved release-blocking data-loss, unintended/cross-session write, or critical workflow regression within the accepted threat model | SG1: release or submission decision with required sign-off; release owner and QA/review path | -| M-05 — Preparation in progress; delivery pending | Users can obtain the selected qualified app build through a verified existing channel | C1-S5–C1-S6, 23 Nov–20 Dec; PYB-014 and residual 002 | M-04; distribution-owner access; separate submission, availability, installed build/provenance, and installation outcome records; current user-facing claims | Verified-channel milestone passes only for the stated evidence; store delays are recorded as blockers; release owner | +| M-05 — Partial: internal TestFlight verified; external submission Waiting for Review; Play pending | Users can obtain the selected qualified app build through a verified existing channel | C1-S5–C1-S6, 23 Nov–20 Dec; PYB-014 and residual 002 | M-04; distribution-owner access; separate submission, availability, installed build/provenance, and installation outcome records; current user-facing claims | Verified-channel milestone passes only for the stated evidence; store delays are recorded as blockers; release owner | | M-06 — Proposed | Useful-repeat and support evidence drives one explicit next-stage investment | C1-S6, 7–20 Dec; PYB-011 follow-up, cycle review; Ready inputs only if selected | Mature consented cohort accounting, useful Task C/return outcomes, task opportunity, prompting, missing responses, support burden, and status of candidate/channel evidence; retain blocked outcomes | SG3 assessment plus dated continue/narrow/pause-expansion decision; Product Owner with pilot and Developers | [C1-S1 evidence](c1-s1/00_Execution_Record.md) includes the ledger, pilot protocol, recovery contract, cost model and verified existing Play/TestFlight installations. Six tasks are Done, two are Prepared awaiting pilot setup and four await participant/observation evidence. Human ownership, cohort/setup and actual capacity remain unconfirmed, so M-01/SG0 remains blocked. Missing participants are recorded as a recruitment gap, not completed observations. Current-build verification does not pass M-05 for a future qualified update. M-02's S2–S3 window and the conditional S2–S4 sizing option remain historical forecasts. Acceptance occurred during the 31 October continuation; replan remaining distribution and recruitment with actual capacity. diff --git a/docs/developments/2026-q4-reliable-workflow/04_Sprint_Plan.md b/docs/developments/2026-q4-reliable-workflow/04_Sprint_Plan.md index 1ab9ddfc..8a5271af 100644 --- a/docs/developments/2026-q4-reliable-workflow/04_Sprint_Plan.md +++ b/docs/developments/2026-q4-reliable-workflow/04_Sprint_Plan.md @@ -12,7 +12,7 @@ | Acceptance criteria | [Product backlog and stories](05_Product_Backlog_and_Stories.md) | | Task-level proposal | [Sprint backlogs](06_Sprint_Backlogs.md) | -**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. Apple accepted the upload and started processing ([receipt](c1-s2/06_Release_Readiness.md#31-october-app-store-connect-upload-receipt)); actual M-05 store delivery remains 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. +**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 delivery remains 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. ## Forecast and commitment boundary @@ -66,7 +66,7 @@ measured velocity or a new delivery deadline. The original C1-S3 window is |---|---|---| | 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 | | 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 | -| 3 — M-05 distribution | Apple upload accepted and processing started; verify Google Play account/build-number state before its submission, then record actual processing/availability and installed-channel evidence | Next release stage; owner access and external review duration remain unresolved | +| 3 — M-05 distribution | Internal-account TestFlight delivery and bounded smoke verified; track the submitted external build in Waiting for Review and verify Google Play account/build-number state before its submission and delivery checks | Next release stage; owner access and external review duration remain unresolved | | 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 | | 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 | | 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 | diff --git a/docs/developments/2026-q4-reliable-workflow/05_Product_Backlog_and_Stories.md b/docs/developments/2026-q4-reliable-workflow/05_Product_Backlog_and_Stories.md index 0f2e0ece..133aa14d 100644 --- a/docs/developments/2026-q4-reliable-workflow/05_Product_Backlog_and_Stories.md +++ b/docs/developments/2026-q4-reliable-workflow/05_Product_Backlog_and_Stories.md @@ -9,11 +9,11 @@ | Source | [Implementation strategy revision 1.8](../../planning/PyBLE_Implementation_Plan_and_Strategy_v1.0.md), initially derived 25 September; reconciled 31 October 2026 | | Cycle | Proposed 28 September–20 December 2026; Asia/Bangkok | | Baseline | `23ed764b0ef88dce9720c66fbd1c0655268860cf`; completed publication work is evidence, not a new commitment | -| Status | C1-S1: PYB-001.1/.2 and PYB-006.1 scoped work Done; pilot preparation awaits setup and observation work awaits evidence. PYB-006.2/M-02, scoped 008/009 and app-only M-04 pass engineering review; [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) merged after all 36 checks on its final head passed. M-05 delivery remains pending | +| Status | C1-S1: PYB-001.1/.2 and PYB-006.1 scoped work Done; pilot preparation awaits setup and observation work awaits evidence. PYB-006.2/M-02, scoped 008/009 and app-only M-04 pass engineering review; [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) merged after all 36 checks on its final head passed. M-05 is partial: internal TestFlight delivery verified; external submission Waiting for Review; Google Play delivery pending | | Accountabilities | Product Owner orders the backlog; Developers size and select work in Sprint Planning; named people and capacity remain to be assigned | | Navigation | [Overview and Scrum](01_Overview_and_Scrum_Framework.md) · [Roadmap](02_Product_Roadmap.md) · [Milestones](03_Milestones.md) · [Sprint plan](04_Sprint_Plan.md) · [Sprint Backlogs](06_Sprint_Backlogs.md) | -**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. Apple accepted the upload and started processing ([receipt](c1-s2/06_Release_Readiness.md#31-october-app-store-connect-upload-receipt)); actual M-05 store delivery remains 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. +**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 delivery remains 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. ## 1. How to use this backlog @@ -35,7 +35,7 @@ | Order | Parent / source priority | Intended outcome | Proposed slices | Forecast / dependency | Current state | |---|---|---|---|---|---| | 1 | PYB-001 / P0 | Know what users can install and which artifacts they receive | 001.1, 001.2 | C1-S1; existing publication review | 001.1/.2 Done for ledger and existing channel-install verification; provenance limits remain explicit | -| — | PYB-002 / P0 accuracy | Keep maintained availability claims correct | 002.1: public TestFlight description | PR #33 Android correction complete; residual found during 001 | Correction packet prepared; actual store update/public verification pending | +| — | PYB-002 / P0 accuracy | Keep maintained availability claims correct | 002.1: public TestFlight description | PR #33 Android correction complete; residual found during 001 | Done — English (U.S.) description saved/reloaded and independently verified in the public response on 31 October | | 2 | PYB-003 / P0 | Conduct a safe, consented pilot with bounded data collection | 003.1 | C1-S1; 001 informs setup | Prepared — awaiting pilot setup and named collection decision | | 3 | PYB-004 / P0 | Observe one reachable audience completing reproducible, useful tasks | 004.1, 004.2 | C1-S1; 001, 003 | 004.1 Prepared — awaiting cohort/setup; 004.2 Awaiting participant evidence | | 4 | PYB-006 / P0 | Recover the current text draft after process restart | 006.1, 006.2 | Sized in C1-S1; S2–S4 working option requires replanning; known defect does not wait for recruitment | 006.1 and bounded 006.2 Done; M-02 acceptance recorded 31 October; broader A-24 remains carried | @@ -45,13 +45,13 @@ | 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 | | 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 | | 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 upload accepted; Google Play account checks remain pending | -| 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 | Preparation in progress; store-account build history, upload, processing and installed-channel verification remain pending | +| 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 submission/delivery pending | | 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 | | 13 | PYB-010 / P1 | Read accurate setup and recovery guidance in Simplified Chinese | 010.1 | Optional capacity and named language reviewer | Proposed | | 14 | PYB-015 / P1 | Discover the verified release through accurate supporting material | 015.1 | C1-S6 optional; verified claims, 002/013 | Proposed | | 15 | PYB-016 / P1 | Prepare a defensible benchmark and research evaluation | 016.1 | Optional independent capacity; 003/004 | Proposed | -The completed portion of PYB-002 is [PR #33](https://github.com/PyBLE-dev/PyBLE/pull/33). A fresh mismatch needs its own accepted scope and evidence; do not restart the original correction or count it as this cycle's delivery. +The original Android portion of PYB-002 is [PR #33](https://github.com/PyBLE-dev/PyBLE/pull/33). The separately discovered TestFlight residual PYB-002.1 was completed on 31 October with saved/reloaded metadata and fresh public verification; it does not repeat the original Android correction. ## C1-S1 execution status — 25 September @@ -59,7 +59,7 @@ The completed portion of PYB-002 is [PR #33](https://github.com/PyBLE-dev/PyBLE/ |---|---|---| | PYB-001.1 | Done for the ledger scope | [Ledger](c1-s1/01_Channel_and_Artifact_Ledger.md); unknown fields have responsible owners/actions | | PYB-001.2 | Done for existing channel installations | [Lenovo Play `0.2.0 (8)`](c1-s1/06_Android_Channel_Verification.md) and [iPad TestFlight `0.2.0 (6)`](c1-s1/07_iPad_Channel_Verification.md): channel/Open/launch and installed identity verified. No fresh enrollment or reinstall; Android code/asset comparison supports historical source mapping, iPad mapping remains unknown | -| PYB-002.1 | Prepared; store correction pending | Public TestFlight description remains discrepant; build-6 minimum-OS metadata also needs distribution-owner review. No claim of external mutation | +| PYB-002.1 | Prepared at S1; completed 31 October | [Published correction](c1-s1/05_TestFlight_Metadata_Correction.md#31-october-published-description-and-closure): actual field save/reload and fresh public response verified. Historical build-6 minimum-OS questions remain separate | | PYB-003.1 / PYB-004.1 | Prepared — awaiting pilot setup | [Pilot kit](c1-s1/02_Pilot_Protocol_and_Observation_Kit.md); technical review completed, but human owner, reachable cohort, tested board setup and collection decision remain missing | | PYB-004.2 / PYB-011.2 | Awaiting participant/observation evidence | T06–T08 await participant sessions; T09 awaits their records. Five baseline starts and all later follow-up remain outstanding | | PYB-006.1 | Done for design/review/sizing | [Contract and review](c1-s1/03_Recovery_Design_and_Sizing.md); PYB-006.2 was subsequently merged in PR #40 and accepted in the dated 31 October S2 continuation | @@ -76,7 +76,7 @@ Acceptance criteria below remain the completion authority. The [C1-S1 execution | ID / type / role | Outcome | Testable acceptance criteria | Dependencies and verification | |---|---|---|---| | PYB-001.1 / Release enabler / Release | Establish a reviewed channel and artifact ledger | Separate publication, installation, provenance and qualification fields; record evidence/date/platform/channel/build; each unknown has an owner and next action; distinguish uploaded AAB/IPA identity from installed or re-signed artifacts | Existing dated publication review; reviewer checks ledger against first-party evidence. A completed ledger does not make an unknown installation pass | -| PYB-002.1 / Publication enabler / Distribution owner | Correct the stale app-level public TestFlight description | Verify the actually offered build supports the claims; apply accurate capability-defined copy through the owner-controlled channel; retain actual metadata update and dated public verification; do not relabel historical build notes or imply untested compatibility | Discovered in 001.1; [prepared correction](c1-s1/05_TestFlight_Metadata_Correction.md). Packet prepared only; store operation needs access and explicit capacity selection | +| PYB-002.1 / Publication enabler / Distribution owner | Correct the stale app-level public TestFlight description | Verify the actually offered build supports the claims; apply accurate capability-defined copy through the owner-controlled channel; retain actual metadata update and dated public verification; do not relabel historical build notes or imply untested compatibility | Discovered in 001.1; [completed correction](c1-s1/05_TestFlight_Metadata_Correction.md#31-october-published-description-and-closure) records user-authorized save/reload and independent public verification on 31 October | | PYB-001.2 / User story / Release + QA | As a tablet-owning maker, I can follow the existing channel's installation path so I can start using PyBLE | Verify an eligible physical Android and iPad channel installation: perform enrollment/install where needed, or verify the existing channel-installed app without erasing user data. Record channel/enrollment state where observable, served and installed version/build, restrictions and successful launch; source mapping is evidenced or explicitly unresolved; instructions reproduce observed steps and distinguish existing-install verification from fresh enrollment/reinstallation | 001.1 and channel/device access; dated physical installation records. Existing-install evidence requires channel provenance and launch, not package inventory alone. Missing access or failed installation/launch remains blocked/failed; no fresh-install or enrollment completion is inferred | | PYB-003.1 / Governance enabler / Lead + QA | Approve a bounded pilot that protects participants and their data | Identify trusted setting, harmless loads and wrong-board containment; explain STOP limitations and lack of authenticated ownership; approve consent, assistance/safety rules, contact separation and deletion policy; review a manual support template excluding sensitive content by default | Recorded 001 setup; named pilot decision-maker signs the scoped decision before collection. No background analytics or automatic source/console upload | | PYB-004.1 / Research enabler / Pilot lead | Define one reachable cohort and tasks that reveal product value | Name primary audience, recruitment owner, reference setup and previous-workflow questions; separate Tasks A/B/C; fix eligibility, written guidance, assistance, timeout and exclusions prospectively; define follow-up linkage, prompting and opportunity-to-use questions | 001 and 003.1; reviewed task/observation protocol. Instructor cohort may replace the maker default by a recorded prospective choice | diff --git a/docs/developments/2026-q4-reliable-workflow/06_Sprint_Backlogs.md b/docs/developments/2026-q4-reliable-workflow/06_Sprint_Backlogs.md index 36e85572..f44731c8 100644 --- a/docs/developments/2026-q4-reliable-workflow/06_Sprint_Backlogs.md +++ b/docs/developments/2026-q4-reliable-workflow/06_Sprint_Backlogs.md @@ -5,7 +5,7 @@ | Field | Rule | |---|---| -| Status | C1-S1: six Done, two Prepared, four Awaiting evidence. C1-S2: ten engineering tasks Done, T11 Awaiting participant evidence. M-02 and app-only M-04 accepted 31 October; [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) merged after all 36 checks on its final head passed. M-05 delivery remains pending. Original allowances/calendar remain historical | +| Status | C1-S1: six Done, two Prepared, four Awaiting evidence. C1-S2: ten engineering tasks Done, T11 Awaiting participant evidence. M-02 and app-only M-04 accepted 31 October; [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) merged after all 36 checks on its final head passed. M-05 is partial: internal TestFlight delivery verified; external submission Waiting for Review; Google Play delivery pending. Original allowances/calendar remain historical | | Product/Sprint Goals | [Framework](01_Overview_and_Scrum_Framework.md) and [Sprint plan](04_Sprint_Plan.md) | | Acceptance authority | [Product backlog and stories](05_Product_Backlog_and_Stories.md); task completion never overrides a parent story's acceptance criteria | | Selection | Developers confirm scope, ownership, estimates and task plan at each Sprint Planning | @@ -14,13 +14,13 @@ | Evidence | Record artifact identity and actual results; use Prepared for reviewed partial work, Awaiting evidence for unperformed sessions/observations, and Blocked for a concrete impediment with an owner; unfinished work is never Done | | Privacy | Keep private consent/contact/device records outside Git; link only reviewed public aggregates and redacted evidence | -Actual task evidence and blocker owners are maintained in the [C1-S1 execution record](c1-s1/00_Execution_Record.md). The original task allowances/calendar are retained as the baseline, with current S2 execution states updated below; the new 45–72h recovery estimate and matrix cost model invalidate their assumed fit. Use the [reforecast requirements](04_Sprint_Plan.md#c1-s1-findings-and-required-reforecast) before selection. Prepared TestFlight correction copy records residual PYB-002.1; its external application is not an extra committed task. +Actual task evidence and blocker owners are maintained in the [C1-S1 execution record](c1-s1/00_Execution_Record.md). The original task allowances/calendar are retained as the baseline, with current S2 execution states updated below; the new 45–72h recovery estimate and matrix cost model invalidate their assumed fit. Use the [reforecast requirements](04_Sprint_Plan.md#c1-s1-findings-and-required-reforecast) before selection. Residual PYB-002.1 was completed on 31 October through user-authorized metadata save/reload and public verification; this does not retrospectively add a task to the original Sprint commitment. The initial tasks are small planning units, generally 1–4 hours. If a task or safe story is larger after inspection, split/reforecast before selection. A time allowance does not limit a required test's counts or justify declaring partial qualification complete. The actual Sprint Backlog includes its confirmed Goal, selected items, and the Developers' current plan; update this document as that plan changes. Record optional follow-up consent and the prospective day-7–14 window at each activation. Collect follow-up as windows arrive, starting with the first cohort; do not postpone early cohorts until S5. S1 observation allowances include any follow-up due within S1; S2-T11, S3-T10 and later follow-up rows continue it. Developers must reallocate headroom or other selected work if actual pilot effort exceeds these allowances, preserving required recovery review and tests. Record missed windows as missing/late evidence rather than reconstructing an on-time response. -**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. Apple accepted the upload and started processing ([receipt](c1-s2/06_Release_Readiness.md#31-october-app-store-connect-upload-receipt)); actual M-05 store delivery remains 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. +**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 delivery remains 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. ## C1-S1 — reproduce the current workflow and size recovery @@ -159,7 +159,7 @@ An analysis task can finish with fewer than 12 starts, but PYB-011.1 remains unf | 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 | | 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 | | 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 | -| 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 | Pending — store-account/build-number verification and actual submission receipt | +| 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 | Partial — Apple build-9 upload accepted; external build 9 submitted, Waiting for Review; Google Play submission pending | | 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 | | 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 | | **C1-S5 total** | | | | | **24** | | @@ -178,10 +178,10 @@ The required matrix may cost more than these batches. Use the S1/Planning estima | Task ID | Parent child item | Proposed task and expected output | Dependency | Contribution role | h | Status | |---|---|---|---|---|---:|---| -| C1-S6-T01 | PYB-014.1 | Verify submission/processing/availability state and remaining distribution actions | 013 admission; submission/access as applicable | Release | 2 | Pending — account/build-number checks and actual submission/processing evidence | +| 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 state pending | | 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 | Proposed | -| 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 | Proposed | -| 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 | Proposed | +| 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 | +| 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 outcomes pending | | C1-S6-T05 | PYB-011.2 | Complete scheduled optional follow-up and closed-window accounting | Consented activation records | Pilot | 2 | Proposed | | C1-S6-T06 | PYB-011.2 | Analyze full mature denominator, useful returns, prompting, opportunity and missing data | T05 and earlier observations | Pilot | 3 | Proposed | | C1-S6-T07 | PYB-011.2 | Summarize task/support effort and reasons to choose or leave PyBLE | Observations and support records | Pilot + Developers | 2 | Proposed | diff --git a/docs/developments/2026-q4-reliable-workflow/c1-s1/00_Execution_Record.md b/docs/developments/2026-q4-reliable-workflow/c1-s1/00_Execution_Record.md index 347ea1ce..8e7ab3cf 100644 --- a/docs/developments/2026-q4-reliable-workflow/c1-s1/00_Execution_Record.md +++ b/docs/developments/2026-q4-reliable-workflow/c1-s1/00_Execution_Record.md @@ -74,8 +74,12 @@ The original 136-hour task allocation, 20-hour planned headroom and 84-hour rese The user requested the next-release implementation after the C1-S1 integration and cleanup. The [C1-S2 record](../c1-s2/00_Execution_Record.md) now records scoped PYB-006.2 / M-02 and app-only M-04 engineering acceptance, including both-tablet -physical evidence; it tracks final integration and pending channel delivery. The -25 September findings above remain historical evidence. This handoff does not +physical evidence. The later [delivery record](../c1-s2/06_Release_Readiness.md#31-october-testflight-delivery-and-published-metadata) +verifies internal-account TestFlight `0.3.0 (9)` and bounded production smoke; +external build 9 is submitted and Waiting for Review; Google Play delivery remains pending. The [public-description +correction](05_TestFlight_Metadata_Correction.md#31-october-published-description-and-closure) +closes residual PYB-002.1 on 31 October. The 25 September findings above remain +historical evidence. This handoff does not complete the two Prepared or four Awaiting-evidence S1 tasks, M-01/SG0, full A-24, participant observations, a Ready badge or store delivery. diff --git a/docs/developments/2026-q4-reliable-workflow/c1-s1/01_Channel_and_Artifact_Ledger.md b/docs/developments/2026-q4-reliable-workflow/c1-s1/01_Channel_and_Artifact_Ledger.md index 505a93f2..cf8da4d4 100644 --- a/docs/developments/2026-q4-reliable-workflow/c1-s1/01_Channel_and_Artifact_Ledger.md +++ b/docs/developments/2026-q4-reliable-workflow/c1-s1/01_Channel_and_Artifact_Ledger.md @@ -25,7 +25,7 @@ Primary URLs: [Google Play](https://play.google.com/store/apps/details?id=dev.pyble.pyble&hl=en&gl=US), [TestFlight](https://testflight.apple.com/join/yU4e8s6d), [app installation page](https://pyble.dev/app), and [home page](https://pyble.dev/). The direct live website responses supersede the older invited-testing text returned by the search tool during the same inspection. No website source correction or deployment is needed for that stale extract. -The TestFlight page has a separate current discrepancy: its public description still limits the product to the older ESP-family/agent-0.4.0 baseline. The [metadata correction packet](05_TestFlight_Metadata_Correction.md) supplies replacement app-level copy and an owner verification checklist. Its preparation does not update App Store Connect or prove newer build compatibility. +The S1 TestFlight page exposed an older ESP-family/agent-0.4.0 description. The [dated correction](05_TestFlight_Metadata_Correction.md#31-october-published-description-and-closure) closes PYB-002.1 on 31 October: English (U.S.) copy was saved/reloaded and independently matched in the public response. The later [internal-account build-9 delivery](../c1-s2/06_Release_Readiness.md#31-october-testflight-delivery-and-published-metadata) is separate from this historical build-6 matrix and from external-group approval. ## Historical artifact references — not inferred installations @@ -43,7 +43,7 @@ The TestFlight page has a separate current discrepancy: its public description s | CH-01 | Closed for current Android channel installation | Project maintainer / release operator | Physical Play/Open/installer/build/About evidence retained in the Android report; fresh-account enrollment and install/upgrade behavior were not exercised | | CH-02 | Closed for current iPad channel installation | Project maintainer / iPad operator | Native TestFlight/build/signing/launch evidence retained in the iPad report; fresh enrollment and install/upgrade behavior were not exercised | | CH-03 | Android payload mapping established; iPad build-6 source/archive mapping still unknown | Project maintainer / distribution owner | Retain Android comparison limits; bind installed iPad build 6 to immutable archive/upload/source records when available. Explicit unknown does not invalidate PYB-001.2's bounded installation verification | -| CH-04 | TestFlight public description still states an older compatibility baseline | Project maintainer / App Store Connect owner | Review and apply the prepared metadata only with actual build support verified; record the public result and date | +| CH-04 | Closed 31 October for PYB-002.1 public description | Project maintainer / App Store Connect owner | Actual English (U.S.) field save/reload and independent public-response match retained in the [closure record](05_TestFlight_Metadata_Correction.md#31-october-published-description-and-closure); no external-build approval inferred | | CH-05 | Current exact-board inventory, operator availability and candidate-bound physical results | Project maintainer / QA operator | Complete the [inventory](04_Validation_Inventory_and_Operator_Recipe.md); select exact artifacts and fund the required matrix before making a new compatibility claim | | CH-06 | Delivered minimum-OS metadata differs from historical bundle/build notes | Project maintainer / distribution owner | Android delivered manifests report min SDK 29 versus retained AAB 24; iPad installed metadata reports minimum OS 18 versus TestFlight notes 15. Reconcile variant/archive/store eligibility before extending minimum-OS support claims; launch on the two observed devices passed | diff --git a/docs/developments/2026-q4-reliable-workflow/c1-s1/05_TestFlight_Metadata_Correction.md b/docs/developments/2026-q4-reliable-workflow/c1-s1/05_TestFlight_Metadata_Correction.md index 4ff0981a..731d6391 100644 --- a/docs/developments/2026-q4-reliable-workflow/c1-s1/05_TestFlight_Metadata_Correction.md +++ b/docs/developments/2026-q4-reliable-workflow/c1-s1/05_TestFlight_Metadata_Correction.md @@ -7,15 +7,15 @@ |---|---| | Discovered | 25 September 2026, during C1-S1-T01 | | Backlog | PYB-002.1, newly identified residual copy discrepancy; the earlier Android correction remains complete | -| State | Replacement copy prepared; App Store Connect change and public verification pending | -| Action owner | Project maintainer / App Store Connect owner; store access not used in this execution | +| State | Done for PYB-002.1 on 31 October: English (U.S.) app description saved, exactly reloaded and independently verified in the public response | +| Action owner | User-authorized App Store Connect operation through the owner-authenticated browser; original S1 preparation used no store access | | Evidence | [Channel ledger](01_Channel_and_Artifact_Ledger.md), public TestFlight response and retained body hash; [physical iPad verification](07_iPad_Channel_Verification.md) | -The live public invitation's description still presents the older ESP-family/agent-0.4.0 scope. A capability-defined app description should explain how to select the correct tested setup without implying that every current board/profile works with an unidentified TestFlight build. The historical [build-5 handoff](../../../testing/testflight/0.2.0-build-5.md) remains unchanged. +The 25 September public invitation's description presented the older ESP-family/agent-0.4.0 scope. A capability-defined app description should explain how to select the correct tested setup without implying that every current board/profile works with an unidentified TestFlight build. The historical [build-5 handoff](../../../testing/testflight/0.2.0-build-5.md) remains unchanged. The later device retry establishes that the observed native TestFlight offer and installed beta are `0.2.0 (6)`, with a successful launch and TestFlight signing origin. Its source/archive mapping remains unknown. Installed metadata reports `MinimumOSVersion = 18.0` while the build notes describe an iOS/iPadOS 15 rebuild; reconcile that difference with archive and store eligibility before publishing an older-OS support claim. This discovery does not change the public description or the historical build-5 handoff. -## Prepared Beta App Description for the recorded 0.2.0 channel baseline +## Historical prepared description for the recorded 0.2.0 baseline The following is app-level copy for review against the actual offered build. It is not a build-specific “What to Test” entry and does not announce a new binary, production release or completed compatibility matrix. @@ -29,7 +29,7 @@ This is a TestFlight beta. See https://pyble.dev/learn for setup and first-progr PyBLE is MIT-licensed and developed in public at https://github.com/PyBLE-dev/PyBLE. The app has no required account, advertising, analytics, subscriptions or purchases. Optional public GitHub example import requires Internet access; the normal board workflow uses BLE. ``` -## Owner handoff and completion criteria +## Original owner handoff and completion criteria | Action | Required evidence / boundary | |---|---| @@ -47,7 +47,7 @@ This residual task does not block preparation of the persistence contract or oth A fresh HTTPS GET of the [public TestFlight invitation](https://testflight.apple.com/join/yU4e8s6d) at 11:46 UTC returned HTTP 200 and still showed the old three-ESP-profile and -agent-`0.4.0` description. PYB-002.1 therefore remains unresolved. The public +agent-`0.4.0` description. PYB-002.1 remained unresolved at that checkpoint. The public page does not establish a currently offered build, archive/source identity or eligibility for a particular device. @@ -55,7 +55,48 @@ Raw response and receipt: ignored `local/recovery-completion/public-channel-recheck/testflight.html` and `testflight-receipt.json`; response SHA-256 `78b9fb6bf3ff04ce12dfdf0e2a24ae694d0fda50cc1b8a468ae5d01c8277fdfb`. -No metadata was changed. When admitting `0.3.0`, reconcile this older prepared -description's draft-durability sentence with the -[new candidate packet](../../../publication/app-0.3.0-build-9-release-packet.md) -and the actual offered build; do not publish contradictory recovery claims. +No metadata was changed during that early recheck. The later completion below +supersedes its pending status and updates the old draft-durability sentence for +the actual `0.3.0 (9)` offer; the original proposal remains historical. + + +## 31 October published description and closure + +The user authorized test details and external-testing setup for `0.3.0 (9)`. +Through the authenticated App Store Connect browser, the English (U.S.) Beta +App Description was saved and exactly verified after reload. The original +717-character description remains privately backed up. The saved replacement +is 1,523 characters with SHA-256 +`6153fd0834440d4c47eec30743d3b0dd8988519e9bfd1fad9da377c5a06ff27a`: + +```text +PyBLE (Python over Bluetooth Low Energy) is a free, open-source, tablet-first MicroPython IDE. It connects over BLE to a compatible board running the PBLE/1 PyBLE agent, so you can edit and transfer Python files, run and stop programs, inspect console output, manage board files, and use offline Blocks. + +A Bluetooth-capable board running stock MicroPython is not automatically compatible. Before starting, check https://pyble.dev/flash for exact board and firmware requirements, and follow the compatibility instructions for the TestFlight build you install. Initial firmware installation or recovery may require a computer and USB cable. After provisioning, the normal development workflow uses BLE. + +This is a TestFlight beta. See https://pyble.dev/learn for setup and first-program guidance, https://pyble.dev/support for help, and https://pyble.dev/privacy for the privacy policy. Use harmless test programs and back up important work. In PyBLE 0.3.0, one current Python text draft can be saved locally and offered for Restore or Discard after restart. Wait for Saved locally before closing the app; saving to the board remains a separate explicit action. Local recovery does not include Blocks workspaces, multiple-file projects or draft history. + +PyBLE is MIT-licensed and developed in public at https://github.com/PyBLE-dev/PyBLE. The app has no required account, advertising, analytics, subscriptions or purchases. Optional public GitHub example import requires Internet access; the normal board workflow uses BLE. +``` + +An independent fresh GET of the [public invitation](https://testflight.apple.com/join/yU4e8s6d) +at `2026-10-31T14:52:55Z` returned HTTP 200. Its rendered description, normalized +only for whitespace, exactly matched the saved replacement. The old agent +`0.4.0` and ESP-only opening were absent; the version-specific recovery copy +was visible. Public HTML SHA-256 is +`eb23bd0b6a80d208797fe85e37673bfa989cbef7c7bfc069d9540cce6a628c45`. +The search/browser extraction still returned an older cached rendering; that +is distinct from the fresh direct response and is not a failed publication. + +Private evidence is retained under `local/recovery-completion/ipad/`: +`testflight-beta-description.txt`, `asc-description-verify` captures and +`public-testflight-description-recheck/20261031T145255Z.{html,json}`. +The actual field save/reload and public verification complete **PYB-002.1**. +The separately saved build-specific test details are recorded in the +[release packet](../../../publication/app-0.3.0-build-9-release-packet.md#testflight--what-to-test). + +Description publication does not establish external-group build-9 approval, +universal eligibility or fresh firmware qualification. The build-6 archive +mapping/minimum-OS discrepancy remains historical and unresolved; this copy +makes no new older-OS support claim. Internal-account build-9 installation and +smoke evidence are recorded in the [delivery continuation](../c1-s2/06_Release_Readiness.md#31-october-testflight-delivery-and-published-metadata). diff --git a/docs/developments/2026-q4-reliable-workflow/c1-s2/00_Execution_Record.md b/docs/developments/2026-q4-reliable-workflow/c1-s2/00_Execution_Record.md index 93da1525..85901875 100644 --- a/docs/developments/2026-q4-reliable-workflow/c1-s2/00_Execution_Record.md +++ b/docs/developments/2026-q4-reliable-workflow/c1-s2/00_Execution_Record.md @@ -11,7 +11,7 @@ | Candidate | App `0.3.0+9`; recovery baseline merged at `6f5b3ea`, landscape repair `e54a78a`, native dismissal `01a7ac8`, and guide correction `bef67bd` under PR #41; platform and release reports bind each actual artifact | | Scope | PYB-006.2 bounded current-text recovery; supporting PYB-009.1 recipe and applicable PYB-008.1 observations | | Contract | [Current-draft recovery](../../../specifications/App/current-draft-recovery.md), [ADR-0048](../../../decisions/0048-bounded-current-text-draft-recovery.md) | -| Overall state | Scoped PYB-006.2 / M-02 and app-only M-04 pass engineering review at frozen runtime `bef67bd`: 984 ordinary tests, 36 runtime-head CI checks, both-platform recovery/keyboard evidence and all ten declared app/profile rows. Device policy, owned fixtures and normal board advertising are restored; [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) merged at `247e58a` after all 36 final-head checks passed. M-05 channel delivery and S2 participant follow-up remain unfinished | +| Overall state | Scoped PYB-006.2 / M-02 and app-only M-04 pass engineering review at frozen runtime `bef67bd`: 984 ordinary tests, 36 runtime-head CI checks, both-platform recovery/keyboard evidence and all ten declared app/profile rows. Device policy, owned fixtures and normal board advertising are restored; [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 remains pending. S2 participant follow-up remains unfinished | | S1 state | Unchanged: six Done, two Prepared, four Awaiting evidence; M-01/SG0 and pilot work remain unfinished | | Capacity/calendar | Original S2 allowance 24h and 12–25 October dates remain historical forecasts. The 45–72h estimate / 60h S2–S4 option is not measured effort or confirmed human capacity | | Method | Separate storage, coordinator and UI Git worktrees; root integrates board/session guards, regressions, release records and qualification attempts | @@ -54,7 +54,7 @@ scope; no M-02/M-04 acceptance follows from packaging alone. |---|---|---| | iPad normal workflow | [iPad acceptance continuation](04_iPad_Acceptance.md) | Normal Preview passes offline Unicode Restore/current-board consent at `e54a78a`, generated-text handoff/recovery at `01a7ac8`, and Editor/native Blocks palette Hide→Show/dismissal at `bef67bd`; exact text and usable viewports are retained. All five iPad Q rows pass on their recorded candidates; exact firmware baselines and unchanged-behavior impact assessment remain explicit | | Android normal workflow | [Android acceptance continuation](05_Android_Acceptance.md) | Recorded P01–P15 scope and all five Q rows pass with explicit earlier-source/accessibility limits. Final `bef67bd` normal profile `945e9746…` passes Editor/native Blocks keyboard checks and generated-text/offline recovery after actual launcher start under temporary qualifier-only Unrestricted battery policy; original watchdogs and the policy condition remain recorded | -| Production artifacts and channel packet | [Release readiness](06_Release_Readiness.md) | Current `bef67bd` signed Android/iOS artifacts pass packaging and repeated 16 KiB Android startup/storage checks. Earlier artifacts are historical; scoped engineering acceptance is recorded below, with device closeout complete. [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) merged at `247e58a` after all 36 final-head checks passed. Apple accepted the `0.3.0 (9)` upload and started processing; actual channel delivery remains pending | +| Production artifacts and channel packet | [Release readiness](06_Release_Readiness.md) | Current `bef67bd` signed Android/iOS artifacts pass packaging and repeated 16 KiB Android startup/storage checks. Earlier artifacts are historical; scoped engineering acceptance is recorded below, with device closeout complete. [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) merged at `247e58a` after all 36 final-head checks passed. Apple upload accepted; later internal-account TestFlight `0.3.0 (9)` offer/Open, production About and bounded smoke verified. External build 9 is submitted and Waiting for Review; Google Play delivery remains pending | | Pilot and capacity | [Pilot kit](../c1-s1/02_Pilot_Protocol_and_Observation_Kit.md) and [continuation order](../04_Sprint_Plan.md#31-october-continuation-order-and-reforecast) | Human owner/cohort/setup/capacity and actual consented sessions remain pending | The subsequent guide correction is integrated at @@ -210,7 +210,7 @@ source gates; physical observations remain bound to their recorded artifacts. | Full app regression and repository gates | At app source `90311f3`: 972 ordinary Flutter tests pass; analysis clean; 204 Dart files formatted; no-leak/SPDX/import/locale/DCO pass; 42 publication tests and Markdown links pass after documentation updates | | Android additional harness | Lenovo Android 12 separate-process seed/verify and production-entry offline UI checks pass in an isolated app; [scope/artifacts](02_Platform_Qualification.md) | | iPad additional harness | Signed profile build/install/launch succeed. Seed and verify assertion receipts pass across a killed process; closed database hash unchanged. Flutter debug path remains unavailable | -| Candidate store state | Apple accepted the `0.3.0 (9)` upload on 31 October at `14:03:25 UTC` and started processing; see the [channel receipt](06_Release_Readiness.md#31-october-app-store-connect-upload-receipt). Processing completion, new TestFlight availability and an installed-channel upgrade remain unverified. No Google Play upload is established | +| Candidate store state | Apple accepted the `0.3.0 (9)` upload on 31 October at `14:03:25 UTC` and started processing; see the [channel receipt](06_Release_Readiness.md#31-october-app-store-connect-upload-receipt). Later internal-account TestFlight offer/Open, production About and bounded smoke verify the existing updated installation; the exact update transaction was not observed. External build 9 is submitted and Waiting for Review; Google Play upload/delivery remain pending | | Firmware and Ready | No new firmware publication or complete five-profile qualification; no second-operator reproduction or PyBLE Ready award | ```mermaid @@ -259,9 +259,11 @@ human sign-off or a Scrum ceremony. merged after all 36 final-head checks passed; those integration checks are separate from the 36 passing frozen-runtime checks. - **Next release stage — M-05:** verify Google Play access and the unused build - number before uploading its admitted artifact; follow the accepted Apple - upload through processing. Record actual channel availability and - store-delivered upgrade/launch evidence separately. + number before uploading its admitted artifact. Internal-account TestFlight + delivery is verified in the [delivery record](06_Release_Readiness.md#31-october-testflight-delivery-and-published-metadata); + external build 9 is assigned and submitted with status Waiting for Review. + Track Apple's decision and subsequent external availability separately. + The update transaction was not observed; no manual upgrade gesture is claimed. Prepared binaries, local Preview installs and passing engineering tests do not establish channel delivery. diff --git a/docs/developments/2026-q4-reliable-workflow/c1-s2/04_iPad_Acceptance.md b/docs/developments/2026-q4-reliable-workflow/c1-s2/04_iPad_Acceptance.md index 653107c0..62225d26 100644 --- a/docs/developments/2026-q4-reliable-workflow/c1-s2/04_iPad_Acceptance.md +++ b/docs/developments/2026-q4-reliable-workflow/c1-s2/04_iPad_Acceptance.md @@ -30,8 +30,10 @@ Archives, source manifests, native accessibility trees, screenshots and differs from the normal application. Signature verification and installation pass. Installs reuse the same Preview container without clearing its data. -The existing TestFlight `dev.pyble.pyble` installation remains `0.2.0 (6)`. -Preview acceptance does not establish a TestFlight-delivered upgrade. Before +During these qualification runs, the existing `dev.pyble.pyble` installation +was `0.2.0 (6)`. Later internal-account TestFlight `0.3.0 (9)` delivery and bounded +production-app smoke are recorded separately in [release readiness](06_Release_Readiness.md#31-october-testflight-delivery-and-published-metadata); +Preview acceptance alone does not establish that channel outcome. Before these runs, a private backup of Preview application support passed SQLite `integrity_check` and contained zero draft rows and zero content bytes. No storage reset established that initial state. diff --git a/docs/developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md b/docs/developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md index cb9b8458..a340fd93 100644 --- a/docs/developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md +++ b/docs/developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md @@ -9,9 +9,9 @@ | Scope | App-only bounded current-text recovery; existing Play open-testing and TestFlight channels | | Runtime source | Recovery baseline plus landscape layout, native keyboard dismissal and iPad palette-geometry repairs at `bef67bded9e5b83437e3eb0e2ec4be6a4cfd1a64` | | Build checkout | Release worktree `c6e685dd3ebe718ed89fcfe58e441331eb174648`; app tree `60b3a68b693551af5d83076547c502f69838e052`, verified identical to the runtime baseline | -| 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 delivery remains pending | +| 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 delivery remains pending | | Local evidence | Ignored `local/recovery-completion/release/candidate-bef67bd/`: build/check logs, source/artifact manifests, runtime evidence and retained signed binaries | -| Public copy | [Release packet](../../../publication/app-0.3.0-build-9-release-packet.md); Apple upload accepted and processing started, with no new channel-availability claim | +| 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 | A post-freeze comment correction clarifies Android's asset/file-access adapter semantics. It changes no executable behavior or loading path; the retained @@ -33,7 +33,7 @@ claim a new firmware release, fresh firmware OI-1 qualification or a Ready badge | Five-profile app compatibility | Q01–Q10 below with exact app/firmware identity, actual observations and retained failures | Accepted Q01–Q10 on the exact named firmware inputs below, with source-impact mapping for earlier unaffected rows and final affected keyboard/recovery reruns on both tablets; retained failures remain visible in the device reports | | 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 | | Release review | Frozen artifact identity, resolved mandatory failures, supported scope, privacy/dependency review and recorded acceptance | Accepted app-only M-04 engineering admission for `bef67bd` and the hashes below, with the Lenovo OEM precondition and historical firmware limits retained | -| M-05 channel delivery | Actual upload/processing/review/availability, followed by store-delivered installed identity and upgrade/launch checks | Apple upload accepted on 31 October at `14:03:25 UTC`; processing started. Processing completion, TestFlight availability and installed upgrade remain unverified. Google Play upload remains unverified | +| M-05 channel delivery | Actual upload/processing/review/availability, followed by store-delivered installed identity and upgrade/launch checks | Apple upload accepted at `14:03:25 UTC`; later internal-account TestFlight `0.3.0 (9)` offer/Open, production About and bounded device smoke pass. The update transaction was not observed. External build 9 is submitted and Waiting for Review; Google Play submission/delivery remain pending | Pilot participation and useful-return evidence remain separate from maintenance release admission. A second operator is required for the optional reproduction @@ -349,11 +349,19 @@ proven absent. No existing repository workflow consumes a Play or App Store publisher credential. This inspection found no configured CI upload route; it does not infer that the owner lacks credentials elsewhere. +A later Lenovo Chrome preflight reached Google Play Console, but an authenticated +PyBLE publishing context was not established. Switching to the intended Google +account reached the device's “Verify it’s you” prompt. Owner verification and +selection of the actual PyBLE publishing account remain the next steps. No +Play upload or rollout occurred; build-9 account history remains unverified. +Account names, email addresses and unrelated account details remain private. +Use the qualified AAB recorded above after verifying the selected upload bytes +and the account's available build number. + Engineering admission and PR #41 integration are complete. Apple accepted the -archive upload below; resolve subsequent processing/review findings and record -actual availability and installed-store results separately. Google Play account -history, unused build number and submission remain separate pending work. A -successful upload does not substitute for channel delivery. +archive upload below, and later internal-account TestFlight delivery was +observed as recorded in the continuation. External build 9 is submitted and Waiting for Review. Google Play account +history, unused build number and submission remain separate pending work. An upload receipt alone does not substitute for channel delivery. ## 31 October App Store Connect upload receipt @@ -373,11 +381,11 @@ the start of server processing only. | Re-export identity | Xcode re-exported and re-signed the archive for transport, so the submitted IPA differs from the prepared `54552bbb…` export above. All five Mach-O executables match outside their code-signature regions; resources, `Info.plist` and provisioning profile match. Differences are signatures, `CodeResources` and regenerated Symbols entries | | Submitted-package checks | `tools/validate_ios_ipa.sh` and deep/strict code-signature verification pass on the actual retained transport IPA | | Server upload receipt | Version `0.3.0`, build `9`, platform `IOS`; uploaded at `2026-10-31T14:03:24Z`; state `PROCESSING`, with empty errors and warnings in that receipt | -| Processing completion / TestFlight availability | Not established by the upload receipt | +| Processing completion / TestFlight availability at upload | Not established by this initial receipt; later internal-account delivery is recorded below | | TestFlight snapshot | At approximately `14:04–14:05 UTC`, the connected iPad's actual TestFlight detail for PyBLE offered version `0.2.0`, build `6`, with an Open button and build-6 notes; no `0.3.0` availability was observed in that snapshot | | Installed-app provenance limit | The separate device query found the same bundle/build and marked it developer-accessible. The TestFlight channel view and device query are distinct evidence; neither is reconstructed as a new store-install receipt | | Installation / data | No update, uninstall or app-data clearing was performed during that channel check | -| Remaining delivery evidence | Processing result, tester/group availability, then actual channel upgrade, About identity and scoped launch/workflow observations | +| Delivery evidence still needed at upload | Processing result, tester/group availability, then channel-installation identity and scoped launch/workflow observations; later results are recorded below | The submitted IPA, command/validation logs, selected server responses and code-equivalence comparisons remain under ignored @@ -389,12 +397,71 @@ The `selected-server-receipts.json` SHA-256 is The opaque server delivery identifier and account metadata remain private. A later read-only command-line status request required separate authenticated credentials and yielded no newer processing state; no credential was extracted. -The iPad Safari App Store Connect check reached Apple's sign-in page, without -an authenticated browser session. Follow-through on processing and tester-group -availability therefore remains pending authenticated account access. Its private -capture is `local/recovery-completion/ipad/asc-session-after-upload.{log,xcresult}`. +The initial iPad Safari App Store Connect check reached Apple's sign-in page, +without an authenticated browser session. Its private capture is +`local/recovery-completion/ipad/asc-session-after-upload.{log,xcresult}`. +The owner subsequently authenticated that browser; the actual saved metadata +and delivery observations below supersede this initial access limitation. The timestamped TestFlight captures are retained privately as `local/recovery-completion/ipad/testflight-pyble-after-upload.{log,xcresult}`. -M-05 remains unfinished; no Play submission or completed TestFlight delivery is -inferred from this Apple upload. +This initial upload snapshot is preserved as history. It alone establishes no +Play submission or completed TestFlight delivery; later observations follow. + + +## 31 October TestFlight delivery and published metadata + +At approximately `14:29 UTC`, a fresh device query found production bundle +`dev.pyble.pyble` version `0.3.0`, build `9`. The actual TestFlight detail for the +existing internal account repeatedly offered `0.3.0 (9)` with Open. Opening it +from TestFlight launched the production app; About reported `Version 0.3.0 (9)`. +This later observation supersedes the `14:04–14:05 UTC` build-6 snapshot without +changing that historical result. + +| Check | Actual result and boundary | +|---|---| +| Delivery scope | Existing updated installation verified through the internal account's TestFlight offer/Open, installed identity and normal production-app launch; no universal or external-group availability inferred | +| Bounded device smoke | Production About `0.3.0 (9)`, all five known boards visible, C3 connection to Ready with agent `0.6.1`, explicit disconnect, then cold relaunch and About `0.3.0 (9)` pass | +| Update transaction | The exact update transaction was not observed. Automatic Updates had previously been enabled; the observations are consistent with that mechanism, but no manually exercised build-6-to-9 installation gesture is claimed | +| Data and firmware boundary | No sideload, manual installation, uninstall, data clearing, text replacement, board file write or Run was performed in this delivery smoke. It does not repeat or extend the full HIL matrix | +| Google Play | Lenovo recheck at approximately `14:34 UTC` still finds Play `0.2.0 (8)`; app `0.3.0 (9)` submission and channel delivery remain unverified | +| External testing | Build `0.3.0 (9)` assigned to existing `PyBLE external` group, submitted and verified after reload as Waiting for Review at `15:03:35 UTC`; approval and external availability are not yet established | +| Build-specific test details | English (U.S.) What to Test for `0.3.0 (9)` saved and exactly read back after reload: 2,242 characters; SHA-256 `01d14e5a7c0bfd50ad77c9d0f4d4571ba7be058e064d430c81d7f6c3f0d7507b`; exact published copy is in the [release packet](../../../publication/app-0.3.0-build-9-release-packet.md#testflight--what-to-test) | +| App-level public description | English (U.S.) Beta App Description saved, reloaded and exactly verified: 1,523 characters; fresh public HTTP response also matches. [PYB-002.1 correction](../c1-s1/05_TestFlight_Metadata_Correction.md#31-october-published-description-and-closure) is complete; historical build-6 provenance/minimum-OS questions remain separate | + +The consolidated private delivery receipt is +`local/recovery-completion/ipad/testflight-build9-delivery-receipt.json`, SHA-256 +`b95919ae0598e8620f8e451efd113b71f33f1e33591d730f443f7465f80b5cc5`. +The same directory retains `post-processing-installed-identity.json`, +`testflight-processing-followup.{log,xcresult}`, +`asc-build9-save-notes.{log,xcresult}`, `build9-what-to-test.txt`, +`asc-description-verify` captures and the original/replacement description. +Account identifiers and raw UI captures remain private. M-05 is partial: this +internal-account delivery and metadata result do not establish external-test +approval, Google Play delivery, participant outcomes or a Ready award. + +## 31 October external-testing submission + +The user-authorized App Store Connect action assigned `0.3.0 (9)` to the +existing **PyBLE external** group and submitted it for beta review. At +`2026-10-31T15:03:35Z`, a reload preserved the group assignment and the iOS +Builds page displayed **Waiting for Review**. This is a successful external +submission, not Apple approval or verified external-tester availability. + +Automatically notify testers was unchecked and asserted off immediately before +submission. No new tester invitations or email notifications were sent by this +action. Existing review contacts and the sign-in requirement were retained. +Review Notes were saved and exactly reloaded: 987 characters, SHA-256 +`140d744c27e3930b253cc43a1355a49311ba3b32db9f6626347132f52e532ca3`; +the [release packet](../../../publication/app-0.3.0-build-9-release-packet.md#app-store-connect-review-notes) +contains the exact saved text. + +The private receipt is +`local/recovery-completion/ipad/testflight-external-submission-receipt.json`, +SHA-256 `2a5ee9a0282ee6100496173a024491f39d0b3fb8c644fc4f009945260a9b9252`. +The same directory retains `asc-build9-submit-review` and +`asc-build9-review-verify` passing captures, `asc-review-notes-save` passing +save/reload evidence and `build9-review-notes.txt`. Await Apple's actual review +outcome and observe external availability before changing that claim. M-05 +remains partial; internal-account delivery is verified and Google Play delivery +is still separate pending work. diff --git a/docs/planning/PyBLE_Implementation_Plan_and_Strategy_v1.0.md b/docs/planning/PyBLE_Implementation_Plan_and_Strategy_v1.0.md index c6c9185b..10c336f8 100644 --- a/docs/planning/PyBLE_Implementation_Plan_and_Strategy_v1.0.md +++ b/docs/planning/PyBLE_Implementation_Plan_and_Strategy_v1.0.md @@ -13,8 +13,8 @@ |---|---| | Document version | 1.8 — accepted bounded recovery and app-only qualification; channel/pilot continuation; original filename retained | | Prepared | 25 September 2026 | -| Last reviewed | 31 October 2026; bounded M-02 and app-only M-04 engineering acceptance recorded with exact candidate, firmware and OEM test conditions; device closeout complete; [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) merged after all 36 checks on its final head passed; channel delivery pending | -| Status | C1-S1 has six tasks Done, two Prepared awaiting pilot setup and four Awaiting evidence; Sprint and SG0 remain unfinished. Bounded recovery and app-only qualification pass scoped engineering review; device closeout is complete. [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) merged after all 36 checks on its final head passed. Actual channel delivery remains pending. Human capacity and recruitment dates need replanning; no new protocol behavior approved | +| Last reviewed | 31 October 2026; bounded M-02 and app-only M-04 engineering acceptance recorded with exact candidate, firmware and OEM test conditions; device closeout complete; [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) merged after all 36 checks on its final head passed; internal TestFlight delivery verified; external submission Waiting for Review; Play pending | +| Status | C1-S1 has six tasks Done, two Prepared awaiting pilot setup and four Awaiting evidence; Sprint and SG0 remain unfinished. Bounded recovery and app-only qualification pass scoped engineering review; device closeout is complete. [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)` installation and bounded smoke are verified; external build 9 is submitted and Waiting for Review; Google Play delivery remains pending. Human capacity and recruitment dates need replanning; no new protocol behavior approved | | Product | PyBLE — Python over Bluetooth Low Energy | | Organization | SciLabPro | | Planning horizon | Immediate 12-week delivery cycle, followed by conditional expansion through September 2028 | @@ -162,7 +162,7 @@ The [execution record](../developments/2026-q4-reliable-workflow/c1-s1/00_Execut | Workstream | Completed output / evidence | Remaining requirement | |---|---|---| | PYB-001 | Reviewed ledger; [Lenovo Play `0.2.0 (8)`](../developments/2026-q4-reliable-workflow/c1-s1/06_Android_Channel_Verification.md) and [iPad TestFlight `0.2.0 (6)`](../developments/2026-q4-reliable-workflow/c1-s1/07_iPad_Channel_Verification.md) existing installations, channel/Open and launch verified | iPad build-to-source mapping remains unknown; Android code/asset correspondence does not establish complete binary equivalence or store-console provenance. Fresh enrollment/reinstallation was not performed | -| Residual PYB-002.1 | Accurate replacement TestFlight app-level description prepared after the public page exposed its older ESP/agent-0.4.0 baseline | Distribution owner must apply it and verify the public result; also reconcile build-6 installed `MinimumOSVersion` 18 with TestFlight notes stating 15 before asserting support. No store mutation performed; Android's earlier correction remains complete | +| Residual PYB-002.1 | Prepared in S1; completed 31 October through user-authorized English (U.S.) description save/reload and independent public verification | [Dated closure](../developments/2026-q4-reliable-workflow/c1-s1/05_TestFlight_Metadata_Correction.md#31-october-published-description-and-closure). Historical build-6 minimum-OS/source questions remain separate; no older-OS claim is added | | PYB-003/004 | Operational pilot protocol, safe Tasks A/B/C, consent/retention rules and empty observation/support templates | Human owner, reachable cohort, tested setup and collection decision unconfirmed; no participants or observed outcomes | | PYB-006.1 | [Recovery contract](../specifications/App/current-draft-recovery.md), ADR-0048, source/peer review, scenario matrix and estimate | Bounded implementation now tracked in the [C1-S2 record](../developments/2026-q4-reliable-workflow/c1-s2/00_Execution_Record.md); scoped engineering acceptance is recorded; broader A-24/Blocks scope and actual channel delivery remain carried | | PYB-009.1 | Existing tool/gate inventory, ten platform/profile rows, cost model and initial operator recipe; 110 focused host harness tests pass | S2 now supplies the scoped procedure and actual connected-device observations; scoped candidate acceptance is recorded; optional independent reproduction remains separate | @@ -188,7 +188,7 @@ Do not spend the first sprint rebuilding a large analytics dashboard. A small pr | [Device information types](../../app/lib/pble/types.dart) | Negotiated chip, agent version, and capabilities | A support export must distinguish observed data from operator-supplied profile/provenance; current HELLO does not prove an artifact hash | | [Host conformance fixtures](../../tests/firmware_tests/host/conformance/README.md), [HIL guide](../../tests/firmware_tests/hil/README.md) | Shared vectors, compiled-native/portable tests, physical benches and release evidence tools | Add a coverage map and operator recipe before creating another harness or schema | -**Accepted next-release engineering increment:** PYB-006.2 closes the bounded current-text part of the carried A-24 persistence gap. The [C1-S2 record](../developments/2026-q4-reliable-workflow/c1-s2/00_Execution_Record.md) binds its 31 October engineering acceptance, exact artifacts, physical conditions and carried limits. One acknowledged Drift checkpoint can be restored offline; generated Blocks text is covered only after explicit adoption into Editor. Full projects, Blocks graphs and new protocol operations remain outside this increment. [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) merged after all 36 checks on its final head passed. Apple accepted the upload and started processing ([receipt](../developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md#31-october-app-store-connect-upload-receipt)). Complete M-05 distribution next, while arranging real pilot observations and confirmed human capacity. The original design/sizing estimates remain historical forecasts, not measured effort.[^app-contract] +**Accepted next-release engineering increment:** PYB-006.2 closes the bounded current-text part of the carried A-24 persistence gap. The [C1-S2 record](../developments/2026-q4-reliable-workflow/c1-s2/00_Execution_Record.md) binds its 31 October engineering acceptance, exact artifacts, physical conditions and carried limits. One acknowledged Drift checkpoint can be restored offline; generated Blocks text is covered only after explicit adoption into Editor. Full projects, Blocks graphs and new protocol operations remain outside this increment. [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 smoke are verified ([delivery record](../developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md#31-october-testflight-delivery-and-published-metadata)); the update transaction was not observed. External build 9 is submitted and Waiting for Review; Google Play delivery remains pending. Complete M-05 distribution next, while arranging real pilot observations and confirmed human capacity. The original design/sizing estimates remain historical forecasts, not measured effort.[^app-contract] ## 3. Target users and positioning @@ -878,7 +878,7 @@ At cycle end, choose one principal next investment: Reliable Projects, partner p - [ ] Assign one owner and one review path for each initial issue. - [ ] Inventory exact test boards, tablets, cables, and available recovery equipment. - [ ] Freeze Task A/B/C definitions, assistance/timeout rules, prospective follow-up windows and task-opportunity questions, consent procedure, and manual support template; observe initial eligible participants. -- [x] Specify and peer-review the bounded current-text contract and its acceptance scenarios; size the safe increment. Runtime implementation and bounded engineering acceptance are recorded in C1-S2. The dated continuation order preserves original forecasts; source integration and the Apple upload are recorded, while channel delivery remains pending. +- [x] Specify and peer-review the bounded current-text contract and its acceptance scenarios; size the safe increment. Runtime implementation and bounded engineering acceptance are recorded in C1-S2. The dated continuation order preserves original forecasts; source integration and internal-account TestFlight delivery are recorded, while external build 9 is submitted and Waiting for Review; Google Play delivery remains pending. - [ ] If operator/capacity is available, include one existing-profile Ready rehearsal and draft record in PYB-009; show installation status and pending evidence explicitly. ### 20.2 Issue template diff --git a/docs/publication/app-0.3.0-build-9-release-packet.md b/docs/publication/app-0.3.0-build-9-release-packet.md index 25bfd195..f347d9f0 100644 --- a/docs/publication/app-0.3.0-build-9-release-packet.md +++ b/docs/publication/app-0.3.0-build-9-release-packet.md @@ -3,17 +3,21 @@ # PyBLE 0.3.0 (9) — prepared app release packet -Prepared 31 October 2026 for the existing Google Play open-testing and +Recorded 31 October 2026 for the existing Google Play open-testing and TestFlight channels. Engineering admission and [PR #41 integration](../developments/2026-q4-reliable-workflow/c1-s2/00_Execution_Record.md#pr-41-final-integration-receipt) -are complete. Apple accepted the unchanged `0.3.0 (9)` upload at `14:03:25 UTC` -and started processing; the [channel receipt](../developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md#31-october-app-store-connect-upload-receipt) -does not yet establish processing completion, new TestFlight availability or -an installed-channel upgrade. Apple build 9 is consumed: do not repeat that -upload; a replacement Apple binary requires an explicit next-build contract -and rebuilt artifacts. Google Play submission remains unverified; check its -account history before uploading build 9. A consumed number requires a new -source version contract and rebuilt artifacts, not a renamed file. This packet -does not announce new channel availability. +are complete. Apple accepted build `9`; later internal-account TestFlight +`0.3.0 (9)` offer/Open, production About and bounded physical smoke pass +([delivery record](../developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md#31-october-testflight-delivery-and-published-metadata)). +The exact update transaction was not observed. Build 9 is assigned to the +existing PyBLE external group and submitted; the reloaded iOS Builds page +reports **Waiting for Review** ([submission receipt](../developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md#31-october-external-testing-submission)). +This is not approval or an all-tester availability claim. +Apple build `9` is consumed: do not repeat its upload. A replacement binary +requires an explicit next-build contract and rebuilt artifacts. Google Play +submission remains pending: the Lenovo browser reached Console, but owner +verification is required to select the PyBLE publishing account. Check its +account history before uploading build `9`. A consumed number requires rebuilt +artifacts, not a renamed file. ## Google Play release notes @@ -23,15 +27,18 @@ PyBLE can keep one current Python draft locally and offer Restore or Discard aft ## TestFlight — What to Test +English (U.S.), saved and exactly verified after reload on 31 October: 2,242 +characters, SHA-256 `01d14e5a7c0bfd50ad77c9d0f4d4571ba7be058e064d430c81d7f6c3f0d7507b`. + ```text -Test local recovery of the current Python text draft in PyBLE 0.3.0 (9). +Test local recovery of the current Python text draft in PyBLE 0.3.0 (9). Open About and confirm Version 0.3.0 (9). Use a compatible, separately provisioned MicroPython board running the PyBLE agent. Keep test hardware free of hazardous loads. About identifies the installed app version; record the board profile and agent version with feedback. 1. Edit a disposable Python draft, choose Save recovery copy, and wait for Saved locally. Close the app process and reopen it without deleting or reinstalling the app. Check the exact text and filename in the recovery preview. 2. Restore while disconnected. Recovery should preserve the text without connecting to or writing to a board. Cancel a Discard confirmation, then confirm Discard using only disposable content; check the next launch. 3. Deliberately connect to a board. Check the current destination and separate Save/Run effects before confirming. Cancel a confirmation and verify that no unwanted board action occurs. -4. Copy generated Python from Blocks into Editor, save its recovery copy, and restart. Only the generated text is covered; the Blocks workspace, graph revisions and companion files are not restored by this local slot. +4. In Blocks, choose Open in editor to adopt generated Python into Editor. Save its recovery copy and restart. Only the generated text is covered; the Blocks workspace, graph revisions and companion files are not restored by this local slot. 5. Exercise New, Board Open, Files Upload, disconnect/reconnect, portrait/landscape, larger text, an external keyboard and VoiceOver where available. On iPad, hide and reopen the docked keyboard through its input palette, then check that console Expand remains reachable and dismisses it. Report any lost text, stale destination, inaccessible control or inaccurate success message. There is one recovery slot and no draft history. Wait for Saved locally before expecting an edit to survive termination. Storage failure can leave current edits only in memory; follow the displayed guidance. App removal or clearing app storage removes local recovery data. A draft that existed only in memory in an older version cannot be recovered by upgrading. @@ -44,11 +51,25 @@ instructions in the account. Verify them against the current form rather than inventing reviewer access, audience declarations, privacy attestation or a store review result. No tester invitation is sent by preparing this packet. -## Installed store baseline before delivery +## App Store Connect review notes + +Saved and exactly verified after reload on 31 October: 987 characters, +SHA-256 `140d744c27e3930b253cc43a1355a49311ba3b32db9f6626347132f52e532ca3`. +Existing review contacts and the sign-in requirement were retained. External +submission used the existing PyBLE external group with automatic tester +notification off; no invitations or emails were sent by that action. + +```text +PyBLE needs no sign-in or demo account. Startup, BLE scanning and About can be inspected without a board. File transfer, Run/Stop and board file management require a nearby compatible MicroPython board running the PBLE/1 PyBLE agent; stock MicroPython alone is not sufficient. Exact board profiles, firmware installation and first-program guidance are at https://pyble.dev/flash and https://pyble.dev/learn. After provisioning, select a board in the app and wait for Ready. + +PyBLE 0.3.0 (9) adds explicit local recovery of one Python text draft. In a working session, choose Save recovery copy and wait for Saved locally before closing the app. On restart, Restore or Discard is a local action; board Save/Run/Upload requires current-target confirmation for recovered text. Blocks workspaces and multi-file projects are not restored. The build-specific What to Test provides the test sequence. Please use the maintained review contact if hardware access or setup clarification is needed. +``` + +## Historical baseline and current channel observations | Platform | Existing production/store identity | Release implication | |---|---|---| -| iPad | Actual TestFlight detail offered PyBLE `0.2.0 (6)` with Open at approximately `14:04–14:05 UTC` on 31 October; the separate device query found the same bundle/build but marked it developer-accessible | Preserve the existing installation and record the eventual actual TestFlight upgrade. The current channel view is not an installation-origin receipt; local Preview `0.3.0 (9)` remains separate evidence | +| iPad | Historical `14:04–14:05 UTC` TestFlight snapshot offered `0.2.0 (6)`; later internal-account TestFlight offers `0.3.0 (9)` with Open, and production About/device smoke pass | Existing updated installation verified; exact update transaction unobserved. No manual update gesture or external-group availability inferred; local Preview remains separate evidence | | Lenovo Android | `dev.pyble.pyble` `0.2.0`, versionCode `8`; installing and initiating package `com.android.vending`, with the Play certificate recorded in readiness | Preserve this Play-signed app and its data; the isolated qualifier `0.3.0 (9)` is separate evidence and the upload-key APK is not a compatible replacement for the Play-signed install | These baseline observations do not reveal full account upload history. Apple @@ -63,9 +84,9 @@ before submission. Record store-delivered About identity after actual delivery. | Android package | `dev.pyble.pyble`, production flavor, normal `lib/main.dart`; existing owner upload signer, AAB validation and native alignment checks | | iOS package | `dev.pyble.pyble`, normal `lib/main.dart`, distribution export and successful `tools/validate_ios_ipa.sh` | | Admission | Accepted recovery evidence, required app/profile matrix, packaging/provenance review and no unresolved release-blocking defect | -| Account checks | Apple accepted build 9; do not repeat it. Verify Google Play build-9 availability, upload/signing identity, account role, declarations, review contact and hardware instructions | -| Submit | Follow the accepted Apple upload through processing/review. Upload the admitted Android artifact only after its independent account checks; retain each platform outcome | -| Verify delivery | Record actual track/group availability, then store-delivered installation/upgrade, About identity and a scoped launch/workflow check | +| Account checks | Apple accepted build 9; do not repeat it. Complete the owner verification in Lenovo Chrome, select the actual PyBLE publishing account, then verify Google Play build-9 availability, upload/signing identity, declarations and review instructions | +| Submit | Internal-account Apple delivery is verified; external build 9 is assigned/submitted and Waiting for Review. Upload the admitted Android artifact only after its independent account checks; retain each platform outcome | +| Verify delivery | Retain the completed internal-account iPad installation/About/smoke evidence and its transaction limit; verify external-group and Google Play outcomes separately | | Public copy | Update release availability only after observing it; preserve each platform's actual status | The isolated development applications used for engineering tests have different diff --git a/docs/specifications/App/current-draft-recovery.md b/docs/specifications/App/current-draft-recovery.md index 02f8422b..f8a1a5ad 100644 --- a/docs/specifications/App/current-draft-recovery.md +++ b/docs/specifications/App/current-draft-recovery.md @@ -15,8 +15,10 @@ This is the normative contract for PYB-006.2. Candidate source now implements its bounded current-text storage, coordinator, recovery UI and guarded board actions. [The implementation record](../../developments/2026-q4-reliable-workflow/c1-s2/00_Execution_Record.md) records the scoped automated/physical acceptance and declared test conditions. -Existing Play/TestFlight installations remain the previously recorded versions; -channel availability is separate from this engineering acceptance. [ADR-0048](../../decisions/0048-bounded-current-text-draft-recovery.md) +[Channel evidence](../../developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md#31-october-testflight-delivery-and-published-metadata) +separately verifies internal-account TestFlight `0.3.0 (9)` delivery; external +build 9 is submitted and Waiting for Review. Google Play delivery remains pending. Engineering acceptance alone +does not establish channel availability. [ADR-0048](../../decisions/0048-bounded-current-text-draft-recovery.md) supersedes the volatile-only current-text limitation in ADR-0010 for this slice. No PBLE/1 change or board-identity allowlist is introduced. From 649abd96837964967057c967e9276bf202db72f7 Mon Sep 17 00:00:00 2001 From: Viwat Vchirawongkwin Date: Sat, 31 Oct 2026 22:08:37 +0700 Subject: [PATCH 4/6] [docs] clarify notification scope and verified Android staging Signed-off-by: Viwat Vchirawongkwin --- .../c1-s2/06_Release_Readiness.md | 17 ++++++++++++----- .../app-0.3.0-build-9-release-packet.md | 3 ++- 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/docs/developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md b/docs/developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md index a340fd93..70a14e1d 100644 --- a/docs/developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md +++ b/docs/developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md @@ -337,7 +337,7 @@ in Xcode and cached provisioning metadata for the candidate signing team. Those local records did not establish a live session, role or unused build number. The later successful upload below verifies that this existing account could upload the unchanged `0.3.0 (9)` archive without a build-number conflict. -Read-only browser discovery did not establish an authenticated console session; +Initial read-only browser discovery did not establish an authenticated console session; that observation does not imply that the owner lacks web-console access. A read-only GitHub audit found zero repository Actions secrets and zero @@ -355,8 +355,15 @@ account reached the device's “Verify it’s you” prompt. Owner verification selection of the actual PyBLE publishing account remain the next steps. No Play upload or rollout occurred; build-9 account history remains unverified. Account names, email addresses and unrelated account details remain private. -Use the qualified AAB recorded above after verifying the selected upload bytes -and the account's available build number. +The qualified AAB is staged on Lenovo at +`/sdcard/Download/PyBLE-0.3.0-build-9-bb041a9a-20261031.aab`. +Device-side verification confirms 64,439,893 bytes and SHA-256 +`bb041a9adcba7e84ece9800c418e69d7fa62274c2a170a929a37797a02784429`, +matching the admitted artifact above. The private receipt is +`local/recovery-completion/android/play-console/aab-device-preparation.json`, +SHA-256 `f23f53d2e3e1a1ef808dfc8c0124b2489325e9158819cb6948b40ef913751405`. +This transfer is not a Play upload. After owner verification, confirm the +publishing account and available build number before selecting this AAB. Engineering admission and PR #41 integration are complete. Apple accepted the archive upload below, and later internal-account TestFlight delivery was @@ -449,8 +456,8 @@ Builds page displayed **Waiting for Review**. This is a successful external submission, not Apple approval or verified external-tester availability. Automatically notify testers was unchecked and asserted off immediately before -submission. No new tester invitations or email notifications were sent by this -action. Existing review contacts and the sign-in requirement were retained. +submission. No new testers were invited, and no explicit Notify Testers action +was issued. Existing review contacts and the sign-in requirement were retained. Review Notes were saved and exactly reloaded: 987 characters, SHA-256 `140d744c27e3930b253cc43a1355a49311ba3b32db9f6626347132f52e532ca3`; the [release packet](../../../publication/app-0.3.0-build-9-release-packet.md#app-store-connect-review-notes) diff --git a/docs/publication/app-0.3.0-build-9-release-packet.md b/docs/publication/app-0.3.0-build-9-release-packet.md index f347d9f0..36095e56 100644 --- a/docs/publication/app-0.3.0-build-9-release-packet.md +++ b/docs/publication/app-0.3.0-build-9-release-packet.md @@ -57,7 +57,8 @@ Saved and exactly verified after reload on 31 October: 987 characters, SHA-256 `140d744c27e3930b253cc43a1355a49311ba3b32db9f6626347132f52e532ca3`. Existing review contacts and the sign-in requirement were retained. External submission used the existing PyBLE external group with automatic tester -notification off; no invitations or emails were sent by that action. +notification unchecked; no new testers were invited and no explicit Notify +Testers action was issued. ```text PyBLE needs no sign-in or demo account. Startup, BLE scanning and About can be inspected without a board. File transfer, Run/Stop and board file management require a nearby compatible MicroPython board running the PBLE/1 PyBLE agent; stock MicroPython alone is not sufficient. Exact board profiles, firmware installation and first-program guidance are at https://pyble.dev/flash and https://pyble.dev/learn. After provisioning, select a board in the app and wait for Ready. From 3a870880532f8669ed9df35236b640098396ebb0 Mon Sep 17 00:00:00 2001 From: Viwat Vchirawongkwin Date: Sat, 31 Oct 2026 22:27:35 +0700 Subject: [PATCH 5/6] [docs] record accepted Google Play open-testing submission Signed-off-by: Viwat Vchirawongkwin --- CHANGELOG.md | 5 +- README.md | 7 +- docs/ROADMAP.md | 2 +- .../0010-working-loop-in-memory-document.md | 2 +- ...048-bounded-current-text-draft-recovery.md | 2 +- .../01_Overview_and_Scrum_Framework.md | 2 +- .../02_Product_Roadmap.md | 2 +- .../03_Milestones.md | 6 +- .../04_Sprint_Plan.md | 4 +- .../05_Product_Backlog_and_Stories.md | 8 +- .../06_Sprint_Backlogs.md | 12 +-- .../c1-s1/00_Execution_Record.md | 2 +- .../c1-s2/00_Execution_Record.md | 11 +-- .../c1-s2/06_Release_Readiness.md | 88 ++++++++++++++----- ...E_Implementation_Plan_and_Strategy_v1.0.md | 8 +- .../app-0.3.0-build-9-release-packet.md | 35 +++++--- .../App/current-draft-recovery.md | 2 +- 17 files changed, 127 insertions(+), 71 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7caac9ff..cd5b90f8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -17,8 +17,9 @@ 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](docs/developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md#31-october-testflight-delivery-and-published-metadata)); the exact update transaction was not observed. External build 9 is submitted -and Waiting for Review; Google Play submission/delivery remain pending. Lenovo still has Play `0.2.0 (8)`; earlier -iPad `0.2.0 (6)`, build-5 Transporter and build-8 handoff records remain historical. +and Waiting for Review; Google Play open-testing build 9 is submitted with +Changes in review. Review approval and remaining delivery are pending. Lenovo +still has Play `0.2.0 (8)`; earlier iPad `0.2.0 (6)`, build-5 Transporter and build-8 handoff records remain historical. ### App source diff --git a/README.md b/README.md index f6b41900..98721ef4 100644 --- a/README.md +++ b/README.md @@ -113,8 +113,11 @@ TestFlight `0.3.0 (9)` is verified for the existing internal account on the connected iPad, including production About and a bounded board smoke check ([delivery record](docs/developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md#31-october-testflight-delivery-and-published-metadata)). The exact update transaction was not observed. Build 9 is submitted to the -existing external group and is **Waiting for Review**; Google Play submission -remains pending. This is not an all-tester availability claim. +existing external group and is **Waiting for Review**; Google Play +open-testing build 9 is submitted with **Changes in review** +([submission record](docs/developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md#31-october-google-play-open-testing-submission)). +Neither review state establishes approval or tester delivery. Lenovo still +offers and runs Play `0.2.0 (8)`. ### Firmware diff --git a/docs/ROADMAP.md b/docs/ROADMAP.md index 441f58f2..7c209cd8 100644 --- a/docs/ROADMAP.md +++ b/docs/ROADMAP.md @@ -47,7 +47,7 @@ v0.7.0 remains non-normative and requires separate maintainer approval. - Complete [channel delivery](developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md) for qualified app `0.3.0+9`. [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, installed identity and bounded smoke are verified ([delivery record](developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md#31-october-testflight-delivery-and-published-metadata)); the update transaction was not observed. - External build 9 is submitted and Waiting for Review; Google Play submission remains pending. Lenovo still has Play `0.2.0 (8)`; earlier iPad build-6 evidence remains historical. The + External build 9 is submitted and Waiting for Review; Google Play open-testing build 9 is submitted with Changes in review; approval/delivery remain pending. Lenovo still has Play `0.2.0 (8)`; earlier iPad build-6 evidence remains historical. The [Android publication review](testing/website/android-open-testing-2026-09-25.md) records live open-testing availability. The [prepared build-8 handoff](testing/google-play/0.2.0-build-8.md) remains a diff --git a/docs/decisions/0010-working-loop-in-memory-document.md b/docs/decisions/0010-working-loop-in-memory-document.md index 752ad03c..a5680082 100644 --- a/docs/decisions/0010-working-loop-in-memory-document.md +++ b/docs/decisions/0010-working-loop-in-memory-document.md @@ -73,5 +73,5 @@ records scoped engineering acceptance after integrated/physical checks, with exact test conditions and completed device closeout. [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) merged after all 36 final-head checks passed. The [delivery record](../developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md#31-october-testflight-delivery-and-published-metadata) verifies internal-account TestFlight `0.3.0 (9)`; external build 9 is submitted -and Waiting for Review, while Google Play delivery remains pending. The remaining A-24 project, settings, console, import +and Waiting for Review, while Google Play open-testing build 9 is submitted with Changes in review; approval and delivery remain pending. The remaining A-24 project, settings, console, import and Blocks obligations remain carried. diff --git a/docs/decisions/0048-bounded-current-text-draft-recovery.md b/docs/decisions/0048-bounded-current-text-draft-recovery.md index 50835806..c88a2319 100644 --- a/docs/decisions/0048-bounded-current-text-draft-recovery.md +++ b/docs/decisions/0048-bounded-current-text-draft-recovery.md @@ -11,7 +11,7 @@ runtime `bef67bd` after required automated and physical checks. Device closeout is complete, and [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) merged after all 36 final-head checks passed. The [delivery record](../developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md#31-october-testflight-delivery-and-published-metadata) verifies internal-account TestFlight `0.3.0 (9)`; external build 9 is submitted -and Waiting for Review, while Google Play delivery remains pending. No named human sign-off is claimed. +and Waiting for Review, while Google Play open-testing build 9 is submitted with Changes in review; approval and delivery remain pending. No named human sign-off is claimed. ## Context diff --git a/docs/developments/2026-q4-reliable-workflow/01_Overview_and_Scrum_Framework.md b/docs/developments/2026-q4-reliable-workflow/01_Overview_and_Scrum_Framework.md index 2ed73120..c398e305 100644 --- a/docs/developments/2026-q4-reliable-workflow/01_Overview_and_Scrum_Framework.md +++ b/docs/developments/2026-q4-reliable-workflow/01_Overview_and_Scrum_Framework.md @@ -18,7 +18,7 @@ This package derives execution views from the strategy. It does not replace normative specifications, expand hardware claims, create GitHub issues, or authorize store/website publication. The strategy and original package were recorded together in planning baseline `d039db0`. The [C1-S1 execution record](c1-s1/00_Execution_Record.md) owns actual results and blockers. -**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 delivery remains 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. +**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. ## Navigation and ownership of information diff --git a/docs/developments/2026-q4-reliable-workflow/02_Product_Roadmap.md b/docs/developments/2026-q4-reliable-workflow/02_Product_Roadmap.md index 71161c6a..69cefbc8 100644 --- a/docs/developments/2026-q4-reliable-workflow/02_Product_Roadmap.md +++ b/docs/developments/2026-q4-reliable-workflow/02_Product_Roadmap.md @@ -13,7 +13,7 @@ | Planning authority | Product Owner orders the Product Backlog; Developers forecast feasible work during Sprint Planning; names and capacity remain unassigned | | Related documents | [Framework](01_Overview_and_Scrum_Framework.md), [milestones](03_Milestones.md), [Sprint Plan](04_Sprint_Plan.md), [stories](05_Product_Backlog_and_Stories.md), [Sprint Backlogs](06_Sprint_Backlogs.md) | -**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 delivery remains 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. +**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. ## Product Goal and decision principle diff --git a/docs/developments/2026-q4-reliable-workflow/03_Milestones.md b/docs/developments/2026-q4-reliable-workflow/03_Milestones.md index 432adab9..bf86cfdf 100644 --- a/docs/developments/2026-q4-reliable-workflow/03_Milestones.md +++ b/docs/developments/2026-q4-reliable-workflow/03_Milestones.md @@ -5,14 +5,14 @@ | Control | Value | |---|---| -| Status | M-01/SG0 remains Blocked on 25 September by pilot ownership/cohort/setup and capacity decisions; existing channel installations verified on retry. M-02 and scoped app-only M-04 pass 31 October engineering review; device closeout is complete. [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) merged after all 36 checks on its final head passed. M-05 is partial: internal TestFlight delivery verified; external submission Waiting for Review; Google Play delivery pending; forecast windows need replanning | +| Status | M-01/SG0 remains Blocked on 25 September by pilot ownership/cohort/setup and capacity decisions; existing channel installations verified on retry. M-02 and scoped app-only M-04 pass 31 October engineering review; device closeout is complete. [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) merged after all 36 checks on its final head passed. M-05 is partial: internal TestFlight delivery verified; external submission Waiting for Review; Google Play open-testing build 9 submitted, Changes in review; approval/delivery pending; forecast windows need replanning | | Planning date | 25 September 2026; dates use Asia/Bangkok | | Source | [Implementation strategy revision 1.8](../../planning/PyBLE_Implementation_Plan_and_Strategy_v1.0.md), especially §§4, 8–10, 14, and 19 | | Inspected baseline | `main` at `23ed764b0ef88dce9720c66fbd1c0655268860cf` | | Related documents | [Framework](01_Overview_and_Scrum_Framework.md), [roadmap](02_Product_Roadmap.md), [Sprint Plan](04_Sprint_Plan.md), [stories](05_Product_Backlog_and_Stories.md), [Sprint Backlogs](06_Sprint_Backlogs.md) | | Meaning | Milestones describe inspectable outcomes and decision evidence; they are not additional Scrum events or promised releases | -**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 delivery remains 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. +**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. ## Assessment and evidence states @@ -50,7 +50,7 @@ no role in this table implies committed staffing or independent review. | M-02 — Pass (31 Oct; bounded scope) | A usable, bounded local-draft recovery increment protects accepted user work after interruption | C1-S2–C1-S3, 12 Oct–8 Nov; selected PYB-006 scope, supporting 009/008, observed 005 only if selected | Accepted App specification/TDD and ADR-0010 change; text/Blocks scope; persistence boundary; relaunch, interrupted-write, and corrupt-state scenarios; no implicit board overwrite/run; relevant regression and physical evidence | Review against the selected story acceptance criteria and Definition of Done; Developers with a named review path | | M-03 — Proposed | Observed first-use and meaningful second-task evidence explains activation and its largest obstacle | C1-S4, 9–22 Nov; PYB-004/011 and justified 005/012 | Safe recorded pilot setup; at least 12 eligible primary-cohort task starts, all outcomes retained; successful unassisted timing; Task C attempts, prior workflow, assistance and reasons | SG2: assess provisional completion/timing targets and severe failures; pilot lead supplies evidence, Product Owner records next investment | | M-04 — Engineering pass (31 Oct; app-only scope) | A frozen maintenance candidate is qualified for its declared release scope | Normally C1-S5, 23 Nov–6 Dec; PYB-008/009/013 and included fixes | Applicable exact-artifact matrix and normative gates pass; provenance/recovery/instructions; no unresolved release-blocking data-loss, unintended/cross-session write, or critical workflow regression within the accepted threat model | SG1: release or submission decision with required sign-off; release owner and QA/review path | -| M-05 — Partial: internal TestFlight verified; external submission Waiting for Review; Play pending | Users can obtain the selected qualified app build through a verified existing channel | C1-S5–C1-S6, 23 Nov–20 Dec; PYB-014 and residual 002 | M-04; distribution-owner access; separate submission, availability, installed build/provenance, and installation outcome records; current user-facing claims | Verified-channel milestone passes only for the stated evidence; store delays are recorded as blockers; release owner | +| M-05 — Partial: internal TestFlight verified; external submission Waiting for Review; Play open-testing build 9 submitted, Changes in review; delivery pending | Users can obtain the selected qualified app build through a verified existing channel | C1-S5–C1-S6, 23 Nov–20 Dec; PYB-014 and residual 002 | M-04; distribution-owner access; separate submission, availability, installed build/provenance, and installation outcome records; current user-facing claims | Verified-channel milestone passes only for the stated evidence; store delays are recorded as blockers; release owner | | M-06 — Proposed | Useful-repeat and support evidence drives one explicit next-stage investment | C1-S6, 7–20 Dec; PYB-011 follow-up, cycle review; Ready inputs only if selected | Mature consented cohort accounting, useful Task C/return outcomes, task opportunity, prompting, missing responses, support burden, and status of candidate/channel evidence; retain blocked outcomes | SG3 assessment plus dated continue/narrow/pause-expansion decision; Product Owner with pilot and Developers | [C1-S1 evidence](c1-s1/00_Execution_Record.md) includes the ledger, pilot protocol, recovery contract, cost model and verified existing Play/TestFlight installations. Six tasks are Done, two are Prepared awaiting pilot setup and four await participant/observation evidence. Human ownership, cohort/setup and actual capacity remain unconfirmed, so M-01/SG0 remains blocked. Missing participants are recorded as a recruitment gap, not completed observations. Current-build verification does not pass M-05 for a future qualified update. M-02's S2–S3 window and the conditional S2–S4 sizing option remain historical forecasts. Acceptance occurred during the 31 October continuation; replan remaining distribution and recruitment with actual capacity. diff --git a/docs/developments/2026-q4-reliable-workflow/04_Sprint_Plan.md b/docs/developments/2026-q4-reliable-workflow/04_Sprint_Plan.md index 8a5271af..9f0ce321 100644 --- a/docs/developments/2026-q4-reliable-workflow/04_Sprint_Plan.md +++ b/docs/developments/2026-q4-reliable-workflow/04_Sprint_Plan.md @@ -12,7 +12,7 @@ | Acceptance criteria | [Product backlog and stories](05_Product_Backlog_and_Stories.md) | | Task-level proposal | [Sprint backlogs](06_Sprint_Backlogs.md) | -**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 delivery remains 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. +**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. ## Forecast and commitment boundary @@ -66,7 +66,7 @@ measured velocity or a new delivery deadline. The original C1-S3 window is |---|---|---| | 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 | | 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 | -| 3 — M-05 distribution | Internal-account TestFlight delivery and bounded smoke verified; track the submitted external build in Waiting for Review and verify Google Play account/build-number state before its submission and delivery checks | Next release stage; owner access and external review duration remain unresolved | +| 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 | | 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 | | 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 | | 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 | diff --git a/docs/developments/2026-q4-reliable-workflow/05_Product_Backlog_and_Stories.md b/docs/developments/2026-q4-reliable-workflow/05_Product_Backlog_and_Stories.md index 133aa14d..32b11fda 100644 --- a/docs/developments/2026-q4-reliable-workflow/05_Product_Backlog_and_Stories.md +++ b/docs/developments/2026-q4-reliable-workflow/05_Product_Backlog_and_Stories.md @@ -9,11 +9,11 @@ | Source | [Implementation strategy revision 1.8](../../planning/PyBLE_Implementation_Plan_and_Strategy_v1.0.md), initially derived 25 September; reconciled 31 October 2026 | | Cycle | Proposed 28 September–20 December 2026; Asia/Bangkok | | Baseline | `23ed764b0ef88dce9720c66fbd1c0655268860cf`; completed publication work is evidence, not a new commitment | -| Status | C1-S1: PYB-001.1/.2 and PYB-006.1 scoped work Done; pilot preparation awaits setup and observation work awaits evidence. PYB-006.2/M-02, scoped 008/009 and app-only M-04 pass engineering review; [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) merged after all 36 checks on its final head passed. M-05 is partial: internal TestFlight delivery verified; external submission Waiting for Review; Google Play delivery pending | +| Status | C1-S1: PYB-001.1/.2 and PYB-006.1 scoped work Done; pilot preparation awaits setup and observation work awaits evidence. PYB-006.2/M-02, scoped 008/009 and app-only M-04 pass engineering review; [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) merged after all 36 checks on its final head passed. M-05 is partial: internal TestFlight delivery verified; external submission Waiting for Review; Google Play open-testing build 9 submitted, Changes in review; approval/delivery pending | | Accountabilities | Product Owner orders the backlog; Developers size and select work in Sprint Planning; named people and capacity remain to be assigned | | Navigation | [Overview and Scrum](01_Overview_and_Scrum_Framework.md) · [Roadmap](02_Product_Roadmap.md) · [Milestones](03_Milestones.md) · [Sprint plan](04_Sprint_Plan.md) · [Sprint Backlogs](06_Sprint_Backlogs.md) | -**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 delivery remains 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. +**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. ## 1. How to use this backlog @@ -44,8 +44,8 @@ | 7 | PYB-008 / P0 for claims | Establish the exact candidate's applicable compatibility evidence | 008.1, 008.2 | Representative checks C1-S2; staged matrix C1-S3–S5; 001, 009.1, artifacts | 008.1/.2 Done for the declared app-only matrix; exact candidate/firmware/OEM-condition limits retained | | 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 | | 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 | -| 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 upload accepted; Google Play account checks remain pending | -| 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 submission/delivery pending | +| 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 | +| 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 | | 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 | | 13 | PYB-010 / P1 | Read accurate setup and recovery guidance in Simplified Chinese | 010.1 | Optional capacity and named language reviewer | Proposed | | 14 | PYB-015 / P1 | Discover the verified release through accurate supporting material | 015.1 | C1-S6 optional; verified claims, 002/013 | Proposed | diff --git a/docs/developments/2026-q4-reliable-workflow/06_Sprint_Backlogs.md b/docs/developments/2026-q4-reliable-workflow/06_Sprint_Backlogs.md index f44731c8..98d4dfbb 100644 --- a/docs/developments/2026-q4-reliable-workflow/06_Sprint_Backlogs.md +++ b/docs/developments/2026-q4-reliable-workflow/06_Sprint_Backlogs.md @@ -5,7 +5,7 @@ | Field | Rule | |---|---| -| Status | C1-S1: six Done, two Prepared, four Awaiting evidence. C1-S2: ten engineering tasks Done, T11 Awaiting participant evidence. M-02 and app-only M-04 accepted 31 October; [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) merged after all 36 checks on its final head passed. M-05 is partial: internal TestFlight delivery verified; external submission Waiting for Review; Google Play delivery pending. Original allowances/calendar remain historical | +| Status | C1-S1: six Done, two Prepared, four Awaiting evidence. C1-S2: ten engineering tasks Done, T11 Awaiting participant evidence. M-02 and app-only M-04 accepted 31 October; [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) merged after all 36 checks on its final head passed. M-05 is partial: internal TestFlight delivery verified; external submission Waiting for Review; Google Play open-testing build 9 submitted, Changes in review; approval/delivery pending. Original allowances/calendar remain historical | | Product/Sprint Goals | [Framework](01_Overview_and_Scrum_Framework.md) and [Sprint plan](04_Sprint_Plan.md) | | Acceptance authority | [Product backlog and stories](05_Product_Backlog_and_Stories.md); task completion never overrides a parent story's acceptance criteria | | Selection | Developers confirm scope, ownership, estimates and task plan at each Sprint Planning | @@ -20,7 +20,7 @@ The initial tasks are small planning units, generally 1–4 hours. If a task or Record optional follow-up consent and the prospective day-7–14 window at each activation. Collect follow-up as windows arrive, starting with the first cohort; do not postpone early cohorts until S5. S1 observation allowances include any follow-up due within S1; S2-T11, S3-T10 and later follow-up rows continue it. Developers must reallocate headroom or other selected work if actual pilot effort exceeds these allowances, preserving required recovery review and tests. Record missed windows as missing/late evidence rather than reconstructing an on-time response. -**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 delivery remains 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. +**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. ## C1-S1 — reproduce the current workflow and size recovery @@ -159,7 +159,7 @@ An analysis task can finish with fewer than 12 starts, but PYB-011.1 remains unf | 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 | | 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 | | 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 | -| 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 | Partial — Apple build-9 upload accepted; external build 9 submitted, Waiting for Review; Google Play submission pending | +| 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 | | 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 | | 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 | | **C1-S5 total** | | | | | **24** | | @@ -178,10 +178,10 @@ The required matrix may cost more than these batches. Use the S1/Planning estima | Task ID | Parent child item | Proposed task and expected output | Dependency | Contribution role | h | Status | |---|---|---|---|---|---:|---| -| 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 state pending | -| 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 | Proposed | +| 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 | +| 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 | | 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 | -| 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 outcomes pending | +| 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 | | C1-S6-T05 | PYB-011.2 | Complete scheduled optional follow-up and closed-window accounting | Consented activation records | Pilot | 2 | Proposed | | C1-S6-T06 | PYB-011.2 | Analyze full mature denominator, useful returns, prompting, opportunity and missing data | T05 and earlier observations | Pilot | 3 | Proposed | | C1-S6-T07 | PYB-011.2 | Summarize task/support effort and reasons to choose or leave PyBLE | Observations and support records | Pilot + Developers | 2 | Proposed | diff --git a/docs/developments/2026-q4-reliable-workflow/c1-s1/00_Execution_Record.md b/docs/developments/2026-q4-reliable-workflow/c1-s1/00_Execution_Record.md index 8e7ab3cf..84a5760b 100644 --- a/docs/developments/2026-q4-reliable-workflow/c1-s1/00_Execution_Record.md +++ b/docs/developments/2026-q4-reliable-workflow/c1-s1/00_Execution_Record.md @@ -76,7 +76,7 @@ and cleanup. The [C1-S2 record](../c1-s2/00_Execution_Record.md) now records sco PYB-006.2 / M-02 and app-only M-04 engineering acceptance, including both-tablet physical evidence. The later [delivery record](../c1-s2/06_Release_Readiness.md#31-october-testflight-delivery-and-published-metadata) verifies internal-account TestFlight `0.3.0 (9)` and bounded production smoke; -external build 9 is submitted and Waiting for Review; Google Play delivery remains pending. The [public-description +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. The [public-description correction](05_TestFlight_Metadata_Correction.md#31-october-published-description-and-closure) closes residual PYB-002.1 on 31 October. The 25 September findings above remain historical evidence. This handoff does not diff --git a/docs/developments/2026-q4-reliable-workflow/c1-s2/00_Execution_Record.md b/docs/developments/2026-q4-reliable-workflow/c1-s2/00_Execution_Record.md index 85901875..ce37c596 100644 --- a/docs/developments/2026-q4-reliable-workflow/c1-s2/00_Execution_Record.md +++ b/docs/developments/2026-q4-reliable-workflow/c1-s2/00_Execution_Record.md @@ -11,7 +11,7 @@ | Candidate | App `0.3.0+9`; recovery baseline merged at `6f5b3ea`, landscape repair `e54a78a`, native dismissal `01a7ac8`, and guide correction `bef67bd` under PR #41; platform and release reports bind each actual artifact | | Scope | PYB-006.2 bounded current-text recovery; supporting PYB-009.1 recipe and applicable PYB-008.1 observations | | Contract | [Current-draft recovery](../../../specifications/App/current-draft-recovery.md), [ADR-0048](../../../decisions/0048-bounded-current-text-draft-recovery.md) | -| Overall state | Scoped PYB-006.2 / M-02 and app-only M-04 pass engineering review at frozen runtime `bef67bd`: 984 ordinary tests, 36 runtime-head CI checks, both-platform recovery/keyboard evidence and all ten declared app/profile rows. Device policy, owned fixtures and normal board advertising are restored; [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 remains pending. S2 participant follow-up remains unfinished | +| Overall state | Scoped PYB-006.2 / M-02 and app-only M-04 pass engineering review at frozen runtime `bef67bd`: 984 ordinary tests, 36 runtime-head CI checks, both-platform recovery/keyboard evidence and all ten declared app/profile rows. Device policy, owned fixtures and normal board advertising are restored; [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/delivery remain pending. S2 participant follow-up remains unfinished | | S1 state | Unchanged: six Done, two Prepared, four Awaiting evidence; M-01/SG0 and pilot work remain unfinished | | Capacity/calendar | Original S2 allowance 24h and 12–25 October dates remain historical forecasts. The 45–72h estimate / 60h S2–S4 option is not measured effort or confirmed human capacity | | Method | Separate storage, coordinator and UI Git worktrees; root integrates board/session guards, regressions, release records and qualification attempts | @@ -54,7 +54,7 @@ scope; no M-02/M-04 acceptance follows from packaging alone. |---|---|---| | iPad normal workflow | [iPad acceptance continuation](04_iPad_Acceptance.md) | Normal Preview passes offline Unicode Restore/current-board consent at `e54a78a`, generated-text handoff/recovery at `01a7ac8`, and Editor/native Blocks palette Hide→Show/dismissal at `bef67bd`; exact text and usable viewports are retained. All five iPad Q rows pass on their recorded candidates; exact firmware baselines and unchanged-behavior impact assessment remain explicit | | Android normal workflow | [Android acceptance continuation](05_Android_Acceptance.md) | Recorded P01–P15 scope and all five Q rows pass with explicit earlier-source/accessibility limits. Final `bef67bd` normal profile `945e9746…` passes Editor/native Blocks keyboard checks and generated-text/offline recovery after actual launcher start under temporary qualifier-only Unrestricted battery policy; original watchdogs and the policy condition remain recorded | -| Production artifacts and channel packet | [Release readiness](06_Release_Readiness.md) | Current `bef67bd` signed Android/iOS artifacts pass packaging and repeated 16 KiB Android startup/storage checks. Earlier artifacts are historical; scoped engineering acceptance is recorded below, with device closeout complete. [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) merged at `247e58a` after all 36 final-head checks passed. Apple upload accepted; later internal-account TestFlight `0.3.0 (9)` offer/Open, production About and bounded smoke verified. External build 9 is submitted and Waiting for Review; Google Play delivery remains pending | +| Production artifacts and channel packet | [Release readiness](06_Release_Readiness.md) | Current `bef67bd` signed Android/iOS artifacts pass packaging and repeated 16 KiB Android startup/storage checks. Earlier artifacts are historical; scoped engineering acceptance is recorded below, with device closeout complete. [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) merged at `247e58a` after all 36 final-head checks passed. Apple upload accepted; later internal-account TestFlight `0.3.0 (9)` offer/Open, production About and bounded smoke 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 | | Pilot and capacity | [Pilot kit](../c1-s1/02_Pilot_Protocol_and_Observation_Kit.md) and [continuation order](../04_Sprint_Plan.md#31-october-continuation-order-and-reforecast) | Human owner/cohort/setup/capacity and actual consented sessions remain pending | The subsequent guide correction is integrated at @@ -210,7 +210,7 @@ source gates; physical observations remain bound to their recorded artifacts. | Full app regression and repository gates | At app source `90311f3`: 972 ordinary Flutter tests pass; analysis clean; 204 Dart files formatted; no-leak/SPDX/import/locale/DCO pass; 42 publication tests and Markdown links pass after documentation updates | | Android additional harness | Lenovo Android 12 separate-process seed/verify and production-entry offline UI checks pass in an isolated app; [scope/artifacts](02_Platform_Qualification.md) | | iPad additional harness | Signed profile build/install/launch succeed. Seed and verify assertion receipts pass across a killed process; closed database hash unchanged. Flutter debug path remains unavailable | -| Candidate store state | Apple accepted the `0.3.0 (9)` upload on 31 October at `14:03:25 UTC` and started processing; see the [channel receipt](06_Release_Readiness.md#31-october-app-store-connect-upload-receipt). Later internal-account TestFlight offer/Open, production About and bounded smoke verify the existing updated installation; the exact update transaction was not observed. External build 9 is submitted and Waiting for Review; Google Play upload/delivery remain pending | +| Candidate store state | Apple accepted the `0.3.0 (9)` upload on 31 October at `14:03:25 UTC` and started processing; see the [channel receipt](06_Release_Readiness.md#31-october-app-store-connect-upload-receipt). Later internal-account TestFlight offer/Open, production About and bounded smoke verify the existing updated installation; the exact update transaction was not observed. External build 9 is submitted and Waiting for Review; Google Play open-testing build 9 is submitted with Changes in review; its approval and delivery remain pending | | Firmware and Ready | No new firmware publication or complete five-profile qualification; no second-operator reproduction or PyBLE Ready award | ```mermaid @@ -258,8 +258,9 @@ human sign-off or a Scrum ceremony. platform/release reports retain the private receipts. [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) merged after all 36 final-head checks passed; those integration checks are separate from the 36 passing frozen-runtime checks. -- **Next release stage — M-05:** verify Google Play access and the unused build - number before uploading its admitted artifact. Internal-account TestFlight +- **Next release stage — M-05:** track the submitted Google Play open-testing + build 9 in Changes in review and verify its availability and installed identity + after approval; production build 8 remains unchanged. Internal-account TestFlight delivery is verified in the [delivery record](06_Release_Readiness.md#31-october-testflight-delivery-and-published-metadata); external build 9 is assigned and submitted with status Waiting for Review. Track Apple's decision and subsequent external availability separately. diff --git a/docs/developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md b/docs/developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md index 70a14e1d..8357221f 100644 --- a/docs/developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md +++ b/docs/developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md @@ -9,7 +9,7 @@ | Scope | App-only bounded current-text recovery; existing Play open-testing and TestFlight channels | | Runtime source | Recovery baseline plus landscape layout, native keyboard dismissal and iPad palette-geometry repairs at `bef67bded9e5b83437e3eb0e2ec4be6a4cfd1a64` | | Build checkout | Release worktree `c6e685dd3ebe718ed89fcfe58e441331eb174648`; app tree `60b3a68b693551af5d83076547c502f69838e052`, verified identical to the runtime baseline | -| 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 delivery remains pending | +| 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 | | Local evidence | Ignored `local/recovery-completion/release/candidate-bef67bd/`: build/check logs, source/artifact manifests, runtime evidence and retained signed binaries | | 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 | @@ -33,7 +33,7 @@ claim a new firmware release, fresh firmware OI-1 qualification or a Ready badge | Five-profile app compatibility | Q01–Q10 below with exact app/firmware identity, actual observations and retained failures | Accepted Q01–Q10 on the exact named firmware inputs below, with source-impact mapping for earlier unaffected rows and final affected keyboard/recovery reruns on both tablets; retained failures remain visible in the device reports | | 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 | | Release review | Frozen artifact identity, resolved mandatory failures, supported scope, privacy/dependency review and recorded acceptance | Accepted app-only M-04 engineering admission for `bef67bd` and the hashes below, with the Lenovo OEM precondition and historical firmware limits retained | -| M-05 channel delivery | Actual upload/processing/review/availability, followed by store-delivered installed identity and upgrade/launch checks | Apple upload accepted at `14:03:25 UTC`; later internal-account TestFlight `0.3.0 (9)` offer/Open, production About and bounded device smoke pass. The update transaction was not observed. External build 9 is submitted and Waiting for Review; Google Play submission/delivery remain pending | +| M-05 channel delivery | Actual upload/processing/review/availability, followed by store-delivered installed identity and upgrade/launch checks | Apple upload accepted at `14:03:25 UTC`; later internal-account TestFlight `0.3.0 (9)` offer/Open, production About and bounded device smoke pass. The update transaction was not observed. External build 9 is submitted and Waiting for Review; Google Play open-testing build 9 is submitted with Changes in review; its approval and delivery remain pending | Pilot participation and useful-return evidence remain separate from maintenance release admission. A second operator is required for the optional reproduction @@ -314,7 +314,7 @@ SHA-256 `2c7b0c6c652a078eefada990f4a018ae4650355bfb703858c581b5cf430e5483`. Its advisory mapping, audit JSON and summary remain under ignored `local/recovery-completion/dependency-audit/`. -## Distribution access and remaining account work +## Distribution access and account verification The owner Android upload identity is locally usable and matches the historical certificate. A valid Apple distribution identity and cached production App @@ -327,8 +327,9 @@ version `0.2.0`, versionCode `8`, with installing and initiating package last update on 17 September. Its verified signing certificate SHA-256 is `e3c1334dc7aad1ae20fe043b52c2d5638584a67a66e6a5255a87bf89f56f06d0`, distinct from the owner upload certificate above. The production app was not replaced. -This installed Play build does not establish whether build 9 was subsequently -uploaded or consumed in a store account; that question remains an account check. +This installed baseline alone did not establish account upload history. The later +authenticated Console check and accepted build-9 submission below now establish +that separate account state; the installed app still remains build 8. No dedicated Play/App Store Connect connector or configured standalone command-line store credential was found in the standard locations inspected. @@ -349,26 +350,29 @@ proven absent. No existing repository workflow consumes a Play or App Store publisher credential. This inspection found no configured CI upload route; it does not infer that the owner lacks credentials elsewhere. -A later Lenovo Chrome preflight reached Google Play Console, but an authenticated -PyBLE publishing context was not established. Switching to the intended Google -account reached the device's “Verify it’s you” prompt. Owner verification and -selection of the actual PyBLE publishing account remain the next steps. No -Play upload or rollout occurred; build-9 account history remains unverified. -Account names, email addresses and unrelated account details remain private. -The qualified AAB is staged on Lenovo at +An initial Lenovo Chrome preflight reached Google Play Console but required +owner verification and selection of the actual PyBLE publishing account. The +owner subsequently authenticated; the correct app's account history and live +tracks were inspected before the accepted build-9 upload and review submission +recorded below. Account names, email addresses and unrelated account details +remain private. + +The qualified AAB was staged at `/sdcard/Download/PyBLE-0.3.0-build-9-bb041a9a-20261031.aab`. -Device-side verification confirms 64,439,893 bytes and SHA-256 +Device-side verification confirmed 64,439,893 bytes and SHA-256 `bb041a9adcba7e84ece9800c418e69d7fa62274c2a170a929a37797a02784429`, -matching the admitted artifact above. The private receipt is +matching the admitted artifact above. The private staging receipt is `local/recovery-completion/android/play-console/aab-device-preparation.json`, SHA-256 `f23f53d2e3e1a1ef808dfc8c0124b2489325e9158819cb6948b40ef913751405`. -This transfer is not a Play upload. After owner verification, confirm the -publishing account and available build number before selecting this AAB. +After submission was durably verified, that uniquely named device copy was +removed only after another size/hash check; the retained host artifact is +unchanged. `staged-download-cleanup.json` records the verified removal. -Engineering admission and PR #41 integration are complete. Apple accepted the -archive upload below, and later internal-account TestFlight delivery was -observed as recorded in the continuation. External build 9 is submitted and Waiting for Review. Google Play account -history, unused build number and submission remain separate pending work. An upload receipt alone does not substitute for channel delivery. +Engineering admission and PR #41 integration are complete. Both stores have +accepted build `9`; neither upload should be repeated. Internal-account +TestFlight delivery is verified. Apple external testing remains Waiting for +Review and Google Play open testing remains Changes in review at the dated +checks below. Review submission alone does not establish approval or delivery. ## 31 October App Store Connect upload receipt @@ -431,8 +435,8 @@ changing that historical result. | Bounded device smoke | Production About `0.3.0 (9)`, all five known boards visible, C3 connection to Ready with agent `0.6.1`, explicit disconnect, then cold relaunch and About `0.3.0 (9)` pass | | Update transaction | The exact update transaction was not observed. Automatic Updates had previously been enabled; the observations are consistent with that mechanism, but no manually exercised build-6-to-9 installation gesture is claimed | | Data and firmware boundary | No sideload, manual installation, uninstall, data clearing, text replacement, board file write or Run was performed in this delivery smoke. It does not repeat or extend the full HIL matrix | -| Google Play | Lenovo recheck at approximately `14:34 UTC` still finds Play `0.2.0 (8)`; app `0.3.0 (9)` submission and channel delivery remain unverified | -| External testing | Build `0.3.0 (9)` assigned to existing `PyBLE external` group, submitted and verified after reload as Waiting for Review at `15:03:35 UTC`; approval and external availability are not yet established | +| Google Play | The `14:34 UTC` Lenovo snapshot still found Play `0.2.0 (8)`. The later accepted open-testing submission is recorded below; the final Play listing/install check still offers no update and remains build 8 | +| External testing | Build `0.3.0 (9)` assigned to existing `PyBLE external` group, submitted and verified after reload as Waiting for Review at `15:03:35 UTC` and again at `15:23:25 UTC`; approval and external availability are not yet established | | Build-specific test details | English (U.S.) What to Test for `0.3.0 (9)` saved and exactly read back after reload: 2,242 characters; SHA-256 `01d14e5a7c0bfd50ad77c9d0f4d4571ba7be058e064d430c81d7f6c3f0d7507b`; exact published copy is in the [release packet](../../../publication/app-0.3.0-build-9-release-packet.md#testflight--what-to-test) | | App-level public description | English (U.S.) Beta App Description saved, reloaded and exactly verified: 1,523 characters; fresh public HTTP response also matches. [PYB-002.1 correction](../c1-s1/05_TestFlight_Metadata_Correction.md#31-october-published-description-and-closure) is complete; historical build-6 provenance/minimum-OS questions remain separate | @@ -472,3 +476,43 @@ save/reload evidence and `build9-review-notes.txt`. Await Apple's actual review outcome and observe external availability before changing that claim. M-05 remains partial; internal-account delivery is verified and Google Play delivery is still separate pending work. + +A fresh authenticated-page reload at `2026-10-31T15:23:25Z` again verified +`0.3.0 (9)` as **Waiting for Review** in the same external group's Builds tab. +This read-only recheck made no store change. Its private receipt is +`local/recovery-completion/ipad/testflight-external-status-recheck.json`, SHA-256 +`83b72cac5668f32304c70b39a8ec6d43ce1ae73056c89c476b6671924103ea97`. + +## 31 October Google Play open-testing submission + +After owner authentication, the actual PyBLE Console showed existing build +`8 (0.2.0)` live in both production and open testing. The pre-upload bundle +history contained codes `8`, `4` and `2`; code `9` was available at that check. +Google then accepted the admitted AAB as `dev.pyble.pyble`, version `0.3.0`, +versionCode `9`. Build `9` is now consumed; do not repeat its upload. A replacement +binary requires an explicit next-build contract and rebuilt artifacts. + +| Observation | Recorded result | +|---|---| +| Accepted artifact | 64,439,893-byte AAB; SHA-256 `bb041a9adcba7e84ece9800c418e69d7fa62274c2a170a929a37797a02784429`, matching the frozen admitted artifact | +| Saved draft and validation | Open-testing release `9 (0.3.0)` saved; preview showed Ready to launch with no observed validation error, warning or required declaration prompt | +| Release notes | Exact prepared English (U.S.) text accepted and read back: 441 characters, SHA-256 `b199632c5a7442305e9dd622a47684780c2725948aee7c0a8f233281ab3a7e20`; the [release packet](../../../publication/app-0.3.0-build-9-release-packet.md#google-play-release-notes) preserves it | +| Submitted scope | Exactly one prepared change: Open testing `9 (0.3.0)`, Start full rollout, requesting 100% of the existing 178-country/region open-testing track. This is not production promotion | +| Submission receipt | Send 1 change for review and its confirmation completed; receipt recorded at `2026-10-31T15:22:21Z` | +| Durable current state | Fresh Console page and native semantic readback at `2026-10-31T15:23:55Z`: **Changes in review**, only the open-testing build-9 change | +| Review progress | Automated common-issue checks were running; content review follows automatically. No review completion or duration is promised | +| Publishing and production | Managed publishing remains off, unchanged; production `8 (0.2.0)` remains unchanged. The requested open-testing rollout has not been observed live | +| Actual Play delivery check | The enrolled Lenovo beta tester's Play listing offers Open and Uninstall, with no Update and `0.2.0` notes. Installed `dev.pyble.pyble` remains `0.2.0`, versionCode `8`, installed by `com.android.vending`. No upgrade or production-app data change was performed | + +The private consolidated receipt is +`local/recovery-completion/android/play-console/release-preparation.json`, +SHA-256 `dff88fa5974a99cee0840825f802133236a381339440db88e2fb03b6b68c11d4`. +Its one-unsent-change fields describe preparation before submission; the later +submission and durable review fields supersede that phase. The same directory +retains validation, final submitted-state and actual Play-listing captures. +The uniquely staged Downloads AAB was removed after hash/size verification; +`staged-download-cleanup.json` has SHA-256 +`ffb6465b4255e2416363e3d275cacfa3b2ce847b509b47befb2482233ddf357c`. +No store approval, live build-9 rollout or Android installation of the update +has been observed. PYB-014.1 submission is complete for the selected channels; +PYB-014.2 and M-05 remain partial until the remaining delivery evidence exists. diff --git a/docs/planning/PyBLE_Implementation_Plan_and_Strategy_v1.0.md b/docs/planning/PyBLE_Implementation_Plan_and_Strategy_v1.0.md index 10c336f8..1add365c 100644 --- a/docs/planning/PyBLE_Implementation_Plan_and_Strategy_v1.0.md +++ b/docs/planning/PyBLE_Implementation_Plan_and_Strategy_v1.0.md @@ -13,8 +13,8 @@ |---|---| | Document version | 1.8 — accepted bounded recovery and app-only qualification; channel/pilot continuation; original filename retained | | Prepared | 25 September 2026 | -| Last reviewed | 31 October 2026; bounded M-02 and app-only M-04 engineering acceptance recorded with exact candidate, firmware and OEM test conditions; device closeout complete; [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) merged after all 36 checks on its final head passed; internal TestFlight delivery verified; external submission Waiting for Review; Play pending | -| Status | C1-S1 has six tasks Done, two Prepared awaiting pilot setup and four Awaiting evidence; Sprint and SG0 remain unfinished. Bounded recovery and app-only qualification pass scoped engineering review; device closeout is complete. [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)` installation and bounded smoke are verified; external build 9 is submitted and Waiting for Review; Google Play delivery remains pending. Human capacity and recruitment dates need replanning; no new protocol behavior approved | +| Last reviewed | 31 October 2026; bounded M-02 and app-only M-04 engineering acceptance recorded with exact candidate, firmware and OEM test conditions; device closeout complete; [PR #41](https://github.com/PyBLE-dev/PyBLE/pull/41) merged after all 36 checks on its final head passed; internal TestFlight delivery verified; external submission Waiting for Review; Play open-testing build 9 submitted, Changes in review; delivery pending | +| Status | C1-S1 has six tasks Done, two Prepared awaiting pilot setup and four Awaiting evidence; Sprint and SG0 remain unfinished. Bounded recovery and app-only qualification pass scoped engineering review; device closeout is complete. [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)` installation and bounded smoke are 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. Human capacity and recruitment dates need replanning; no new protocol behavior approved | | Product | PyBLE — Python over Bluetooth Low Energy | | Organization | SciLabPro | | Planning horizon | Immediate 12-week delivery cycle, followed by conditional expansion through September 2028 | @@ -188,7 +188,7 @@ Do not spend the first sprint rebuilding a large analytics dashboard. A small pr | [Device information types](../../app/lib/pble/types.dart) | Negotiated chip, agent version, and capabilities | A support export must distinguish observed data from operator-supplied profile/provenance; current HELLO does not prove an artifact hash | | [Host conformance fixtures](../../tests/firmware_tests/host/conformance/README.md), [HIL guide](../../tests/firmware_tests/hil/README.md) | Shared vectors, compiled-native/portable tests, physical benches and release evidence tools | Add a coverage map and operator recipe before creating another harness or schema | -**Accepted next-release engineering increment:** PYB-006.2 closes the bounded current-text part of the carried A-24 persistence gap. The [C1-S2 record](../developments/2026-q4-reliable-workflow/c1-s2/00_Execution_Record.md) binds its 31 October engineering acceptance, exact artifacts, physical conditions and carried limits. One acknowledged Drift checkpoint can be restored offline; generated Blocks text is covered only after explicit adoption into Editor. Full projects, Blocks graphs and new protocol operations remain outside this increment. [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 smoke are verified ([delivery record](../developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md#31-october-testflight-delivery-and-published-metadata)); the update transaction was not observed. External build 9 is submitted and Waiting for Review; Google Play delivery remains pending. Complete M-05 distribution next, while arranging real pilot observations and confirmed human capacity. The original design/sizing estimates remain historical forecasts, not measured effort.[^app-contract] +**Accepted next-release engineering increment:** PYB-006.2 closes the bounded current-text part of the carried A-24 persistence gap. The [C1-S2 record](../developments/2026-q4-reliable-workflow/c1-s2/00_Execution_Record.md) binds its 31 October engineering acceptance, exact artifacts, physical conditions and carried limits. One acknowledged Drift checkpoint can be restored offline; generated Blocks text is covered only after explicit adoption into Editor. Full projects, Blocks graphs and new protocol operations remain outside this increment. [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 smoke are verified ([delivery record](../developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md#31-october-testflight-delivery-and-published-metadata)); the update transaction was not observed. 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. Complete M-05 distribution next, while arranging real pilot observations and confirmed human capacity. The original design/sizing estimates remain historical forecasts, not measured effort.[^app-contract] ## 3. Target users and positioning @@ -878,7 +878,7 @@ At cycle end, choose one principal next investment: Reliable Projects, partner p - [ ] Assign one owner and one review path for each initial issue. - [ ] Inventory exact test boards, tablets, cables, and available recovery equipment. - [ ] Freeze Task A/B/C definitions, assistance/timeout rules, prospective follow-up windows and task-opportunity questions, consent procedure, and manual support template; observe initial eligible participants. -- [x] Specify and peer-review the bounded current-text contract and its acceptance scenarios; size the safe increment. Runtime implementation and bounded engineering acceptance are recorded in C1-S2. The dated continuation order preserves original forecasts; source integration and internal-account TestFlight delivery are recorded, while external build 9 is submitted and Waiting for Review; Google Play delivery remains pending. +- [x] Specify and peer-review the bounded current-text contract and its acceptance scenarios; size the safe increment. Runtime implementation and bounded engineering acceptance are recorded in C1-S2. The dated continuation order preserves original forecasts; source integration and internal-account TestFlight delivery are recorded, while 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. - [ ] If operator/capacity is available, include one existing-profile Ready rehearsal and draft record in PYB-009; show installation status and pending evidence explicitly. ### 20.2 Issue template diff --git a/docs/publication/app-0.3.0-build-9-release-packet.md b/docs/publication/app-0.3.0-build-9-release-packet.md index 36095e56..4402d3c9 100644 --- a/docs/publication/app-0.3.0-build-9-release-packet.md +++ b/docs/publication/app-0.3.0-build-9-release-packet.md @@ -1,7 +1,7 @@ -# PyBLE 0.3.0 (9) — prepared app release packet +# PyBLE 0.3.0 (9) — app release packet Recorded 31 October 2026 for the existing Google Play open-testing and TestFlight channels. Engineering admission and [PR #41 integration](../developments/2026-q4-reliable-workflow/c1-s2/00_Execution_Record.md#pr-41-final-integration-receipt) @@ -10,17 +10,23 @@ are complete. Apple accepted build `9`; later internal-account TestFlight ([delivery record](../developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md#31-october-testflight-delivery-and-published-metadata)). The exact update transaction was not observed. Build 9 is assigned to the existing PyBLE external group and submitted; the reloaded iOS Builds page -reports **Waiting for Review** ([submission receipt](../developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md#31-october-external-testing-submission)). +reports **Waiting for Review**, rechecked at `15:23:25 UTC` ([submission receipt](../developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md#31-october-external-testing-submission)). This is not approval or an all-tester availability claim. -Apple build `9` is consumed: do not repeat its upload. A replacement binary -requires an explicit next-build contract and rebuilt artifacts. Google Play -submission remains pending: the Lenovo browser reached Console, but owner -verification is required to select the PyBLE publishing account. Check its -account history before uploading build `9`. A consumed number requires rebuilt -artifacts, not a renamed file. +Google Play accepted the admitted AAB as `0.3.0`, versionCode `9`, and the +open-testing submission is **Changes in review**, durably rechecked at +`15:23:55 UTC` ([submission receipt](../developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md#31-october-google-play-open-testing-submission)). +It requests 100% of the existing 178-country/region open-testing track; +production build `8 (0.2.0)` and managed publishing off remain unchanged. +Neither store's review state establishes approval or external/open-test delivery. +Both stores have consumed build `9`: do not repeat the uploads. A replacement +binary requires an explicit next-build contract and rebuilt artifacts, not a +renamed file. ## Google Play release notes +English (U.S.), saved and read back in the accepted release: 441 characters, +SHA-256 `b199632c5a7442305e9dd622a47684780c2725948aee7c0a8f233281ab3a7e20`. + ```text 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. ``` @@ -71,11 +77,12 @@ PyBLE 0.3.0 (9) adds explicit local recovery of one Python text draft. In a work | Platform | Existing production/store identity | Release implication | |---|---|---| | iPad | Historical `14:04–14:05 UTC` TestFlight snapshot offered `0.2.0 (6)`; later internal-account TestFlight offers `0.3.0 (9)` with Open, and production About/device smoke pass | Existing updated installation verified; exact update transaction unobserved. No manual update gesture or external-group availability inferred; local Preview remains separate evidence | -| Lenovo Android | `dev.pyble.pyble` `0.2.0`, versionCode `8`; installing and initiating package `com.android.vending`, with the Play certificate recorded in readiness | Preserve this Play-signed app and its data; the isolated qualifier `0.3.0 (9)` is separate evidence and the upload-key APK is not a compatible replacement for the Play-signed install | +| Lenovo Android | `dev.pyble.pyble` `0.2.0`, versionCode `8`; installing and initiating package `com.android.vending`, with the Play certificate recorded in readiness. Console confirms build 8 live in both production and open testing; the enrolled beta listing still offers Open, with no Update | Open-testing build 9 is submitted, not observed live or installed. Preserve the existing Play app and its data; the isolated qualifier is separate evidence and the upload-key APK is not a compatible replacement for the Play-signed install | -These baseline observations do not reveal full account upload history. Apple -has accepted the recorded build-9 upload; confirm Google Play history -before submission. Record store-delivered About identity after actual delivery. +The account checks and accepted submissions now establish build-9 consumption +on both stores. The earlier device baseline alone did not supply that account +history. Record store-delivered Android About identity and scoped smoke after +actual availability; preserve the completed internal-account iPad evidence. ## Artifact and channel handoff @@ -85,8 +92,8 @@ before submission. Record store-delivered About identity after actual delivery. | Android package | `dev.pyble.pyble`, production flavor, normal `lib/main.dart`; existing owner upload signer, AAB validation and native alignment checks | | iOS package | `dev.pyble.pyble`, normal `lib/main.dart`, distribution export and successful `tools/validate_ios_ipa.sh` | | Admission | Accepted recovery evidence, required app/profile matrix, packaging/provenance review and no unresolved release-blocking defect | -| Account checks | Apple accepted build 9; do not repeat it. Complete the owner verification in Lenovo Chrome, select the actual PyBLE publishing account, then verify Google Play build-9 availability, upload/signing identity, declarations and review instructions | -| Submit | Internal-account Apple delivery is verified; external build 9 is assigned/submitted and Waiting for Review. Upload the admitted Android artifact only after its independent account checks; retain each platform outcome | +| Account checks | Both authenticated accounts accepted build 9 without a number conflict; retained artifact identities, declarations and review instructions support the submissions. Do not repeat either upload | +| Submit | Complete for selected channels: Apple external build 9 Waiting for Review; Google Play open-testing build 9 Changes in review. Internal-account Apple delivery is separately verified; approval/live rollout is not inferred from submission | | Verify delivery | Retain the completed internal-account iPad installation/About/smoke evidence and its transaction limit; verify external-group and Google Play outcomes separately | | Public copy | Update release availability only after observing it; preserve each platform's actual status | diff --git a/docs/specifications/App/current-draft-recovery.md b/docs/specifications/App/current-draft-recovery.md index f8a1a5ad..08fb0da1 100644 --- a/docs/specifications/App/current-draft-recovery.md +++ b/docs/specifications/App/current-draft-recovery.md @@ -17,7 +17,7 @@ actions. [The implementation record](../../developments/2026-q4-reliable-workflo records the scoped automated/physical acceptance and declared test conditions. [Channel evidence](../../developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md#31-october-testflight-delivery-and-published-metadata) separately verifies internal-account TestFlight `0.3.0 (9)` delivery; external -build 9 is submitted and Waiting for Review. Google Play delivery remains pending. Engineering acceptance alone +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. Engineering acceptance alone does not establish channel availability. [ADR-0048](../../decisions/0048-bounded-current-text-draft-recovery.md) supersedes the volatile-only current-text limitation in ADR-0010 for this slice. No PBLE/1 change or board-identity allowlist is introduced. From 4acf399dbc930af92bc4ba2f52a32cbd9dfc5daa Mon Sep 17 00:00:00 2001 From: Viwat Vchirawongkwin Date: Sat, 31 Oct 2026 22:42:11 +0700 Subject: [PATCH 6/6] [docs] record production scope and audience qualification hold Signed-off-by: Viwat Vchirawongkwin --- README.md | 3 + .../03_Milestones.md | 6 ++ .../04_Sprint_Plan.md | 2 +- .../05_Product_Backlog_and_Stories.md | 2 +- .../06_Sprint_Backlogs.md | 4 +- .../c1-s2/00_Execution_Record.md | 6 +- .../c1-s2/06_Release_Readiness.md | 73 ++++++++++++++++++- .../app-0.3.0-build-9-release-packet.md | 20 +++-- docs/publication/google-play-data-safety.md | 34 ++++++++- 9 files changed, 136 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 98721ef4..81d7c945 100644 --- a/README.md +++ b/README.md @@ -118,6 +118,9 @@ open-testing build 9 is submitted with **Changes in review** ([submission record](docs/developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md#31-october-google-play-open-testing-submission)). Neither review state establishes approval or tester delivery. Lenovo still offers and runs Play `0.2.0 (8)`. +The subsequently requested [Android production promotion](docs/developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md#31-october-android-production-scope-decision) +is held before submission while the saved child audience and Bluetooth +implementation are reconciled. The existing open-testing review is unchanged. ### Firmware diff --git a/docs/developments/2026-q4-reliable-workflow/03_Milestones.md b/docs/developments/2026-q4-reliable-workflow/03_Milestones.md index bf86cfdf..515c01b8 100644 --- a/docs/developments/2026-q4-reliable-workflow/03_Milestones.md +++ b/docs/developments/2026-q4-reliable-workflow/03_Milestones.md @@ -14,6 +14,12 @@ **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. +**Production continuation:** the subsequent Android production request is held +before submission on the [saved child-audience/Bluetooth requirement](c1-s2/06_Release_Readiness.md#31-october-android-production-scope-decision). +The existing open-testing review is unchanged. Scoped engineering acceptance +remains valid; it is not unconditional production-policy admission. M-05 remains +partial while the owner clarifies the intended audience and delivery is pending. + ## Assessment and evidence states Use **Proposed** until work is selected. At a milestone assessment, record one of diff --git a/docs/developments/2026-q4-reliable-workflow/04_Sprint_Plan.md b/docs/developments/2026-q4-reliable-workflow/04_Sprint_Plan.md index 9f0ce321..5b4b0ef0 100644 --- a/docs/developments/2026-q4-reliable-workflow/04_Sprint_Plan.md +++ b/docs/developments/2026-q4-reliable-workflow/04_Sprint_Plan.md @@ -66,7 +66,7 @@ measured velocity or a new delivery deadline. The original C1-S3 window is |---|---|---| | 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 | | 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 | -| 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 | +| 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 | | 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 | | 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 | | 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 | diff --git a/docs/developments/2026-q4-reliable-workflow/05_Product_Backlog_and_Stories.md b/docs/developments/2026-q4-reliable-workflow/05_Product_Backlog_and_Stories.md index 32b11fda..ea8130f7 100644 --- a/docs/developments/2026-q4-reliable-workflow/05_Product_Backlog_and_Stories.md +++ b/docs/developments/2026-q4-reliable-workflow/05_Product_Backlog_and_Stories.md @@ -45,7 +45,7 @@ | 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 | | 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 | | 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 | -| 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 | +| 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 | | 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 | | 13 | PYB-010 / P1 | Read accurate setup and recovery guidance in Simplified Chinese | 010.1 | Optional capacity and named language reviewer | Proposed | | 14 | PYB-015 / P1 | Discover the verified release through accurate supporting material | 015.1 | C1-S6 optional; verified claims, 002/013 | Proposed | diff --git a/docs/developments/2026-q4-reliable-workflow/06_Sprint_Backlogs.md b/docs/developments/2026-q4-reliable-workflow/06_Sprint_Backlogs.md index 98d4dfbb..e2422554 100644 --- a/docs/developments/2026-q4-reliable-workflow/06_Sprint_Backlogs.md +++ b/docs/developments/2026-q4-reliable-workflow/06_Sprint_Backlogs.md @@ -159,7 +159,7 @@ An analysis task can finish with fewer than 12 starts, but PYB-011.1 remains unf | 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 | | 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 | | 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 | -| 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 | +| 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 | | 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 | | 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 | | **C1-S5 total** | | | | | **24** | | @@ -178,7 +178,7 @@ The required matrix may cost more than these batches. Use the S1/Planning estima | Task ID | Parent child item | Proposed task and expected output | Dependency | Contribution role | h | Status | |---|---|---|---|---|---:|---| -| 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 | +| 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 | | 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 | | 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 | | 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 | diff --git a/docs/developments/2026-q4-reliable-workflow/c1-s2/00_Execution_Record.md b/docs/developments/2026-q4-reliable-workflow/c1-s2/00_Execution_Record.md index ce37c596..25a013d6 100644 --- a/docs/developments/2026-q4-reliable-workflow/c1-s2/00_Execution_Record.md +++ b/docs/developments/2026-q4-reliable-workflow/c1-s2/00_Execution_Record.md @@ -260,7 +260,11 @@ human sign-off or a Scrum ceremony. separate from the 36 passing frozen-runtime checks. - **Next release stage — M-05:** track the submitted Google Play open-testing build 9 in Changes in review and verify its availability and installed identity - after approval; production build 8 remains unchanged. Internal-account TestFlight + after approval. The subsequently requested production promotion is + [held before submission](06_Release_Readiness.md#31-october-android-production-scope-decision) + on the saved audience/Bluetooth requirement while the owner confirms the + intended audience; earlier production-build-8 observations remain history. + Internal-account TestFlight delivery is verified in the [delivery record](06_Release_Readiness.md#31-october-testflight-delivery-and-published-metadata); external build 9 is assigned and submitted with status Waiting for Review. Track Apple's decision and subsequent external availability separately. diff --git a/docs/developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md b/docs/developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md index 8357221f..78952587 100644 --- a/docs/developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md +++ b/docs/developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md @@ -6,10 +6,10 @@ | Field | Record | |---|---| | Date | 31 October 2026, Asia/Bangkok | -| Scope | App-only bounded current-text recovery; existing Play open-testing and TestFlight channels | +| 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 | | Runtime source | Recovery baseline plus landscape layout, native keyboard dismissal and iPad palette-geometry repairs at `bef67bded9e5b83437e3eb0e2ec4be6a4cfd1a64` | | Build checkout | Release worktree `c6e685dd3ebe718ed89fcfe58e441331eb174648`; app tree `60b3a68b693551af5d83076547c502f69838e052`, verified identical to the runtime baseline | -| 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 | +| 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 | | Local evidence | Ignored `local/recovery-completion/release/candidate-bef67bd/`: build/check logs, source/artifact manifests, runtime evidence and retained signed binaries | | 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 | @@ -516,3 +516,72 @@ The uniquely staged Downloads AAB was removed after hash/size verification; No store approval, live build-9 rollout or Android installation of the update has been observed. PYB-014.1 submission is complete for the selected channels; PYB-014.2 and M-05 remain partial until the remaining delivery evidence exists. + +## 31 October Android production scope decision + +After the open-testing submission above, the user explicitly requested Android +production release of `0.3.0 (9)`. This is the separate production decision +required by [PYB-014.1](../05_Product_Backlog_and_Stories.md#35-release-and-channel-verification). +It extends the selected track scope to production using the same accepted AAB +from the Play artifact library; it does not authorize a new binary or another +build-9 upload. The frozen source, signed artifact hash, packaging checks and +app-only M-04 engineering admission remain unchanged. The earlier +`15:23:55 UTC` open-testing receipt and production-build-8 baseline remain dated +history. + +The production draft uses accepted build `9` from the artifact library. Its +preview passed and requested a full rollout to the existing 178 countries and +regions. The final Restart review confirmation was **not confirmed**; production +build `9` has not been submitted for review or observed live. The earlier +open-testing review remains separate. + +The actual maintained target-audience settings include ages **9–12, 13–15, +16–17 and 18+**, with a Families commitment last updated on 7 August. Console +showed no required actions, ten completed App content declarations and no +policy issues. Those automated/account views do not resolve the specific +implementation requirement found during source review. + +For an audience including children, the current [Google Play Families policy](https://support.google.com/googleplay/android-developer/answer/9893335?hl=en) +requires Companion Device Manager (CDM) when requesting Bluetooth, with an +exception only for apps targeting OS versions that cannot support CDM. +[Android documents CDM from API 26](https://developer.android.com/develop/connectivity/bluetooth/companion-device-pairing). +This candidate supports API 24 and later and targets API 36, including the tested +API-31 Lenovo; the incompatible-OS-only exception does not apply. The frozen +[scan adapter](../../../../app/lib/ble/fbp_ble_adapter.dart) invokes +`FlutterBluePlus.startScan`. The [locked](../../../../app/pubspec.lock) +`flutter_blue_plus_android 7.0.4` path requests `BLUETOOTH_SCAN` directly and calls +`BluetoothLeScanner.startScan`; the reviewed path does not use CDM. + +This is a pre-existing Android package/audience issue, also relevant to the +ongoing open-testing review and existing production baseline; it is not a +requirement unique to production promotion. The previously submitted open-testing +review has not been changed while the owner clarifies the audience. Its accepted +submission does not establish policy clearance. + +The newly requested production promotion is therefore **blocked by the saved +audience and the Bluetooth implementation mismatch**, not by a Google validation +error. The owner's actual intended audience must be established before choosing an +accurate audience correction or a separately specified and qualified +implementation change. No audience declaration has been changed to bypass +this decision. The broader Data safety worksheet remains a conservative +proposal, not a newly attested declaration or an additional established +production blocker. Existing scoped M-02/app-only M-04 engineering results stay +valid; they do not establish current Families compliance or unconditional +production admission. + +The production preparation and unchanged App content observations are retained +in `local/recovery-completion/android/play-console-production/production-release-preparation.json`, +SHA-256 `c8504d5dbf278c8c2d7544e084979afcc181928bdb58be5458b2f8582ed32e86`. +Its hold was recorded at `2026-10-31T15:37:16Z` with the final confirmation still +open and unconfirmed. The [Data safety assessment](../../../publication/google-play-data-safety.md#31-october-2026--actual-console-inspection-and-audience-hold) +records the observed saved answers without adopting or reattesting them. + +The immutable source/policy audit is retained privately as +`local/recovery-completion/android/play-console-production/policy-review/families-bluetooth-review.json`, +SHA-256 `44f6a9ffefc12b7be4a60a1f0ef91ed791072f303eb934c3c0d0efbb4fa7c8a0`. +It binds the frozen source, admitted AAB, supported API range, locked plugin and +saved audience evidence; the same directory retains the reviewed policy page. + +The iPad's final observed external state remains Waiting for Review at +`15:23:25 UTC`; its verified internal-account delivery is separate. No further +iPad operation is required to document that snapshot. diff --git a/docs/publication/app-0.3.0-build-9-release-packet.md b/docs/publication/app-0.3.0-build-9-release-packet.md index 4402d3c9..ae85b6f6 100644 --- a/docs/publication/app-0.3.0-build-9-release-packet.md +++ b/docs/publication/app-0.3.0-build-9-release-packet.md @@ -3,8 +3,14 @@ # PyBLE 0.3.0 (9) — app release packet -Recorded 31 October 2026 for the existing Google Play open-testing and -TestFlight channels. Engineering admission and [PR #41 integration](../developments/2026-q4-reliable-workflow/c1-s2/00_Execution_Record.md#pr-41-final-integration-receipt) +Recorded 31 October 2026 for Google Play and TestFlight. The initial open-testing +submission is followed by an explicit owner decision to promote the same +accepted Android build to production. The saved production draft is not +submitted: promotion is blocked on the actual child-audience/Bluetooth-CDM +mismatch recorded in the [production decision](../developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md#31-october-android-production-scope-decision). +This pre-existing package/audience issue is also relevant to the earlier +open-testing review and production baseline; the earlier review remains +unchanged pending the owner's audience decision. Scoped engineering acceptance and [PR #41 integration](../developments/2026-q4-reliable-workflow/c1-s2/00_Execution_Record.md#pr-41-final-integration-receipt) are complete. Apple accepted build `9`; later internal-account TestFlight `0.3.0 (9)` offer/Open, production About and bounded physical smoke pass ([delivery record](../developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md#31-october-testflight-delivery-and-published-metadata)). @@ -16,7 +22,9 @@ Google Play accepted the admitted AAB as `0.3.0`, versionCode `9`, and the open-testing submission is **Changes in review**, durably rechecked at `15:23:55 UTC` ([submission receipt](../developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md#31-october-google-play-open-testing-submission)). It requests 100% of the existing 178-country/region open-testing track; -production build `8 (0.2.0)` and managed publishing off remain unchanged. +production build `8 (0.2.0)` and managed publishing off were unchanged at that +check. The subsequent [production scope decision](../developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md#31-october-android-production-scope-decision) +is separate from the initial open-testing submission. Neither store's review state establishes approval or external/open-test delivery. Both stores have consumed build `9`: do not repeat the uploads. A replacement binary requires an explicit next-build contract and rebuilt artifacts, not a @@ -91,9 +99,9 @@ actual availability; preserve the completed internal-account iPad evidence. | Candidate | Final accepted source/app tree, locked dependencies, exact signed artifact hashes, full `0.3.0 (9)` identity and retained checks | | Android package | `dev.pyble.pyble`, production flavor, normal `lib/main.dart`; existing owner upload signer, AAB validation and native alignment checks | | iOS package | `dev.pyble.pyble`, normal `lib/main.dart`, distribution export and successful `tools/validate_ios_ipa.sh` | -| Admission | Accepted recovery evidence, required app/profile matrix, packaging/provenance review and no unresolved release-blocking defect | -| Account checks | Both authenticated accounts accepted build 9 without a number conflict; retained artifact identities, declarations and review instructions support the submissions. Do not repeat either upload | -| Submit | Complete for selected channels: Apple external build 9 Waiting for Review; Google Play open-testing build 9 Changes in review. Internal-account Apple delivery is separately verified; approval/live rollout is not inferred from submission | +| Scoped engineering admission | Accepted recovery evidence, required app/profile matrix and packaging/provenance review; this does not establish Families compliance or unconditional production admission | +| Account checks | Both authenticated accounts accepted build 9 without a number conflict; retained artifact identities match. Saved Android declarations were observed without edits or reattestation; the [audience/CDM finding](../developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md#31-october-android-production-scope-decision) holds new production submission. Do not repeat either upload | +| Submit | Initial test-channel submissions complete: Apple external build 9 Waiting for Review and Google Play open-testing build 9 Changes in review. Newly selected Android production promotion is blocked on the actual audience/Bluetooth requirement; its final Restart review dialog was not confirmed. Internal-account Apple delivery is separately verified | | Verify delivery | Retain the completed internal-account iPad installation/About/smoke evidence and its transaction limit; verify external-group and Google Play outcomes separately | | Public copy | Update release availability only after observing it; preserve each platform's actual status | diff --git a/docs/publication/google-play-data-safety.md b/docs/publication/google-play-data-safety.md index 975f6878..fb9b6cd9 100644 --- a/docs/publication/google-play-data-safety.md +++ b/docs/publication/google-play-data-safety.md @@ -31,9 +31,41 @@ behavior. No pre-upgrade draft that existed only in memory can be recovered. The board/GitHub flow analysis and proposed Console answers below still need owner review against the exact final bundle and all active versions. This addendum records a source change, not a submitted Data safety declaration. -See the [prepared release packet](app-0.3.0-build-9-release-packet.md) for +See the [release packet](app-0.3.0-build-9-release-packet.md) for candidate-specific tester copy and the channel handoff. +## 31 October 2026 — actual Console inspection and audience hold + +During production preparation, the authenticated Console showed ten completed +App content declarations, no action needed and no reported policy issues. +The saved Data safety summary, last edited on 7 August 2026, stated that the +app does not collect or share data, that data is not encrypted, and that the +app is committed to the Play Families Policy. The saved target ages were +9–12, 13–15, 16–17 and 18+, also last edited on 7 August. These are observed +existing answers, not a new source-consistency PASS or owner reattestation. +No declaration or audience setting was changed during this inspection. + +The source review found a concrete child-audience/Bluetooth-CDM mismatch, +recorded in the [production decision and policy review](../developments/2026-q4-reliable-workflow/c1-s2/06_Release_Readiness.md#31-october-android-production-scope-decision). +This package/audience issue also applies to assessment of the existing Android +baseline and ongoing open-testing review. New production submission is held; +the earlier open-testing submission remains unchanged pending the owner's +actual audience decision. Console's green preparation is not policy clearance. + +The broader declaration tables below remain conservative, unverified proposals. +The existing optional GitHub traffic and user-directed board transfers require +accurate assessment, but this inspection does not ratify all proposed categories +or establish a new broad Data safety production blocker. Candidate `0.3.0` adds +local recovery and does not add an outbound data flow. + +Private evidence is +`local/recovery-completion/android/play-console-production/production-release-preparation.json`, +SHA-256 `c8504d5dbf278c8c2d7544e084979afcc181928bdb58be5458b2f8582ed32e86`, +with the hold recorded at `2026-10-31T15:37:16Z`. The immutable source/policy audit +`policy-review/families-bluetooth-review.json` in the same directory has SHA-256 +`44f6a9ffefc12b7be4a60a1f0ef91ed791072f303eb934c3c0d0efbb4fa7c8a0`. +No production-build-9 review submission, approval or rollout is claimed. + ## Why the internal-testing answer needs review The move to open testing requires a Data safety form. Google defines