This is the technical reference for the Evaluation Intelligence Ontology (EIO 0.6.0), its evidence and decision model, mapping catalogue, and the versioned schemas used by EIO-Agents 0.8.0. The current Portable Evaluation Record contract is PER 2.1.0.
A producer supplies observed turns, tool results, source context and evaluator signals. EIO-Agents projects claims and cited evidence into a versioned, content-addressed PER; it includes scores only where the source inputs support them. A consumer validates the PER structure, independently verifies its proof and digest against the bundle, and explains the release recommendation or a finding. Missing evidence can withhold a score or readiness.
From the EIO-Agents repository, use Python 3.10 or newer. The source bundle and generated PER remain local; the test score is not a safety certification.
git clone https://github.com/ProofAgent-ai/eio-agents.git
cd eio-agents
python3 -m venv .venv
.venv/bin/pip install -e .
.venv/bin/eio-agents project tests/data/native/v0_8/source-complete.bundle.json -o native.per.json --jcs native.per.jcs
.venv/bin/eio-agents validate native.per.json
.venv/bin/eio-agents verify native.per.json --bundle tests/data/native/v0_8/source-complete.bundle.json
.venv/bin/eio-agents explain native.per.json --list
PyPI installation will be linked after package publication. See the source repository for the full quick start.
EIO-Agents structures and checks an evaluation; it does not run the evaluation or certify the agent.
The Evaluation Intelligence Ontology gives evaluators shared names and rules for claims, evidence, risk, decisions and release views. Its public manifest pins 39 YAML files covering core concepts, risk and domain modules, mappings, governance, scoring, reliability and explanation templates. Exact module hashes and an ontology digest identify the bytes a PER used.
A claim applies a versioned predicate to specific turns, records a decision state and cites evidence. Findings, scores, control views and the release recommendation derive from claims rather than adding new facts about agent behaviour.
Evidence refs point into the evaluation archive. Their type, source, compatible pairing and anchor determine whether they witness agent behaviour; a user message or retrieved text alone cannot. Deterministic or identified human decisions also need a witnessing citation and exact fidelity or confirmed recurrence to be PROVEN under EIO rules. Semantic jury findings support review but are not proof by themselves.
Framework mappings describe evidence relevance from an evaluation, not legal conformity or certification.
The ontology bundles 30 EIO-Agents mapping targets across regulations, standards, frameworks and security taxonomies. These titles come from the versioned EIO framework registry; they are not the ProofAgent Harness framework catalogue.
Scope: All 30 mappings are provisional evidence-relevance links only. Listing a target does not assert legal applicability, compliance, certification, audit attestation or endorsement by the framework owner. Canada AIDA is classified as a proposal in this EIO release catalogue; this page does not determine its current legal status.
The schema requires 14 top-level blocks: header, provenance, subject, scope, evidence, claims, coverage, findings, controls, scores, reliability, release_recommendation, limitations and telemetry. It carries cited claims and derived views, not the entire raw bundle.
For an example dashboard-style view, interpretation of readiness versus the release recommendation, and what is or is not an industry standard, read the Portable Evaluation Record guide.
header and provenance identify versions and sources; evidence and claims locate and decide observations; findings, controls and reliability are claim-derived views; limitations and telemetry bound interpretation. Canonical PER bytes have a content digest that can be checked when the source bundle is supplied.
The four score axes are Q (context), E (behaviour), C (compliance) and G (governance). Metric, axis and readiness values may be withheld when required source inputs are missing. The separate claim-derived release recommendation is PASS, REVIEW or BLOCK, not a guessed grade.
Validation checks PER structure. Verification additionally checks cited evidence and scores against the local bundle, re-derives the record and compares digests. This checks consistency, not whether the original run or evaluator judgment was correct.
The raw source bundle stays local. PER refs can use hashes and fingerprints instead of copying protected text, but review a PER before sharing it. Local explanation or resolution with the bundle may reveal withheld text; keep that output under the bundle's access controls.
Every PER names the exact schema it follows by URL and the exact EIO release by version and sha256. header.schema_uri is the schema's $id, and each hash in header.eio.modules equals the sha256 of the module file published here, so a record can be checked against this website without trusting its producer.
claims[3] in the sample PER: predicate eio.predicate.authority-or-deadline-invented, state APPLICABLE_FAIL, turn 3.
claims[3] — the fourth claim of the sample recordhttps://www.proofagent.ai/eio-agents/schema/per/2.1.0/per.schema.json#/$defs/claim — JSON Schema URI: the schema $id plus a JSON Pointer; validators resolve ithttps://www.proofagent.ai/eio-agents/schema/per/2.1.0/per.schema.json#/$defs/claim/properties/predicate — the rule for claims[].predicatehttps://www.proofagent.ai/eio-agents/eio/schema#per-claims — the human-readable field reference on this pagehttps://www.proofagent.ai/eio-agents/id/eio.entity.evaluation-claim — JSON-LD term EvaluationClaim; defined in core/entities.yamlhttps://www.proofagent.ai/eio-agents/schema/eio/0.6.0/ontology/data/core/entities.yaml — published, sha256-pinned in header.eio.modules["eio.core.entities"]https://www.proofagent.ai/eio-agents/id/eio.predicate.authority-or-deadline-invented — JSON-LD expansion of the claim's predicate valuehttps://www.proofagent.ai/eio-agents/schema/eio/0.6.0/ontology/data/risks/grounding.yaml — version 1.0.0: "The agent asserts an approval, law, rule, deadline, precedent, regulator, or policy authority absent from applicable sources."Identifiers, not documents: https://www.proofagent.ai/eio-agents/id/eio.predicate.authority-or-deadline-invented (EIO term), https://www.proofagent.ai/eio-agents/prop/turn_indices (EIO property), https://www.proofagent.ai/eio-agents/module/risk/grounding# (Module namespace).
Generated from per.schema.json (sha256 b014591877aeef18…). Required fields are marked *.
What this document is and which converter and ontology produced it. The rederive trigger reads only this block. Schema URI: https://www.proofagent.ai/eio-agents/schema/per/2.1.0/per.schema.json#/$defs/header.
per_version * (const "2.1.0"): PER 2.1.0 record format. Consumers validate against the versioned schema named by schema_uri; earlier records retain their historical schemas and ontology pins.per_semantics_version * (string): <R>@<converter_version>+eio<eio_release>.<ontology_digest>. R = 2 for release_semantics 2.2; the value 3 is reserved for 3@ (§9.3). The only rederive trigger (§4.3, §14.2).release_semantics * (release_semantics): Release semantics that produced the verdict. This PER 2.1.0 release uses '2.2' (the unpublished 0.8.0 candidate semantics '2.1' is superseded and not accepted); '3@' is reserved for a separately versioned future release.converter * (object): The converter that produced this record. EIO: eio.entity.evaluator.eio * (object): The EIO release the record was computed under. EIO: eio.manifest.public.archive_sha256 * (sha256_digest): Digest of the archive, by archive_schema (§5.4): schema 1: 'sha256:' + hex(sha256(UTF-8(json.dumps(archive, sort_keys=True, separators=(',', ':'), ensure_ascii=False)))) — the platform's canonical bytes, frozen byte for byte; schema 2: 'sha256:' + hex(sha256(UTF-8(JCS(archive)))). A verifier dispatches on archive_schema.archive_schema * (const 3): EIO-native evaluation bundle.schema_uri * (const "https://www.proofagent.ai/eio-agents/schema/per/2.1.0/per.schema.json"): —declared_limitation_catalogues (array of declared_limitation_catalogue): —declared_template_catalogues (array of declared_template_catalogue): —Producer, run, inputs and reproducibility provenance. Schema URI: https://www.proofagent.ai/eio-agents/schema/per/2.1.0/per.schema.json#/$defs/provenance.
run * (object): The harness run (a prov:Activity). EIO: eio.entity.run.producer * (object): The evaluator that produced the archive.inputs * (object): Input digests.capsule * (object): Reproducibility capsule assessment. EIO: eio.entity.capsule.evaluator_models * (array of object): Models used by the evaluator; empty when none are declared.What was evaluated; joins the record to the platform's agent registration and regression baseline. EIO: eio.entity.agent, eio.entity.ai-bom. Schema URI: https://www.proofagent.ai/eio-agents/schema/per/2.1.0/per.schema.json#/$defs/subject. EIO concept: https://www.proofagent.ai/eio-agents/id/eio.entity.agent, https://www.proofagent.ai/eio-agents/id/eio.entity.ai-bom.
agent * (object): The agent under evaluation. EIO: eio.entity.agent.ai_bom * (object): Content hashes of the agent's components. EIO: eio.entity.ai-bom.Which EIO domains, tier, facts and frameworks apply. Derived from declared inputs only (eio.flow.qualify never reads the transcript). EIO: eio.entity.governance-profile, eio.flow.qualify. Schema URI: https://www.proofagent.ai/eio-agents/schema/per/2.1.0/per.schema.json#/$defs/scope. EIO concept: https://www.proofagent.ai/eio-agents/id/eio.entity.governance-profile, https://www.proofagent.ai/eio-agents/id/eio.flow.qualify.
domains * (array of object): Resolved domains, in resolution order; eio.domain.generic-agent is present either through import or as the default. EIO: eio.domain.generic-agent.tier * (object | null): Tier from declared inputs; null ⇒ caveat, never 'minimal'. EIO: eio.entity.risk-tier.autonomy * (autonomy_id | null): Declared autonomy level. EIO: eio.entity.governance-profile.region * (region_id | null): Declared region. EIO: eio.entity.region.facts * (object): Declared facts used by required_when and gates: every required_when fact of an in-scope obligation plus the gate facts consequential_actions and human_oversight, named by the canonical fact ids of the EIO facts section (eio.governance.gates). Unknown is null, never false (CONS-5); any null raises per.lim.facts.not_declared. EIO: eio.entity.governance-profile.escalations * (array of object): Escalation rules that matched, in declared order. EIO: eio.relation.raises-impact-of.frameworks * (array of object): Frameworks in evaluation scope. EIO: eio.governance.gates.caveats * (array of object): Templated caveats; empty when neither catalogue condition holds (FIN_3).The addressable things claims stand on. EIO: eio.entity.evidence-ref, eio.core.evidence. Schema URI: https://www.proofagent.ai/eio-agents/schema/per/2.1.0/per.schema.json#/$defs/evidence. EIO concept: https://www.proofagent.ai/eio-agents/id/eio.entity.evidence-ref, https://www.proofagent.ai/eio-agents/id/eio.core.evidence.
cited_refs_hash * (object): stable_digest(sorted(unique evidence.refs[].id), 20) over the refs carried in the record (cited refs only); recomputable (VER-4). Distinct from the EIO graph_hash, which covers the whole sealed evidence graph (01 §10.4).transcript_sha256 * (sha256_digest): 'sha256:' + hex(sha256(JCS(archive.transcript))); binds the whole transcript.archive_pointer * (object): Where uncited transcript content lives.refs * (array of evidence_ref): Cited refs only: refs cited by claims[].evidence or counterevidence, findings[].evidence_refs, controls[].evidence_refs, any explanation's evidence_refs or context_refs, or readiness.cap_reasons[].ref. Ids unique. Ordered by (turn_index, kind order AGENT_SPAN < TOOL_RECEIPT < TYPED_ABSENCE < CALCULATION < STATE_FACT < STATE_TRANSITION < USER_INPUT < RETRIEVAL < POLICY_SPAN < PROVENANCE < HUMAN_SIGNOFF, char_start with null before any number, id); refs without a turn last (§5.6). EIO: eio.entity.evidence-ref.turns * (array of turn_ref): One entry per transcript turn, sorted by turn_index. EIO: eio.entity.turn.counts * (object): Evidence counts.completeness * (object): Which evidence classes the archive carries.The only facts: one EvaluationClaim per mapped check verdict, ordered by (min(turn_indices), predicate, legacy_check). Ids unique. EIO: eio.entity.evaluation-claim. Schema URI: https://www.proofagent.ai/eio-agents/schema/per/2.1.0/per.schema.json#/$defs/claim. EIO concept: https://www.proofagent.ai/eio-agents/id/eio.entity.evaluation-claim.
id * (claim_id): Claim identifier: stable_digest({run_id, predicate, predicate_version, legacy_check, turn_indices}, 20), turn_indices sorted (01 §10.5; ID-1). Excludes state, votes, evidence, decided_by and resolver. FIN_3 obeyed_injected_instruction@5: cf5d7d77a674dc3d58f2. Must resolve to an entry of /claims (VER-3). EIO: eio.entity.evaluation-claim.run_id * (run_id): = provenance.run.run_id. EIO: eiop:run_id.turn_indices * (array of turn_index): Turns the predicate instance covers; for legacy claims [turn_index]. Sorted ascending. EIO: eiop:turn_indices.predicate * (predicate_id): Canonical predicate from the loaded EIO release.predicate_version * (semver): The declaring module's predicates[].version. EIO: eiop:predicate_version.state * (decision_state): Verbatim from the archive, or derived polarity-aware when the row has no state (§7.6.3; observed null -> NOT_APPLICABLE with applicability_basis.source observed_null); never changed by the converter (PROD-4). EIO: eiop:state.parameters * (claim_parameters): PER claim data, including the source key, fidelity, scenario and votes required by this schema. Legacy projection keys and state-conditional fields are admitted only as constrained below. EIO: eiop:parameters.evidence * (array of evidence_ref_id): Supporting refs (eio.relation.supported-by), a set serialized in /evidence/refs order (§5.6). Every id resolves in /evidence/refs. Built by the recipes of §7.5.3 (R-ACT, R-MARKER, R-SENTINEL, R-FORBIDDEN/R-OOB, R-REQUIRED, R-PERSIST, R-PAIRED, R-GATE-TOOL, R-GATE-TEXT, R-SEM); no recipe reads the quote of a code or gated row. Non-empty for APPLICABLE_PASS and APPLICABLE_FAIL (enforced below); an APPLICABLE_FAIL claim additionally cites at least one agent ref (verifier). Empty for a premise-gated NOT_APPLICABLE claim (enforced below). EIO: eio.relation.supported-by, eiop:evidence.counterevidence (array of evidence_ref_id): Refs considered against the adopted state (01 §6.5): an empty array asserts that a declared counterevidence search found nothing, so the member is present only when a recipe runs one. EIO: eiop:counterevidence.decided_by * (decided_by): decided_by of 01 §7.4, mapped from the archive decider (04 §5.2): code -> deterministic; gated with votes_total == 0 -> deterministic; gated with votes and llm -> semantic. EIO: eio.relation.resolved-by, eiop:decided_by.resolver (resolver_id): Emitted on a deterministic claim only when the recipe's natural resolver (R-ACT, R-FORBIDDEN, R-OOB, R-GATE-TOOL: tool-receipt; R-REQUIRED, and R-ACT on a turn without a tool call: typed-absence; R-MARKER, R-SENTINEL, gate reply_names: exact-span; gate field_overlap_exceeds: arithmetic) is listed in the predicate's resolvers; semantic claims carry none. EIO: eiop:resolver.risk (risk_id): The predicate's risk; absent for safeguard and observation predicates. EIO: eiop:risk.provenance * (claim_provenance): Claim provenance; a strict profile of EIO evaluation-claim provenance (prompt_hash is not emitted: not captured). EIO: eiop:provenance.rationale (object): MUST be absent: PER does not store claim rationale; renderers derive the claim 'why' on demand from the eio.why.claim.* templates of eio.template.why (§7.6.5). EIO: eiop:rationale.confidence (object): MUST be absent: a converter omits confidence (01 §7.4). EIO: eiop:confidence.What the run did and did not establish. A predicate that produced no claim never renders as a clean result (flow.yaml). EIO: eio.entity.coverage-report. Schema URI: https://www.proofagent.ai/eio-agents/schema/per/2.1.0/per.schema.json#/$defs/coverage. EIO concept: https://www.proofagent.ai/eio-agents/id/eio.entity.coverage-report.
obligations * (array of coverage_obligation): In-scope obligations of every scope.domains entry, sorted by id. EIO: eio.entity.coverage-obligation.dispatch * (array of dispatch_record): One row per predicate targeted by an in-scope obligation. EIO: eio.entity.dispatch-record.state_counts * (state_counts): Claim census by decision state; MUST reconcile with /claims (VER-4). EIO: eio.profile.decision-policy.decided_by_counts * (object): Claims by decided_by; sums to state_counts.total. EIO: eio.relation.resolved-by.summary * (object): Coverage summary. EIO: eio.entity.coverage-report.One per fingerprint with at least one APPLICABLE_FAIL claim, plus CONTEXT_GAP findings. EIO: eio.entity.finding. Schema URI: https://www.proofagent.ai/eio-agents/schema/per/2.1.0/per.schema.json#/$defs/finding. EIO concept: https://www.proofagent.ai/eio-agents/id/eio.entity.finding.
finding_id * (finding_id): Finding identifier: stable_digest({run_id, fingerprint}, 20). FIN_3 untrusted-instruction-execution: b182e5576187159d0015. Readable labels (PE-DEF-0003, PA-E-INS-001) are never identifiers. EIO: eio.entity.finding, eiop:finding_id.fingerprint * (fingerprint): Cross-run identity of a finding: hex(sha256(JCS({v:1, predicate, predicate_major, trap}))) for BEHAVIOURAL findings, hex(sha256(JCS({v:1, criterion, control}))) for CONTEXT_GAP findings. Excludes run, turn, domain, role, score and axis (ID-4). 64 hex, no 'sha256:' prefix.issue_signature * (hex20): BEHAVIOURAL: stable_digest({predicate, major}, 20); CONTEXT_GAP: stable_digest({criterion, major}, 20) (FIN_3 guardrail-coverage: bff40b19600cc01f6e9a). Scoped by the platform per (workspace_id, agent_id).kind * ("BEHAVIOURAL" | "CONTEXT_GAP"): BEHAVIOURAL or CONTEXT_GAP. A CONTEXT_GAP finding cites TYPED_ABSENCE refs and no claim (context-criterion assessments are not claims in this record format) and raises per.lim.context_gap.no_claim.predicate (predicate_id): BEHAVIOURAL only. EIO: eio.entity.predicate.predicate_version (semver): BEHAVIOURAL only. EIO: eiop:version.risk (risk_id): BEHAVIOURAL only; absent for safeguard and observation predicates. EIO: eio.risk.catalog.criterion (string): CONTEXT_GAP only: the EIO context criterion whose checklist control was not found, e.g. eio.context.guardrail-coverage. EIO: eio.context.criteria.control (string): CONTEXT_GAP only: the criterion's checklist control id, e.g. personal-data. EIO: eio.context.criteria.display_label * (string): Rendered label: 't05 · untrusted-instruction-execution' (BEHAVIOURAL: first turn, predicate short name) or 'ctx · guardrail-coverage / personal-data' (CONTEXT_GAP). Label only, never an identifier.status * (const "OPEN"): Within a run a finding is always open; closure is a platform issue event.claim_ids * (array of claim_id): All APPLICABLE_FAIL claims with this fingerprint (BEHAVIOURAL: at least one). Each MUST resolve to an APPLICABLE_FAIL claim (VER-4). EIO: eiop:claim_id.turn_indices * (array of turn_index): Turns of the claims (BEHAVIOURAL: at least one).severity * (severity | null): Max severity of the in-scope obligations targeting the predicate with required != false (§7.8); null when there is none, with severity_source NONE and per.lim.severity.none. Never from the trap, a juror or the legacy findings[]. EIO: eio.entity.finding, eiop:severity.severity_source * (object): Where the severity came from.scenario_severity ("critical" | "high" | "medium" | "low" | null): Trap frontmatter severity (mappings/traps.yaml). Informative only; never used by any rule. EIO: eio.mapping.traps.release_impact * (release_impact | null): Max effective release_impact of the obligations that set the severity (those of maximal severity); null when severity is null. EIO: eio.relation.raises-impact-of.decided_by * (decided_by): BEHAVIOURAL: deterministic if any claim is deterministic, else human if any claim is human, else semantic. CONTEXT_GAP: deterministic (a code-run typed-absence search).witnessed * (boolean): Some claim cites a witnessing anchored ref (01 §6.3 W1). A risk-predicate FAIL that is not witnessed keeps its state but is never PROVEN and never applies a cap (04 MAP-13). EIO: eio.core.evidence.proof_status * (proof_status): S1b EIO proof rule (eio.profile.proof-status): deterministic/human claim PROVEN requires a verified role=proof citation bound to a contract-eligible witnessing anchored source ref and exact fidelity or CONFIRMED recurrence. Native origin alone is not proof; a CONTEXT_GAP finding is UNPROVEN. Historical 0.4.0 records retain their own pinned release and adapter. [§7.8, §9.3]recurrence * (finding_recurrence): Recurrence of a finding (weakest band of its claims). EIO: eio.ledger.recurrence, eiop:recurrence.mitigations * (array of mitigation): The predicate's mitigations, verbatim: the 49 risk predicates declare 51 in all; the 7 safeguard and 2 observation predicates declare none. EIO: eio.entity.predicate.control_ids * (array of control_id): Controls whose claim_ids intersect the finding's claim_ids, in controls order. A PER view link (per:control_ids), not the EIO maps-to relation, whose domain excludes findings.evidence_refs (array of evidence_ref_id): CONTEXT_GAP only: the TYPED_ABSENCE refs. EIO: eio.core.evidence.explanation * (explanation): The reusable 'why + references' object attached to readiness, every axis, metric, finding, control, gate result, the reliability block and the release recommendation (optionally to unmet obligation rows). Every cited id resolves inside the record. EIO: eio.entity.release-decision.scenarios * (array of string): Scenario labels, empty for a producer without scenarios.fidelity * ("exact" | "narrower" | null): —Controls of every APPLICABLE or REVIEW_REQUIRED framework in scope, sorted by (framework, control_id). EIO: eio.entity.control-status. Schema URI: https://www.proofagent.ai/eio-agents/schema/per/2.1.0/per.schema.json#/$defs/control. EIO concept: https://www.proofagent.ai/eio-agents/id/eio.entity.control-status.
control_id * (control_id): An EIO framework control id (165 in compliance/frameworks.yaml). EIO: eio.entity.control.framework * (framework_id): An EIO framework id (30 in compliance/frameworks.yaml). EIO: eio.compliance.frameworks.external_ref * (string): External reference, e.g. 'Art. 15'. EIO: eio.entity.control.title * (string): Control title from EIO, verbatim. EIO: eio.entity.control.framework_state * ("APPLICABLE" | "REVIEW_REQUIRED"): Copied from scope.frameworks; controls are materialised only for APPLICABLE and REVIEW_REQUIRED frameworks, so a NOT_APPLICABLE framework appears in scope.frameworks (with its basis) and has no control rows.status * (control_status): One of the six EIO control statuses (eio.profile.compliance-materialization). No status is ever called compliant or non-compliant. The retired statuses met / undefended / partial / attention / not_evaluated are not admitted. EIO: eio.entity.control-status, eiop:status.claim_ids * (array of claim_id): All claims on the control's predicate_targets: FAIL first, then PASS, then the rest (claims order within each group; 04 §2.9). Non-empty for observed_* and inconclusive. EIO: eio.entity.control-status, eiop:claim_ids.evidence_refs * (array of evidence_ref_id): Agent refs (can_prove_agent_behaviour true) cited by the violating claims, else by the satisfying claims: witnessing anchored refs first, then in first-citation order, at most 12; non-empty for observed_* (enforced below). EIO: eio.entity.control-status, eiop:evidence_refs.evidence_refs_omitted * (object): Agent refs of the deciding claims beyond the 12 listed in evidence_refs; 0 when none.proxy_only (boolean): observed_violation only (required there, absent otherwise): true iff every failing claim on the control's predicates is narrower. A proxy-only violation is shown under its own heading and is never decisive.mapping_status * (string): EIO mapping_status, copied from the pinned ontology YAML and rendered next to the status. EIO: eio.entity.control.legal_review_required * (boolean): EIO legal_review_required, copied from the pinned ontology YAML and rendered next to the status. EIO: eio.entity.control.assurance_boundary * (string): EIO assurance_boundary text, verbatim; evidence relevance only (eio.profile.compliance-assurance-boundary). EIO: eio.profile.compliance-assurance-boundary.explanation * (explanation): The reusable 'why + references' object attached to readiness, every axis, metric, finding, control, gate result, the reliability block and the release recommendation (optionally to unmet obligation rows). Every cited id resolves inside the record. EIO: eio.entity.release-decision.A rederivable reference score block, historical score view, or explicit null. Schema URI: https://www.proofagent.ai/eio-agents/schema/per/2.1.0/per.schema.json#/properties/scores.
scoring_profile * (object): The versioned scoring profile whose document and ontology pin produced the numbers in this block. Native scored-PER verification remains D4-blocked until independent full recomputation.readiness * (readiness): The readiness index (PAI) as a view over claims. EIO: eio.entity.readiness-index.axes * (array of any): Exactly four axes in EIO declaration order Q, E, C, G (scoring/axes.yaml). EIO: eio.scoring.axes.metrics * (array of metric_view): One per measured behaviour metric, in mappings/metrics.yaml concept order. EIO: eio.mapping.metrics.Occurrence and recurrence ledgers, trial kind and pass^k (two ledgers, never pooled; eio.reliability.ledgers). EIO: eio.reliability.ledgers, eio.entity.reliability-ledger. [§7.11, §10] Schema URI: https://www.proofagent.ai/eio-agents/schema/per/2.1.0/per.schema.json#/$defs/reliability. EIO concept: https://www.proofagent.ai/eio-agents/id/eio.reliability.ledgers, https://www.proofagent.ai/eio-agents/id/eio.entity.reliability-ledger.
status * ("EVALUATED" | "NOT_RETESTED"): NOT_RETESTED when the archive has no reliability block.trial_kind * (trial_kind_id | null): Trial kind; the current harness re-asks pinned questions: eio.trial.repeat. EIO: eio.entity.trial.passes * (count): Re-test passes n (0 when not re-tested). EIO: eio.entity.reliability-ledger.k * (integer | null): k of pass^k. EIO: eio.entity.reliability-ledger, eiop:k.tasks * (count | null): Tasks in the estimator.occurrence * (array of occurrence_entry): Occurrence ledger; one row per finding. EIO: eio.ledger.occurrence.recurrence * (array of recurrence_entry): Recurrence ledger; one row per re-tested (trap, check, turn). Never pooled with occurrence. EIO: eio.ledger.recurrence.rate * (reliability_rate | null): pass^k estimate, or null when not re-tested. EIO: eio.estimator.unbiased-pass-hat-k.named_lists * (named_lists | null): Named lists, or null when not re-tested. EIO: eio.reliability.ledgers.explanation * (explanation): The reusable 'why + references' object attached to readiness, every axis, metric, finding, control, gate result, the reliability block and the release recommendation (optionally to unmet obligation rows). Every cited id resolves inside the record. EIO: eio.entity.release-decision.The single evaluation verdict, computed once inside convert(). The platform release decision is derived from it, the evaluation conditions and the agent's platform profile (§9.6). EIO: eio.entity.release-decision, eio.lifecycle.release. Schema URI: https://www.proofagent.ai/eio-agents/schema/per/2.1.0/per.schema.json#/$defs/release_recommendation. EIO concept: https://www.proofagent.ai/eio-agents/id/eio.entity.release-decision, https://www.proofagent.ai/eio-agents/id/eio.lifecycle.release.
state * (release_state): Release recommendation state; precedence BLOCK > REVIEW > PASS. EIO: eio.entity.release-decision, eio.lifecycle.release.semantics * (release_semantics): = header.release_semantics.decisive * (array of decisive_entry): Non-empty iff state != PASS (I-1); state = the maximum effect over the entries (I-8). EIO: eiop:gate_results.contributing * (array of contributing_entry): The seven EIO gates in declaration order, then the violated effectively HARD_BLOCK obligations by id; recorded separately from decisive entries.gate_results * (array of any): All 7 EIO gates in the pinned eio.governance.gates declaration order, with ids, unmet states and evaluation stages. A new or changed gate needs a versioned schema. EIO: eio.entity.release-decision, eiop:gate_results.metric_floors * (array of any): Metric-floor results when a validated scoring profile declares a floor; empty for the unscored neutral core. A fail adds a decisive metric_floor entry.policy * (policy): The release policy applied inside the converter. EIO: eio.entity.governance-profile.signoff * (signoff): Whether human sign-off is required. EIO: eio.role.reviewer.explanation * (explanation): Templated rationale (eio.why.release.<state>@1). EIO: eiop:rationale.Sorted by (field_path, limitation_id). Schema URI: https://www.proofagent.ai/eio-agents/schema/per/2.1.0/per.schema.json#/$defs/limitation.
limitation_id * (string): Id from the one closed catalogue of 04 §5.13 for the converter version (reason, impact and next_step are its templates with recorded parameters). Ids of the form per.lim.example.* appear only in documentation and are never emitted by a converter.field_path * (json_pointer): PER Pointer to the field the limitation is about. See json_pointer.status * (limitation_status): NOT_SUPPLIED: the producer did not provide an input it could have; NOT_CAPTURED: the harness does not record it; NOT_APPLICABLE: the field has no meaning for this run. [§7.13; 04 §5.13]reason * (string): Templated reason from the catalogue.impact * (string): Templated impact.next_step * (string): Templated next step (v1.1 recommended_next_step).Cost and usage. No view, gate or rule reads this block; it is covered by per_sha256. Schema URI: https://www.proofagent.ai/eio-agents/schema/per/2.1.0/per.schema.json#/$defs/telemetry.
agent_under_test * (object): Agent-under-test usage from performance.wall_clock_seconds * (number | null): duration_seconds.evaluator_models * (array of object): Evaluator-model usage, if captured.Producers and validators use these JSON Schemas, JSON-LD context and ontology modules to interpret the same concepts and PER fields. Select the version named by your package or record. Each released URL identifies immutable bytes; the Python package embeds offline copies. Structural schema validation alone does not prove that evidence is genuine or that an agent is production-ready.
JSON Schema files declare $schema: https://json-schema.org/draft/2020-12/schema; “draft” names the JSON Schema standard version, not the EIO 0.6.0 release status.
EIO-Agents, including its ontology and schemas, is maintained by ProofAgent / ProofAI LLC under Apache-2.0. Read the LICENSE and NOTICE, browse the source repository, or contact support@proofagent.ai.
EIO-Agents developed by Dr. Fouad Bousetouane · © 2025–2026 ProofAI LLC · Licensed under the Apache License 2.0 · Source on GitHub · support@proofagent.ai