ChargeLink Native

Runtime and Artifact Layout

ChargeLink Native 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 pc1\bin\chargelink.exe pc1\host\ pc1\broker\ pc1\veristand\ pc1\config\ pc1\templates\ pc1\*.ps1 pc2\ (copied to PC2) 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 (PC1) 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>\state.json        run_id, role, status, runtime_root, artifact_root, timestamps, lifecycle_generation, stale_after_ms, lock_policy_id
  sessions\<run-id>\pid.json          pid, executable, parent_pid, created_unix_ms, note
  sessions\<run-id>\lock.json         lock_scope session, owner_pid, role, acquired_unix_ms, stale_after_ms (300000)
  sessions\<run-id>\heartbeat.json    sequence, heartbeat_unix_ms, status, note
  sessions\<run-id>\lifecycle.log     one line per transition (registered/starting, running, stopped)
  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)

Session status values (schema runtime_session): dry_run_validated, starting, running, stop_requested, stopped, failed, not_implemented, recovered_stale. Policy: chargelink-native-runtime-lifecycle-policy-v1; a live session is stale when its PID or heartbeat is missing or older than stale_after_ms. Print the contract with chargelink --json runtime policy.

Artifact root

artifacts\<run-id>\
  manifest.json                       chargelink-artifact-manifest-v2: 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     lane reports, raw V2GTP request dumps
  sim\*.json, pki\*.json              deterministic simulation reports and transcripts
  *.json                              lane-specific status and diagnostics (see the EVSE and EVCC role guides)
  redacted\ + redaction_report.json   created by artifacts redact
  support_bundle\support_bundle_manifest.json   created by artifacts support-bundle

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 (schema chargelink-native-license-v1)
  activation_record.json              license_id, customer_id, activated_at_ms, source_path, active_license_path, license_sha256

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 (PC1)

C:\ChargeLink\0.5.0-rc2\pc1\bench-configuration.json        written once by New-BenchConfiguration.ps1
C:\ChargeLink\0.5.0-rc2\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 (NI runtime ownership record; not the license)
%ProgramData%\DEVlink\ChargeLink\tls\                       suggested location for the PC1 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\  pc1\  pc2\

Schemas of interest to integrators: artifact_manifest, artifact_integrity, diagnostic_envelope, exit_code_policy, runtime_session, runtime_lifecycle, protocol_trace_event, protocol_artifact_event, protocol_test_evidence, protocol_test_verdicts, profile, license, offline_license_request, evse_listener, external_evcc_session_listener, evcc_loopback, local_evcc_evse_loopback, dc_can_foundation, tls_pki_diagnostics, xil_evidence_v1, factory_eol_evidence_v1, enterprise_evidence_v1, package_release_gate.

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).