2026-0045 Nusantara Nickel Smelter, E-House and LV distribution package
C3Accept

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
ConfigurationTagFamilyStatusRevisionApp versionPayload hashUpdated
CONF-88231MSB-01LV_PANELapproved3cfg-4.7.24b8818fc4d712026-05-17 06:00
CONF-88240MCC-01LV_PANELapproved1cfg-4.7.22bdf10bb19d52026-05-08 12:00
CONF-88252DB-EH-01LV_PANELapproved1cfg-4.7.20df255bd9e932026-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.

FieldSnapshot rev 2Configurator rev 3
CableEntryDirection"BOTTOM""TOP"
RatedCurrentMain40003200
Revision history
What CR-1 asks the real configurator to expose.
RevisionApp versionHashChangedNote
3cfg-4.7.24b8818fc4d712026-05-17 06:00Cable entry changed to top and busbar rating reduced. Edited in place after approval.
2cfg-4.7.0d73c9cd5a47c2026-05-08 08:00Internal arc classification added after the Employer clarification meeting.
1cfg-4.6.93a4d43a1ac3d2026-05-06 00:00Initial 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.
RuleConstraintDraft
RULE-ICW-FORMA short time withstand of 65 kA or above requires Form 4a or Form 4b separation.satisfied
RULE-ARC-IPAn internal arc classification of IAC A FLR or above requires IP54 or better.satisfied
RULE-CURRENT-MATERIALA 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.
ChangePriorityTitleRequestedIn this mockNote
CR-1MUSTRevision identifier and immutability of approved configurationsAdd an integer configuration_revision, make an APPROVED configuration immutable, and expose GET /configurations/{id}/revisions and /revisions/{rev}.implementedThe 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-2MUSTChange notificationA webhook carrying ConfigurationCreated, ConfigurationRevised, ConfigurationApproved and ConfigurationSuperseded, or a cursor feed at GET /configurations/changes?since=.implementedEditing a configuration here emits ConfigurationRevised into the outbox, which is the same event the webhook would carry.
CR-3MUSTApplication version in every responseReturn app_version so a consumer can tell whether payload semantics changed underneath a stored snapshot.implementedEvery payload here carries cfg-4.7.2 and each snapshot records the version it was captured under.
CR-4SHOULDIdempotent configuration runPOST /configurations:run accepting an idempotency_key header so a retry cannot double apply.implementedThe rule evaluation below is pure, so replaying the same input returns the same result by construction.
CR-5SHOULDDocumented read stabilityWritten guarantees about read-after-write behaviour and pagination stability.not applicableDocumentation 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"
    }
  }
}