ChargeLink Native

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

  1. On PC1, in pc1: Start-SeccSession.ps1 -ValidateOnly and Start-SeccSession.ps1 -Mode Manual -ValidateOnly both print Configuration accepted by the owner host.
  2. Run one automated session: Start-SeccSession.ps1 on PC1, then Start-Evcc.ps1 -PeerIpv6 <SECC address> -InterfaceAlias '<PC2 adapter>' on PC2.
  3. Require PC2 exit code 0 and, in the run folder, host-output\patch598_stagec_external_evcc_result.json with status passed.
  4. Check that no chargelink.exe or ChargeLink.Veristand.XilHost process is left running on PC1.
  5. Keep the run folder with its SESSION.json hashes as the reference for later comparisons.

The steps are described in NI VeriStand Bench.

Golden-run record

FieldExample
ChargeLink version and binary hashchargelink 0.5.0-rc2, SHA-256 from Get-FileHash
Documentation versionrelease label of this manual
License statusredacted license status output
Profileexact ID and archived profile show output
Run IDsas passed with --run-id
Machineasset ID, Windows build, adapter and driver
ResultPASS / FAIL / BLOCKED with the transcript hash where applicable
Evidence pathrun 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.