Repository navigation
NET-04A: add atomic private profile mutations - #487
Merged
Merged
Conversation
boburning
marked this pull request as ready for review
August 28, 2026 12:43
This was referenced Aug 28, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary Publishes the first host-safe NET-04 slice on merged NET-03 (#485). - adds stdin-only atomic
upsert IDfor one private Wi-Fi profile - binds the stdin document ID to the requested non-secret handle - preserves the 16-profile / 16-KiB complete-store validation boundary - adds atomicdelete IDfor inactive profiles only - marks projections with a non-secret managed profile ID - refuses replacement or deletion of the active projected profile - retains mode-0700 root, mode-0600 store/config, same-directory candidates, sync, locking, link refusal, and redacted output - does not scan, associate, restart Wi-Fi, change the Wi-Fi preference, touch listeners, or expose an SSID/credential This PR intentionally does not complete NET-04. The following slice will add bounded asynchronous scan/connect orchestration and rollback-safe active-profile transitions. The v3 ledger remainsin_progress. ## Dependency and issue links Base:mainatfca10bb0168d8bc38737881745b68cd3bab9da59(merged NET-03, #485). This PR is not stacked on an unmerged branch. Refs #486. Parent program: #434. ## Validation - focused profile-store gate: 16/16 passed in 4.8s33171784731: passed with 1m29s test execution onb6e96eebd08df0eb8b75867b8e341f3e7a76a830- canonical legacy manifest: 331 components - full file-backed provenance: passed - transfer policy: passed - FAT payload validation: passed - dependency aggregate: 331 components, 2,130 files, 314,651,736 bytes, 227 source-build and 104 unresolved inherited components - POSIX syntax, JSON parsing, and diff checks: passed - adversarial coverage includes requested/document ID mismatch, active replace/delete refusal, unsafe config links, occupied slots, stale/live locks, malformed input, count/byte limits, duplicate IDs/SSIDs, credential and directive injection, and prior-store preservation -bloom-wifi-profiles: 14,104 bytes, SHA-2565fd88c120a0a4a979a890865a5ac06e7dbeb7e50ffcd99ce08cfa389e637ecc7## Device evidence and limitations The exact 14,104-byte helper (SHA-2565fd88c120a0a4a979a890865a5ac06e7dbeb7e50ffcd99ce08cfa389e637ecc7) was transferred through strict key-only SSH and exercised only under/tmp/bloom-net04a-fixture-b6e96eebwith synthetic profiles. Two upserts succeeded, deletion of the projected profile failed closed, deletion of the inactive profile succeeded, and root/store/config modes were 0700/0600/0600. The live/appconfigs/wpa_supplicant.confhash remainedd7fbadd510e76c423638513337620e17944d51b4505ff314354971d97114bdef; temporary state was removed and aggregate health remained green. No live profile, association, Wi-Fi toggle, reboot, update, activation, listener change, or network transaction was attempted. This is not physical certification and not Mini V1-V4 or Mini Flip/my285 evidence. ## Storage hygiene Reused the single D:-based implementation worktree and cached pinned shell-test image. Focused containers used--rm; no clone, extra worktree, WSL build directory, named Docker volume, or build cache was created. C: remained above the 60-GiB gate. No unrelated worktree, image, volume, branch, stash, recovery state, or signed evidence was removed.