Repository navigation
NET-02: add canonical transfer policy - #483
Conversation
|
Signed Full gate update:
This is now at the known unavoidable USB-powered physical boundary: one power-button press is needed to leave the charging/update screen and resume the already armed signed boot. The PR remains draft and the update remains unconfirmed. No power cycle, SD-card mutation, restage, bypass, or manual live-file replacement was attempted. |
|
Final CI reconciliation at exact head \6904df1a35e513307e7c0d709841eda7f13c0630: all required checks passed (Check build, Shell integration tests, Test Docs deployment, and Test build including AddressSanitizer). Protected Hardware test build 33039305266 also completed successfully for the same head. The PR intentionally remains draft; the signed artifact is retained but was not deployed, and the corrected durable Mini Plus gate remains pending a separately reviewed physical checkpoint. |
Summary
Implements NET-02 from the authoritative v3 program on top of merged NET-01 (#481).
Roms,BIOS,Artwork,Screenshots,Themes, and read-onlySavesfsyncbefore same-filesystem atomic publicationacquiring_address, not usable associationDependency and issue links
Base:
mainat9f339e90a773a288014bd5612fcb8bcc23790641(merged NET-01, #481). This PR is not stacked on an unmerged branch.Closes #482. Parent program: #434.
Validation
unusedFunctionfindings preserved; focused two-component mode completed in 9.93 seconds0b5c70687744d2c96882c74cf8857b138336012aBloomOS-v0.1.0-dev-0b5c7068.zip: 203,244,149 bytes, SHA-256f5846fccadd55aaa505de39e976033df86e94475a6e9410a0da31bd6f99b4c52; manifest SHA-25604c152b23cbe249cd09af707957acc5e5521795ffd3d82eb910ce973aa1731c1; signature SHA-25674fc5193cf1898919f4f5b31f50d58616017f0b0f316379ecfb7c3afb3c9fb42; payload-manifest SHA-2567b79dd0c1e3961bab72bc685bea58c3988da998258fe75f9d8a3e040a092a0b5; build-info SHA-256c8278881e78f043eacbbdfdc35d4e5830ec8da9803ece0199095a4c68af4073e; ZIP CRC, release metadata, exact commit, and repository Ed25519 signature verification passed--rm6f3ce2b9corrective totals belowrisk 3,full), and changed-diff private-secret scan: passedbloom-network-transaction: 25,255 bytes, SHA-2563ab5a21a9d02856ccc0e9820153a8b0fe8bd1147e934bcfc5333b1b4203d927e; superseded by the6f3ce2b9identity belowade73040dfe42ba72650d67841e9a9e8d8398f6cec4e3ea558d43ba9e62676ae6904df1a35e513307e7c0d709841eda7f13c0630; it is superseded for current-head release purposes by0b5c70687744d2c96882c74cf8857b138336012aand will not be deployed; the 203,245,224-byte archive has SHA-256bcf050f908c351958d0737bc9e6c1acd2b341e99c9bb1cf9a4e8670bbddc15a3, manifest SHA-256eee41dcf13cc8b9b75e9a3b869ace72a84150c2379c23e52edfde813fba8793d, and signature SHA-2568071d437384476c3004cf98aca5f322503aa4f09549c7717ee4714a1bc6b81bc; repository-key verification and release metadata validation passedSigned attempts and recovery
Four signed Full candidates were rejected and never confirmed:
aff110ba73eca83dfd52d18afd26b316caa9e7fd, workflow 32969798436ef9dbec54f0faffc0efd2eaf6cac1009957bb307, workflow 33025501252; archive 203,232,278 bytes, SHA-2566d4e5628a0ebf76772c7bb81fd92ee035f809ab8404505794d72fd88f94fe4170b5c70687744d2c96882c74cf8857b138336012a, workflow 33074138754; archive 203,244,149 bytes, SHA-256f5846fccadd55aaa505de39e976033df86e94475a6e9410a0da31bd6f99b4c526f3ce2b9aab0c9a40ee455e0b77249d42dad71c2, workflow 33095435808; archive 203,245,885 bytes, SHA-256334029833ba040647b95531e971df533bb95ebeedcb0c491a87d5db4dfa502ecThe second candidate reached Bloom Shell twice and reported Wi-Fi carrier, but wlan0 had no global IPv4 address or usable LAN route, key-only SSH did not return, and the UI request path appeared unresponsive. Bloom automatically rolled back to retained known-good
b073b423(recovered_from=0.1.0-dev-ef9dbec5).This disproved the earlier carrier-only correction. The reviewed source and retained state show two faults: carrier was accepted as network readiness, and a bounded carrier wait ran synchronously without repairing DHCP. Commit
354cb7fbrequires carrier plus global IPv4, restarts the fixedudhcpc -i wlan0 -s /etc/init.d/udhcpc.scriptpath when needed, and moves post-address service reconciliation to one detached 60-second watcher.A guarded one-file Warm attempt was also not accepted as a deployment: the legacy activator self-restored the exact installed
bloom-wifibytes, but the installed legacy transaction helper replayed saved optional-service preferences and endedrollback_failedbefore delayed DHCP recovery completed. The overlay is absent. Fresh inspection found the public transaction state marked its lease inactive while the separately validated lease file remained armed. The source now verifies an already-restored overlay before replay and can reconcile this terminal mismatch only after the exact saved baseline is observed twice; it preserves the failed state aslast.jsonbefore closing the lease.Machine-readable evidence:
docs/validation/network/plus-net02-signed-recovery-20260826.json.Current Mini Plus evidence
Rejected signed candidate
v0.1.0-dev-6f3ce2b9was never confirmed and has now automatically rolled back. The recovered installed image is retained known-goodv0.1.0-dev-b073b423;bloomctl update confirmpromoted only that recovered image and recordsphase=known_goodwithrecovered_from=0.1.0-dev-6f3ce2b9. The session manager is IDLE, Wi-Fi is associated with192.168.1.180/24and a default route, key-only SSH is available, and the listener audit is clean.Commit
12146089and its signed archive are quarantined: they were host/CI/signature verified but were never installed and will not be installed. The repeated failure is now treated as a two-part safety defect: the shell displayed saved desired state instead of live association, and disable could reconcile remote services before proving the backend mutation.## Corrective validation at6f3ce2b9--rmshardsbloom-network: 6,282 bytes, SHA-256d7256dd1a96a10169787bb5958eb7c6a9ecc12a3b3cfca0bc3f7e08b7b2496febloom-network-transaction: 25,714 bytes, SHA-2569b1beba21b704cd583544a87dbcfc5cde46b808678886e8685460377b08d6b78bloom-wifi: 8,951 bytes, SHA-256774897e1d6d081c40236e9a292b0e76813bead3c7d4581b75516fa354be56541Mini Plus corrective evidence
Signed candidate
v0.1.0-dev-0b5c7068was rejected and automatically rolled back to retained known-goodv0.1.0-dev-b073b423; it was never confirmed. Update state now reportsknown_good,recovered_from=0.1.0-dev-0b5c7068.A guarded compatible Warm overlay then exercised the corrected network stack without replacing the signed installed version. Physical input turned Wi-Fi from On to Off, and the maintainer pressed A to restore it to On. This confirms the physical toggle path and recovery, but promptness was not observed continuously and is not claimed as a latency pass. The overlay watchdog removed the candidate, the exact prior network state was reconciled to
rolled_back, and all temporary bootstrap helpers were restored byte-for-byte to their signedb073b423hashes.Fresh strict key-only inspection after cleanup confirmed known-good
b073b423, Wi-Fi associated, SSH running key-only, SFTP and Samba off, listener audit clean, no active session, no active overlay, canonical generation 129, transactiontx-2500-3216terminalrolled_back, and recovery lease inactive. This is Mini Plus remote evidence plus the stated physical control observation; it does not certify Mini V1-V4 or Mini Flip/my285.Exact corrective validation at
12146089e6399217bounds Bloom Shell network requests to five seconds, terminates the owned request process group, reloads the canonical preference after partial apply, and safely escalates only a re-verified owned Wi-Fi watcher from TERM to KILL121460894290402eb0154631c3c4915cc6eda180BloomOS-v0.1.0-dev-12146089.zip: 203,250,500 bytes, SHA-2567a9627b2a4cc4ee2fc9bfc9e48ca7616678d3455b58d3fdee69611e0d26fbacf; manifest SHA-256523c065ee30ddb385439c73d5d2fa1e1caf78015f70c13033d70247bbfaacd7d; signature SHA-256ffddc09253c8c1b00313a85d0217e3b1f59eaec6a9acde7f910afa69792d14b2; payload-manifest SHA-256b80a1d3c9e3847e4f77c8dc95c634f1c3dc13954cc0ff438cccee3e304c452ee; build-info SHA-256f27385779b8f6585c82a09ec796cbcd911d72af65b9dc081e0b5ed38cb568000bloom-networkSHA-256d7256dd1a96a10169787bb5958eb7c6a9ecc12a3b3cfca0bc3f7e08b7b2496feandbloom-wifiSHA-256b2cdcf8118d7986392dc5778f2fb2f91f7272070edbc1d294acf83c781f90bfcmatch reviewed source byte-for-byte; signedbloom-shellis 350,772 bytes with SHA-256bfa1dccfa75b36f9d5c9719b4ce4af9ac3eb8230b973fac8b5185aa9712c42a5Exact rollback-safety correction at
00c1f1e0bloom-network statusand displaysOn / Connected,On / No connection, orOff; malformed/unavailable status clears stale connectivity instead of retaining a prior Connected claim.Atomic Warm bundle correction at
ac9c0cdfA sealed two-file Warm slot for
bloom-networkandbloom-wifiwas intentionally not confirmed: independent confirmation reported the station unhealthy. The live radio and IPv4 route were actually healthy; the candidatebloom-networkhad been paired with the olderb073b423platform/settings/service contracts and therefore reportedplatform_unavailable. The guard rolled the slot back and restored both installed helper hashes exactly. The older known-good service helper then failed while reconciling SFTP=false and left a stale derived SSH state; a fresh strict connection and listener audit proved key-only port 22 remained active, the captured prior booleans were restored, and the exact current 25,714-byte transaction helper (9b1beba21b704cd583544a87dbcfc5cde46b808678886e8685460377b08d6b78) was used once from/tmpto reconcile the terminal record before being removed.network-helpersbundled74fea5e, but that artifact lacks this guard, is superseded, and will not be installedb073b423, IDLE session, associated IPv4/default route, key-only SSH running, SFTP/Samba off, clean listener audit, no active overlay, and transaction/lease terminal inactiveLimitations and merge state
72ec7069hosted CI, exhaustive dispatch, and protected signing are green; the guarded complete-bundle Mini Plus Off/On automatic-restore gate remains pending. No partial or Full candidate will be installed before recovery evidence is captured.maincurrently has no branch protection or merge queue, somerge_groupcannot be treated as an enforceable gate. The same Test build workflow exposesworkflow_dispatch; an exact-head exhaustive dispatch is required before this PR leaves draft or merges.b073b423is installed and confirmed. Rejected6f3ce2b9and quarantined12146089will not be reactivated.Storage hygiene
Reused one D:-based implementation worktree and one bounded D:-based task workspace. Temporary containers used
--rm; no C:-based clone, persistent WSL clone, named Docker volume, or broad prune was created. C: remained above the 60 GiB gate. Signed artifacts and privacy-bounded validation evidence remain retained outside the repository.Coherent signed overlay and timed-disable result at
7758e362ac9c0cdfexhaustive workflow 33109591129 passed; native plus ASan completed in 3m22s, while the full-source cppcheck configuration expansion took about 16m46s6b6b6ee8b9ad13badfc783dc20123169e66fb7fcc51503699dc4dfc27241e4d4, and its manifest signature and release metadata validatedac9c0cdfnetwork bundle was sealed, size/hash-verified file by file, activated through a rollback-timed transaction, and confirmed through a fresh independent key-only SSH connectionbackend_failed_rolled_backand proved the live network, service, and listener snapshots remained unchangedwifi-disablegate dropped the network path as expected, but the single restore attempt did not re-associate within 234 seconds; this is a failed device gate, not a pass. No reboot, update, or further remote mutation was attempted.aec6bd35replaces the single restore with four fresh 45-second recovery windows and keeps the recovery lease honestly armed on exhaustion. Focused transaction tests pass 19/19 and the combined network/deployer regression set passes 76/76.7758e362bounds full-source workflow-dispatch and merge-group cppcheck to one preprocessor configuration while retaining the complete source closure and whole-program checks. Native, ASan, and ARM remain the real-configuration compiler gates.da5fc0fbf9f821d8f84ccbb0564e7f3b4f09b0523572d1f4172d5f88311873f0, its signature/metadata validate, and the corrected 25,974-byte transaction helper has SHA-2561be01393fae5c2a8b68d785d20ea968d424dae10c793cb003f81d2be9ef4f5a9.ac9c0cdf; the retry correction is not yet hardware-validated.PR #483 remains draft and must not merge until the corrected rollback path passes the same real disable/automatic-restore gate.
Boot-interruption recovery correction at
72ec7069The failed real Wi-Fi-disable gate exposed a second safety gap beyond the single restore attempt: an interrupted or failed detached watchdog could leave the persisted Wi-Fi-off preference as the next boot baseline. Reboot then followed that preference, so ordinary boot networking could not recover the sole SSH path and repeated signed-update recovery boots could follow.
bloom-network-transaction boot-recovernow accepts only a validated matching transaction/recovery-lease pair, removes only its own empty non-symlink stale lock, and invokes the same bounded prior-state rollback for armedarmed,applying,applied,rolling_back, orrollback_failedphasesnetwork-helpersauthority is now an exact 17-file bundle that includes the cooperating boot runtime, preventing mixed transaction/runtime generations7758e362signed artifact is superseded for deployment by this correction. No72ec7069artifact has been staged or activated. The existing Mini Plus recovery remains in progress and strict key-only SSH has not yet returned.The retry and boot-interruption corrections are not yet hardware-validated. PR #483 remains draft and must not merge until the corrected rollback path passes the real automatic-restore gate without another recovery loop.
Exact-head CI and signed artifact
72ec706926a1276e1650ecacf1eee633ade96b0b; the hosted Test build rerun passed in 3m24s, including static analysis in 1m58s, shell in 1m58s, docs in 1m57s, formatting in 44s, and ARM in 8m26sBloomOS-v0.1.0-dev-72ec7069.zip: 203,248,718 bytes, SHA-25602a29bf9909315d415a8ddf8054f8c8ec759a381d701381d72f1db432beeb5f2; manifest SHA-25600dfe2b264b1562d4567f543be7c9a130d3cdf3a0f9e3df2183036a9697131ce; signature SHA-256fadcf5b836d28635f974a6cdf0cec40c0d2299e7d6518b2cdaf6b59b98496e19; payload manifest SHA-2566f4b1f6028408cc36c72bc31cfe9de502585e0ec512e4e520c6726f4e097ee56; build-info SHA-2561aabf9fbd45357d4ec204021c12131523361eb16a1c3618c4c33c3d11cac56c3bloom-network-transactionSHA-256cc3136b199064b3fcad581d6185caa5009a91f7928341e34392aa0ae1f0768b3;bloom-dev-deploySHA-2569fa077ae0083420b81cb7527bc994142e3c70509309a44f48400c12e7b2002ed;runtime.shSHA-256968fb7d1b4b6294aa127dfd2534f1b4f3a177ba52e53e778441732e72127e878Offline recovery evidence on 2026-08-27
The failed real Wi-Fi-disable state was preserved from the powered-off Mini Plus before any repair. It proves the same stale desired/live split observed physically:
device.wifi_enabled=false, but the Onion compatibility snapshot storedwifi=1wifi_enabled=truetx-5415-933wasrollback_failedwithrestore_failed; its state record said the recovery lease was inactive while the separate matching lease file remained armednet02-network-full-ac9c0cdfremained active; update state remained known-goodv0.1.0-dev-b073b423, recovered from rejected6f3ce2b9chkdsk /Fcleared the dirty flag and the final volume state was Healthy/OK134 -> 135anddevice.wifi_enabled false -> true; every other semantic setting, transaction file, overlay pointer, and update record remained unchanged579e04766ea6f5b3710c3fb71b6b1cd5445dffae89e3aa944985ca7a9e6ea73c; the FAT32 volume passed again and was safely ejectedNo
72ec7069candidate was staged or activated during offline recovery. One clean boot, strict evidence capture, and live-state reconciliation are required before any further deployment or Wi-Fi mutation.Comprehensive offline rollback on 2026-08-27
The first offline settings-only repair was insufficient. On the next boot, runtime copied the current device-specific Onion profile
5E649300ABEA.jsonwithwifi=0into the boot settings path and canonical settings returned to generation 136 with Wi-Fi disabled. Bloom Shell then displayed Off and a physical A press produced no network recovery within one minute. No further toggles or reboot loop were requested.A second powered-off, evidence-first recovery completely removed the active NET-02 development overlay and restored the verified signed baseline:
v0.1.0-dev-b073b423archive at 203,221,654 bytes with SHA-2566ab66f264f86f1b312440b7768a772e0905bf53a27e048f8e33e3b3738786494; repository Ed25519 verification passedconfig/transfer-policy.json, matched the reviewed repository file at SHA-25668563c3202ce397ddaa90dffa36668e6a23adf162c694374fe3f2e74eb7e2c26runtime.shandbloom-dev-deployagainst the signed known-good archivebloom-transfer-policybinary and active pointer, and retained the complete sealed deployment slot, payload, backups, missing marker, manifest, and seal136 -> 137, canonical and derived Wi-Fi state to enabled, and only the verified current Mini Plus profile5E649300ABEA.jsonfromwifi=0towifi=1; three unrelated device profiles remained byte-for-byte unchangedtx-5415-933and its armed lease for later read-only diagnosis rather than falsifying terminal evidencechkdsk I: /Ffound no problems, and final FAT32 state was Healthy/OK and NOT Dirty58e3e115631e12f2577b073276d587a5614db3f602090b7d90d3c969c4b75b30; final current-device profile SHA-256 is7dd5fba35f575ed70a9ed21158eb16e7dc32841e3b9146a724edb66687f825f9The card was safely ejected. No
72ec7069artifact was staged or activated. The next boot is observation-only; no further NET-02 deployment or disruptive Wi-Fi test will occur until the known-good baseline is captured and the current code proves unattended watchdog rollback, boot recovery, and independent confirmation without requiring physical recovery.Per-device boot recovery persistence at
5017d2efOffline evidence proved that restoring canonical/root Wi-Fi state alone is not durable on this runtime: a later boot copies
.tmp_update/config/system/<device-serial>.jsonintosystem.json. If that profile still containswifi=0, it can re-disable networking after the recovery lease has already closed.Commit
5017d2ef9e863df9f3593e2aebf39fc04f6efda5capturesboot-recoveroutput and, only when it reports an actual restored transaction, immediately saves the restored root settings to the current per-device profile before ordinary networking starts. No-op recovery does not rewrite the profile. Recovery failure and profile-persistence failure remain explicit logged failures.Validation:
--rmcontainerThe branch was pushed to the existing draft PR #483. No device candidate was staged or activated. The real automatic-restore device gate remains required, and it will not be repeated until the known-good post-recovery baseline is captured and the unattended recovery path can be exercised without another physical recovery loop.
Durable ordinary Wi-Fi preference projection at
6f83b9b1The same offline evidence exposed a second recurrence path: compatibility reconciliation intentionally imports the current per-device Onion profile even after Bloom authority cutover. Therefore a successful ordinary Bloom Shell Wi-Fi enable could still be reverted by a later unclean power loss if only canonical
system.jsonchanged and the serial-specific profile retainedwifi=0.Commit
6f83b9b1closes that path in the existing network authority:system.jsonto a same-directory temporary file and atomically replace only.tmp_update/config/system/<validated-12-hex-serial>.jsonValidation:
No device candidate was staged or activated. PR #483 remains draft and the physical automatic-restore gate remains pending.
Exact-head persistence corrections and signed artifact at
6f83b9b1The second offline recovery showed that both boot recovery and an ordinary successful Wi-Fi preference change must persist to the validated current-device profile; otherwise a later boot or unclean power loss can re-import stale
wifi=0state. Commits5017d2efand6f83b9b1close those two recurrence paths while failing closed on unsafe paths, symlinks, malformed device identity, or an unprovable rollback.6f83b9b1788e9f8685b62704de4bfa70c33d54d5BloomOS-v0.1.0-dev-6f83b9b1.zip: 203,246,348 bytes, SHA-2560a002612f1f9fd9b0060172d86449f8aea8769420039f1510ddb23c95e0e00c8; manifest74e9871c01a772f1cc8ed2b661faaee9a5064c939875040a1bb34a37fa188d74; signature4a9bac66233977539c17ab6956cb671150fb5e2776afb91dff1532d9a7ad175b; payload manifest090f1490ab502376631371aab3403639abb3eaadbc30746e9dd7d805fe52bfd8; build infoa6449c90f54ee24d9bc9abc6c3374f8e789154e9e30b1151a02df553555de003bloom-networkd08b2782b35b3623be3429a02ed52baf2d08fa3e1e4740ea09b3629996746f50; transaction helpercc3136b199064b3fcad581d6185caa5009a91f7928341e34392aa0ae1f0768b3; service helper922c3a7118cba2b525df842fb15891e718af1ad2e216161a026123079a68fdfe; deployer9fa077ae0083420b81cb7527bc994142e3c70509309a44f48400c12e7b2002ed; runtime791ce1106f299ebe0896d41f11bec1d4fe9dc7fbb3c0e250b4144dbeac5568f1; transfer policy68563c3202ce397ddaa90dffa36668e6a23adf162c694374fe3f2e74eb7e2c26This exact-head artifact is retained on D: but has not been staged, activated, or installed. PR #483 remains draft. The next Mini Plus boot is observation-only: capture the known-good baseline first, then re-plan the unattended rollback gate. No further Wi-Fi mutation, device reboot, or candidate deployment will occur before that evidence is reviewed.
BusyBox Telnet lockdown correction at
fced0821A signed exact-head 17-file Warm overlay from
6f83b9b1was activated and independently confirmed on the Mini Plus without changing the installed signed version. A deliberately no-mutation detached-watchdog dry-run then exposed the remaining blocker before any real Wi-Fi disable: this firmware starts Telnet asbusybox telnetd, sopgrep telnetdandkillall telnetddid not see it. Compatibility reconciliation therefore left port 23 active and correctly failed the listener gate. No real Wi-Fi disable was attempted.The dry-run transaction and recovery lease were reconciled, the overlay was rolled back through the current reviewed deployer, and exact signed
b073b423helper hashes were restored. Fresh evidence showed associated Wi-Fi, key-only SSH, SFTP/Samba disabled, no active overlay, and a terminal inactive transaction. The6f83b9b1artifact is superseded and will not be redeployed.Commit
fced08216e680fedda39b2787045820c213ff6fbnow:Validation: focused listener gate 6/6, combined listener/network/transaction/deployer gate 61/61, complete optimized shell gate 660/660 immediately before the final proc-symlink hardening, and post-hardening FAT payload, canonical legacy manifest, file-backed provenance, transfer policy, JSON ledger, POSIX syntax, focused listener, and diff gates all passed. Exact-head hosted CI is now the complete-suite gate for
fced0821.Limitations: this correction is not yet signed or activated on hardware. PR #483 remains draft. A new exact-head signed Warm bundle must first pass an isolated fixture and a no-mutation watchdog dry-run with a clean listener audit; only then may the real unattended Wi-Fi disable/automatic-restore checkpoint be attempted. Current evidence is Mini Plus remote evidence and does not certify Mini V1-V4 or Mini Flip/my285.
Untouched-watchdog replay correction at
e04539d7Exact head
fced08216e680fedda39b2787045820c213ff6fbpassed all ordinary checks, exhaustive workflow 33134063692, and protected hardware workflow 33134064776. The signed archive is 203,244,666 bytes with SHA-2569bd6aa9b1a524e290c15e90d02770f9785d155bb7234661cd283819141b84932; manifest SHA-256145626b57ad5b3f5efab88b30da8ae1f8a6b0f1b816cd6f4c8e6e7a1e06e0ab1; signature SHA-256ef2760c9049d0232dedd3d68de1044506134b579271c63e6f6d0acc2229d0f17; payload-manifest SHA-256cbe9390381c3ea551587687882867e522d5554b95f1f5839efe06265b3df5839; build-info SHA-256840da9e20e3a3164abf85c9b71df5c8b27f5ed952587b738dec94272bc6aaecb. Release metadata, SHA256SUMS, exact commit/device scope, dependency lock, ZIP CRC, complete payload reconstruction, and repository Ed25519 signature all passed.The signed 17-file bundle was independently verified, sealed, activated, and confirmed through a fresh key-only connection. Wi-Fi remained associated, SSH key-only, SFTP/Samba off, listener audit clean, aggregate health true, profile Wi-Fi enabled, and installed version remained signed known-good
b073b423. The exact BusyBox fixture proved only PID 3605 was selected, caller-like and symlinked proc entries were ignored, and a BusyBox-owned port 23 was prohibited, with no live mutation.The subsequent no-mutation watchdog dry-run applied no disable operation. It kept the listener clean, proving the Telnet correction, but unnecessarily replayed an already-matching prior network state. SSH briefly restarted and returned automatically; the transaction ended
rollback_failedafter live state had recovered. The exact saved baseline was verified twice, the failed record was archived, its matching lease was closed, and the overlay was rolled back to signedb073b423. No real Wi-Fi disable was attempted and no user action or reboot was required.Commit
e04539d706c3df64d9492baf47cb14fa062f216acloses an untouched timed transaction directly when operation isnoneand the saved network/service/listener baseline already matches. Any drift still enters the existing bounded restoration path. Focused transaction validation passed 25/25, including both zero-replay and drifted-baseline cases; the earlier combined transaction/listener gate passed 30/30. Canonical manifest, 314,637,653-byte dependency inventory, file-backed provenance, FAT payload, transfer policy, JSON, POSIX syntax, and diff gates passed. Exact-head hosted CI is pending.PR #483 remains draft. A new signed exact-head transaction helper must pass the same no-mutation watchdog gate before any real Wi-Fi disable/automatic-restore attempt.
Exact-head no-mutation pass and real restore failure at
e04539d7All ordinary checks are green at
e04539d7533c09f16a3b4d9cfe5f1aa21c467274: shell 2m07s, static analysis 1m29s, native plus ASan 3m28s, ARM 7m44s, docs 2m14s, and formatting 39s. Exact-head exhaustive workflow 33136083339 passed. Protected hardware workflow 33136084481 passed in 9m10s.The signed archive is 203,248,860 bytes with SHA-256
358c5366144e7f49624f7ceb8e7cca3b4da7b0b6695a55d8186af001478b5c97; manifest SHA-256fcde7039517574685ba365f4482f43209f6cef38955f212c225406c33c296bf7; signature SHA-2564f0de5ce353ad703362de73d4288db7922fea4fd56fb6a0f949590eeefac09a0; payload-manifest SHA-2564970ee9586037e5693dba611be9f137f2f1bc62df244b1a30607c21c2f663163; build-info SHA-256baadc19ae8e8576e5ba5b77ad4b8e6689c4a929227df74a81476ac967f822e80. Exact commit/device scope, dependency lock, SHA256SUMS, payload reconstruction, every ZIP CRC, metadata, and repository Ed25519 signature passed. Signedbloom-network-transactionis 27,679 bytes with SHA-256af65431b93bc03af15dd7553dfb5819ec2fc650218d7d4085a7d372d7bc575b1, matching the reviewed tree byte-for-byte.The exact 17-file bundle was sealed, independently verified, activated, and confirmed through a fresh strict key-only connection. The corrected 30-second no-mutation watchdog then passed: every poll remained reachable, transaction
tx-6489-2892closedrolled_backwith its lease inactive, Wi-Fi stayed associated, settings/profile remained enabled, services stayed correct, and the listener audit stayed clean.The subsequent real timed
wifi-disablegate is a failure. Preflight proved an IDLE session, associated Wi-Fi, clean listener audit, inactive prior lease, and exacte04539d7overlay. Transactiontx-6625-4060began with a 45-second deadline; the disable connection closed as expected, but strict key-only SSH did not return during 731 seconds of bounded polling or a further three-minute late-recovery poll. No blind follow-up mutation, reboot, manual toggle, or card change was attempted. The current remote transaction and recovery-lease state cannot be read until physical boot recovery restores a network path.PR #483 remains draft and must not merge. The real unattended automatic-restore checkpoint is not satisfied. One physical reboot is now unavoidable because no remote path exists; boot recovery must be observed and its exact transaction, lease, profile, listener, overlay, and signed-version state captured before another correction is designed. No further real Wi-Fi-disable test is authorized until that evidence is reviewed.
Offline overlay recovery and fail-closed Wi-Fi-disable guard at
6565d348A physical reboot did not restore the automation path after failed transaction
tx-6625-4060. Bloom Shell reported Wi-Fi connected, but the known LAN endpoint did not answer ICMP or strict key-only SSH and the device MAC was absent from the live neighbor table. Card inspection established the repeat-loop cause: signed update state had already recovered to known-good0.1.0-dev-b073b423, but the complete temporarynet02-network-full-e04539d7network/boot overlay remained active. Early boot therefore reran the same overlay-owned recovery and returned torollback_failedinstead of the signed runtime.Powered-off offline recovery was bounded to Bloom-owned state:
e04539d7payload and the sealed manifest SHA-256 was1f2662443bc4fd4d6c02e32ac7e9fedb618e698bcf5c4d8c3fa31e2e8e00f732known_goodat0.1.0-dev-b073b423chkdsk; Windows found no filesystem problems, then safely ejected the cardCommit
6565d348makes the prohibition durable.bloom-devicerejects a new remotewifi-disablelocally, andbloom-network-transactionrejects it before preflight, lock, authorization, state publication, or radio mutation. Recovery of historical persisted Wi-Fi-disable transactions remains covered for backward compatibility. This aligns implementation with the v3 instruction: Do not test a sole-route persistent Wi-Fi-off operation.Validation at
6565d348:--rm; C: remained unchanged at 61.49 GiB free during metadata validationPR #483 remains draft. The only pending device action is an observation-only clean boot and strict read-only evidence capture on the restored signed baseline. No further live Wi-Fi-disable test will be performed.
Signed-baseline post-recovery observation at
6565d348After the offline recovery and a clean user boot, strict BatchMode/IdentitiesOnly/public-key SSH returned on the first probe. Read-only inspection at 2026-08-28T11:14Z confirmed installed signed known-good
0.1.0-dev-b073b423, aggregate health true, Wi-Fi enabled and associated with a default route,wpa_supplicantand the fixed DHCP client running, key-only SSH running, SFTP/Samba stopped, and a clean listener audit with no prohibited listener or process.The transaction authority reports
idlewith an inactive lease. The canonical transaction directory and developer active pointer are absent, no development overlay is active, the network-mutation enable marker is absent, and the offline disabled marker remains present. The failed four-file transaction record remains quarantined with exact hashes preserved outside the repository. Canonical generation 139 and the current device profile both retain Wi-Fi enabled. The session is IDLE, Bloom Shell is running, RetroArch is not running, and no temporary probe remains.The restored live hashes include signed-baseline
bloom-network2b58d67935a46bb7697a205ad428cc74c9489f4a8c43e480eb8e58548fb495f6,bloom-wifi5ec86c0d09d25dd7dcb8196725c9e20935478f1cab582a3bb5952e5a04af4c35, andruntime.shcb49ff20db0cb37a7bda3cdd2e38101685db7c44df57a33114aeaf3f24f6fada. The privacy-safe external evidence record is 3,360 bytes with SHA-256e40dc034bc9ac8331cf761e47c48416dcaf86f374511f25de80cb1b43140d4f1.This is remote Mini Plus recovery evidence, not physical certification of controls, LCD, audio, gameplay, or save semantics. The corrective candidate remains host/CI validated but was not activated during recovery. No sole-route Wi-Fi-disable operation, reboot, overlay activation, or network mutation was attempted.
Exact-head recovery correction gates at
6565d348All ordinary checks are green at exact head: shell 1m40s, static analysis 2m01s, native plus ASan 3m38s, ARM 7m40s, docs 2m09s, and formatting 45s. Exact-head exhaustive workflow 33166683195 passed in 3m51s; whole-source cppcheck completed in 1m58s and the full native plus ASan job remained under four minutes.
Protected Hardware test build 33166684506 passed in 9m25s for exact commit
6565d34874600d42e7b60cdb75f08a9e4c9b3791. The signed archiveBloomOS-v0.1.0-dev-6565d348.zipis 203,248,605 bytes with SHA-256dee6cc27cf02ad0604c76acae331d30121765b4a749fe3150ec51375a927f535; manifest1d40a37820a3a6a089b4196b0a1d62efd1d7667999b72233fb3847271548a2f5; signature5c49176b043ed1bdf2151f496a8cc6b10d63220e423d96eb80438f6ea678737a; payload manifestc597375ea194548c480f710b9bd0d822a8896a87b8c94a7a6e0a9902076559a6; build info8ffb6bcce1d97d4a9433975a6eff8938a268de412c7a124877b4091d4caf29a3.Repository Ed25519 signature, SHA256SUMS, ZIP CRC, exact commit/channel/device scope, dependency-lock digest, complete payload reconstruction, and release metadata passed. Embedded reviewed-source hashes match exactly:
bloom-networkd08b2782b35b3623be3429a02ed52baf2d08fa3e1e4740ea09b3629996746f50; transaction helper37f08d8e5502ca1d56ac79448156a88c321b456a61f06cfe2b5a2daad01e9497;bloom-wifib2cdcf8118d7986392dc5778f2fb2f91f7272070edbc1d294acf83c781f90bfc; runtime791ce1106f299ebe0896d41f11bec1d4fe9dc7fbb3c0e250b4144dbeac5568f1. The privacy-safe external verification record is 2,345 bytes with SHA-256cebe9bba2021909a0c7f1769df01c19e350bbc88f53842ee3073fa46e9751abb.The artifact is verified and retained on D: but has not been staged, activated, installed, or confirmed. Signing is not device certification. No sole-route Wi-Fi-disable operation will be performed.