Repository navigation
fix(network): serialize developer SSH reconciliation - #642
Conversation
|
Device gate update (2026-08-31): the failed The final PR head is |
|
Offline recovery checkpoint (2026-08-31): after the user physically powered down the Plus, the FAT32 card mounted as Preserved pre-repair state:
Recovery-only offline repair replaced exactly four files from final PR head
The update state was unchanged after repair, the FAT volume remained clean/healthy, and Explorer safely ejected the card. This is explicitly an unconfirmed recovery-only runtime patch, not signed-release certification. The next gate is one boot, strict key-only SSH continuity, supported rollback to exact signed known-good bytes, and then the signed final candidate. Separate physical power evidence: a 3-second power hold showed no Saving/Shutting Down screen; Bloom Shell remained visible until the device powered off roughly 30 seconds later. That behavior is not counted as a shutdown-UI pass and will be tracked separately from this SSH race fix. |
|
Rollback activation checkpoint: PR #642 recovery runtime restored strict key-only SSH on the repaired boot. Read-only gates passed on Mini Plus model 354: aggregate health healthy, update phase testing at boot attempt 2, zero active play sessions, network transaction idle, SSH desired/running/key-only, and listener audit clean with only reviewed key-only SSH. The supported To keep SSH available on the rollback boot, only the pending installer copy of Exactly one |
|
Signed Mini Plus device gate passed for final PR head Exact signed artifact:
Device result on Miyoo Mini Plus model 354:
Recovery-only intermediate bytes were restored to exact signed |
Summary
This is a corrective NET-10/NET-11 and integrated F1 checkpoint slice. It is independent and targets current upstream main; it is not stacked on another open implementation PR.
Fixes #641.
Root cause
bloom-network invoked the compatibility services path and then canonical bloom-network-services reconciliation. The compatibility path started bloom-dev-ssh in the background while the canonical path started it synchronously. Concurrent helpers could race stop_dropbear and prepare_runtime_key. On a read-only firmware home using Bloom's bind-mount fallback, the losing helper could unmount /home after the surviving Dropbear listener was already live, leaving TCP/22 reachable but removing its authorized_keys path.
The recovery CLI also required a candidate to consume the full failed-boot budget before rollback could be published. The bounded automatic path remains, but an authenticated operator can now reject phase testing immediately. The state transition is fixed, records recovery_reason operator_requested, retains the signed known-good authority, and refuses rollback recursion.
Validation
The latest commit will rerun PR shell CI. A fresh signed full ARM hardware artifact is being built from the final head after the obsolete in-flight build was cancelled.
Device evidence
Observed on Miyoo Mini Plus model 354 during the first controlled boot of signed candidate 0.1.0-dev-55e0664b built from main commit 55e0664:
Recovery and remaining device gate
The failed card will be inspected offline before mutation. Recovery will use the exact fixed scripts only to regain strict pinned-key access, explicitly reject the unconfirmed candidate, publish the retained signed known-good rollback once, and then install the fresh signed PR artifact. No candidate will be confirmed with modified or unsigned runtime bytes.
Before merge/confirmation, the final signed Mini Plus candidate must demonstrate strict pinned-key SSH continuity, listener audit, installed version and structured health, stable Wi-Fi, exact update state, and no repeated reboot/rollback loop.
Limitations
Remote evidence does not certify physical controls, LCD appearance, audio, gameplay, save semantics, Mini V1-V4, or Mini Flip. No Full update will be confirmed while required checks or the device gate are failing.