Acting as EngineerC3Accept
Mock product configurator
A local stand-in for the upstream configurator. It reproduces the behaviour that makes drift control necessary: an approved configuration can still be edited in place, and each edit bumps a revision the engineering record does not automatically see.
SRS section 7 and change request GSPE-AICEED-ACR-001
Editing here is the point of the screen. Change something on an approved configuration, then look at the configured item in the project: the stored snapshot will still hold the old payload and the drift poll will raise an open item. That is the control described in section 7.2 working, and it exists only because CR-1 has not been implemented upstream.
Configurations
3
Application version
cfg-4.7.2
Compatibility rules
3
Rule violations in the draft
0
Configurations
| Configuration | Tag | Family | Status | Revision | App version | Payload hash | Updated |
|---|---|---|---|---|---|---|---|
| CONF-88231 | MSB-01 | LV_PANEL | approved | 3 | cfg-4.7.2 | 4b8818fc4d71 | 2026-05-17 06:00 |
| CONF-88240 | MCC-01 | LV_PANEL | approved | 1 | cfg-4.7.2 | 2bdf10bb19d5 | 2026-05-08 12:00 |
| CONF-88252 | DB-EH-01 | LV_PANEL | approved | 1 | cfg-4.7.2 | 0df255bd9e93 | 2026-05-08 16:00 |
Edit CONF-88231
Status approved, currently at revision 3. Saving produces revision 4.
Rated voltage
Main busbar rating
Short time withstand
Form of separation
Degree of protection
Cable entry
Communication
Internal arc classification
Busbar material
Enclosure material
POST /configurations:run would accept this payload.
What the engineering record holds
Snapshot SNP-2026-0045-0001 at configuration revision 2, captured under cfg-4.7.0.
2 fields differ.
| Field | Snapshot rev 2 | Configurator rev 3 |
|---|---|---|
| CableEntryDirection | "BOTTOM" | "TOP" |
| RatedCurrentMain | 4000 | 3200 |
Revision history
What CR-1 asks the real configurator to expose.
| Revision | App version | Hash | Changed | Note |
|---|---|---|---|---|
| 3 | cfg-4.7.2 | 4b8818fc4d71 | 2026-05-17 06:00 | Cable entry changed to top and busbar rating reduced. Edited in place after approval. |
| 2 | cfg-4.7.0 | d73c9cd5a47c | 2026-05-08 08:00 | Internal arc classification added after the Employer clarification meeting. |
| 1 | cfg-4.6.9 | 3a4d43a1ac3d | 2026-05-06 00:00 | Initial configuration priced at tender. |
Compatibility rules
Evaluated on every run. A payload that violates one is rejected rather than stored for a checker to find later.
| Rule | Constraint | Draft |
|---|---|---|
| RULE-ICW-FORM | A short time withstand of 65 kA or above requires Form 4a or Form 4b separation. | satisfied |
| RULE-ARC-IP | An internal arc classification of IAC A FLR or above requires IP54 or better. | satisfied |
| RULE-CURRENT-MATERIAL | A main busbar above 3200 A must be copper. | satisfied |
Change request status
GSPE-AICEED-ACR-001. What this mock implements, and what it deliberately does not.
| Change | Priority | Title | Requested | In this mock | Note |
|---|---|---|---|---|---|
| CR-1 | MUST | Revision identifier and immutability of approved configurations | Add an integer configuration_revision, make an APPROVED configuration immutable, and expose GET /configurations/{id}/revisions and /revisions/{rev}. | implemented | The revision counter and the history endpoint are implemented in the mock. Immutability is deliberately not enforced, so the drift control has something to detect. |
| CR-2 | MUST | Change notification | A webhook carrying ConfigurationCreated, ConfigurationRevised, ConfigurationApproved and ConfigurationSuperseded, or a cursor feed at GET /configurations/changes?since=. | implemented | Editing a configuration here emits ConfigurationRevised into the outbox, which is the same event the webhook would carry. |
| CR-3 | MUST | Application version in every response | Return app_version so a consumer can tell whether payload semantics changed underneath a stored snapshot. | implemented | Every payload here carries cfg-4.7.2 and each snapshot records the version it was captured under. |
| CR-4 | SHOULD | Idempotent configuration run | POST /configurations:run accepting an idempotency_key header so a retry cannot double apply. | implemented | The rule evaluation below is pure, so replaying the same input returns the same result by construction. |
| CR-5 | SHOULD | Documented read stability | Written guarantees about read-after-write behaviour and pagination stability. | not applicable | Documentation only. Nothing to implement in a sandbox that reads from memory. |
Current payload
Exactly what a GET on this configuration would return.
{
"configuration_id": "CONF-88231",
"configuration_revision": 3,
"status": "APPROVED",
"app_version": "cfg-4.7.2",
"updated_at": "2026-05-17T06:00:00.000Z",
"payload": {
"family": "LV_PANEL",
"tag": "MSB-01",
"attributes": {
"RatedVoltage": 400,
"RatedFrequency": 50,
"RatedCurrentMain": 3200,
"ShortCircuitWithstandIcw": 65,
"ShortCircuitDuration": 1,
"PeakWithstandIpk": 143,
"IPRating": "IP54",
"IKRating": "IK08",
"FormOfSegregation": "Form4b",
"BusbarMaterial": "COPPER",
"BusbarPlating": "SILVER",
"EnclosureMaterial": "MILD_STEEL",
"SheetThickness": 2,
"PaintColour": "RAL7035",
"CableEntryDirection": "TOP",
"Protocol": "MODBUS_TCP",
"EarthingSystem": "TN-S",
"NeutralBusbarRating": "100_PERCENT",
"ArcContainment": "IAC_A_FLR",
"AmbientTemperatureMax": 50,
"MountingType": "FLOOR_STANDING",
"SurgeProtectionType": "TYPE2",
"StandardCompliance": "IEC61439-2",
"PollutionDegree": "3"
}
}
}