🚧 WIP
This commit is contained in:
@@ -224,10 +224,13 @@ Env = TankEnv # `--env myenvs.tank` picks this up
|
||||
```
|
||||
|
||||
API surface (spec FR-8.2.14–17): `observe()` returns every
|
||||
DI/DO/AI/AO channel (I/O codes, names, values) plus aliases and
|
||||
degradation parameters; `apply()` writes DI/AI (the field);
|
||||
DI/DO/AI/AO channel (I/O codes, names, values, analog display
|
||||
ranges) plus aliases and degradation parameters; `apply()` writes DI/AI (the field);
|
||||
`force()` writes DO/AO master-side (headless runs, fault setup);
|
||||
`is_done()` optional end; `reset()` deterministic replay. Reference
|
||||
`is_done()` optional end; `reset()` deterministic replay.
|
||||
`state.channel(key)` returns the full channel record by I/O code
|
||||
or configured name; `state.channel_range(key)` gives an analog
|
||||
channel's (min, max) directly. Reference
|
||||
forms: `pkg.mod:ClassName`, `pkg.mod:factory`, or `pkg.mod` with
|
||||
`Env`/`make_env`. The shipped example is
|
||||
`envs/pump_station_env.py` (tank + pump physics with a low-level
|
||||
@@ -400,7 +403,12 @@ requirement ID for each item in parentheses.
|
||||
may be negative (-65534–65535; stored as 16-bit two's
|
||||
complement), for signed plant quantities. DI/DO channels render
|
||||
in vertical columns of eight (0–7 left, 8–15 next) on thin,
|
||||
tall module bezels mirroring real DIN-rail housings.
|
||||
tall module bezels mirroring real DIN-rail housings. Dense
|
||||
store (2026-10-04): `node.channel_ranges` always carries every
|
||||
analog channel of the current layout (unconfigured = the
|
||||
materialized default, stale codes pruned on rebuild), so
|
||||
environments read min/max without fallbacks; the YAML and the
|
||||
config export stay lean (non-default entries only).
|
||||
- [ ] M6: scenario run view + alias-ownership rejection (FR-10.2.6,
|
||||
FR-10.2.9) — deferred.
|
||||
- [x] Tests: 46 web-UI tests (`tests/test_webui.py`) via httpx
|
||||
|
||||
Reference in New Issue
Block a user