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.
Roots and how they are chosen
| Root | Option | Default | Recommended |
|---|---|---|---|
| Runtime root | --runtime-root | .chargelink\runtime under the current working directory | C:\ChargeLinkData\runtime |
| Artifact root | --artifact-root | .chargelink\artifacts under the current working directory | C:\ChargeLinkData\artifacts |
| License home | derived: <parent of runtime root>\licenses | .chargelink\licenses | C:\ChargeLinkData\licenses |
| Integration state | integration serve --state-root | <runtime root>\integration | C:\ChargeLinkData\runtime\integration |
| Test campaign output | test run --output | .chargelink\results\test-run | C:\ChargeLinkData\tests\<run> |
| Package run output | conformance package execute --out | artifacts\ats_packages\<pkg>\run under the current directory | C:\ChargeLinkData\tests\<run>\package-run |
| Integration smokes | integration *-smoke --output | .chargelink\integration\<name>-smoke | under 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
pkiandlicensesto 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.
| Name | Where you see it | Meaning |
|---|---|---|
pc1_requires_allow_engineering_tls_identity | JSON field in the result of evse tls-material-init --bench-pki and in its engineering-pki-manifest.json | true 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-pki | pc1\ holds the charger-side certificate set, pc2\ the vehicle-side certificate set. |
<artifact-root>\t5-chademo, t5-<timestamp> | CHAdeMO run folders and run IDs | The 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 bench | The 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.ExternalEvccLaneRunning | Owner-host commands (Send-OwnerCommand.ps1) and VeriStand channels on the NI VeriStand bench | The 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 Native | The product value in some outputs, for example integration health | The product name as printed; it is ChargeLink. |

