From 69b7c46e2757b325fa4e1ca7f8ba6ef057f6df3e Mon Sep 17 00:00:00 2001 From: "Short, Aidan" Date: Sat, 28 Feb 2026 00:15:58 +0000 Subject: [PATCH 1/4] Move seasonal snapshot provenance to separate array --- .../schemas/array-max-monitored-elements.yaml | 17 ++++++++++++ .../components/schemas/array-max-seasons.yaml | 11 ++++++++ .../components/schemas/period-limit.yaml | 27 ++++++++++--------- 3 files changed, 42 insertions(+), 13 deletions(-) diff --git a/docs/_spec/components/schemas/array-max-monitored-elements.yaml b/docs/_spec/components/schemas/array-max-monitored-elements.yaml index 2a370be..4dffe88 100644 --- a/docs/_spec/components/schemas/array-max-monitored-elements.yaml +++ b/docs/_spec/components/schemas/array-max-monitored-elements.yaml @@ -529,6 +529,15 @@ seasonal-ratings-snapshot-detailed: <<: *max items: $ref: ./array-max-seasons.yaml#/seasonal-rating-snapshot-item-detailed + provenance: + <<: *max + description: Set of seasonal ratings provenance information + items: + $ref: './array-max-seasons.yaml#/seasonal-rating-snapshot-provenance-item' + required: + - snapshot-header + - ratings + - provenance seasonal-ratings-snapshot-detailed-elide-psr: <<: *seasonal-rating-snapshot @@ -538,6 +547,14 @@ seasonal-ratings-snapshot-detailed-elide-psr: $ref: ./headers.yaml#/base-header ratings: $ref: "#/seasonal-ratings-snapshot-detailed/properties/ratings" + provenance: + description: Set of seasonal ratings provenance information + items: + $ref: './array-max-seasons.yaml#/seasonal-rating-snapshot-provenance-item' + required: + - snapshot-header + - ratings + - provenance temporary-aar-exception-set: type: array diff --git a/docs/_spec/components/schemas/array-max-seasons.yaml b/docs/_spec/components/schemas/array-max-seasons.yaml index b774882..d2ee01c 100644 --- a/docs/_spec/components/schemas/array-max-seasons.yaml +++ b/docs/_spec/components/schemas/array-max-seasons.yaml @@ -87,3 +87,14 @@ seasonal-rating-snapshot-item-detailed: <<: *schedule items: $ref: './period-limit.yaml#/seasonal-snapshot-detailed' + +seasonal-rating-snapshot-provenance-item: + type: object + additionalProperties: false + properties: + resource-id: *id + proposals-considered: + $ref: './period-limit.yaml#/seasonal-proposals-considered' + required: + - resource-id + - proposals-considered diff --git a/docs/_spec/components/schemas/period-limit.yaml b/docs/_spec/components/schemas/period-limit.yaml index 0ed4e9d..e1c6ce6 100644 --- a/docs/_spec/components/schemas/period-limit.yaml +++ b/docs/_spec/components/schemas/period-limit.yaml @@ -212,6 +212,10 @@ seasonal-proposal-considered: required: - source - resource-id + - period-start + - period-end + - continuous-operating-limit + - emergency-operating-limits seasonal-snapshot-detailed: <<: *seasonal-snapshot @@ -219,22 +223,19 @@ seasonal-snapshot-detailed: title: Seasonal Rating Proposal properties: <<: *seasonal-snapshot-props - proposals-considered: - description: | - - The seasonal ratings proposals considered when determining the - seasonal ratings of a power system resource, e.g., a line or - transformer. - - type: array - minItems: 1 - maxItems: 10 - items: - $ref: '#/seasonal-proposal-considered' required: - - proposals-considered - period-start - period-end - continuous-operating-limit - emergency-operating-limits additionalProperties: false + +seasonal-proposals-considered: + description: | + The proposals considered when determining the + seasonal ratings of a power system resource, e.g., a line or + transformer. + type: array + maxItems: 48 # 12 periods * 4 proposals per period + items: + $ref: '#/seasonal-proposal-considered' From 78821abf53015583f079395959b620ba2fea6541 Mon Sep 17 00:00:00 2001 From: "Short, Aidan" Date: Sat, 28 Feb 2026 00:16:21 +0000 Subject: [PATCH 2/4] Add custom seasonal snapshot header types --- .../schemas/array-max-monitored-elements.yaml | 9 ++++++--- docs/_spec/components/schemas/headers.yaml | 10 ++++++++++ 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/docs/_spec/components/schemas/array-max-monitored-elements.yaml b/docs/_spec/components/schemas/array-max-monitored-elements.yaml index 4dffe88..f6a3441 100644 --- a/docs/_spec/components/schemas/array-max-monitored-elements.yaml +++ b/docs/_spec/components/schemas/array-max-monitored-elements.yaml @@ -510,9 +510,10 @@ seasonal-ratings-snapshot: &seasonal-rating-snapshot description: A snapshot of the seasonal ratings for a monitoring set. properties: snapshot-header: - $ref: ./headers.yaml#/common-header + $ref: ./headers.yaml#/seasonal-snapshot-header ratings: <<: *max + description: Set of seasonal ratings items: $ref: ./array-max-seasons.yaml#/seasonal-rating-snapshot-item required: @@ -524,9 +525,10 @@ seasonal-ratings-snapshot-detailed: description: A snapshot of the seasonal ratings for a monitoring set. properties: snapshot-header: - $ref: ./headers.yaml#/common-header + $ref: ./headers.yaml#/seasonal-snapshot-header ratings: <<: *max + description: Set of seasonal ratings items: $ref: ./array-max-seasons.yaml#/seasonal-rating-snapshot-item-detailed provenance: @@ -544,8 +546,9 @@ seasonal-ratings-snapshot-detailed-elide-psr: description: A snapshot of the seasonal ratings for a monitoring set. properties: snapshot-header: - $ref: ./headers.yaml#/base-header + $ref: ./headers.yaml#/seasonal-snapshot-header-elide-psr ratings: + description: Set of seasonal ratings $ref: "#/seasonal-ratings-snapshot-detailed/properties/ratings" provenance: description: Set of seasonal ratings provenance information diff --git a/docs/_spec/components/schemas/headers.yaml b/docs/_spec/components/schemas/headers.yaml index 193722d..a41f573 100644 --- a/docs/_spec/components/schemas/headers.yaml +++ b/docs/_spec/components/schemas/headers.yaml @@ -196,3 +196,13 @@ seasonal-proposal-header-slim: - default-emergency-durations - power-system-resources - default-seasonal-schedule + +seasonal-snapshot-header: + <<: *common-header + description: Details about the snapshot provided by the Clearinghouse provider. + +seasonal-snapshot-header-elide-psr: + <<: *base-header + description: | + Details about the snapshot provided by the Clearinghouse provider. The + `power-system-resources` property is omitted from this header. From 7344c03f913a6d71bacb5bcc3945f550362b61d4 Mon Sep 17 00:00:00 2001 From: "Short, Aidan" Date: Sat, 28 Feb 2026 00:16:35 +0000 Subject: [PATCH 3/4] Update seasonal snapshot examples --- ...l-ratings-snapshot-detailed-elide-psr.json | 73 ++++++++++--------- .../seasonal-ratings-snapshot-detailed.json | 73 ++++++++++--------- 2 files changed, 78 insertions(+), 68 deletions(-) diff --git a/docs/example-narratives/examples/seasonal-ratings-snapshot-detailed-elide-psr.json b/docs/example-narratives/examples/seasonal-ratings-snapshot-detailed-elide-psr.json index 7803861..32bb92a 100644 --- a/docs/example-narratives/examples/seasonal-ratings-snapshot-detailed-elide-psr.json +++ b/docs/example-narratives/examples/seasonal-ratings-snapshot-detailed-elide-psr.json @@ -50,41 +50,46 @@ "mva": 180 } } - ], - "proposals-considered": [ + ] + } + ] + } + ], + "provenance":[ + { + "resource-id": "8badf00d", + "proposals-considered": [ + { + "resource-id": "8badf00d-UTILITY-A-SEG-id", + "period-start": "2024-04-01T01:00:00Z", + "period-end": "2024-07-01T01:00:00Z", + "source": { + "provider": "UTILITY-A", + "last-updated": "2023-07-12T16:00:00-07:00", + "origin-id": "8badf00d-UTILITY-A-correlation-id" + }, + "season-name": "spring", + "continuous-operating-limit": { + "mva": 160 + }, + "emergency-operating-limits": [ + { + "duration-name": "LTE", + "limit": { + "mva": 165 + } + }, { - "resource-id": "8badf00d", - "period-start": "2024-04-01T01:00:00Z", - "period-end": "2024-07-01T01:00:00Z", - "source": { - "provider": "X-AMPL", - "last-updated": "2023-07-12T16:00:00-07:00", - "origin-id": "//trolie.example.com/snapshots/2024-08-05T11%3a00%3a00-07%3a00" - }, - "season-name": "spring", - "continuous-operating-limit": { - "mva": 160 - }, - "emergency-operating-limits": [ - { - "duration-name": "LTE", - "limit": { - "mva": 165 - } - }, - { - "duration-name": "STE", - "limit": { - "mva": 170 - } - }, - { - "duration-name": "DAL", - "limit": { - "mva": 180 - } - } - ] + "duration-name": "STE", + "limit": { + "mva": 170 + } + }, + { + "duration-name": "DAL", + "limit": { + "mva": 180 + } } ] } diff --git a/docs/example-narratives/examples/seasonal-ratings-snapshot-detailed.json b/docs/example-narratives/examples/seasonal-ratings-snapshot-detailed.json index aabc6ec..4ef3d07 100644 --- a/docs/example-narratives/examples/seasonal-ratings-snapshot-detailed.json +++ b/docs/example-narratives/examples/seasonal-ratings-snapshot-detailed.json @@ -66,41 +66,46 @@ "mva": 180 } } - ], - "proposals-considered": [ + ] + } + ] + } + ], + "provenance":[ + { + "resource-id": "8badf00d", + "proposals-considered": [ + { + "resource-id": "8badf00d-UTILITY-A-SEG-id", + "period-start": "2024-04-01T01:00:00Z", + "period-end": "2024-07-01T01:00:00Z", + "source": { + "provider": "UTILITY-A", + "last-updated": "2023-07-12T16:00:00-07:00", + "origin-id": "8badf00d-UTILITY-A-correlation-id" + }, + "season-name": "spring", + "continuous-operating-limit": { + "mva": 160 + }, + "emergency-operating-limits": [ + { + "duration-name": "LTE", + "limit": { + "mva": 165 + } + }, { - "resource-id": "8badf00d", - "period-start": "2024-04-01T01:00:00Z", - "period-end": "2024-07-01T01:00:00Z", - "source": { - "provider": "X-AMPL", - "last-updated": "2023-07-12T16:00:00-07:00", - "origin-id": "//trolie.example.com/snapshots/2024-08-05T11%3a00%3a00-07%3a00" - }, - "season-name": "spring", - "continuous-operating-limit": { - "mva": 160 - }, - "emergency-operating-limits": [ - { - "duration-name": "LTE", - "limit": { - "mva": 165 - } - }, - { - "duration-name": "STE", - "limit": { - "mva": 170 - } - }, - { - "duration-name": "DAL", - "limit": { - "mva": 180 - } - } - ] + "duration-name": "STE", + "limit": { + "mva": 170 + } + }, + { + "duration-name": "DAL", + "limit": { + "mva": 180 + } } ] } From 1170ccf99cc2fb8df5f5c437d38c10ef44e95ca1 Mon Sep 17 00:00:00 2001 From: "Short, Aidan" Date: Sat, 28 Feb 2026 00:39:18 +0000 Subject: [PATCH 4/4] Remove old seasonal snapshot schemas --- .../schemas/array-max-monitored-elements.yaml | 30 ++++--------------- .../components/schemas/array-max-seasons.yaml | 10 ------- .../components/schemas/period-limit.yaml | 15 +--------- 3 files changed, 7 insertions(+), 48 deletions(-) diff --git a/docs/_spec/components/schemas/array-max-monitored-elements.yaml b/docs/_spec/components/schemas/array-max-monitored-elements.yaml index f6a3441..3d396de 100644 --- a/docs/_spec/components/schemas/array-max-monitored-elements.yaml +++ b/docs/_spec/components/schemas/array-max-monitored-elements.yaml @@ -508,7 +508,7 @@ seasonal-ratings-proposal-status: seasonal-ratings-snapshot: &seasonal-rating-snapshot type: object description: A snapshot of the seasonal ratings for a monitoring set. - properties: + properties: &seasonal-rating-snapshot-props snapshot-header: $ref: ./headers.yaml#/seasonal-snapshot-header ratings: @@ -520,17 +520,10 @@ seasonal-ratings-snapshot: &seasonal-rating-snapshot - snapshot-header - ratings -seasonal-ratings-snapshot-detailed: +seasonal-ratings-snapshot-detailed: &seasonal-rating-snapshot-detailed <<: *seasonal-rating-snapshot - description: A snapshot of the seasonal ratings for a monitoring set. - properties: - snapshot-header: - $ref: ./headers.yaml#/seasonal-snapshot-header - ratings: - <<: *max - description: Set of seasonal ratings - items: - $ref: ./array-max-seasons.yaml#/seasonal-rating-snapshot-item-detailed + properties: &seasonal-rating-snapshot-detailed-props + <<: *seasonal-rating-snapshot-props provenance: <<: *max description: Set of seasonal ratings provenance information @@ -542,22 +535,11 @@ seasonal-ratings-snapshot-detailed: - provenance seasonal-ratings-snapshot-detailed-elide-psr: - <<: *seasonal-rating-snapshot - description: A snapshot of the seasonal ratings for a monitoring set. + <<: *seasonal-rating-snapshot-detailed properties: + <<: *seasonal-rating-snapshot-detailed-props snapshot-header: $ref: ./headers.yaml#/seasonal-snapshot-header-elide-psr - ratings: - description: Set of seasonal ratings - $ref: "#/seasonal-ratings-snapshot-detailed/properties/ratings" - provenance: - description: Set of seasonal ratings provenance information - items: - $ref: './array-max-seasons.yaml#/seasonal-rating-snapshot-provenance-item' - required: - - snapshot-header - - ratings - - provenance temporary-aar-exception-set: type: array diff --git a/docs/_spec/components/schemas/array-max-seasons.yaml b/docs/_spec/components/schemas/array-max-seasons.yaml index d2ee01c..a64d3a3 100644 --- a/docs/_spec/components/schemas/array-max-seasons.yaml +++ b/docs/_spec/components/schemas/array-max-seasons.yaml @@ -78,16 +78,6 @@ seasonal-rating-snapshot-item: items: $ref: './period-limit.yaml#/seasonal-snapshot' -seasonal-rating-snapshot-item-detailed: - type: object - additionalProperties: false - properties: - resource-id: *id - periods: - <<: *schedule - items: - $ref: './period-limit.yaml#/seasonal-snapshot-detailed' - seasonal-rating-snapshot-provenance-item: type: object additionalProperties: false diff --git a/docs/_spec/components/schemas/period-limit.yaml b/docs/_spec/components/schemas/period-limit.yaml index e1c6ce6..2f17608 100644 --- a/docs/_spec/components/schemas/period-limit.yaml +++ b/docs/_spec/components/schemas/period-limit.yaml @@ -189,7 +189,7 @@ seasonal-proposal-slim: `[normal_MVA, emergency_MVA]`, we would have `[normal_MW, normal_pf, emergency_MW, emergency_pf]`, e.g., `[300, 1.0, 350, 1.0]`. -seasonal-snapshot: &seasonal-snapshot +seasonal-snapshot: <<: *forecast-snapshot description: Proposes the continuous and emergency ratings for the specified Season. title: Seasonal Rating Proposal @@ -217,19 +217,6 @@ seasonal-proposal-considered: - continuous-operating-limit - emergency-operating-limits -seasonal-snapshot-detailed: - <<: *seasonal-snapshot - description: Proposes the continuous and emergency ratings for the specified Season. - title: Seasonal Rating Proposal - properties: - <<: *seasonal-snapshot-props - required: - - period-start - - period-end - - continuous-operating-limit - - emergency-operating-limits - additionalProperties: false - seasonal-proposals-considered: description: | The proposals considered when determining the