Golden Reference Runs
Golden runs are known-good, intentionally simple procedures used to separate a ChargeLink installation problem from a DUT-specific problem. Run them after installation, after an upgrade, and before investigating a complicated customer setup. Runs 1 to 5 are software-only; the expected results were recorded on version 0.5.0-rc2. Runs 6 and 7 need the bench.
$CL = 'C:\ChargeLink\0.5.0-rc2\pc1\bin\chargelink.exe'
$Data = 'C:\ChargeLinkData'
Golden run 1 — ISO 15118-20 DC software-only proof
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json evse start --dry-run --protocol iso15118-20 --profile-id iso15118_20_dc
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json evse status
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json evse stop
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json evcc local-loopback-smoke --protocol iso15118-20 --profile-id iso15118_20_dc `
--peer-ipv6 '::1' --tcp-port 50118 --max-steps 6 `
--battery-capacity-kwh 80 --initial-soc-pct 20 --target-soc-pct 80 --requested-power-kw 50 --battery-step-seconds 1
Expected: dry-run validated, status dry_run_validated; IPv6 loopback completed, five processed messages, six EVCC steps, final state of charge 20.104 %.
Golden run 2 — deterministic simulation and replay
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json sim paired --protocol iso15118-20 --scenario dc-bpt-nominal --seed 42 --run-id golden-sim --write-artifacts --output "$Data\tests\golden-sim.json"
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json sim replay --trace "$Data\tests\golden-sim.json"
Expected: 27 events, replay_verified, identical expected and actual transcript hashes: d89b78cc48603b4b889d5acf470ed59b86367487f55aef2ca29c3a639c1f05c9. Reported claim_boundary: none_protocol_parity_deterministic_simulation_evidence_only.
Golden run 3 — ISO 15118-2 and DIN 70121 configuration proof
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json evse start --dry-run --protocol iso15118-2 --profile-id iso15118_2_dc_evse_reference
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json evse stop
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json evse start --dry-run --protocol din70121 --profile-id din70121_dc_evse_reference
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json evse stop
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json sim legacy-scenario --protocol iso15118-2 --scenario iso2-dc-eim-nominal --seed 1 --run-id golden-iso2 --write-artifacts
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json sim legacy-scenario --protocol din70121 --scenario din-dc-basic --seed 1 --run-id golden-din --write-artifacts
Expected: both dry-runs "mode": "dry_run", "status": "validated" with a generated cl-evse-… run id and evse stop answering stop_requested; both legacy scenarios "status": "legacy_deterministic_scenario_ready" with claim_boundary none_iso15118_2_din70121_deterministic_legacy_completion_only and the completion contract chargelink-native-legacy-hlc-deterministic-completion-v1.
Golden run 4 — scripted DC-CAN lanes
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json dc-can catalog
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json dc-can virtual-run --protocol chademo --profile dc_can_virtual_evse --frame-count 8 --sample-period-ms 50
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json dc-can chademo-live-run --run-id golden-dc-can-live
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json dc-can chademo-can-adapter-loop --run-id golden-dc-can-loop --adapter-kind peak-pcan --adapter-mode loopback --channel PCAN_USBBUS1 --bitrate-kbps 500
Expected: catalog frame_catalog_ready with four fixture frames; the virtual run dc_can_virtual_passed with eight frames within_window; the live run "status": "passed" with all twelve expected phases observed, four request/delivery loops, chademo_dc_can_live_stack_complete true and watchdog_timeout_observed false; the adapter loop adapter_binding_loopback_passed with can_frame_count 18 and hardware_loop_evidence_complete false. Every result carries compliance_claim values that name engineering simulator evidence, not conformance. See Scripted DC-CAN Lanes.
Golden run 5 — gRPC automation proof
# window 1
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" integration serve --listen 127.0.0.1:50051 --state-root "$Data\runtime\integration"
# window 2
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json integration health --endpoint http://127.0.0.1:50051
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json integration capabilities --endpoint http://127.0.0.1:50051
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json integration session-smoke --endpoint http://127.0.0.1:50051 --protocol iso15118-20 --role evse
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json signals smoke --endpoint http://127.0.0.1:50051
Expected: the server prints ChargeLink Integration API v1 starting on 127.0.0.1:50051; state_root=… and writes api-token into the state root; health passed with health_status serving, product_version 0.5.0-rc2, api_version 1.8.0; capabilities passed with 19 entries; the session smoke passed (created, running, completed, deleted); the signal smoke passed with write_read_roundtrip true on Vehicle.SocPct. The state root above is the CLI's default token location, so no CHARGELINK_API_TOKEN_FILE is needed; with another state root set the variable to its api-token file first.
Golden run 6 — ISO 15118-20 EVSE with an external EVCC (bench)
Requires the bench NIC values and TLS 1.3 material on both sides (TLS page).
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json evse live-preflight --source external-evcc --protocol iso15118-20 --profile-id iso15118_20_dc `
--host '::' --tcp-port 50118 --udp-port 15118 --advertise-ipv6 $Advertise --interface-index $IfIndex `
--tls --tls-cert "$Pki\secc-chain.pem" --tls-key "$Pki\secc-key.pem" --tls-cafile "$Pki\v2g-root-ca.pem" --require-ca --recover-stale
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json evse start --external-evcc-session --run-id golden-iso20-ext --protocol iso15118-20 --profile-id iso15118_20_dc `
--host '::' --tcp-port 50118 --udp-port 15118 --advertise-ipv6 $Advertise --interface-index $IfIndex `
--tls --tls-cert "$Pki\secc-chain.pem" --tls-key "$Pki\secc-key.pem" --tls-cafile "$Pki\v2g-root-ca.pem" --require-ca --max-runtime-ms 600000
# connect the vehicle or run the EVCC on the second PC, then:
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json evse stop --run-id golden-iso20-ext
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json evse live-closure-gate --run-id golden-iso20-ext --source external-evcc --require-sdp --require-tcp-peer --require-tls --require-v2gtp --require-exi
Expected: preflight ready; after the vehicle session the closure gate reports every required stage observed. The package runs this lane through Start-SeccSession.ps1 on PC1 and Start-Evcc.ps1 on PC2 (see Install and Activate); the commands above are the stand-alone equivalent.
Golden run 7 — NI VeriStand bench
- On PC1, in
pc1:Start-SeccSession.ps1 -ValidateOnlyandStart-SeccSession.ps1 -Mode Manual -ValidateOnlyboth printConfiguration accepted by the owner host. - Run one automated session:
Start-SeccSession.ps1on PC1, thenStart-Evcc.ps1 -PeerIpv6 <SECC address> -InterfaceAlias '<PC2 adapter>'on PC2. - Require PC2 exit code 0 and, in the run folder,
host-output\patch598_stagec_external_evcc_result.jsonwithstatuspassed. - Check that no
chargelink.exeorChargeLink.Veristand.XilHostprocess is left running on PC1. - Keep the run folder with its
SESSION.jsonhashes as the reference for later comparisons.
The steps are described in NI VeriStand Bench.
Golden-run record
| Field | Example |
|---|---|
| ChargeLink version and binary hash | chargelink 0.5.0-rc2, SHA-256 from Get-FileHash |
| Documentation version | release label of this manual |
| License status | redacted license status output |
| Profile | exact ID and archived profile show output |
| Run IDs | as passed with --run-id |
| Machine | asset ID, Windows build, adapter and driver |
| Result | PASS / FAIL / BLOCKED with the transcript hash where applicable |
| Evidence path | run directories and their integrity results |
A golden run should be short, repeatable and boring. If it contains customer-specific logic, it is no longer a useful baseline.

