External Control Layer

Verify ECL-1 evidence in your browser

This page checks an ECL-1 evidence bundle, or an offline package that carries one, against a trust policy that you supply. Your files stay on this device: the page reads them in the browser and sends nothing anywhere. It is the browser verifier that ships with ECL-1 Version 1.0, and it reaches the same verdicts as the command-line verifier it is built from, ecl-verify-ts. Version 1.0 also publishes command-line verifiers in Python (ecl-verify) and Go (ecl-verify-go), checked against the same conformance tests.

Files and options

Choose your evidence and the trust policy you rely on, then select Verify. The page checks signatures, whether requests, decisions and events agree, and whether the required records are present. It also checks the recorded basis for each decision: its register version, the inputs it used and their declared classes and effects, and whether only inputs recorded as verifiable supported the decision. Every release must record how its required obligations were discharged.

For a ZIP package, the verifier first checks the archive and its manifest. Policies, keys and snapshots inside that package are evidence to examine. The trust policy you supply determines which keys to accept.

No sample to hand? The home page runs the verifier on three sample bundles from the conformance fixtures. The samples are also plain files: succeeded, denied, corroborated, and tampered, with their trust policy.

The verifier script has not loaded yet. If this message stays, the file assets/verifier/verifier.js did not load.

Files

An evidence bundle, a JSON file of at most 1 MiB, or an offline package, a ZIP file of at most 16 MiB.

The keys you trust, what each key may sign, and which keys are revoked. A JSON file of at most 256 KiB.

Each object names the trust-policy version in force when it was signed. If that is not the version above, add the version it names here. You can choose several files.

The register under which the decisions were made. Each decision basis must then name this version of the register and list exactly the decision inputs that it declares for the action, with the declared class. A JSON file of at most 1 MiB.

Evaluation

Use the instant at which you verify, written like 2026-10-01T00:00:00Z. Each signing key’s current status is checked then, and evidence dated later is invalid. Version 1.0 offers no as-of assessment. Leave it empty to use the current time.

Every signature of every envelope and observation must be covered by a valid countersignature from a time authority in your trust policy. Each covered signature is judged at its attested time.

Choose this only after deciding to rely on evidence signed by a key that your trust policy no longer accepts. A result whose only failure is current trust then says verified and states that you accepted the failure. Invalid and incomplete results stay unchanged.

How to read a result

Read the verdict together with its scope and primary finding. The scope lists what the verifier checked and what it could not establish. A verified bundle can record a denied action: the verdict describes the evidence checks, not permission to perform the action.

A decision records what was authorized. Enforcement events record what a component says it checked and released. Outcome and observation records describe what their issuers say happened. Valid signatures and consistent records do not prove those statements true or establish that a real system followed them. This result supplies no implementation certification.

ECL-1 Version 1.0, browser verifier. Copyright 2026 G-14, Inc. Licensed under the Apache License, Version 2.0; G-14’s patent pledge for implementations of ECL-1 is in PATENTS.md. Patents pending. The script includes @noble/curves and @noble/hashes under the MIT License; their notices are in verifier.js.