ChargeLink

Runtime and Artifact Layout

ChargeLink keeps all state in files under directories you choose. Nothing is written to the Windows registry. This page is the map of those files for administrators who set up backup, retention and access control.

Where ChargeLink stores state: package directory, data root, VeriStand bench runs Package (read-only) C:\ChargeLink\0.3.1 charger\bin\chargelink.exe charger\host\ charger\broker\ charger\veristand\ charger\config\ charger\templates\ charger\*.ps1 vehicle\ (copied to the vehicle PC) docs\ licenses\ manifest\SHA256SUMS Never write runtime data here. Replace the whole directory on upgrade. Data root (you choose) C:\ChargeLinkData runtime\ ← --runtime-root sessions\<run-id>\ active\ recovery\ integration\ artifacts\ ← --artifact-root <run-id>\manifest.json traces\ licenses\ ← from runtime root active_license.cllic activation_record.json pki\ tests\ support\ Back up as one unit. Restrict pki\ and licenses\; verify integrity after restore. VeriStand bench runs (charger PC) C:\ChargeLink\0.3.1\runs\ (runs_root) <stamp>-automation\ SESSION.json host.log campaign-configuration.json native.json host-output\ external_evcc_artifacts\ <stamp>-manual\ the same, plus owner-commands\ %ProgramData%\DEVlink\ChargeLink\ RuntimeOwnership\ tls\ One folder per session; keep it with the package hashes.
Three places on disk: the read-only package, the data root you pass on every command, and the VeriStand bench run folders.

Roots and how they are chosen

RootOptionDefaultRecommended
Runtime root--runtime-root.chargelink\runtime under the current working directoryC:\ChargeLinkData\runtime
Artifact root--artifact-root.chargelink\artifacts under the current working directoryC:\ChargeLinkData\artifacts
License homederived: <parent of runtime root>\licenses.chargelink\licensesC:\ChargeLinkData\licenses
Integration stateintegration serve --state-root<runtime root>\integrationC:\ChargeLinkData\runtime\integration
Test campaign outputtest run --output.chargelink\results\test-runC:\ChargeLinkData\tests\<run>
Package run outputconformance package execute --outartifacts\ats_packages\<pkg>\run under the current directoryC:\ChargeLinkData\tests\<run>\package-run
Integration smokesintegration *-smoke --output.chargelink\integration\<name>-smokeunder C:\ChargeLinkData\tests

Every command that gets past argument parsing creates the runtime and artifact roots if they do not exist, including commands that then fail as unsupported. Running chargelink from a directory you do not control therefore leaves a .chargelink folder there; this is why the manual always passes explicit roots.

Runtime root

runtime\
  sessions\<run-id>\                   session state, process, lock and heartbeat files and a lifecycle log
  sessions\<run-id>\stop.flag         written by evse stop / evcc stop / test stop
  active\evse.lock.json, active\evcc.lock.json   one live session per role
  recovery\                             recovery records written by runtime recover
  integration\                          gRPC server state (sessions, signals, campaigns)

Do not edit these files; use the runtime commands. Session status values: dry_run_validated, starting, running, stop_requested, stopped, failed, not_implemented, recovered_stale. A live session is reported stale when its process has ended or its heartbeat is older than stale_after_ms. Print the lifecycle policy with chargelink --json runtime policy.

Artifact root

artifacts\<run-id>\
  manifest.json                       run_id, role, protocol, profile_id, created_unix_ms, integrity_algorithm sha256, signed_evidence_status, files[] {path, kind, description, size_bytes, sha256, redaction_class, export_allowed}, warnings[]
  command_result.json                 JSON result of the producing command
  traces\*.jsonl                      protocol trace events; live-v2gtp-frames.jsonl for every frame
  exi\*.exi                           EXI captures
  protocol\*.json, protocol\*.bin     session reports, raw V2GTP request dumps
  sim\*.json, pki\*.json              deterministic simulation reports and transcripts
  *.json                              role-specific status and diagnostics
  redacted\ + redaction_report.json   created by artifacts redact
  support_bundle\support_bundle_manifest.json   created by artifacts support-bundle

The role-specific files are described in ChargeLink as Charger and ChargeLink as Vehicle. Redaction classes: public_metadata, operator_log, protocol_trace, sensitive_credential, customer_confidential, unknown. Print the policy with chargelink --json artifacts policy.

License home

licenses\
  active_license.cllic                copy of the activated license
  activation_record.json              record of the activation (license ID, customer ID, time, source path)

license deactivate deletes both files. Back up the original .cllic you received; the activation record alone cannot recreate it.

Test and package outputs

<test output>\
  campaign_plan.json  campaign_status.json  verdicts.json  customer_report.json  artifact_manifest.json
  evidence\source_manifest.json  evidence\evidence_index.json
<package run>\
  pics_pixit.json  campaign.json  run_report.json  verdict_report.json  signed_verdict_manifest.json
  customer_report.json  customer_report.md  customer_report.html
  support_bundle_manifest.json  package_protection_manifest.json  entitlement_evaluation.json  package_content_sha256_manifest.json

VeriStand bench (charger PC)

The kit has a charger\ and a vehicle\ folder.

C:\ChargeLink\<VERSION>\charger\bench-configuration.json        written once by New-BenchConfiguration.ps1
C:\ChargeLink\<VERSION>\runs\<yyyyMMdd-HHmmss>-automation\  one folder per session (runs_root; -manual for manual sessions)
  SESSION.json  campaign-configuration.json  native.json  validation.log  host.log
  host-output\                 the owner host's result, failure and evidence files
  external_evcc_artifacts\     the SECC's traces and protocol evidence
  owner-commands\              manual sessions: every command request and reply
%ProgramData%\DEVlink\ChargeLink\RuntimeOwnership\          native-activation.state (bench state record; not the license)
%ProgramData%\DEVlink\ChargeLink\tls\                       suggested location for the charger PC's TLS material

The file names inside a run folder are listed in Reading the result. Keep each run folder with the package's manifest\SHA256SUMS; delete runs_root and native-activation.state when you uninstall.

Package directory (read-only)

<package>\README.md  KIT_CONTENTS.md  docs\  licenses\  manifest\  charger\  vehicle\

Schemas of interest for your own automation: artifact_manifest, artifact_integrity, diagnostic_envelope, exit_code_policy, runtime_session, protocol_trace_event, protocol_test_evidence, protocol_test_verdicts, profile, license, offline_license_request, tls_pki_diagnostics.

Backup and retention

  • Back up C:\ChargeLinkData (runtime, artifacts, licenses, pki, tests, support) as one unit; the runtime root is small but holds the locks that explain an interrupted run.
  • Restrict pki and licenses to the operator and administrators; restrict the artifact root to the project team.
  • Keep raw and redacted artifacts separate; decide retention per class before the first customer run.
  • Verify integrity after restore (artifacts integrity --run-id).

Names shown as printed

Some names in ChargeLink's output appear exactly as printed below.

NameWhere you see itMeaning
pc1_requires_allow_engineering_tls_identityJSON field in the result of evse tls-material-init --bench-pki and in its engineering-pki-manifest.jsontrue when the charger side needs --allow-engineering-tls-identity to use the generated identity.
pc1\, pc2\Folders in the output folder of evse tls-material-init --bench-pkipc1\ holds the charger-side certificate set, pc2\ the vehicle-side certificate set.
<artifact-root>\t5-chademo, t5-<timestamp>CHAdeMO run folders and run IDsThe default evidence folder of CHAdeMO runs, and the run ID ChargeLink generates for a CHAdeMO run; the run folder has the same name.
host-output\patch598_stagec_external_evcc_result.json, …_failure.json, …_evidence.json; external_evcc_artifacts\fix010-pc1-secc\The run folder of a session on the NI VeriStand benchThe session result files of the bench (result, failure when the host stopped on an error, and plant evidence), and the charger's own evidence folder.
StartExternalEvccLane, StopExternalEvccLane, Operator.ExternalEvccLaneRunningOwner-host commands (Send-OwnerCommand.ps1) and VeriStand channels on the NI VeriStand benchThe commands that start and stop the charger's listener for the vehicle session, and the status channel that is 1 while that listener runs.
ChargeLink NativeThe product value in some outputs, for example integration healthThe product name as printed; it is ChargeLink.