📝 Update README & specifications.

This commit is contained in:
Jonas Bengtsson
2026-10-06 19:21:41 +02:00
parent 597b5bf73c
commit c8b655111e
2 changed files with 222 additions and 5 deletions
+36
View File
@@ -44,6 +44,14 @@ a virtual node whose I/O behavior is driven by scripted scenarios.
config, 255 = DHCP), WBM-equivalent pages (Port/Ethernet, Modbus
settings, Modbus Mapping, I/O Config), and device-state persistence
with factory reset.
- **Host network settings** *(requested, planned — spec §15)*: a
Docker-gated, opt-in settings page (`WAGO_SIM_HOSTNET=1` **and**
container detection) that lists the host OS's network interfaces
and adds/removes/changes their IPv4 addresses through a
whitelisted host-side agent — so simulated node re-addressing
(DIP dedicated-IP mode) and network-loss fault cases become real
on the bench network. Runtime-only changes, snapshot/undo, and an
audit log; fully absent (404) when the flag is off.
- **Long-duration (continuous) simulation** *(requested, planned — see
`docs/spec/software-spec.md` §8)*: endurance/soak testing over days or
weeks of simulated time. Designated inputs are driven from streaming
@@ -343,6 +351,34 @@ requirement ID for each item in parentheses.
protocol tracing, diagnostics and fault injection (FR-14.2.5–
14.2.6); scoping questions to answer before planning (§14.3).
### Requested — host network settings (spec §15, not yet scheduled)
- [ ] Host OS IP settings page (FR-15.2.1–15.2.3): exposed in the web
UI only when `WAGO_SIM_HOSTNET=1` **and** running inside Docker
(compose sets `WAGO_SIM_IN_DOCKER=1`; `/.dockerenv` as a
supplementary signal); authenticated page listing the host's
interfaces with link state and current IPv4 addresses, read
from live host state, with add/remove/change-address operations
validated client- and agent-side; routes answer 404 when
disabled — no dormant surface.
- [ ] Host-side agent + safety rails (FR-15.2.4–15.2.8): a
whitelisted companion service on the host (Unix socket mounted
into the container; `pyroute2`/`ip` on Linux v1, systemd unit in
`deploy/`) — interface whitelist, runtime-only (non-persistent)
address changes so a host reboot restores deployed addressing,
snapshot before every mutation with undo/restore, single-line
audit log; degraded state (agent unreachable) shows a banner
and answers 503 without affecting the rest of the UI; readonly
mode hides the page and 403s mutations.
- [ ] DIP dedicated-IP integration (FR-15.2.9): applying a DIP-switch
address change in dedicated-IP mode routes through the agent so
the derived IP lands on the host NIC — the PLC on the bench
network must genuinely re-connect to the new node address, like
a physical coupler after a DIP change (ties into §11
FR-11.3.3); scoping questions (platform scope, bridge vs host
networking, agent auth, IPv6, link up/down) in §15.4 before
planning.
### Web UI (spec §10) — in implementation
- [x] Spec §10.3–10.6 updated with binding implementation decisions: