Moves documentation into the code repo so code, docs, and diagrams version-lock and review together. Previous location was pumpingStation.wiki.git; that will shrink to a pointer. Contents: - wiki/README.md — doc index - wiki/functional-description.md — operator-facing reference derived from src/specificClass.js: basin model, net-flow selection, level-based control zones, safety interlocks, registration topology - wiki/diagrams/ — editable draw.io sources paired with SVG exports (basin-model, control-zones, safety-rules) + README with the open/edit/export/commit workflow The .drawio files are rough starters; iterate in draw.io and re-export. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
59 lines
4.7 KiB
Plaintext
59 lines
4.7 KiB
Plaintext
<mxfile host="app.diagrams.net" modified="2026-04-22T12:00:00.000Z" agent="Claude Code placeholder" etag="initial" version="22.0.0" type="device">
|
||
<diagram name="safety-rules" id="safetyRules">
|
||
<mxGraphModel dx="1200" dy="700" grid="1" gridSize="10" guides="1" tooltips="1" connect="1" arrows="1" fold="1" page="1" pageScale="1" pageWidth="900" pageHeight="700" math="0" shadow="0">
|
||
<root>
|
||
<mxCell id="0" />
|
||
<mxCell id="1" parent="0" />
|
||
<mxCell id="title" value="Safety rules — asymmetric by direction" style="text;html=1;fontSize=16;fontStyle=1;align=center;" vertex="1" parent="1">
|
||
<mxGeometry x="150" y="20" width="600" height="30" as="geometry" />
|
||
</mxCell>
|
||
|
||
<mxCell id="dryrun_box" value="DRY-RUN (direction = draining)" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#FFF3E0;strokeColor=#E65100;strokeWidth=2;fontSize=14;fontStyle=1;verticalAlign=top;" vertex="1" parent="1">
|
||
<mxGeometry x="80" y="80" width="340" height="340" as="geometry" />
|
||
</mxCell>
|
||
<mxCell id="dr_upstream" value="upstream children — KEEP" style="text;html=1;fontSize=13;align=left;" vertex="1" parent="1">
|
||
<mxGeometry x="100" y="140" width="300" height="24" as="geometry" />
|
||
</mxCell>
|
||
<mxCell id="dr_downstream" value="downstream children — STOP" style="text;html=1;fontSize=13;align=left;fontStyle=1;fontColor=#E65100;" vertex="1" parent="1">
|
||
<mxGeometry x="100" y="170" width="300" height="24" as="geometry" />
|
||
</mxCell>
|
||
<mxCell id="dr_machinegroups" value="machineGroups — STOP" style="text;html=1;fontSize=13;align=left;fontStyle=1;fontColor=#E65100;" vertex="1" parent="1">
|
||
<mxGeometry x="100" y="200" width="300" height="24" as="geometry" />
|
||
</mxCell>
|
||
<mxCell id="dr_control" value="control loop — BLOCKED" style="text;html=1;fontSize=13;align=left;fontStyle=1;fontColor=#E65100;" vertex="1" parent="1">
|
||
<mxGeometry x="100" y="230" width="300" height="24" as="geometry" />
|
||
</mxCell>
|
||
<mxCell id="dr_note" value="safetyControllerActive = true Pumps must stop before sucking air." style="text;html=1;fontSize=12;align=left;fontStyle=2;" vertex="1" parent="1">
|
||
<mxGeometry x="100" y="290" width="300" height="80" as="geometry" />
|
||
</mxCell>
|
||
|
||
<mxCell id="overfill_box" value="OVERFILL (direction = filling)" style="rounded=0;whiteSpace=wrap;html=1;fillColor=#FFEBEE;strokeColor=#C62828;strokeWidth=2;fontSize=14;fontStyle=1;verticalAlign=top;" vertex="1" parent="1">
|
||
<mxGeometry x="480" y="80" width="340" height="340" as="geometry" />
|
||
</mxCell>
|
||
<mxCell id="of_upstream" value="upstream children — STOP ⚠" style="text;html=1;fontSize=13;align=left;fontStyle=1;fontColor=#C62828;" vertex="1" parent="1">
|
||
<mxGeometry x="500" y="140" width="300" height="24" as="geometry" />
|
||
</mxCell>
|
||
<mxCell id="of_downstream" value="downstream children — KEEP" style="text;html=1;fontSize=13;align=left;" vertex="1" parent="1">
|
||
<mxGeometry x="500" y="170" width="300" height="24" as="geometry" />
|
||
</mxCell>
|
||
<mxCell id="of_machinegroups" value="machineGroups — KEEP" style="text;html=1;fontSize=13;align=left;" vertex="1" parent="1">
|
||
<mxGeometry x="500" y="200" width="300" height="24" as="geometry" />
|
||
</mxCell>
|
||
<mxCell id="of_control" value="control loop — ACTIVE" style="text;html=1;fontSize=13;align=left;" vertex="1" parent="1">
|
||
<mxGeometry x="500" y="230" width="300" height="24" as="geometry" />
|
||
</mxCell>
|
||
<mxCell id="of_note" value="Level control keeps commanding downstream MGC. ⚠ "upstream STOP" is only correct in a cascaded layout. In a gravity-sewer station the inflow can't be stopped — log the spill instead." style="text;html=1;fontSize=12;align=left;fontStyle=2;" vertex="1" parent="1">
|
||
<mxGeometry x="500" y="290" width="300" height="120" as="geometry" />
|
||
</mxCell>
|
||
|
||
<mxCell id="trigger_title" value="Triggers (either condition fires the rule):" style="text;html=1;fontSize=13;fontStyle=1;align=left;" vertex="1" parent="1">
|
||
<mxGeometry x="80" y="450" width="740" height="20" as="geometry" />
|
||
</mxCell>
|
||
<mxCell id="trigger_list" value="• vol < triggerLowVol (triggerLowVol = minVol × (1 + pct/100)) • vol > triggerHighVol (triggerHighVol = maxVolOverflow × pct/100) • remainingTime < timeleftToFullOrEmptyThresholdSeconds (if enabled)" style="text;html=1;fontSize=12;align=left;" vertex="1" parent="1">
|
||
<mxGeometry x="80" y="480" width="740" height="80" as="geometry" />
|
||
</mxCell>
|
||
</root>
|
||
</mxGraphModel>
|
||
</diagram>
|
||
</mxfile>
|