Support Escalation and Evidence Collection
A good support case lets another engineer reproduce the failure without first asking which version, which profile, which interface and where the logs are. This chapter defines the minimum information to collect and how to prepare it safely. Support is provided through the channel named in your commercial agreement; the support_level field of your license (for example standard) records the contracted level.
Before opening a case
- Stop the active test safely (
evse stop,evcc stop, or the workspaceOperator.ShutdownWorkflow). - Preserve the failing run directory; do not rerun over it.
- Record local time and timezone of the failure, what you expected and what happened.
- Collect product, environment and runtime evidence with the template below.
- Redact before sharing outside your organisation.
Collection template
$CL = 'C:\ChargeLink\0.5.0-rc2\pc1\bin\chargelink.exe'
$Data = 'C:\ChargeLinkData'
$RunId = '<RUN_ID>'
$Case = "$Data\support\case-$(Get-Date -Format yyyyMMdd-HHmmss)"
New-Item -ItemType Directory -Force $Case | Out-Null
chargelink --version | Out-File -Encoding utf8 "$Case\version.txt"
Get-FileHash $CL -Algorithm SHA256 | Out-File -Encoding utf8 "$Case\binary-hash.txt"
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json license status | Out-File -Encoding utf8 "$Case\license-status.json"
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json doctor --strict | Out-File -Encoding utf8 "$Case\doctor.json"
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json runtime list | Out-File -Encoding utf8 "$Case\runtime-list.json"
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json runtime inspect --run-id $RunId | Out-File -Encoding utf8 "$Case\runtime-inspect.json"
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json artifacts inspect --run-id $RunId | Out-File -Encoding utf8 "$Case\artifact-inspect.json"
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json artifacts integrity --run-id $RunId | Out-File -Encoding utf8 "$Case\integrity.json"
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json integration health --endpoint http://127.0.0.1:50051 | Out-File -Encoding utf8 "$Case\grpc-health.json"
Get-ComputerInfo | Out-File -Encoding utf8 "$Case\windows.txt"
Get-NetAdapter | Format-List * | Out-File -Encoding utf8 "$Case\net-adapters.txt"
Get-NetIPAddress -AddressFamily IPv6 | Format-Table -AutoSize | Out-File -Encoding utf8 "$Case\ipv6-addresses.txt"
Get-NetFirewallRule -Enabled True | Where-Object DisplayName -Match 'ChargeLink' | Format-Table DisplayName,Direction,Action -AutoSize | Out-File -Encoding utf8 "$Case\firewall.txt"
# redacted run evidence and support-bundle manifest
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json artifacts redact --run-id $RunId | Out-File -Encoding utf8 "$Case\redaction-result.json"
chargelink --runtime-root "$Data\runtime" --artifact-root "$Data\artifacts" --json artifacts support-bundle --run-id $RunId | Out-File -Encoding utf8 "$Case\support-bundle-result.json"
Copy-Item "$Data\artifacts\$RunId\redacted" "$Case\run-redacted" -Recurse
Copy-Item "$Data\artifacts\$RunId\support_bundle\support_bundle_manifest.json" "$Case\support_bundle_manifest.json"
For a VeriStand bench case, add the session's run folder (SESSION.json, campaign-configuration.json, native.json, validation.log, host.log, host-output\, external_evcc_artifacts\ and, for manual sessions, owner-commands\), pc1\bench-configuration.json, and the NI file hashes from setup step 1. Never add TLS keys or the pc2\tls folder.
Ticket structure
Subject: <protocol/integration> - <short failure> - chargelink <version>
ChargeLink version and binary SHA-256:
License status / entitlements (redacted):
Protocol, role and profile ID:
Lane: dry-run / loopback / reference-responder / plant-coupled / EVCC live / sim / test campaign
DUT identity, model, firmware:
Workstation Windows build; adapter and driver; VeriStand version (if used):
Run ID and artifact root:
Failure timestamp + timezone:
Expected behaviour:
Observed behaviour and first error code (CL-...):
First visible protocol event that diverged (from traces\live-v2gtp-frames.jsonl):
Reproducible? yes/no; did the same setup work previously? version/date
Safety impact: none / session stopped / bench interlock / other
Attached: case folder zip + SHA-256
Redact before sharing
The built-in redaction removes sensitive_credential content and copies only export_allowed files. Still review for: IPv6/MAC addresses and host names, certificate subjects and serial numbers, EVCCID/EVSEID and contract identifiers, customer signal names and values, DUT serial numbers, Windows user and domain names, paths that reveal customer project names. Never send a private key, PFX file, password or the PFX password variable, even when the failure is a TLS handshake; the handshake diagnostics contain fingerprints and metadata, which is enough.
Package the reviewed bundle
$Zip = "$Case.zip"
Compress-Archive -Path "$Case\*" -DestinationPath $Zip -Force
Get-FileHash $Zip -Algorithm SHA256
Send the SHA-256 with the case so the receiver can verify integrity.
Severity guidance
| Severity | Example | Operator action |
|---|---|---|
| S1 — Safety / service critical | Plant-coupled session did not reach the safe state on E-stop, isolation fault or watchdog; product prevents a critical validated operation | Put the bench in a safe state, stop live testing, escalate immediately through the contracted critical channel |
| S2 — Major | Reproducible failure blocks a protocol lane or the workspace with no workaround | Preserve evidence; open a high-priority case |
| S3 — Normal | Functional issue with a workaround or limited scope | Normal case with complete evidence |
| S4 — Question / documentation | Usage question, unclear command, enhancement request | Include version and the page or command reference |
What support should not have to ask for
Version and hash, license state, protocol/role/profile and lane, run ID, timestamp, environment identity, the first error code, the first diverging protocol event and the redacted run evidence. Missing these is the most common reason a case slows down.

