90 lines
5.0 KiB
Markdown
90 lines
5.0 KiB
Markdown
# Wireless enrollment sequence R5
|
|
|
|
The owner confirmed onboard Bluetooth discovery and requested visible device
|
|
rows, no redundant bottom Close button, and no Connect footer before a
|
|
successful connection check. The board is connected to its router by Ethernet;
|
|
only K1 needs that router's Wi-Fi. LinuxWifiAssociationProbe already represents
|
|
Ethernet as a valid not-wifi path with continuity evidence. No host Wi-Fi
|
|
association or network switching is added.
|
|
|
|
## Observed R4 connection result
|
|
|
|
The operation completed at 09:44:26 UTC with action=connect, status=failed,
|
|
error_code=network-provision-candidate-not-fresh, phase=network_not_applied and
|
|
side_effect_status=none. The selected native BLE handle was no longer usable;
|
|
this attempt did not transmit the network settings. The exact preceding event
|
|
that invalidated that handle is not established by the available projection.
|
|
Do not describe this as a wrong Wi-Fi password, an Ethernet failure or a K1
|
|
station refusal. Private journal inspection without interactive sudo was
|
|
unavailable; no authentication bypass was used.
|
|
|
|
## Interface sequence
|
|
|
|
WirelessEnrollmentWindow keeps the top close action and omits the footer when
|
|
there are no contributed actions. The supported-model selector remains first.
|
|
The K1 contribution renders discovered devices as canonical ResourceList /
|
|
ResourceRow entries with explicit Select actions. Wi-Fi appears after selection.
|
|
|
|
Check connection explicitly says it sends the entered Wi-Fi settings to K1 and
|
|
checks communication with the board. It uses the existing single provision
|
|
intent and observes its owned bootstrap; it does not issue a second command.
|
|
The separate read-only state check is reserved for an unconfirmed network
|
|
outcome, preserving recovery without another provisioning write.
|
|
|
|
Connect appears only after the dialog obtains a successful current connection
|
|
proof, including the exact runtime, discovery generation, mode revision,
|
|
selected device and device session. Closing with this button finishes the
|
|
dialog and refreshes inventory; it does not provision again or create another
|
|
backend enrollment phase. A restart, outage, new scan, changed mode/device or
|
|
changed session invalidates the displayed completion action. The ordinary
|
|
backend session is established by the verified connection itself.
|
|
|
|
A candidate-not-fresh result explicitly asks for a new Bluetooth scan and says
|
|
that Wi-Fi settings were not sent. The failed selection is cleared and cannot
|
|
be reselected from that same invalid generation in the open dialog. No runtime
|
|
fence or BLE safety rule was relaxed. The device protocol, optional K1 backend,
|
|
Rerun profiles and recovery supervisors are unchanged.
|
|
|
|
## Standalone Node upgrade
|
|
|
|
Inspection found that Node preinst stopped K1, while Node postinst left it
|
|
stopped during a Node-only update. Preinst now records a previously active K1
|
|
worker in a root-owned /run marker; postinst restores it if its optional package
|
|
is already configured. A jointly upgraded plugin starts itself after its own
|
|
configuration. An inactive plugin is not started by this path.
|
|
|
|
The real shell scripts were executed against isolated OS paths and fake OS
|
|
commands for active/configured, inactive/configured and active/unpacked cases.
|
|
The focused Python suite has 21 passing tests, including Ethernet without a
|
|
host Wi-Fi request and retention of a usable native BLE capture after scanning.
|
|
The Core frontend suite has 791 passing tests; Core TypeScript and production
|
|
build passed. Ruff, shell syntax and diff checks passed.
|
|
|
|
Node 0.8.3 is the replacement UI/host package. Installed optional K1
|
|
0.1.2+private.1 is retained. Exact artifact and installation acceptance follows;
|
|
a new fresh-cache UI connection, live streams and recovery remain pending.
|
|
|
|
## Prepared release
|
|
|
|
Source `5c4546a2a68052a7f871ecf6111728e0560d74e4` was built into
|
|
`mission-core-node_0.8.3_amd64.deb`: 109814334 bytes, SHA256
|
|
`fa8ce997aad75be29d03b1db78e1e4efe068cef6eed546f46fca9f6f027cc142`.
|
|
Its package provenance matches that source. Node TypeScript/production/Go build
|
|
and UI boundary validation passed. Transferred package and installer checksums
|
|
match; APT simulation selected one Node upgrade and zero removals.
|
|
|
|
The canonical Core serves the exact new frontend index, SHA256
|
|
`02cb6f8c3ffee93dd97130c551b2fbfb3dab144cec6e44efb29e8a9ef4ceb6b9`.
|
|
The release is retained in `private/releases/mission-core-node-20260907-r5`.
|
|
Owner screenshots, redacted UTC/monotonic manifest and validation logs are
|
|
hashed under `private/acceptance/k1-node083-20260907-core-ui`.
|
|
|
|
The owner completed Ubuntu authentication; the installer exited with code 0.
|
|
Readback confirmed Node 0.8.3 and K1 0.1.2+private.1, both active with zero
|
|
restarts, started at 13:08:15 MSK. This confirms the Node-only upgrade restored
|
|
the existing plugin. The next owner UI attempt found K1 but failed at Bluetooth
|
|
connect before Wi-Fi dispatch; see the R6 report. Fresh-cache Bridge/live
|
|
acceptance remains open. Git publication remains pending the
|
|
explicit owner reply to the prior automatic approval rejection of deployment
|
|
reports; no push workaround was used.
|