Research — Substation · Early Access
Substation checks against NESC and RUS tables, with an audit trail of the bugs it caught.
A deterministic model of a substation plus 21 check functions (the README’s count) against NESC (ANSI/IEEE C2) Section 11 rules and RUS Bulletin 1724E-300 clearance tables. Each check returns pass/fail, the violations, and the standard it cited.
NESC Rule 110 · RUS 1724E-300
Interactive demos
- Bus scheme and breaker count →Switch a substation one-line between six bus schemes, step the circuit count and installed breakers, read the breaker count the harness implies, then click any breaker or bus to fail it: the de-energized part goes dark, breakers snap open and the surviving circuits are counted. Failure outcomes are the exporter's own graph logic (the harness has no outage model). Draft, unvalidated.Auto ▶
- Station walk →Walk a generic 230 kV station in plan and elevation: seven NESC/RUS checks run one at a time with a camera that walks to each dimension, six stories plus free play. Draft, unvalidated.Auto ▶
- Fence clearance →Pick voltage and BIL, drag the measured clearance, and see the NESC Table 110-1 verdict. Draft, unvalidated.Auto ▶
Harnesses in action
Scripted chat-and-viewer examples where this domain's harness is one of the tools. Illustrative, not live sessions.
- In the application: approved fixes land in the open design file →Illustrative, scriptedAfter a person approves a fix, the harness makes the change inside the open design file through the design application’s own automation interface, in four scripted sessions: an overhead pole, an underground pad-mount, a substation drawing and a datacenter plant. Each shows what that application offers to reverse the change, including one case where it offers none. A model label can be switched without changing a single tool call.
- Stage by stage: generation to substation →Illustrative, scriptedA generation plant and then its substation walked through their design stages, one design basis entered once. Each stage reports valid, incomplete, failed, stale or missing, and nothing passes by default. The plant’s fault contribution reaches the substation as a versioned hand-off, a breaker that was adequate on the grid alone is not with the plant, and a verified fix sends every dependent stage stale before it is re-run. A short coda runs the same pattern on a transmission line. The numbers come from running the design workflows offline; the demo does not call the live routes.
- Grid to rack: one design, six harnesses →Illustrative, scriptedA grid-fed datacenter reviewed stage by stage: transmission tap line, substation bus scheme and fence, duct bank, hall power path, service-gear fault current against its interrupting rating, and liquid cooling. Each stage hands a result to the next.
- Why the shared graph matters →Illustrative, scriptedA DER interconnection request screened with and without a shared entity graph: generation, feeder and substation harnesses joined through one graph. The circuit harness supplies fault current, and an upstream breaker count comes from the substation harness. One join is shown as planned, not wired.
What it can do
check_substation_fence_clearanceFence-to-live-part clearance from NESC Rule 110A2 / Table 110-1, a 17-row lookup by voltage and BIL, never interpolated.
check_substation_fence_heightPerimeter fence height against the NESC Rule 110A.1 7 ft floor, with an optional jurisdiction override.
check_bus_configuration_breaker_countBreaker count against the ratio implied by the bus scheme (RUS 1724E-300 §4.6).
check_substation_equipment_ground_clearanceEquipment-to-ground clearance for personal safety (RUS 1724E-300 Table 4-7).
check_substation_insulator_cantilever_strengthSelected insulator cantilever rating against the required minimum (RUS 1724E-300 §4.11.2.7).
validate_substationRuns one substation through all 21 checks and returns an aggregate result.
Design workflow
A staged substation design, where anything not evaluated says so.
Six routes walk a design through stages: start, status, run a stage, summary, propose fixes, and decide (apply or dismiss). You send the whole design state in and get the new state back; nothing is stored between calls. Change an input and every stage built on it is marked stale instead of silently kept. A stage that could not evaluate something reports incomplete — never valid.
7 stages, drawn from the harness’s own dependency graph (7 of the 12 stages in its workflow map of RUS Bulletin 1724E-300 are built). Every stage reads the design basis; an arrow means a stage also needs the one it points from, so stages in the same column do not depend on each other.
- 1. Design basis
design_basisTakes the substation design basis once; every later stage reads it from the state.
- Validates
- Records the design basis and reports which inputs are still missing.
- Needs
- the design basis
Can reportvalidincomplete - 2. Topology
electrical_topologyDerives the breaker count from the bus scheme and circuit count.
- Validates
- Uses the same bus-scheme breaker ratios as the compliance check, and reports a scheme or circuit count it cannot size as incomplete.
- Cites
- RUS 1724E-300 section 4.6
- Needs
- the design basis
Can reportvalidincompleteSame check on its own: Bus scheme and breaker count
- 3. HV fault study
fault_studyThree-phase fault level at the high-voltage bus from the utility source, with any generator contribution added to it.
- Validates
- A generator’s contribution is added to the utility source, never substituted for it; with generators present the grid X/R is applied to the total, and the stage says asymmetry is understated.
- Cites
- Via circuit-calc-harness (call recorded in the stage)
- Needs
- the design basis
Can reportvalidincompletecalls circuit-calc-harness - 4. Bus clearances
bus_clearancesRuns the Table 4-7 clearance checks only for the measurements you supply.
- Validates
- A clearance you did not measure is reported as not evaluated, not as a pass; a check that passes on a caveated lookup (altitude, voltage outside the table) is incomplete.
- Cites
- RUS 1724E-300 Table 4-7 (ANSI C37.32 / NEMA SG-6)
- Needs
- the design basis, and the result of
electrical_topology
Can reportvalidincompletefailedSame check on its own: Station walk
- 5. Transformer
transformerLoading of the transformer you selected, initial and ultimate, over the installed MVA.
- Validates
- The nameplate values are your selection, not derived here; no redundancy criterion is applied, and missing loading inputs make it incomplete.
- Needs
- the design basis
Can reportvalidincomplete - 6. LV fault study
lv_fault_studyThree-phase fault level at the low-voltage bus, through the transformer impedance.
- Validates
- Needs the HV fault level and the transformer stage; the arithmetic runs in the sibling harness.
- Cites
- IEEE Std 551-2006 Ch. 4 (via circuit-calc-harness)
- Needs
- the design basis, and the result of
transformer
Can reportvalidincompletecalls circuit-calc-harness - 7. Equipment ratings
equipment_ratingsSelected breaker interrupting kA against the available fault current at each bus.
- Validates
- Capability by the RUS voltage-factor rule (Eq. 5-3) and the 1.15 single-line-to-ground factor, applied only when the nameplate data to support them is given. A breaker rated below the evaluated duty is failed.
- Cites
- RUS 1724E-300 section 5.3.3.2.4.3 (Eq. 5-3) and 5.3.3.2.4.5
- Needs
- the design basis, and the result of
fault_studyandlv_fault_study
Can reportfailedincompletenever validproposes fixesNever valid: asymmetry (the X/R and contact-parting-time derating) is not evaluated.
Statuses:missing (the stage has not been run); valid (it ran and everything it evaluates passed); incomplete (it ran but could not evaluate something, and says what); failed (a comparison it did evaluate did not pass); stale (an input or an upstream stage changed since it ran).missing and stale apply to every stage.
Hand-off: Accepts the generation design’s versioned hand-off (contract version 1, generation_to_substation): the plant’s generator-only fault contribution, added to the utility source. It is a JSON object you pass between the two designs, not a pipeline, and it carries no hash of the generation state it came from.
Proposals, on request
For an undersized breaker, the smallest preferred ratings from the RUS tables (5-20 and 5-21 indoor, 5-23 and 5-24 outdoor) that clear the evaluated duties, checked by re-running the fault studies. For a failing clearance or fence check, the smallest spacing, height or distance that passes the same check. Every proposal lists what else it changes; none is applied until you decide.
What was checked
The rating rules were read from the bulletin’s text and from the rendered page image, because the equation is typeset graphically. The calculations are covered by hand-worked test cases. No published worked example is reproduced for this domain.
What it does not do
- The asymmetry S-factor (RUS 1724E-300 5.3.3.2.4.4) is evaluated when you give the breaker’s rated interrupting time and opening time, and the screen names the matching preferred rating (or notes that the breaker is not one). The breaker’s asymmetrical capability is still not compared with the system asymmetrical current, which needs the system X/R against the breaker’s rated X/R basis (IEEE C37.010, not ingested), so the screen can never report valid.
- Single line-to-ground current is computed only when you give the utility’s zero-sequence data, the transformer connection and its zero-sequence impedance (it is otherwise entered, and an entered value always wins). Complex sequence impedances are summed with Z2 = Z1; a delta winding blocks the zero-sequence path and a grounded-wye winding over a delta is a local ground source. It is refused, with the reason, for autotransformers, tertiary windings, wye/wye units, more than one transformer, inverter-based generators, and generators without X2 and GSU data. Checked against the IEEE 80 Annex B worked example (3,180 A at the high-voltage bus, 6,815 A at the low-voltage bus; a third-party copy of the standard).
- A proposed breaker is a row from the bulletin’s preferred-rating tables, not a vendor product: confirm availability and a continuous rating. Applicability flags (such as whether a fence is metallic) and fixed facts (voltage, BIL) are never changed by a proposal.
- Draft, with AI-assisted review only; no substation engineer has reviewed it.
Live in the REST API (substation harness v0.2.0, seven routes: the six above plus a fix proposal for a single failing check) and as MCP tools. A staged design never ends with every stage valid: the equipment-ratings stage can only be failed or incomplete. Draft.
Draft, unvalidated: no engineer has reviewed this workflow, and a stage result is a screening result, not a design approval.
A worked case
Input
Fence clearance at 345,000 V, BIL 1300 kV, measured 18.2 ft to live parts.
Result
Not compliant — Table 110-1 (NESC Rule 110A2) requires 18.3 ft. A measured 18.3 ft passes. This case is a regression guard for a table-transcription bug (18.0 ft) that was caught and corrected. The table was confirmed against a primary source for the 2007 edition; that it matches the 2023 edition the harness targets is still open.
Where this stands
Draft. No substation design engineer has reviewed it yet; AI-assisted review is a QA pass, not a sign-off. The audit trail records real bugs found and fixed, including a 500 kV case that would have wrongly passed.
Open questions
- Whether the loaded NESC edition matches the edition used for primary-source confirmation.
- Whether “compliant” is the right answer when input data is missing or the voltage is not in the table.
- Transformer/bushing and grounding-grid checks are blocked on licensed standards copies.