eio-agents 0.6.0rc1__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- eio_agents-0.6.0rc1/.gitignore +43 -0
- eio_agents-0.6.0rc1/CHANGELOG.md +426 -0
- eio_agents-0.6.0rc1/CITATION.cff +23 -0
- eio_agents-0.6.0rc1/CODE_OF_CONDUCT.md +131 -0
- eio_agents-0.6.0rc1/CONTRIBUTING.md +132 -0
- eio_agents-0.6.0rc1/GOVERNANCE.md +94 -0
- eio_agents-0.6.0rc1/LICENSE +202 -0
- eio_agents-0.6.0rc1/NOTICE +27 -0
- eio_agents-0.6.0rc1/PKG-INFO +106 -0
- eio_agents-0.6.0rc1/README.md +57 -0
- eio_agents-0.6.0rc1/SECURITY.md +70 -0
- eio_agents-0.6.0rc1/docs/api.md +444 -0
- eio_agents-0.6.0rc1/docs/cli.md +176 -0
- eio_agents-0.6.0rc1/docs/concepts.md +277 -0
- eio_agents-0.6.0rc1/docs/eio-agents-stack.svg +44 -0
- eio_agents-0.6.0rc1/docs/quickstart.md +82 -0
- eio_agents-0.6.0rc1/docs/standards.md +142 -0
- eio_agents-0.6.0rc1/docs/verification.md +212 -0
- eio_agents-0.6.0rc1/docs/versioning.md +116 -0
- eio_agents-0.6.0rc1/pyproject.toml +109 -0
- eio_agents-0.6.0rc1/src/eio_agents/__init__.py +53 -0
- eio_agents-0.6.0rc1/src/eio_agents/__main__.py +6 -0
- eio_agents-0.6.0rc1/src/eio_agents/adapters.py +58 -0
- eio_agents-0.6.0rc1/src/eio_agents/adjudication/__init__.py +31 -0
- eio_agents-0.6.0rc1/src/eio_agents/api.py +209 -0
- eio_agents-0.6.0rc1/src/eio_agents/base/__init__.py +6 -0
- eio_agents-0.6.0rc1/src/eio_agents/base/canon.py +125 -0
- eio_agents-0.6.0rc1/src/eio_agents/base/errors.py +15 -0
- eio_agents-0.6.0rc1/src/eio_agents/base/version.py +4 -0
- eio_agents-0.6.0rc1/src/eio_agents/cli.py +206 -0
- eio_agents-0.6.0rc1/src/eio_agents/compliance/__init__.py +5 -0
- eio_agents-0.6.0rc1/src/eio_agents/compliance/controls.py +78 -0
- eio_agents-0.6.0rc1/src/eio_agents/compliance/selection.py +57 -0
- eio_agents-0.6.0rc1/src/eio_agents/evidence/__init__.py +6 -0
- eio_agents-0.6.0rc1/src/eio_agents/evidence/context_refs.py +158 -0
- eio_agents-0.6.0rc1/src/eio_agents/evidence/contract.py +67 -0
- eio_agents-0.6.0rc1/src/eio_agents/evidence/locate.py +16 -0
- eio_agents-0.6.0rc1/src/eio_agents/evidence/redaction.py +63 -0
- eio_agents-0.6.0rc1/src/eio_agents/evidence/refs.py +129 -0
- eio_agents-0.6.0rc1/src/eio_agents/evidence/witness.py +12 -0
- eio_agents-0.6.0rc1/src/eio_agents/ontology/__init__.py +189 -0
- eio_agents-0.6.0rc1/src/eio_agents/ontology/data/CHANGELOG.md +297 -0
- eio_agents-0.6.0rc1/src/eio_agents/ontology/data/README.md +173 -0
- eio_agents-0.6.0rc1/src/eio_agents/ontology/data/RELEASE-DIGESTS.json +61 -0
- eio_agents-0.6.0rc1/src/eio_agents/ontology/data/assurance/system-of-record.yaml +123 -0
- eio_agents-0.6.0rc1/src/eio_agents/ontology/data/compliance/frameworks.yaml +260 -0
- eio_agents-0.6.0rc1/src/eio_agents/ontology/data/context/criteria.yaml +196 -0
- eio_agents-0.6.0rc1/src/eio_agents/ontology/data/core/decisions.yaml +93 -0
- eio_agents-0.6.0rc1/src/eio_agents/ontology/data/core/entities.yaml +248 -0
- eio_agents-0.6.0rc1/src/eio_agents/ontology/data/core/evidence.yaml +288 -0
- eio_agents-0.6.0rc1/src/eio_agents/ontology/data/core/flow.yaml +287 -0
- eio_agents-0.6.0rc1/src/eio_agents/ontology/data/core/relations.yaml +211 -0
- eio_agents-0.6.0rc1/src/eio_agents/ontology/data/core/taxonomies.yaml +59 -0
- eio_agents-0.6.0rc1/src/eio_agents/ontology/data/domains/aviation-airline.yaml +186 -0
- eio_agents-0.6.0rc1/src/eio_agents/ontology/data/domains/customer-support.yaml +91 -0
- eio_agents-0.6.0rc1/src/eio_agents/ontology/data/domains/energy-utilities.yaml +141 -0
- eio_agents-0.6.0rc1/src/eio_agents/ontology/data/domains/financial-services.yaml +123 -0
- eio_agents-0.6.0rc1/src/eio_agents/ontology/data/domains/generic-agent.yaml +111 -0
- eio_agents-0.6.0rc1/src/eio_agents/ontology/data/domains/healthcare-operations.yaml +106 -0
- eio_agents-0.6.0rc1/src/eio_agents/ontology/data/domains/hr-employment.yaml +105 -0
- eio_agents-0.6.0rc1/src/eio_agents/ontology/data/domains/legal-public-sector.yaml +114 -0
- eio_agents-0.6.0rc1/src/eio_agents/ontology/data/domains/medical-devices.yaml +163 -0
- eio_agents-0.6.0rc1/src/eio_agents/ontology/data/domains/payments-cardholder.yaml +150 -0
- eio_agents-0.6.0rc1/src/eio_agents/ontology/data/domains/software-agents.yaml +118 -0
- eio_agents-0.6.0rc1/src/eio_agents/ontology/data/governance/gates.yaml +446 -0
- eio_agents-0.6.0rc1/src/eio_agents/ontology/data/graph/context-links.yaml +211 -0
- eio_agents-0.6.0rc1/src/eio_agents/ontology/data/graph/domain-links.yaml +34 -0
- eio_agents-0.6.0rc1/src/eio_agents/ontology/data/manifest.yaml +94 -0
- eio_agents-0.6.0rc1/src/eio_agents/ontology/data/mappings/frameworks.yaml +25 -0
- eio_agents-0.6.0rc1/src/eio_agents/ontology/data/mappings/metrics.yaml +150 -0
- eio_agents-0.6.0rc1/src/eio_agents/ontology/data/reference/cases.jsonl +45 -0
- eio_agents-0.6.0rc1/src/eio_agents/ontology/data/reliability/ledgers.yaml +164 -0
- eio_agents-0.6.0rc1/src/eio_agents/ontology/data/risks/action-safety.yaml +354 -0
- eio_agents-0.6.0rc1/src/eio_agents/ontology/data/risks/catalog.yaml +232 -0
- eio_agents-0.6.0rc1/src/eio_agents/ontology/data/risks/content-code-safety.yaml +151 -0
- eio_agents-0.6.0rc1/src/eio_agents/ontology/data/risks/context-trust.yaml +280 -0
- eio_agents-0.6.0rc1/src/eio_agents/ontology/data/risks/data-handling.yaml +284 -0
- eio_agents-0.6.0rc1/src/eio_agents/ontology/data/risks/evaluator-reliability.yaml +199 -0
- eio_agents-0.6.0rc1/src/eio_agents/ontology/data/risks/fairness-rights.yaml +220 -0
- eio_agents-0.6.0rc1/src/eio_agents/ontology/data/risks/grounding.yaml +230 -0
- eio_agents-0.6.0rc1/src/eio_agents/ontology/data/risks/safeguards.yaml +234 -0
- eio_agents-0.6.0rc1/src/eio_agents/ontology/data/scoring/axes.yaml +219 -0
- eio_agents-0.6.0rc1/src/eio_agents/ontology/data/templates/core.yaml +344 -0
- eio_agents-0.6.0rc1/src/eio_agents/ontology/data/templates/why.yaml +871 -0
- eio_agents-0.6.0rc1/src/eio_agents/per/__init__.py +15 -0
- eio_agents-0.6.0rc1/src/eio_agents/per/archive.py +12 -0
- eio_agents-0.6.0rc1/src/eio_agents/per/bundle.py +1390 -0
- eio_agents-0.6.0rc1/src/eio_agents/per/capsule.py +10 -0
- eio_agents-0.6.0rc1/src/eio_agents/per/catalogue_split.py +242 -0
- eio_agents-0.6.0rc1/src/eio_agents/per/conformance.py +146 -0
- eio_agents-0.6.0rc1/src/eio_agents/per/context.py +6 -0
- eio_agents-0.6.0rc1/src/eio_agents/per/data/limitations-core.json +294 -0
- eio_agents-0.6.0rc1/src/eio_agents/per/data/limitations.json +545 -0
- eio_agents-0.6.0rc1/src/eio_agents/per/data/rc1_only.json +166 -0
- eio_agents-0.6.0rc1/src/eio_agents/per/evidence.py +42 -0
- eio_agents-0.6.0rc1/src/eio_agents/per/header.py +38 -0
- eio_agents-0.6.0rc1/src/eio_agents/per/instance_iri.py +51 -0
- eio_agents-0.6.0rc1/src/eio_agents/per/io.py +44 -0
- eio_agents-0.6.0rc1/src/eio_agents/per/limitations.py +43 -0
- eio_agents-0.6.0rc1/src/eio_agents/per/native_full_wire.py +200 -0
- eio_agents-0.6.0rc1/src/eio_agents/per/native_preview.py +168 -0
- eio_agents-0.6.0rc1/src/eio_agents/per/native_reportability.py +110 -0
- eio_agents-0.6.0rc1/src/eio_agents/per/native_score_inputs.py +168 -0
- eio_agents-0.6.0rc1/src/eio_agents/per/native_score_preview.py +196 -0
- eio_agents-0.6.0rc1/src/eio_agents/per/privacy.py +1365 -0
- eio_agents-0.6.0rc1/src/eio_agents/per/projection.py +509 -0
- eio_agents-0.6.0rc1/src/eio_agents/py.typed +0 -0
- eio_agents-0.6.0rc1/src/eio_agents/reliability/__init__.py +76 -0
- eio_agents-0.6.0rc1/src/eio_agents/resolvers/__init__.py +21 -0
- eio_agents-0.6.0rc1/src/eio_agents/schemas/__init__.py +52 -0
- eio_agents-0.6.0rc1/src/eio_agents/schemas/bundle/bundle-3.0.0-draft.1.schema.json +312 -0
- eio_agents-0.6.0rc1/src/eio_agents/schemas/bundle/bundle-3.0.0-draft.2.schema.json +319 -0
- eio_agents-0.6.0rc1/src/eio_agents/schemas/eio/0.6.0/eio-context-0.6.0.jsonld +109 -0
- eio_agents-0.6.0rc1/src/eio_agents/schemas/eio/0.6.0/evaluation-claim.schema.json +154 -0
- eio_agents-0.6.0rc1/src/eio_agents/schemas/eio/0.6.0/evidence-graph.schema.json +74 -0
- eio_agents-0.6.0rc1/src/eio_agents/schemas/eio/0.6.0/module.schema.json +2389 -0
- eio_agents-0.6.0rc1/src/eio_agents/schemas/eio/0.6.0/reference-case.schema.json +33 -0
- eio_agents-0.6.0rc1/src/eio_agents/schemas/eio/eio-context-0.4.0.jsonld +109 -0
- eio_agents-0.6.0rc1/src/eio_agents/schemas/eio/eio-context-0.5.0-draft.1.jsonld +109 -0
- eio_agents-0.6.0rc1/src/eio_agents/schemas/eio/evaluation-claim.schema.json +154 -0
- eio_agents-0.6.0rc1/src/eio_agents/schemas/eio/evidence-graph.schema.json +74 -0
- eio_agents-0.6.0rc1/src/eio_agents/schemas/eio/module.schema.json +2389 -0
- eio_agents-0.6.0rc1/src/eio_agents/schemas/eio/reference-case.schema.json +33 -0
- eio_agents-0.6.0rc1/src/eio_agents/schemas/per/per-2.0-neutral-preview.context.jsonld +1061 -0
- eio_agents-0.6.0rc1/src/eio_agents/schemas/per/per-2.0-rc3-draft.context.jsonld +1061 -0
- eio_agents-0.6.0rc1/src/eio_agents/schemas/per/per-2.0.0-rc2-draft.schema.json +7689 -0
- eio_agents-0.6.0rc1/src/eio_agents/schemas/per/per-2.0.0-rc2-neutral-preview.schema.json +7689 -0
- eio_agents-0.6.0rc1/src/eio_agents/schemas/per/per-2.0.0-rc3-draft.schema.json +8141 -0
- eio_agents-0.6.0rc1/src/eio_agents/schemas/per/per-2.0.0-rc3-neutral-preview.schema.json +7706 -0
- eio_agents-0.6.0rc1/src/eio_agents/schemas/per/per-2.0.0-rc4-draft.schema.json +8420 -0
- eio_agents-0.6.0rc1/src/eio_agents/schemas/per/per-2.0.0-rc5-policy-draft.schema.json +8437 -0
- eio_agents-0.6.0rc1/src/eio_agents/schemas/per/per-2.0.0.schema.json +8437 -0
- eio_agents-0.6.0rc1/src/eio_agents/schemas/per/per-2.0.context.jsonld +1061 -0
- eio_agents-0.6.0rc1/src/eio_agents/schemas/per/per-2.0.schema.json +1233 -0
- eio_agents-0.6.0rc1/src/eio_agents/schemas/scoring/native-score-block-0.1.0-draft.schema.json +81 -0
- eio_agents-0.6.0rc1/src/eio_agents/schemas/scoring/native-score-block-0.2.0-draft.1.schema.json +82 -0
- eio_agents-0.6.0rc1/src/eio_agents/schemas/scoring/native-score-block-0.3.0-draft.1.schema.json +108 -0
- eio_agents-0.6.0rc1/src/eio_agents/schemas/scoring/native-score-block-0.3.1-draft.1.schema.json +108 -0
- eio_agents-0.6.0rc1/src/eio_agents/schemas/scoring/scoring-profile-0.1.0-draft.schema.json +55 -0
- eio_agents-0.6.0rc1/src/eio_agents/schemas/scoring/scoring-profile-0.2.0-draft.1.schema.json +55 -0
- eio_agents-0.6.0rc1/src/eio_agents/scoring/__init__.py +305 -0
- eio_agents-0.6.0rc1/src/eio_agents/scoring/engine.py +209 -0
- eio_agents-0.6.0rc1/src/eio_agents/scoring/profiles.py +202 -0
- eio_agents-0.6.0rc1/src/eio_agents/scoring/reference.py +538 -0
- eio_agents-0.6.0rc1/src/eio_agents/semantics/__init__.py +13 -0
- eio_agents-0.6.0rc1/src/eio_agents/semantics/claims.py +43 -0
- eio_agents-0.6.0rc1/src/eio_agents/semantics/coverage.py +86 -0
- eio_agents-0.6.0rc1/src/eio_agents/semantics/findings.py +93 -0
- eio_agents-0.6.0rc1/src/eio_agents/semantics/ids.py +60 -0
- eio_agents-0.6.0rc1/src/eio_agents/semantics/proof.py +105 -0
- eio_agents-0.6.0rc1/src/eio_agents/semantics/release.py +276 -0
- eio_agents-0.6.0rc1/src/eio_agents/semantics/scope.py +91 -0
- eio_agents-0.6.0rc1/src/eio_agents/semantics/why.py +142 -0
- eio_agents-0.6.0rc1/src/eio_agents/validation/__init__.py +18 -0
- eio_agents-0.6.0rc1/src/eio_agents/validation/canon.py +72 -0
- eio_agents-0.6.0rc1/src/eio_agents/validation/catalogue.py +164 -0
- eio_agents-0.6.0rc1/src/eio_agents/validation/checker.py +1340 -0
- eio_agents-0.6.0rc1/src/eio_agents/validation/data/reference-profile-0.2.0-draft.1.json +77 -0
- eio_agents-0.6.0rc1/src/eio_agents/validation/data/reference-profile-0.3.0-draft.1.json +76 -0
- eio_agents-0.6.0rc1/src/eio_agents/validation/data/reference-profile-0.3.1-draft.1.json +76 -0
- eio_agents-0.6.0rc1/src/eio_agents/validation/explain.py +137 -0
- eio_agents-0.6.0rc1/src/eio_agents/validation/explore.py +174 -0
- eio_agents-0.6.0rc1/src/eio_agents/validation/full_score.py +324 -0
- eio_agents-0.6.0rc1/src/eio_agents/validation/gates.py +65 -0
- eio_agents-0.6.0rc1/src/eio_agents/validation/native_score.py +1018 -0
- eio_agents-0.6.0rc1/src/eio_agents/validation/partial_score.py +102 -0
- eio_agents-0.6.0rc1/src/eio_agents/validation/pointer.py +33 -0
- eio_agents-0.6.0rc1/src/eio_agents/validation/privacy.py +1584 -0
- eio_agents-0.6.0rc1/src/eio_agents/validation/reader.py +114 -0
- eio_agents-0.6.0rc1/src/eio_agents/validation/redaction.py +88 -0
- eio_agents-0.6.0rc1/src/eio_agents/validation/render.py +69 -0
- eio_agents-0.6.0rc1/src/eio_agents/validation/score_basis.py +38 -0
- eio_agents-0.6.0rc1/src/eio_agents/validation/score_block_diagnostic.py +202 -0
- eio_agents-0.6.0rc1/src/eio_agents/validation/validate.py +976 -0
- eio_agents-0.6.0rc1/src/eio_agents/validation/verify.py +474 -0
- eio_agents-0.6.0rc1/tests/conftest.py +10 -0
- eio_agents-0.6.0rc1/tests/data/native/author_native.py +153 -0
- eio_agents-0.6.0rc1/tests/data/native/native.bundle.json +520 -0
- eio_agents-0.6.0rc1/tests/data/native/native.per.jcs +1 -0
- eio_agents-0.6.0rc1/tests/data/native/native.rc1_problems.json +4 -0
- eio_agents-0.6.0rc1/tests/data/native/synthetic-cited-native.bundle.json +344 -0
- eio_agents-0.6.0rc1/tests/data/native/v0_6/native.bundle.json +520 -0
- eio_agents-0.6.0rc1/tests/data/native/v0_6/native.per.jcs +1 -0
- eio_agents-0.6.0rc1/tests/data/native/v0_6/native.rc1_problems.json +4 -0
- eio_agents-0.6.0rc1/tests/data/native/v0_6/source-complete.bundle.json +658 -0
- eio_agents-0.6.0rc1/tests/data/native/v0_6/source-complete.per.jcs +1 -0
- eio_agents-0.6.0rc1/tests/data/native/v0_6/source-complete.rc5-policy-draft.per.jcs +1 -0
- eio_agents-0.6.0rc1/tests/data/native/v0_6/synthetic-cited-native.bundle.json +589 -0
- eio_agents-0.6.0rc1/tests/data/reference/decision_vectors.json +58 -0
- eio_agents-0.6.0rc1/tests/full_native_score_case.py +106 -0
- eio_agents-0.6.0rc1/tests/historical/partial_score_gate_0_5.py +93 -0
- eio_agents-0.6.0rc1/tests/test_adapters.py +61 -0
- eio_agents-0.6.0rc1/tests/test_bundle.py +1287 -0
- eio_agents-0.6.0rc1/tests/test_catalogue_split_draft.py +201 -0
- eio_agents-0.6.0rc1/tests/test_ci_collection.py +19 -0
- eio_agents-0.6.0rc1/tests/test_cli.py +109 -0
- eio_agents-0.6.0rc1/tests/test_context.py +24 -0
- eio_agents-0.6.0rc1/tests/test_current_release_fixtures.py +60 -0
- eio_agents-0.6.0rc1/tests/test_evidence.py +110 -0
- eio_agents-0.6.0rc1/tests/test_full_native_score_gate.py +127 -0
- eio_agents-0.6.0rc1/tests/test_full_score_verifier.py +44 -0
- eio_agents-0.6.0rc1/tests/test_goldens.py +59 -0
- eio_agents-0.6.0rc1/tests/test_ids_and_io.py +66 -0
- eio_agents-0.6.0rc1/tests/test_import_surface.py +180 -0
- eio_agents-0.6.0rc1/tests/test_l2_exit_deviations.py +456 -0
- eio_agents-0.6.0rc1/tests/test_l3b_explore.py +70 -0
- eio_agents-0.6.0rc1/tests/test_l5a_native_packaged.py +71 -0
- eio_agents-0.6.0rc1/tests/test_l5a_native_projection.py +84 -0
- eio_agents-0.6.0rc1/tests/test_l5a_neutral_namespace.py +50 -0
- eio_agents-0.6.0rc1/tests/test_layering.py +239 -0
- eio_agents-0.6.0rc1/tests/test_layout.py +237 -0
- eio_agents-0.6.0rc1/tests/test_limitations.py +88 -0
- eio_agents-0.6.0rc1/tests/test_native.py +212 -0
- eio_agents-0.6.0rc1/tests/test_native_context_gap_fidelity.py +67 -0
- eio_agents-0.6.0rc1/tests/test_native_full_wire.py +73 -0
- eio_agents-0.6.0rc1/tests/test_native_proof_verifier.py +46 -0
- eio_agents-0.6.0rc1/tests/test_native_reportability.py +187 -0
- eio_agents-0.6.0rc1/tests/test_native_score_gate.py +504 -0
- eio_agents-0.6.0rc1/tests/test_native_score_inputs.py +152 -0
- eio_agents-0.6.0rc1/tests/test_native_score_preview.py +151 -0
- eio_agents-0.6.0rc1/tests/test_native_scored_end_to_end.py +88 -0
- eio_agents-0.6.0rc1/tests/test_native_scoring_seam.py +33 -0
- eio_agents-0.6.0rc1/tests/test_native_strict_proof_draft.py +141 -0
- eio_agents-0.6.0rc1/tests/test_neutral_constants.py +168 -0
- eio_agents-0.6.0rc1/tests/test_neutral_data_split.py +56 -0
- eio_agents-0.6.0rc1/tests/test_neutral_dependencies.py +186 -0
- eio_agents-0.6.0rc1/tests/test_neutral_floor_boundary.py +33 -0
- eio_agents-0.6.0rc1/tests/test_ontology.py +69 -0
- eio_agents-0.6.0rc1/tests/test_partial_score_gate.py +22 -0
- eio_agents-0.6.0rc1/tests/test_privacy.py +272 -0
- eio_agents-0.6.0rc1/tests/test_proof_group_exploration.py +141 -0
- eio_agents-0.6.0rc1/tests/test_public_contract_resources.py +28 -0
- eio_agents-0.6.0rc1/tests/test_rc4_explain.py +104 -0
- eio_agents-0.6.0rc1/tests/test_rc4_policy_preview.py +135 -0
- eio_agents-0.6.0rc1/tests/test_reference_basis.py +54 -0
- eio_agents-0.6.0rc1/tests/test_reference_decision_vectors.py +40 -0
- eio_agents-0.6.0rc1/tests/test_reference_draft_metric_values.py +339 -0
- eio_agents-0.6.0rc1/tests/test_reference_membership.py +105 -0
- eio_agents-0.6.0rc1/tests/test_reverify_l2.py +730 -0
- eio_agents-0.6.0rc1/tests/test_score_basis.py +61 -0
- eio_agents-0.6.0rc1/tests/test_scoring_engine.py +218 -0
- eio_agents-0.6.0rc1/tests/test_semantics.py +119 -0
- eio_agents-0.6.0rc1/tests/test_stress.py +62 -0
- eio_agents-0.6.0rc1/tests/test_tools.py +31 -0
- eio_agents-0.6.0rc1/tests/test_uuidv5_instance_view.py +43 -0
- eio_agents-0.6.0rc1/tests/test_verifier_catalogue_independence.py +65 -0
- eio_agents-0.6.0rc1/tests/test_verifier_selftest.py +114 -0
- eio_agents-0.6.0rc1/tests/test_verify.py +155 -0
- eio_agents-0.6.0rc1/tests/test_views.py +65 -0
- eio_agents-0.6.0rc1/tests/test_xneu_l5a.py +109 -0
- eio_agents-0.6.0rc1/tools/build_rc3_scored_schema.py +64 -0
- eio_agents-0.6.0rc1/tools/eio_digests.py +106 -0
- eio_agents-0.6.0rc1/tools/eio_gates.py +1745 -0
- eio_agents-0.6.0rc1/tools/l5a_native_projector.py +13 -0
- eio_agents-0.6.0rc1/tools/l5a_neutral_namespace.py +148 -0
- eio_agents-0.6.0rc1/tools/l5a_neutralize_eio_schema.py +61 -0
- eio_agents-0.6.0rc1/tools/reissue_import_pins.py +52 -0
- eio_agents-0.6.0rc1/tools/reissue_public_fixtures.py +63 -0
- eio_agents-0.6.0rc1/tools/snapshots/eio-0.3.0-baseline.json +315 -0
- eio_agents-0.6.0rc1/tools/xneu_l5a.py +186 -0
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Python caches and builds
|
|
2
|
+
__pycache__/
|
|
3
|
+
*.py[cod]
|
|
4
|
+
*.egg-info/
|
|
5
|
+
build/
|
|
6
|
+
dist/
|
|
7
|
+
.eggs/
|
|
8
|
+
|
|
9
|
+
# Virtual environments
|
|
10
|
+
.venv/
|
|
11
|
+
venv/
|
|
12
|
+
|
|
13
|
+
# Tool caches and reports
|
|
14
|
+
.pytest_cache/
|
|
15
|
+
.ruff_cache/
|
|
16
|
+
.mypy_cache/
|
|
17
|
+
.pyright/
|
|
18
|
+
.tox/
|
|
19
|
+
.nox/
|
|
20
|
+
.coverage
|
|
21
|
+
.coverage.*
|
|
22
|
+
htmlcov/
|
|
23
|
+
coverage.xml
|
|
24
|
+
|
|
25
|
+
# Editors and operating systems
|
|
26
|
+
.idea/
|
|
27
|
+
.vscode/
|
|
28
|
+
*.swp
|
|
29
|
+
.DS_Store
|
|
30
|
+
Thumbs.db
|
|
31
|
+
|
|
32
|
+
# Local environment files
|
|
33
|
+
.env
|
|
34
|
+
|
|
35
|
+
# Local working directories
|
|
36
|
+
.progress/
|
|
37
|
+
|
|
38
|
+
# Owner-only publishing checklist (not for publication)
|
|
39
|
+
PUBLISHING_CHECKLIST.md
|
|
40
|
+
|
|
41
|
+
# Outputs of the quick start, written to the repository root
|
|
42
|
+
/*.per.json
|
|
43
|
+
/*.per.jcs
|
|
@@ -0,0 +1,426 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to EIO-Agents (the `eio-agents` library) are documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog 1.1.0](https://keepachangelog.com/en/1.1.0/). Library versions follow
|
|
6
|
+
[PEP 440](https://peps.python.org/pep-0440/) with the meaning of Semantic Versioning; see
|
|
7
|
+
[docs/versioning.md](docs/versioning.md). EIO releases have their own changelog at
|
|
8
|
+
[src/eio_agents/ontology/data/CHANGELOG.md](src/eio_agents/ontology/data/CHANGELOG.md).
|
|
9
|
+
|
|
10
|
+
Every entry states the bundled EIO release, the PER version, and whether record bytes change. The `.devN` versions
|
|
11
|
+
below are development builds; `0.6.0rc1` is a release candidate, not a claim of certification.
|
|
12
|
+
|
|
13
|
+
## [0.6.0rc1]
|
|
14
|
+
|
|
15
|
+
This release candidate bundles EIO
|
|
16
|
+
`0.6.0` (`ontology_digest` `a27cf1f3ab755446`), and adds source-complete native PER
|
|
17
|
+
`2.0.0` with reference scoring profile `0.3.1-draft.1`. Bundles without a declared proof set retain the
|
|
18
|
+
partial-score rc3 route.
|
|
19
|
+
Historical rc1 and EIO 0.4 records require their matching adapter and pinned release.
|
|
20
|
+
The rc4, L5a/S1b, L3s and L4 notes below describe earlier candidate stages, not the current draft.
|
|
21
|
+
Record bytes changed during those stages: R0→R3S for structural privacy at L3s, then R3S→R4 for
|
|
22
|
+
the scoring profile and rc2 scores block at L4. The native rc3 draft has its own pinned vectors.
|
|
23
|
+
|
|
24
|
+
### Changed (PER 2.0.0 release candidate)
|
|
25
|
+
|
|
26
|
+
- A source-complete native bundle with an explicit proof set selects PER `2.0.0` and
|
|
27
|
+
reference profile `0.3.1-draft.1`. The canonical schema identifier is
|
|
28
|
+
`https://www.proofagent.ai/eio-agents/schema/per/2.0.0/per.schema.json`; website deployment and live verification remain separate gates.
|
|
29
|
+
- The draft minimum-score policy review is evaluated when readiness is measured; missing required source inputs
|
|
30
|
+
still withhold the affected score. The historical rc3 partial route remains available.
|
|
31
|
+
- Record bytes change: yes. The PER version and schema ID change record headers and their canonical digests. The synthetic
|
|
32
|
+
source-complete PER 2.0.0 vector is pinned at `tests/data/native/v0_6/source-complete.per.jcs`; the historical rc5
|
|
33
|
+
vector is retained as `source-complete.rc5-policy-draft.per.jcs`.
|
|
34
|
+
- The release-facing quick start, API, CLI and verification pages identify the current 0.6 synthetic fixture separately
|
|
35
|
+
from historically pinned examples. This documentation correction does not change record bytes.
|
|
36
|
+
|
|
37
|
+
### Earlier change (unpublished rc4 full-score proposal)
|
|
38
|
+
|
|
39
|
+
- A source-complete native bundle now projects rc4 full-score PER with independently rederived
|
|
40
|
+
Q/E/C/G, overall readiness, decisive/reportable proof sets and four-component Governance G
|
|
41
|
+
without evidence freshness. Missing required sources withhold the affected score; rc3 bytes
|
|
42
|
+
are never silently interpreted under rc4.
|
|
43
|
+
- Added privacy-safe rc4 `explain --list`, numeric axis/metric/readiness summaries, and explicit
|
|
44
|
+
rc4 identifiers in `standards()` while retaining the historical rc3 keys.
|
|
45
|
+
- The package-version proposal changes the converter version written into new record headers;
|
|
46
|
+
canonical PER bytes and digests therefore change and must be reissued/gated before promotion.
|
|
47
|
+
|
|
48
|
+
### Earlier change (L5a/S1b native draft)
|
|
49
|
+
|
|
50
|
+
- At that stage, the bundled manifest and release digests identified EIO `0.5.0-draft.1` (`ontology_digest`
|
|
51
|
+
`4cbe3a904af9038e`). The neutral native PER schema is `2.0.0-rc3-draft`; its proposed
|
|
52
|
+
`w3id.org` identifier does not establish a live public endpoint.
|
|
53
|
+
- Native records use the rc3 draft vocabulary and schema. Validated native scoring inputs can
|
|
54
|
+
produce a partial `reference-draft` score with independent checks; governance (G) and
|
|
55
|
+
readiness remain withheld when the required source evidence is unavailable. The owner #22
|
|
56
|
+
publication hold remains in force.
|
|
57
|
+
|
|
58
|
+
### Changed (L4: EIO-Agents scoring, post-L3s rebase)
|
|
59
|
+
|
|
60
|
+
- Added `eio_agents.scoring.engine`: the readiness-index engine with no numeric defaults; parameters come from a
|
|
61
|
+
scoring-profile document. Added the profile registry, attested-profile mechanism and independent B4 schema/digest
|
|
62
|
+
validation. An adapter producer carries its profile document in the bundle; the draft EIO reference-profile API is
|
|
63
|
+
present but its scoring rules remain for S1b.
|
|
64
|
+
- Added the PER 2.0.0-rc2-draft schema. `scores.scoring_profile` is `{id, version, sha256}` and G component ids are
|
|
65
|
+
profile-declared. L3s's producer and independent verifier privacy tables now classify these public structural leaves,
|
|
66
|
+
admit only the reviewed harness-2.x/2.1.0 identity and six reviewed G ids for the L4 attested path, and retain all
|
|
67
|
+
fingerprint/resolve behaviour. New attested identities need an explicit trusted approval path before publication;
|
|
68
|
+
digest consistency alone does not make arbitrary identifiers private-safe.
|
|
69
|
+
- Removed `_vendored` and `_legacy`, their private-import exemptions and the vendored NOTICE entry. The harness adapter
|
|
70
|
+
owns its copied Report extractors, governance classifier and attested harness-2.x profile document.
|
|
71
|
+
- Reissued the same 13 frozen records as R4 from R3S. The reviewed diff changes only rc2/scoring leaves: FIN_3 and EXAM_B
|
|
72
|
+
G 52→46; credit-underwriter replay readiness 80.4→82.2. Claim/finding identities, privacy transformations and release
|
|
73
|
+
states are unchanged. `REFERENCE_R4.md` and `diff/REVIEWED_DIFF.md` in the isolated candidate record the exact digests.
|
|
74
|
+
|
|
75
|
+
### Changed (L3s: the structural privacy fix, owner decisions #31 and #32)
|
|
76
|
+
|
|
77
|
+
- The closed field table (`eio_agents.per.privacy`): every string of a projected record, member names included, is a value
|
|
78
|
+
of the release's or the PER schema's vocabulary (checked for membership), a structural value of a recorded form, a
|
|
79
|
+
PROD-42 excerpt, a fingerprint `sha256-<64 hex>` of the exact producer text (plain SHA-256 over its UTF-8 bytes; keyed
|
|
80
|
+
before the first upload), or a text rendered from these. Producer free text (the agent's goal, role and business case,
|
|
81
|
+
model ids, persona names, capsule caveats, policy and profile names, fact sources, tool and retrieval names, context
|
|
82
|
+
artifact and searched file names, metric and component labels, custom scenario labels, limitation parameters) is
|
|
83
|
+
carried as its fingerprint; a summary shows `sha256-` and 12 hex digits, the full value staying in its params. A field
|
|
84
|
+
the table does not list fails closed (`PRIVACY_UNCLASSIFIED`); a record string equal to a producer text of the bundle
|
|
85
|
+
fails too (`PRIVACY_CLEAR_TEXT`). The round 2-4 pattern rules stay as a second layer; declared structural values (D-53)
|
|
86
|
+
stay form-checked until S2.
|
|
87
|
+
- A behavioural finding's fingerprint takes its scenario label's record value (a trap-library label in clear, any other
|
|
88
|
+
label as its fingerprint), so the verifier recomputes it from the record.
|
|
89
|
+
- The verifier's twin (`eio_agents.validation.privacy`): its own table; the new row W1 (every record string classified
|
|
90
|
+
and of its class); X1 renders a fingerprint in its display form; D2 runs on the record's clear view and checks every
|
|
91
|
+
fingerprint and decision against the bundle (T4) and that no producer text is in clear (T5).
|
|
92
|
+
- Record bytes: every record changes in its fingerprinted, decided and rendered fields only; claim ids, finding ids and
|
|
93
|
+
fingerprints, claim states, predicates and turns, the release state, readiness and every score number are unchanged
|
|
94
|
+
(the reviewed re-issue R3S). The golden JCS, the native vector's record and the self-test's FIN_3 record are re-issued.
|
|
95
|
+
|
|
96
|
+
### Added (L3s)
|
|
97
|
+
|
|
98
|
+
- `eio_agents.resolve(rec, bundle)`, `eio-agents resolve RECORD BUNDLE` and `eio-agents explain RECORD TARGET --local
|
|
99
|
+
BUNDLE`: every withheld value with its real text from the local bundle (display only; nothing is added to the record).
|
|
100
|
+
|
|
101
|
+
### Added
|
|
102
|
+
|
|
103
|
+
- Public documentation: a rewritten README, and `docs/` pages on concepts, the quick start, the Python API, the command
|
|
104
|
+
line, verification, standards coverage, and versioning with the roadmap steps L1 to L6.
|
|
105
|
+
- Project files: `CONTRIBUTING.md`, `CODE_OF_CONDUCT.md` (Contributor Covenant 2.1), `SECURITY.md`, `GOVERNANCE.md`,
|
|
106
|
+
`CITATION.cff`, `.gitignore` and `.gitattributes`.
|
|
107
|
+
- Package metadata: project URLs, keywords and classifiers.
|
|
108
|
+
- `py.typed`: the package is marked as typed (`Typing :: Typed`).
|
|
109
|
+
- Optional extras `lint` (ruff, pinned), `build` (build, twine) and `dev` (all tools, with pre-commit).
|
|
110
|
+
- Development tooling: ruff configuration in `pyproject.toml`, `.pre-commit-config.yaml` (byte-exact paths excluded), a
|
|
111
|
+
CI workflow (lint; tests on Python 3.10 to 3.14; minimum dependency versions; the built wheel tested alone in a clean
|
|
112
|
+
environment; goldens and conformance tools), a manual release workflow with PyPI trusted publishing, issue and pull
|
|
113
|
+
request templates, Dependabot configuration and CODEOWNERS.
|
|
114
|
+
- L2a (structure only; record bytes unchanged): `eio_agents.base`, the bottom layer (`base.canon`: JCS, `stable_digest`,
|
|
115
|
+
sha256 strings, number rules; `base.errors`: `ConversionError`, `require`). `eio_agents.adapters`, the producer-adapter
|
|
116
|
+
interface (`ProducerAdapter` protocol with `name`, `version`, `kind = "adapter"`, `to_bundle(raw) -> dict`, and
|
|
117
|
+
`adapter_metadata`), with no registry, no discovery and no entry points. `Ontology.witnessing_anchored(ref)`.
|
|
118
|
+
`convert`, `convert_file` and `verify` take `*, ontology=None`. New tests: `tests/test_layering.py` (the import
|
|
119
|
+
direction of every module, and fresh-process checks that neutral subpackages never load the staging area) and
|
|
120
|
+
`tests/test_adapters.py`.
|
|
121
|
+
|
|
122
|
+
- L2b (the seam split; record bytes unchanged): the evaluation bundle, archive schema 3 draft 1, as a JSON Schema
|
|
123
|
+
(`eio_agents.schemas.bundle_schema()`, `schemas/bundle/bundle-3.0.0-draft.1.schema.json`), with the contract sections
|
|
124
|
+
header, provenance, sources, scope, context_assessment, graph, claims, ballots, trials, stage_records and limitations,
|
|
125
|
+
plus the adapter-only `producer_declared` section (scenario labels and severity, the producer capability registry, the
|
|
126
|
+
resolved context-link rows and the generic score-input section `{axis, value, components [{id, value}]}`).
|
|
127
|
+
`eio_agents.per.project(bundle, *, ontology=None)`, the neutral projection: section validation, the producer-declared
|
|
128
|
+
acceptance rule (rejected for `kind: native`, `PRODUCER_DECLARED_NOT_ACCEPTED`), stage-record digests, recompute of
|
|
129
|
+
claim ids, span and receipt refs and pooled votes, then the views. A bundle without score inputs projects `scores` as
|
|
130
|
+
null. Neutral halves of the split plan §3.10 seams: `adjudication.pool`, `adjudication.invalid_because`,
|
|
131
|
+
`semantics.scope.qualify`, `semantics.claims.make_claim`, `semantics.findings.findings`, `semantics.proof.claim_proven`
|
|
132
|
+
(rc1 rule unchanged), `semantics.release.gates` and `release`, `semantics.coverage.census`,
|
|
133
|
+
`compliance.select_frameworks`, `resolvers.natural_resolver`, `reliability.reliability_block` over trial records,
|
|
134
|
+
`scoring.ScoreView`, the ref constructors `evidence.refs.span_ref`, `receipt_ref`, `computed_ref`, and `per.header`.
|
|
135
|
+
`ConversionError.code` (the typed error code). The staged adapter `eio_agents._legacy.old_report_converter.to_bundle(raw)`.
|
|
136
|
+
Frozen X-TWIN vectors: `tests/data/bundles/` (3 goldens, 4 stress archives, `SHA256SUMS`), re-frozen with
|
|
137
|
+
`tests/freeze_bundles.py`; new tests `tests/test_bundle.py`.
|
|
138
|
+
|
|
139
|
+
- L2c (the neutral API; record bytes unchanged: the 3 goldens, 4 stress and 6 replay records equal R0):
|
|
140
|
+
`eio_agents.validation.validate(rec)`, `validate_bundle(bundle)`, `check_one(rec)` and `verify(rec, bundle, *,
|
|
141
|
+
rederived)`, all in process. `eio_agents.verify(rec, bundle)` re-projects the bundle in process and checks it with the
|
|
142
|
+
independent verifier, including VER-5 per locator kind over the bundle's `sources` (turn spans, tool receipts, typed
|
|
143
|
+
absences, context spans and absences, the declared archive pointer, turn digests, claim decisions). Contract §6.2 step
|
|
144
|
+
7: `per.project` validates the record it returns (the PER schema and the release's ids; typed code `PER_INVALID`),
|
|
145
|
+
accepting only the rc1 requirements that carry ProofAgent vocabulary for a native producer, listed with their §5.3 row
|
|
146
|
+
in `per/data/rc1_only.json`. Closed vocabularies of the loaded release checked on every bundle (claim states, evidence
|
|
147
|
+
kinds, source types and anchors, tier, region, autonomy, domains, facts, frameworks, the policy object, severities, and
|
|
148
|
+
the claims, turns and predicates that declared items name; codes `BUNDLE_VOCABULARY` and `BUNDLE_SCOPE`). The witness
|
|
149
|
+
flag and anchor of every ref are recomputed from the release; a turn span must point into the declared turn source; a
|
|
150
|
+
native producer mints no juror citation. `eio_agents.semantics.release.RELEASE_SEMANTICS` (the release-semantics
|
|
151
|
+
version, a core constant) and `metric_label` (gate reasons name the `eio.metric.*` id when no label is declared).
|
|
152
|
+
`eio_agents.scoring.published_metric_set` (the published metric set is the declared scoring profile's; the harness-2.x
|
|
153
|
+
profile data declares the six metrics that carry a harness metric key). `python -m eio_agents`. X-NATIVE vector:
|
|
154
|
+
`tests/data/native/` (a hand-authored native bundle, its expected PER and its pinned rc1-only problem list, written by
|
|
155
|
+
`author_native.py` with EIO-Agents only). New tests: `tests/test_native.py`, `tests/test_verify.py`,
|
|
156
|
+
`tests/test_neutral_constants.py` (the L2 exit AST/constant test with its exact allowlist).
|
|
157
|
+
|
|
158
|
+
- L2 fix round 1 (the fixes of the final L2 verification; record bytes unchanged: the 3 goldens, 4 stress and 6 replay
|
|
159
|
+
records equal R0, and the X-NATIVE record and its pinned problem list are unchanged): the builders
|
|
160
|
+
`evidence.refs.no_matching_call_ref` (the typed absence of a named tool call over listed turns) and
|
|
161
|
+
`evidence.context_refs.policy_span_ref` (a POLICY_SPAN over a span of an embedded context artifact; the projector's
|
|
162
|
+
context lines use it); `per.bundle.accept_native`, `check_episodes` and `check_native_sources`;
|
|
163
|
+
`per.projection.ProjectionRefStore`. New tests: the verifier's probes and the new rules as `INVALID` cases in
|
|
164
|
+
`tests/test_bundle.py` (among them the 13 bundles that crashed untyped), tests that a declared ref that recomputes is
|
|
165
|
+
accepted, the relaxation rows pinned to their exact rc1 errors (`tests/test_native.py`), the verifier twin of the new
|
|
166
|
+
rules (`tests/test_verify.py`), and the pinned Report-key exclusion set of the AST/constant test.
|
|
167
|
+
|
|
168
|
+
- L2 fix round 2 (the fixes of the re-verification of L2; record bytes unchanged: the 19 R0 inputs, the 7 frozen
|
|
169
|
+
bundles, the 3 goldens, the X-NATIVE record and its pinned problem list, and the rule-6 context vector):
|
|
170
|
+
`per.bundle.check_names` (step 1, the name rules), `per.bundle.check_context_search` (the context-search recompute shared
|
|
171
|
+
by gaps and absences), `per.bundle.loads` and `validation.validate.loads_bundle` (bundle text as I-JSON), and
|
|
172
|
+
`per.evidence.ref_key` (the 03 §5.6 rule 1 key). New tests: `tests/test_reverify_l2.py` (every (kind, source type,
|
|
173
|
+
anchor) combination of the release, in the projector and in the verifier twin; the re-verification probes; the R-3
|
|
174
|
+
ordering; the I-JSON reader) and 35 `INVALID` cases in `tests/test_bundle.py`.
|
|
175
|
+
|
|
176
|
+
- L3 (the ProofAgent adapter leaves EIO-Agents; record bytes unchanged: the 19 R0 inputs through the adapter, the 3
|
|
177
|
+
goldens, the 10 frozen bundles, the X-NATIVE record and its pinned problem list): the ProofAgent adapter (the legacy
|
|
178
|
+
crosswalk, the archive schema 1/2 reader, the recipes, the report converter and the legacy verifier) lives in the
|
|
179
|
+
ProofAgent Harness as `proofagent_harness.eio_adapter` (`to_bundle`, `convert_legacy`, `verify_legacy`,
|
|
180
|
+
`ADAPTER_VERSION`), with its tests and fixtures; `_legacy/` holds only the vendored-scorer loader `harness2x` until L4.
|
|
181
|
+
The frozen context bundles `tests/data/bundles/context/` (the FIN_3 and MED_1 bundles with the FIN agent's three
|
|
182
|
+
artifacts, embedded or by digest) replace the stored-report inputs of the neutral tests. The fixes of the L2 exit
|
|
183
|
+
deviations D-29 to D-35 (the final L2 re-verification, F-1 to F-13): `Ontology.data_classes` and
|
|
184
|
+
`Ontology.artifact_kinds` and the verifier reader's own copies; `evidence.refs.state_fact_ref` (a STATE_FACT over a
|
|
185
|
+
declared state snapshot), `evidence.refs.CALL_TERM` and `QUOTE_ANCHORS`; `evidence.context_refs.withheld`,
|
|
186
|
+
`EXCERPTABLE`, `confidential_digests`, `effective` and `casefold_offsets`; `semantics.proof.w1_unmet`;
|
|
187
|
+
`validation.checker.Checker.proof_candidate`; bundle schema draft 1 gains the optional `sources.state_field` and
|
|
188
|
+
`turns[].state` (no frozen bundle changes). New tests: `tests/test_l2_exit_deviations.py` and 30 `INVALID` cases in
|
|
189
|
+
`tests/test_bundle.py` (the re-verification's probes T01-T31 that now fail closed).
|
|
190
|
+
|
|
191
|
+
### Changed
|
|
192
|
+
|
|
193
|
+
- L3. `convert` takes an evaluation bundle only: a stored ProofAgent Harness report (archive schema 1 or 2) is refused
|
|
194
|
+
with `BUNDLE_INPUT`, whose message names its converter (`proofagent_harness.eio_adapter.convert_legacy`); the
|
|
195
|
+
stored-report branch of D-4 and its lazy import of `_legacy` are deleted. `harness2x` no longer imports the legacy
|
|
196
|
+
crosswalk (its `lx` argument is read by duck typing). The self-test's neutral share (31 of the 53 injected defects) stays
|
|
197
|
+
here; the adapter's share (22) runs in the harness. Rule changes, each byte-neutral for every gated input, that fail
|
|
198
|
+
closed where L2 failed open or untyped (L2 exit D-29 to D-35): a context artifact's data class and kind must be ids of
|
|
199
|
+
the release (`BUNDLE_VOCABULARY`; an unknown class read as not confidential); a lone surrogate in bundle text or in a
|
|
200
|
+
string of a dict bundle is `BUNDLE_INPUT` (it reached an untyped `UnicodeEncodeError`), a float tool-call index is
|
|
201
|
+
`BUNDLE_RECOMPUTE` (untyped `TypeError`), and a citation key inside a free-form producer field is `PER_INVALID` (untyped
|
|
202
|
+
`KeyError`); a declared ref carries no statement (a declared CALCULATION or TYPED_ABSENCE never converts); PROD-43 reads
|
|
203
|
+
an artifact as the most restrictive declaration of its bytes, and withholds the excerpt of every data class but
|
|
204
|
+
`eio.data.public` and `eio.data.internal` (read fail-closed; the spec names model-confidential); a context text whose
|
|
205
|
+
casefold changes its length is searched through an offset map instead of being skipped (it gave false absences); a
|
|
206
|
+
state fact over a declared state snapshot is rebuilt (the adapter's R-PERSIST recipe converts again, with the frozen
|
|
207
|
+
eio-per oracle's bytes); a claim whose contract check records `no_witnessing_ref` is not PROVEN (W1); named-call terms
|
|
208
|
+
are lower-case ASCII names; an exact or casefold span quotes at least one character; a context-artifact name is in NFC
|
|
209
|
+
(`BUNDLE_SCHEMA` at step 1); a context-search term is plain text and a searched name does not spell an embedded
|
|
210
|
+
artifact's name another way; the same policy text at the same offsets of two artifacts fails closed with its name
|
|
211
|
+
(the 03 §6 collision rule is not implemented until S5). The verifier applies each rule independently (`validate_bundle`
|
|
212
|
+
B0, B1, B3; VER-5 in `D2`; the W1 precondition in `F1` and the cap check).
|
|
213
|
+
|
|
214
|
+
- L3 fix round 1 (an adversarial verification of the rules above; record bytes unchanged for every gated input). Every
|
|
215
|
+
producer-chosen text that reaches the record is the bundle's or the release's: the layout names `turn_source_ref`,
|
|
216
|
+
`calls_field` and `state_field` are identifiers (`BUNDLE_SCHEMA`), the archive and argument pointers hold identifier
|
|
217
|
+
and index tokens; a ref that no recipe rebuilds names a source the bundle declares (the turn source, the state field,
|
|
218
|
+
a context artifact, a retrieval source) and carries no tool receipt; a native producer's context search names declared
|
|
219
|
+
artifacts with release checklist terms (the gap's control's); an adapter producer may also name a portable file that
|
|
220
|
+
it does not declare and search a printable ASCII phrase of its own checklist; a named-call term is at most 64
|
|
221
|
+
characters; a term that is not a release checklist term (nor, for a named call, part of a declared tool name or tool
|
|
222
|
+
schema) and an undeclared name reproduce no confidential content the bundle carries: three consecutive words of a
|
|
223
|
+
withheld artifact's text, or a whole tool-call or state value that identifies (two words, a digit or an '@')
|
|
224
|
+
(`per.bundle.Withheld`); scenario labels and context-link keys are labels and a context link's `via` is its link
|
|
225
|
+
(`BUNDLE_RECOMPUTE`, `BUNDLE_VOCABULARY`). The record's `provenance.inputs.context_artifacts` must be the bundle's
|
|
226
|
+
`sources.context_artifacts`. PROD-43 withholds the same text in another normal form or with other line ends
|
|
227
|
+
(`evidence.context_refs.normalized_digest`). An integer too long for Python to read or beyond the IEEE 754 double
|
|
228
|
+
range, and in a dict bundle a value JSON has not (a tuple, a set, bytes, an integer member name), are `BUNDLE_INPUT`,
|
|
229
|
+
and the canonical form types such an integer `NON_FINITE` (they raised untyped). A context search reads 'İ' as 'i'
|
|
230
|
+
(`evidence.context_refs.fold`). A STATE_FACT witnesses only a predicate whose evidence contract names STATE_FACT
|
|
231
|
+
(`semantics.proof.witnesses`). The verifier applies each rule with its own code (B0, B1, B3, A1, C3, D2, F1). New tests:
|
|
232
|
+
12 in `tests/test_l2_exit_deviations.py` and 53 `INVALID` cases in `tests/test_bundle.py` (`L3r1`).
|
|
233
|
+
|
|
234
|
+
- L3 fix round 2 (a second verification of the rules above; record bytes unchanged for every gated input). The names a
|
|
235
|
+
record carries hold no withheld content in any spelling: the declared context-artifact names (a ref's `source_ref`, a
|
|
236
|
+
context search's file names, `provenance.inputs`, the AI-BOM), the layout names, the archive-pointer keys and pointers,
|
|
237
|
+
tool-call names and retrieval sources, scenario labels and context-link keys (`per.bundle.check_withheld_names`,
|
|
238
|
+
`BUNDLE_RECOMPUTE`); a text is read verbatim, normalized (NFKD, invisible characters dropped, look-alike letters read
|
|
239
|
+
as Latin), case-folded and snake, kebab and camel case folded (`per.bundle.words`). The record-wide rule: no string of
|
|
240
|
+
the record, nor of the bundle where a record carries it in clear, carries withheld content (`WITHHELD_CONTENT`), outside
|
|
241
|
+
three named exemptions (the PROD-42 excerpt of a turn span, the agent's goal and role, a tool-call name that a
|
|
242
|
+
withheld text names as a whole token). An undeclared searched name is exempt from the artifact-text rule only when it
|
|
243
|
+
equals a declared artifact's file name, and only a public or internal tool schema exempts a named-call term. A
|
|
244
|
+
limitation's field path is one of its catalogue paths and a completed path names a value of the record (`PER_INVALID`,
|
|
245
|
+
as the verifier reads it); a human decision cites a HUMAN_SIGNOFF over HUMAN_REVIEW (`BUNDLE_RECOMPUTE`). The verifier
|
|
246
|
+
applies each rule with its own code (`B3`, `C2`, `D2`), and `validate_bundle` names a data class that is not of the PER
|
|
247
|
+
schema's form; a policy excerpt is checked by the record-wide rule. A producer limitation whose parameters do not
|
|
248
|
+
fill its catalogue texts (`TEMPLATE_PARAMS`) and a score-input axis that names an unknown context criterion
|
|
249
|
+
(`BUNDLE_SCORE_INPUTS`) raised an untyped KeyError, and a limitation parameter named like an argument of the
|
|
250
|
+
projector's helper an untyped TypeError (the parameters are now read as a dict); `validate_bundle` names the first
|
|
251
|
+
two and an unknown limitation id (`B3`). New tests: 9 in `tests/test_l2_exit_deviations.py` (with the parametrized
|
|
252
|
+
twin-parity cases) and 40 `INVALID` cases in `tests/test_bundle.py` (`L3r2`).
|
|
253
|
+
- L3 fix round 3 (a third verification; record bytes unchanged for every gated input). The record-wide rule counts
|
|
254
|
+
PROD-42's identifying classes among the tool-call and state values that name a subject (`per.bundle.subject_value`,
|
|
255
|
+
`identifying_words`): a run of four digits or more, two number groups or more, a word of letters and digits
|
|
256
|
+
('123-45-6789', '4111 1111 1111 1111', '312 555 0147', 'ACCT88419372', '0000'); a short plain number ('0.5', '42') and
|
|
257
|
+
one word ('lookup') stay out. A text is also read with its percent-encoding and JSON Pointer escapes decoded
|
|
258
|
+
(`per.bundle.decoded`). The tool-name exemption holds only for an identifier-shaped name of a tool the bundle observes
|
|
259
|
+
or a public or internal tool schema declares, that is not itself of an identifying class (a secret key or a URL token
|
|
260
|
+
of a withheld prompt is checked). A published reliability rate with a null value fails closed with `BUNDLE_SCHEMA` (an
|
|
261
|
+
untyped TypeError before); a claim's votes are null if and only if it is decided deterministically
|
|
262
|
+
(`BUNDLE_RECOMPUTE`, as the verifier's `C2` reads it). The verifier applies each rule with its own code (`B3`, `D2`),
|
|
263
|
+
and `validate_bundle` names a human decision without a HUMAN_SIGNOFF. New tests: 21 `INVALID` cases in
|
|
264
|
+
`tests/test_bundle.py` (`L3r3`) and 5 in `tests/test_l2_exit_deviations.py` (`test_r3_*`, with their parametrized
|
|
265
|
+
cases).
|
|
266
|
+
- L3 fix round 4 (a fourth verification; record bytes unchanged for every gated input). The subject rule reads every
|
|
267
|
+
scalar of the tool calls and state snapshots (a number as its JSON text: a card number sent as a JSON number) and the
|
|
268
|
+
PROD-42 identifying-class matches of the turns' questions and answers (`per.bundle.turn_subjects`), with every decimal
|
|
269
|
+
digit of any script read as its ASCII digit (`per.bundle.ascii_digit`) and JSON '\\u' escapes decoded
|
|
270
|
+
(`per.bundle.decoded`). New, the identifying-shape backstop (`per.bundle.shape_problems`, `WITHHELD_CONTENT`): no
|
|
271
|
+
string of the bundle that a record carries in clear holds an identifying-shaped token, known subject or not: four
|
|
272
|
+
digits or more whatever separates them, two digit groups or more, a word of six letters and digits or more, sixteen
|
|
273
|
+
hex characters or more, a base64 run, an e-mail address, a URL with credentials, a secret-key prefix; allowed only the
|
|
274
|
+
recorded forms of their fields (digests, claim and ref ids, run ids, short release digests, source revisions, the
|
|
275
|
+
configuration fingerprint, the checks version, run timestamps, versions), a string the release publishes, a short
|
|
276
|
+
plain decimal and the words 'base64' and 'sha256'; a ref's excerpt is PROD-42's. The verifier applies both with its
|
|
277
|
+
own code (`B3`, `D2`). New tests: 30 `INVALID` cases in `tests/test_bundle.py` (`L3r4`) and 6 in
|
|
278
|
+
`tests/test_l2_exit_deviations.py` (`test_r4_*`, with their parametrized cases).
|
|
279
|
+
|
|
280
|
+
- L2 fix round 2. A ref's witness flag and anchor count for proof only on a ref that `convert` rebuilds from the bundle's
|
|
281
|
+
own sources (a turn span, a tool receipt, a typed absence over the tool calls or over context artifacts, a policy span):
|
|
282
|
+
any other ref is accepted only as a non-witnessing ref that locates no text (no offsets, digests or excerpt), so a
|
|
283
|
+
CALCULATION, a typed absence over the answer or a state ledger, a state fact or a human sign-off with a witnessing
|
|
284
|
+
anchor, and a declared ref quoting a source the bundle does not carry fail closed (`BUNDLE_RECOMPUTE`). A turn ref that
|
|
285
|
+
locates text is always a span of the turn; anchor `turn` cites the whole turn; anchors `line` and `document` belong to a
|
|
286
|
+
POLICY_SPAN. Every name the sources are resolved by names one item: a turn index or a context-artifact name given twice,
|
|
287
|
+
or `context_texts` that are not exactly the embedded artifacts' texts, fail with `BUNDLE_SCHEMA`, and bundle text is read
|
|
288
|
+
as I-JSON (an object member given twice, a NaN or infinite number, undecodable bytes: `BUNDLE_INPUT`; before,
|
|
289
|
+
`per.project` leaked `UnicodeDecodeError`). A bundle nested more than 100 levels fails closed at read time
|
|
290
|
+
(`BUNDLE_INPUT`; before, some depths raised an untyped `RecursionError` late in the projection, whatever the caller's
|
|
291
|
+
stack), and the stored-report branch no longer leaks `RecursionError`. A context gap or
|
|
292
|
+
absence recomputes over every embedded file it names, whatever else it names, and a context absence is always the
|
|
293
|
+
builder's ref. The named-call absence takes non-empty lower-case names only (builder `INVARIANT`, projector
|
|
294
|
+
`BUNDLE_RECOMPUTE`). The evidence block orders refs by the rule 1 key, so a context line that only the scores step
|
|
295
|
+
derives (the Q axis's lines) is placed by the rule instead of raising an untyped `KeyError`. The JCS number and string
|
|
296
|
+
errors and the template parameter error carry their codes (`NON_FINITE`, `LONE_SURROGATE`, `TEMPLATE_PARAM_TYPE`). The
|
|
297
|
+
verifier: VER-5 applies the same rules (names, I-JSON, the declared-ref rule, the whole-turn anchor, receipts over the
|
|
298
|
+
tool-call list, the full statement of an absence, context absences over every embedded file, the nesting limit);
|
|
299
|
+
`validate_bundle` reports bundle text that is not I-JSON or nests too deep (`B0`) and the name rules (`B1`); `verify`
|
|
300
|
+
reports a record without a canonical form (a NaN, nesting too deep) as a failing row instead of raising. The command
|
|
301
|
+
line checks a bundle file from its bytes (`validate`), and a JSON list or nesting too deep no longer gives a traceback.
|
|
302
|
+
|
|
303
|
+
- L2 fix round 1. `convert` recomputes the computed statements and policy spans of a bundle (contract §6.2 step 2): a
|
|
304
|
+
typed absence over the declared tool calls (the whole ref, rebuilt from sources; a true absence counts 0), a typed
|
|
305
|
+
absence and a context gap over embedded context artifacts, and a POLICY_SPAN, which must point into a declared,
|
|
306
|
+
embedded artifact (no excerpt of model-confidential text, PROD-43). A declared ref with the id of a ref the projector
|
|
307
|
+
derives must be that ref (typed code `BUNDLE_RECOMPUTE`); the shared `RefStore` is unchanged. Until S7 the bundle's
|
|
308
|
+
`graph.episodes` must be the scenario-label grouping of its turns, an unlabelled turn being its own episode. A native
|
|
309
|
+
producer's bundle is its own archive: a declared `header.source_archive` is rejected (`PRODUCER_DECLARED_NOT_ACCEPTED`),
|
|
310
|
+
every stage record must be `producer: native` (`BUNDLE_STAGE_RECORDS`), and its archive pointer, tool-call pointers and
|
|
311
|
+
`transcript_sha256` must recompute from the bundle. Every turn ref, with or without text, must name the declared turn
|
|
312
|
+
source, and every ref's turn must be a turn of the bundle; a turn carries one scenario label; `header.eio` must name the
|
|
313
|
+
loaded release when the stage digests are checked. The step-7 relaxation rows (`per/data/rc1_only.json`) are pinned to
|
|
314
|
+
their exact rc1 errors (no row accepts any message). Bundle schema draft 1 types `ref.tool` (the receipt, required on a
|
|
315
|
+
TOOL_RECEIPT), `ref.statement` (required on a TYPED_ABSENCE), `ref.source_ref` (a string), `ref.span_sha256` and
|
|
316
|
+
`ref.source_sha256` (a digest or null) and `parameters.votes` (null, or non-negative integer counts), so these
|
|
317
|
+
schema-valid bundles fail with `BUNDLE_SCHEMA` instead of an untyped exception. The verifier: VER-5
|
|
318
|
+
also fails a POLICY_SPAN outside the declared artifacts, a turn ref without text outside the declared turn source, an
|
|
319
|
+
episode absence over turns the bundle lacks, and an absence that counts more than 0; the episode of a claim is the
|
|
320
|
+
union of its turns' episodes. `validate_bundle` checks the native-producer rules, and its documentation states that it
|
|
321
|
+
does not recompute.
|
|
322
|
+
|
|
323
|
+
- L2c: the proof rule reads the declared `parameters.fidelity`: a claim is `PROVEN` iff it is decided deterministically or
|
|
324
|
+
by a human, cites a witnessing anchored ref, and its fidelity is `exact` or its recurrence band `CONFIRMED`. The rc1
|
|
325
|
+
exemption for a claim without a source key is deleted, in the projector and in the verifier; a claim whose declared
|
|
326
|
+
fidelity differs from its rc1 `mapping_relation` fails closed. The verifier's mixed checks are split at their seams:
|
|
327
|
+
the neutral halves (header, EIO ids, domains, orders, claim parameters, findings, controls, scores, release,
|
|
328
|
+
reliability, limitations) are in `eio_agents.validation.checker.Checker`, the ProofAgent halves in
|
|
329
|
+
`_legacy.legacy_verifier.LegacyChecker` (its driver is now `rc1_check_one`). The command line is neutral: `eio-agents
|
|
330
|
+
project | validate | verify | explain | version`; `verify` takes `--bundle`, `validate` also checks a bundle, and a
|
|
331
|
+
missing file is reported without a traceback. `convert` takes JSON bytes or a dict (a path goes to `convert_file`);
|
|
332
|
+
bytes that are not a JSON object raise `ConversionError` with code `BUNDLE_INPUT`. `explain` returns only the
|
|
333
|
+
record's registered `eio.why.*` renderings, and raises `LookupError` for an unknown target or template. `standards()`
|
|
334
|
+
adds `ontology_sha256`, `per_schema_id`, `projector` and `version` (`per_schema` and `converter` are kept for one
|
|
335
|
+
version). A stored ProofAgent report still converts (until L3), through a lazy import, so a bundle never loads
|
|
336
|
+
`eio_agents._legacy`. Bundle schema draft 1: `header.adjudication_source`, `provenance.record.harness_llm`,
|
|
337
|
+
`sources.completeness.sentinel_locations` / `code_check_offsets`, `score_inputs.metrics[].legacy_metric` and
|
|
338
|
+
`sources.archive_pointer.archive_sha256` are optional (a native producer declares none of them); a metric `label` may
|
|
339
|
+
be null; the projector writes the archive digest into the record's archive pointer. A finding without scenario labels
|
|
340
|
+
has `traps: []` and fingerprint input null.
|
|
341
|
+
- Development status classifier `3 - Alpha`. Runtime dependencies have upper bounds: `pyyaml>=6.0,<7` and
|
|
342
|
+
`jsonschema>=4.20,<5`.
|
|
343
|
+
- `NOTICE` names EIO-Agents, gives the full revision and the correct pin location of the vendored ProofAgent Harness
|
|
344
|
+
files, and adds trademark, framework attribution and licence notes.
|
|
345
|
+
- The package license is declared as the SPDX expression `Apache-2.0`, with `LICENSE` and `NOTICE` as license files.
|
|
346
|
+
- Docstrings and comments no longer cite internal planning documents. The `convert` docstring now lists the exceptions it
|
|
347
|
+
can raise.
|
|
348
|
+
- L2a: the package root is lazy (PEP 562): `import eio_agents` imports no submodule, and `import eio_agents.ontology` (or
|
|
349
|
+
any other public subpackage) no longer loads `eio_agents._legacy`, `eio_agents._vendored` or `eio_agents.api`. The public
|
|
350
|
+
names of the root are unchanged. `api.py` no longer keeps a process-global `Ontology`: without `ontology=` each call
|
|
351
|
+
loads and verifies the bundled release. `ontology` imports only `base` and `schemas`: `STATES` and `norm_token` now live
|
|
352
|
+
in `eio_agents.ontology` (`semantics` re-exports `STATES`), and the witness rule is defined by `Ontology` (the
|
|
353
|
+
`evidence.witness` functions delegate to it), so `semantics` no longer imports `evidence`.
|
|
354
|
+
|
|
355
|
+
- L2b: `eio_agents.convert` projects an evaluation bundle (archive schema 3); a stored ProofAgent report (schema 1 or 2)
|
|
356
|
+
goes through the staged adapter first, `project(to_bundle(raw))`, with identical bytes. It also accepts JSON text. The
|
|
357
|
+
rc1 converter's ProofAgent reads (the policy step, intake, recipes, consensus log, reliability report, harness-2.x score
|
|
358
|
+
values and Report fields) now write bundle fields; everything after that reads only the bundle.
|
|
359
|
+
`evidence.refs.no_call_ref` takes `source_ref` and `calls_field` (no ProofAgent layout is assumed);
|
|
360
|
+
`reliability.band_of` reads a bundle trial record `{claim_id, ledger_key, trial_kind, reproduced_in, passes}`.
|
|
361
|
+
`CONVERTER` and `SCHEMA_URI` moved to `eio_agents.per.header` (the converter module re-exports them).
|
|
362
|
+
|
|
363
|
+
### Removed
|
|
364
|
+
|
|
365
|
+
- L3: the modules `_legacy.legacy_crosswalk`, `_legacy.schema12_adapter`, `_legacy.legacy_recipes`,
|
|
366
|
+
`_legacy.old_report_converter` and `_legacy.legacy_verifier` (moved to `proofagent_harness.eio_adapter`); the recipe for
|
|
367
|
+
authoritative checker records (its records failed `validate()`; the adapter fails such an archive closed
|
|
368
|
+
with `CHECKER_AUTHORITATIVE_UNSUPPORTED`); the child-process regeneration of the legacy verifier (`GENERATOR`,
|
|
369
|
+
`c_regen`, `c_determinism`: the adapter's `verify_legacy` re-converts in process); `api._convert_stored_report`;
|
|
370
|
+
`tests/freeze_bundles.py` (the adapter's suite regenerates the frozen bundles).
|
|
371
|
+
- L2c: `api._archive_path` and `api._run_check` (temporary files and captured output); the subprocess re-conversion in
|
|
372
|
+
`verify` (the rc1 regeneration `c_regen` / `c_determinism` stays in `_legacy.legacy_verifier` for its own command line);
|
|
373
|
+
the `convert` command (`project` replaces it); reading a path or JSON text in `convert`.
|
|
374
|
+
- Two unused imports in the tests.
|
|
375
|
+
- L2b: `eio_agents.scoring.AX`, the harness-2.x axis-key table (the score inputs are keyed by EIO axis id).
|
|
376
|
+
- L2a: the modules `eio_agents.errors` and `eio_agents.semantics.canon` (moved to `eio_agents.base.errors` and
|
|
377
|
+
`eio_agents.base.canon`; no alias), and `norm_token` from `eio_agents.semantics.scope` (now in `eio_agents.ontology`).
|
|
378
|
+
|
|
379
|
+
## [0.1.0.dev1] - 2026-09-28
|
|
380
|
+
|
|
381
|
+
Bundles EIO 0.4.0 and PER 2.0.0-rc1. Record bytes change: no; the golden records are byte-identical to `0.1.0.dev0`.
|
|
382
|
+
|
|
383
|
+
### Added
|
|
384
|
+
|
|
385
|
+
- Console script `eio-agents` (it replaces `per`); `eio-agents version` prints the library version, which is the
|
|
386
|
+
distribution version (tested).
|
|
387
|
+
- `eio_agents.ontology.load()` returns an explicit `Ontology` object. Every call reads and verifies the release and
|
|
388
|
+
returns a new object; there is no process-global cache.
|
|
389
|
+
- `eio_agents.validation`: the independent parts of the reference verifier (its own canonical form and digests, EIO
|
|
390
|
+
reader, limitation catalogue, explanation renderer, PER Pointers, redaction and gate rules, the record-level checks, and
|
|
391
|
+
`explain`). It imports no converter module (tested).
|
|
392
|
+
- `tools/eio_digests.py`, which computes and checks `RELEASE-DIGESTS.json`, and `tools/eio_gates.py`, which runs the 37
|
|
393
|
+
EIO build gates and their 40 negative vectors against the bundled release.
|
|
394
|
+
- The verifier self-test (53 injected defects) as `tests/test_verifier_selftest.py`, with its fixtures bundled.
|
|
395
|
+
- A dependency test: no module outside the vendored scorer and its loader imports ProofAgent Harness, imports it
|
|
396
|
+
dynamically, writes `sys.modules`, loads code by path or discovers plugins.
|
|
397
|
+
|
|
398
|
+
### Changed
|
|
399
|
+
|
|
400
|
+
- Distribution renamed to `eio-agents`, import package `eio_agents`.
|
|
401
|
+
- The package is split into neutral subpackages (`ontology`, `schemas`, `semantics`, `evidence`, `resolvers`,
|
|
402
|
+
`adjudication`, `reliability`, `compliance`, `scoring`, `per`, `validation`). The code that reads ProofAgent Harness
|
|
403
|
+
reports is staged in `_legacy`, and the vendored harness-2.x scorer is in `_vendored` (step L1; see
|
|
404
|
+
[docs/versioning.md](docs/versioning.md#roadmap-steps)).
|
|
405
|
+
- The EIO data moved to `ontology/data/`, and the EIO and PER schemas to `schemas/eio/` and `schemas/per/`, byte for byte.
|
|
406
|
+
- The limitation catalogue (48 ids) is a data file, `per/data/limitations.json`. Nothing parses Markdown at run time.
|
|
407
|
+
- The verifier reads only the bundled release: it has no environment variable and no default path into another
|
|
408
|
+
repository.
|
|
409
|
+
- The public API is unchanged.
|
|
410
|
+
|
|
411
|
+
### Removed
|
|
412
|
+
|
|
413
|
+
- The standards sync tool: this repository is where the EIO data and schemas are authored.
|
|
414
|
+
- The standalone explanation script, superseded by `explain`.
|
|
415
|
+
|
|
416
|
+
## [0.1.0.dev0] - 2026-09-27
|
|
417
|
+
|
|
418
|
+
Bundles EIO 0.4.0 (`ontology_digest` `ed5389af5235e4b8`) and PER 2.0.0-rc1. First package.
|
|
419
|
+
|
|
420
|
+
### Added
|
|
421
|
+
|
|
422
|
+
- `convert`, `validate`, `verify` and `explain`, and the `per` command line.
|
|
423
|
+
- Conversion and checking logic moved from the conformance tools of the PER 2.0 specification. It reproduces their golden
|
|
424
|
+
records byte for byte.
|
|
425
|
+
|
|
426
|
+
[Unreleased]: https://github.com/ProofAgent-ai/eio-agents/commits/main
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
cff-version: 1.2.0
|
|
2
|
+
message: "If you use EIO-Agents, please cite it as below."
|
|
3
|
+
type: software
|
|
4
|
+
title: "EIO-Agents: Evaluation Intelligence Ontology for AI Agents (reference library)"
|
|
5
|
+
version: 0.6.0rc1
|
|
6
|
+
license: Apache-2.0
|
|
7
|
+
repository-code: "https://github.com/ProofAgent-ai/eio-agents"
|
|
8
|
+
authors:
|
|
9
|
+
- name: "ProofAI LLC"
|
|
10
|
+
contact:
|
|
11
|
+
- name: "ProofAgent"
|
|
12
|
+
email: "support@proofagent.ai"
|
|
13
|
+
keywords:
|
|
14
|
+
- ai-agents
|
|
15
|
+
- agent-evaluation
|
|
16
|
+
- evaluation-record
|
|
17
|
+
- evidence
|
|
18
|
+
- verification
|
|
19
|
+
abstract: >-
|
|
20
|
+
Reference library for EIO (Evaluation Intelligence Ontology) and PER 2.0 evaluation records for AI agents.
|
|
21
|
+
A model-graded verdict can support but never prove a claim, and a computed per-predicate witness rule
|
|
22
|
+
decides which typed evidence can prove agent behaviour. Records are canonical and content-addressed, so
|
|
23
|
+
a recipient with the exact evaluation bundle and matching library release can re-derive a record and check its digest.
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
# Contributor Covenant Code of Conduct
|
|
2
|
+
|
|
3
|
+
## Our Pledge
|
|
4
|
+
|
|
5
|
+
We as members, contributors, and leaders pledge to make participation in our
|
|
6
|
+
community a harassment-free experience for everyone, regardless of age, body
|
|
7
|
+
size, visible or invisible disability, ethnicity, sex characteristics, gender
|
|
8
|
+
identity and expression, level of experience, education, socio-economic status,
|
|
9
|
+
nationality, personal appearance, race, caste, color, religion, or sexual
|
|
10
|
+
identity and orientation.
|
|
11
|
+
|
|
12
|
+
We pledge to act and interact in ways that contribute to an open, welcoming,
|
|
13
|
+
diverse, inclusive, and healthy community.
|
|
14
|
+
|
|
15
|
+
## Our Standards
|
|
16
|
+
|
|
17
|
+
Examples of behavior that contributes to a positive environment for our
|
|
18
|
+
community include:
|
|
19
|
+
|
|
20
|
+
* Demonstrating empathy and kindness toward other people
|
|
21
|
+
* Being respectful of differing opinions, viewpoints, and experiences
|
|
22
|
+
* Giving and gracefully accepting constructive feedback
|
|
23
|
+
* Accepting responsibility and apologizing to those affected by our mistakes,
|
|
24
|
+
and learning from the experience
|
|
25
|
+
* Focusing on what is best not just for us as individuals, but for the overall
|
|
26
|
+
community
|
|
27
|
+
|
|
28
|
+
Examples of unacceptable behavior include:
|
|
29
|
+
|
|
30
|
+
* The use of sexualized language or imagery, and sexual attention or advances of
|
|
31
|
+
any kind
|
|
32
|
+
* Trolling, insulting or derogatory comments, and personal or political attacks
|
|
33
|
+
* Public or private harassment
|
|
34
|
+
* Publishing others' private information, such as a physical or email address,
|
|
35
|
+
without their explicit permission
|
|
36
|
+
* Other conduct which could reasonably be considered inappropriate in a
|
|
37
|
+
professional setting
|
|
38
|
+
|
|
39
|
+
## Enforcement Responsibilities
|
|
40
|
+
|
|
41
|
+
Community leaders are responsible for clarifying and enforcing our standards of
|
|
42
|
+
acceptable behavior and will take appropriate and fair corrective action in
|
|
43
|
+
response to any behavior that they deem inappropriate, threatening, offensive,
|
|
44
|
+
or harmful.
|
|
45
|
+
|
|
46
|
+
Community leaders have the right and responsibility to remove, edit, or reject
|
|
47
|
+
comments, commits, code, wiki edits, issues, and other contributions that are
|
|
48
|
+
not aligned to this Code of Conduct, and will communicate reasons for moderation
|
|
49
|
+
decisions when appropriate.
|
|
50
|
+
|
|
51
|
+
## Scope
|
|
52
|
+
|
|
53
|
+
This Code of Conduct applies within all community spaces, and also applies when
|
|
54
|
+
an individual is officially representing the community in public spaces.
|
|
55
|
+
Examples of representing our community include using an official e-mail address,
|
|
56
|
+
posting via an official social media account, or acting as an appointed
|
|
57
|
+
representative at an online or offline event.
|
|
58
|
+
|
|
59
|
+
## Enforcement
|
|
60
|
+
|
|
61
|
+
Instances of abusive, harassing, or otherwise unacceptable behavior may be
|
|
62
|
+
reported to ProofAgent at support@proofagent.ai.
|
|
63
|
+
All complaints will be reviewed and investigated promptly and fairly.
|
|
64
|
+
|
|
65
|
+
All community leaders are obligated to respect the privacy and security of the
|
|
66
|
+
reporter of any incident.
|
|
67
|
+
|
|
68
|
+
## Enforcement Guidelines
|
|
69
|
+
|
|
70
|
+
Community leaders will follow these Community Impact Guidelines in determining
|
|
71
|
+
the consequences for any action they deem in violation of this Code of Conduct:
|
|
72
|
+
|
|
73
|
+
### 1. Correction
|
|
74
|
+
|
|
75
|
+
**Community Impact**: Use of inappropriate language or other behavior deemed
|
|
76
|
+
unprofessional or unwelcome in the community.
|
|
77
|
+
|
|
78
|
+
**Consequence**: A private, written warning from community leaders, providing
|
|
79
|
+
clarity around the nature of the violation and an explanation of why the
|
|
80
|
+
behavior was inappropriate. A public apology may be requested.
|
|
81
|
+
|
|
82
|
+
### 2. Warning
|
|
83
|
+
|
|
84
|
+
**Community Impact**: A violation through a single incident or series of
|
|
85
|
+
actions.
|
|
86
|
+
|
|
87
|
+
**Consequence**: A warning with consequences for continued behavior. No
|
|
88
|
+
interaction with the people involved, including unsolicited interaction with
|
|
89
|
+
those enforcing the Code of Conduct, for a specified period of time. This
|
|
90
|
+
includes avoiding interactions in community spaces as well as external channels
|
|
91
|
+
like social media. Violating these terms may lead to a temporary or permanent
|
|
92
|
+
ban.
|
|
93
|
+
|
|
94
|
+
### 3. Temporary Ban
|
|
95
|
+
|
|
96
|
+
**Community Impact**: A serious violation of community standards, including
|
|
97
|
+
sustained inappropriate behavior.
|
|
98
|
+
|
|
99
|
+
**Consequence**: A temporary ban from any sort of interaction or public
|
|
100
|
+
communication with the community for a specified period of time. No public or
|
|
101
|
+
private interaction with the people involved, including unsolicited interaction
|
|
102
|
+
with those enforcing the Code of Conduct, is allowed during this period.
|
|
103
|
+
Violating these terms may lead to a permanent ban.
|
|
104
|
+
|
|
105
|
+
### 4. Permanent Ban
|
|
106
|
+
|
|
107
|
+
**Community Impact**: Demonstrating a pattern of violation of community
|
|
108
|
+
standards, including sustained inappropriate behavior, harassment of an
|
|
109
|
+
individual, or aggression toward or disparagement of classes of individuals.
|
|
110
|
+
|
|
111
|
+
**Consequence**: A permanent ban from any sort of public interaction within the
|
|
112
|
+
community.
|
|
113
|
+
|
|
114
|
+
## Attribution
|
|
115
|
+
|
|
116
|
+
This Code of Conduct is adapted from the [Contributor Covenant][homepage],
|
|
117
|
+
version 2.1, available at
|
|
118
|
+
[https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
|
|
119
|
+
|
|
120
|
+
Community Impact Guidelines were inspired by
|
|
121
|
+
[Mozilla's code of conduct enforcement ladder][Mozilla CoC].
|
|
122
|
+
|
|
123
|
+
For answers to common questions about this code of conduct, see the FAQ at
|
|
124
|
+
[https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
|
|
125
|
+
[https://www.contributor-covenant.org/translations][translations].
|
|
126
|
+
|
|
127
|
+
[homepage]: https://www.contributor-covenant.org
|
|
128
|
+
[v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
|
|
129
|
+
[Mozilla CoC]: https://github.com/mozilla/diversity
|
|
130
|
+
[FAQ]: https://www.contributor-covenant.org/faq
|
|
131
|
+
[translations]: https://www.contributor-covenant.org/translations
|