49 lines
1.8 KiB
Markdown
49 lines
1.8 KiB
Markdown
# Wiring Runtime Contract
|
|
|
|
Wiring configs remain the L0 `wiring_configs` contract described by
|
|
`protocol/schemas/wiring-config.schema.json`. The L3 patch-panel runtime applies
|
|
one active config and owns cross-box signal propagation.
|
|
|
|
## Runtime Config
|
|
|
|
`hwlab-patch-panel` loads a runtime config from `HWLAB_WIRING_CONFIG_PATH` when
|
|
the variable is set. The file contains:
|
|
|
|
- `wiringConfig`: an L0 wiring config object.
|
|
- `endpointMap`: an object keyed by `resourceId` with HTTP base URLs for
|
|
writable `hwlab-box-simu` instances.
|
|
|
|
The service also supports:
|
|
|
|
- `GET /wiring` for the applied wiring config.
|
|
- `GET /status` for L0 patch-panel status plus config/evidence summary.
|
|
- `GET /diagnostics` for readable config, endpoint, and sync diagnostics.
|
|
- `POST /wiring/apply` to apply an inline runtime config.
|
|
- `POST /wiring/reload` to reload `body.path` or `HWLAB_WIRING_CONFIG_PATH`.
|
|
- `POST /signals/route` to route one source signal.
|
|
- `POST /sync/tick` to route a batch of source signals.
|
|
|
|
## Supported Sync Families
|
|
|
|
The minimal L3 runtime supports these directed signal families:
|
|
|
|
| Source | Target | Value |
|
|
| --- | --- | --- |
|
|
| `DO*` | `DI*` | boolean |
|
|
| `AO*` | `AI*` | number |
|
|
| `FREQ_OUT*` | `FREQ_IN*` | number |
|
|
|
|
Typed signal wiring is directional. For example, `DI1 -> DO1` is rejected with
|
|
`source_port_not_output`, and `AO1 -> DI1` is rejected with
|
|
`unsupported_signal_wiring`.
|
|
|
|
Untyped legacy MVP fixture ports such as `uart0` and `gpio0` may still be routed
|
|
as recorded deliveries for M1 compatibility, but they are not part of the L3
|
|
sync loop.
|
|
|
|
## Evidence Boundary
|
|
|
|
This runtime records only config application and evidence summary fields in
|
|
`/status` and `/diagnostics`. It does not write tick audit records. Live DEV or
|
|
PROD deployment is outside this local runtime contract.
|