🚧 Add feature requests

This commit is contained in:
Jonas Bengtsson
2026-10-03 12:05:38 +02:00
parent 973d619cee
commit ba8df075c3
2 changed files with 269 additions and 26 deletions
+40 -6
View File
@@ -35,6 +35,13 @@ a virtual node whose I/O behavior is driven by scripted scenarios.
with `DI0.1`-style addresses, toggle/force/pulse/ramp actions,
watchdog/statistics/diagnostics views with fault injection, and
multi-client consistency for collaborative FAT benches.
- **Runtime device configuration** *(requested, planned — spec §11)*:
WBM/DIP-switch parity — module "plug/unplug" at runtime with
process-image rebuild (SAVE CONFIG / KBUS `0x102B` semantics),
address-selection DIP-switch emulation (host ID 1–254, 0 = stored
config, 255 = DHCP), WBM-equivalent pages (Port/Ethernet, Modbus
settings, Modbus Mapping, I/O Config), and device-state persistence
with factory reset.
- **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
@@ -176,13 +183,27 @@ requirement ID for each item in parentheses.
### Phase 3 — Long-duration (continuous) simulation (spec §8)
The soak-testing feature requested 2026-10-03 — specified in §8,
not yet implemented:
not yet implemented. Datasets are **optional**: signal logic
(plugins, scheduled steps, degradation) runs in parallel with CSV
streaming, or entirely without it.
- [ ] `scenario/datasets.py` — streaming CSV playback for designated
inputs: header-driven time column, `interpolation: linear|hold`,
`repeat` with seamless seams, `time_factor` acceleration,
`until` limits, bounded memory, ERROR verdict with file/line on
malformed data (FR-8.2.1–8.2.11).
inputs (OPTIONAL driver): header-driven time column,
`interpolation: linear|hold`, `repeat` with seamless seams,
`time_factor` acceleration, `until` limits, bounded memory, ERROR
verdict with file/line on malformed data (FR-8.2.1–8.2.11).
- [ ] Parallel logic pipeline — fixed per-tick order: datasets → edge
detection → plant plugins → degradation → invariants/rate
limits → scheduled steps → snapshots; plugins may read
dataset-driven and logic-driven aliases in the same tick
(FR-8.2.12).
- [ ] Logic-only continuous runs — no `datasets:` needed: demand
profiles generated inside plugins, top-level `until:` bounds the
run; degradation/invariants/rate limits/snapshots apply
identically (FR-8.2.13).
- [ ] Continuous-mode run-end + validation rules: run ends when all
drivers exhausted; scenario with no datasets, no scheduled steps
and no `until:` rejected (FR-8.2.1).
- [ ] `scenario/degradation.py` — wear counters (runtime hours, start
cycles, load-hours) and degradation models (`linear`,
`exponential`, `staircase`, plugin shapes) computing plant
@@ -206,7 +227,8 @@ not yet implemented:
- [ ] Acceptance tests per spec §8.8 (streaming 100k-row CSV,
interpolation checks, repeat determinism, time_factor math,
alias-ownership validation, degradation/recovery round-trip,
episode recording, full 28-day soak).
episode recording, full 28-day soak, logic-only run, mixed
dataset+logic tick-order run).
### Phase 4 — Reporting (spec §11)
@@ -229,6 +251,18 @@ not yet implemented:
view (FR-10.2.6), multi-client consistency (FR-10.2.7), optional
read-only/access control (FR-10.2.8), alias-ownership protection
during scenario runs (FR-10.2.9).
- [ ] **Runtime device configuration (§11)**: module hot-configuration
(plug/unplug at slot positions) with process-image rebuild per
KBUS/SAVE-CONFIG semantics and updated `0x1022–0x1025` /
`0x2030+` registers (FR-11.2.1–11.2.2); alias revalidation after
rebuilds with position-stable module addressing (FR-11.2.3);
rejection during running scenarios (FR-11.2.4);
address-selection DIP-switch emulation with the manual's exact
coding (1–254 host ID, 0 = stored config, 255 = DHCP,
restart-to-apply) (FR-11.3.1–11.3.4); WBM-equivalent pages —
Port/Ethernet, Modbus settings, Modbus Mapping, I/O Config with
SAVE CONFIG (FR-11.4.1–11.4.4); device-state persistence and
factory reset via `0x2043` (FR-11.5.1–11.5.2).
### Phase 6 — CI integration (spec §11)