Watch
1
0
Fork
You've already forked SouveraineOS
0

docs: record the USB landing and VPN gate

This commit is contained in:
Fimeg 2026-08-07 17:24:40 -04:00
commit 721b0c7a0f
2 changed files with 43 additions and 16 deletions

View file

@ -151,6 +151,20 @@ It needs identity — the gateway's MAC, the SSID, or a reachability probe again
something only the home LAN serves — and it is a piece of evidence with a
confidence, not a boolean derived from a regex.
## Operational proof — 2026-08-07
At the foreign `10.10.30.x` location, the phone correctly had no route to the
LAN-only package archive at `10.10.20.120` until Casey deliberately toggled
`wiufph` on. Afterward, `ip route get 10.10.20.120` selected `wiufph` with
source `10.8.0.6`, Gitea returned HTTP 200, and the ordinary `pacman -Syu`
completed. No VPN had been active before the toggle and no site-to-site route
exists at this location.
That is the UX requirement in one incident: the toggle must stay deliberate,
but the surface should make the missing private route obvious when a known
home service is requested. `wiufph` remains split-tunnel; do not turn this
convenience into an implicit `0.0.0.0/0` posture.
## The constraints any design must respect
- **Not a daemon, not a dispatcher hook.** `VPN-WIUF.md` is explicit, and it was

View file

@ -1,6 +1,6 @@
# TASK 62 — full USB KVM: the phone becomes the glass and the hands
**Status: software and package pipeline green; phone install, cable acceptance,
**Status: software, package pipeline and phone install green; cable acceptance
and authority enforcement remain open.** Opened 2026-08-07. Souveraine Gitea
run 1237 built the receiver; Pixel3Arch run 1243 built, signed and published
the full device archive. This is not a completed task until the landing order
@ -38,7 +38,7 @@ the system D-Bus mechanism.
| Human surface | `souveraine/surfaces/quickshell/` | nested Power Options; HID and KVM are live leaves when advertised |
| Souveraine package | `souveraine/packaging/arch/PKGBUILD.prebuilt` | receiver included on aarch64 |
| Gadget mechanism | `usb-signaller/` | full composite, readiness gates, rollback, user-owned HID/GUD lane |
| Device packages | `Pixel3Arch/pkgs/{usb-signaller,smoo,blueline-usb-gadget}` | published through Gitea; not installed from the new archive |
| Device packages | `Pixel3Arch/pkgs/{usb-signaller,smoo,blueline-usb-gadget}` | installed from the signed Gitea archive |
The separate local `souveraine-usb` repo is a safety copy from the first
layout attempt, not a source of record. Do not build another package from it.
@ -97,7 +97,7 @@ owner:
`/etc`, with an unowned `/usr/local/sbin/usb-gadget-net`; both were removed
from the phone and the stale rootfs enable link was deleted;
- usb-signaller is now the sole configfs gadget owner;
- `blueline-usb-gadget 1.0.0-2` owns `40-usb0.network` and the one-shot stale
- `blueline-usb-gadget 1.0.0-3` owns `40-usb0.network` and the one-shot stale
interface flush, which ran successfully at boot;
- commit `Pixel3Arch 8c9c50f` adds that previously hand-installed package to
the Gitea publisher as `1.0.0-3`, so the fix no longer depends on this one
@ -118,27 +118,40 @@ and source VBUS. That work is expected to materially improve negotiation and
unlock proper C-to-C host behaviour. Do not let successful gadget-mode
acceptance close or demote it.
## Phone truth before landing
## Phone landing — 2026-08-07
Measured at `10.10.30.213` on 2026-08-07:
Installed with one normal `pacman -Syu` after Casey deliberately enabled the
split-tunnel `wiufph` profile from the foreign `10.10.30.x` network:
- `usb-signaller 0.3.1-3`, `souveraine r379`, no `smoo` package;
- `blueline-usb-gadget 1.0.0-2` installed; legacy static gadget removed;
- live mode `charging_only`;
- advertised modes: developer, tethering, charging-only, MTP and host;
- data role `device`, charger online;
- `souveraine r387`, `usb-signaller 0.3.1-5`, `smoo 0.0.2rc6-1`, and
`blueline-usb-gadget 1.0.0-3` are installed and own their expected files;
- the shell snapshot deploy landed revision `9ceaf61`; its USB state service,
Power Options surface and option row hash-match the repo;
- live mode `developer_mode`, data role `device`, charger online;
- advertised modes include `hid_mode` and `kvm_mode`;
- KVM and smoo responders remain inactive until a mode request.
The first restart still advertised the old mode table. The package was correct;
an unowned `/etc/systemd/system/usb-signaller.service.d/local-fix.conf` forced
the service back to an unowned July 21 `/usr/local/bin/usb-signaller`. Both
stale files were removed. The running service now executes the package-owned
`/usr/bin/usb-signaller`. Neither stale file existed in the canonical rootfs.
Still true from the pre-landing inspection:
- the legacy static gadget is removed;
- `charge_control_end_threshold=99`; no start-threshold attribute.
So a KVM button in a newly deployed shell must remain unavailable until the
new usb-signaller package advertises `kvm_mode`. That is deliberate feature
discovery, not a version guess.
The shell's KVM button is now enabled by live feature discovery, not a version
guess.
## Landing order
1. Publish/install the new `souveraine`, `smoo`, and `usb-signaller` packages.
1. **Done.** Publish/install the new `souveraine`, `smoo`, and
`usb-signaller` packages.
Keep Wi-Fi SSH alive; do not make a USB mode change the only recovery path.
2. Verify `get_modes` includes `hid_mode,kvm_mode` before opening the power
sheet. Verify all installed files are package-owned.
2. **Done.** Verify `get_modes` includes `hid_mode,kvm_mode` before opening the
power sheet. Verify all installed files are package-owned.
3. Enter HID mode first. Confirm keyboard and pointer enumerate on the host,
reports arrive, and developer mode restores cleanly.
4. Enter KVM mode. Confirm host enumeration for GUD, both HIDs, NCM and smoo;