Conversation
Replace the plain-integer regulated_bus_number, remote_bus_control and rmpct columns with nullable foreign keys to the bus table: remote_regulated_bus_id on generators, storage, synchronous condensers, sources, switched shunts, FACTS devices and converters, the VSC and LCC references on two_terminal_hvdc_lines, and regulated_bus_id with regulated_bus_side and load_drop_compensation on transformer_circuits. Generators also get voltage_setpoint with its unit basis. Same-row CHECKs reject a device naming its own bus and a transformer naming a bus without regulating voltage; triggers enforce the rules that need the arc. Add voltage_control_groups (VoltageDroopControl and ReactivePowerSharing, modeled on plants with the droop characteristic as typed columns) and voltage_control_associations with positive weights, one group per member or converter terminal, and a member-type trigger. Register the new columns, add the Impedance per-unit basis rule, regenerate the sealed registry and the reference DDL, and bump user_version to 2.
The whole-complex Y_increase column is registered as Admittance; the per-part admittance columns keep their scalar kinds.
load_drop_compensation_r and load_drop_compensation_x replace the JSON blob, registered like the circuit's r and x; registry and reference DDL regenerated.
The regulated-bus and tap-transformer references are non-owning, so they follow settlement_point_id with ON DELETE SET NULL; null already means the device regulates its own bus or has no tap transformer. A droop controller's own regulated bus cascades, since the controller exists for that bus.
…t NULL Both enums gain an UNDEFINED member, following TransformerControlObjective and the other sentinel enums, so the columns are NOT NULL with that default and the membership index needs no COALESCE.
This was referenced Sep 28, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Remote and shared voltage control
Stores the remote and shared voltage control data.
What changes
regulated_bus_number,remote_bus_controlandrmpctcolumns become nullable foreign keys tobus:remote_regulated_bus_idon every regulating device, the VSC and LCC references ontwo_terminal_hvdc_lines, andregulated_bus_id/regulated_bus_sideontransformer_circuits.voltage_setpointwith its unit basis.load_drop_compensation_rand_xas REAL columns.voltage_control_groups(droop characteristic as typed columns, modeled on plants) andvoltage_control_associations(positive weights, one group per member or converter terminal).ON DELETE SET NULL). A droop controller's own regulated bus cascades.UNDEFINED, not NULL.Impedanceper-unit rule and theAdmittancekind. The registry and reference DDL are regenerated, anduser_versionis 2.Before merge
CI checks out SiennaSchemas
v0.1.0, so the registry staleness and DDL drift gates will fail until the pin moves to the release that includes Sienna-Platform/SiennaSchemas#67.Verification
338 tests pass, units sync reports 0 FAIL, and the registry seal is verified (2026-09-24).
Stack
Merge in this order.
The Julia branches pin each other's
mb/remote-controlbranches in[sources], and each pin moves back tomainorpsy6as its dependency merges.Depends on: Sienna-Platform/SiennaSchemas#67.
🤖 Generated with Claude Code