conformance: a conformance suite for the AIP-23 proof kinds (one verdict form over the published verifiers, 35 rules derived from code, 122 vectors, a runner for any implementation, a second verifier in Python); four defects it found in the published verifiers are fixed here: the market judge accepted a timeline with its submission event withheld, and three verifiers threw on malformed input instead of refusing by name
This commit is contained in:
parent
2c000478dc
commit
c9f2932e04
10
README.md
10
README.md
@ -20,6 +20,7 @@ notarization command of the verification layer, and the agents' x402 wallet (EIP
|
|||||||
| [`market-settlement/`](market-settlement/) | the dispute and settlement rail of a verifiable infrastructure market, measured end to end on testnet 28001: an order with its reward in escrow and a provider bond, the result committed on chain with its execution envelope notarized under a post-quantum certified anchor, a challenge window in which anyone disputes with a recomputed result and a bond, an arbiter that can only route the escrow (with a permissionless 14-day timeout), deadline reclaims, and an AIP-23 settlement receipt; a pure judge over the job's timeline that checks deadlines, the window, who resolved, the payout, the replay and the proof |
|
| [`market-settlement/`](market-settlement/) | the dispute and settlement rail of a verifiable infrastructure market, measured end to end on testnet 28001: an order with its reward in escrow and a provider bond, the result committed on chain with its execution envelope notarized under a post-quantum certified anchor, a challenge window in which anyone disputes with a recomputed result and a bond, an arbiter that can only route the escrow (with a permissionless 14-day timeout), deadline reclaims, and an AIP-23 settlement receipt; a pure judge over the job's timeline that checks deadlines, the window, who resolved, the payout, the replay and the proof |
|
||||||
| [`verifiable-data/`](verifiable-data/) | a dataset whose every answer is checkable against a short commitment without the data: RFC 9162 commitments per version (append-only, consistency proofs), equality and range queries proven correct AND complete (contiguous run of a sorted index plus its two neighbours), hash-based selective disclosure of fields, availability sampling against the serving endpoint, and the version's AIP-23 envelope notarized and read back under a post-quantum certified anchor; not zero knowledge, and says so |
|
| [`verifiable-data/`](verifiable-data/) | a dataset whose every answer is checkable against a short commitment without the data: RFC 9162 commitments per version (append-only, consistency proofs), equality and range queries proven correct AND complete (contiguous run of a sorted index plus its two neighbours), hash-based selective disclosure of fields, availability sampling against the serving endpoint, and the version's AIP-23 envelope notarized and read back under a post-quantum certified anchor; not zero knowledge, and says so |
|
||||||
| [`ai-trust/`](ai-trust/) | the trust chain of an AI result: the agent's identity (agents/), the model artifact's attestation, the host's runtime record (verify-layer/), the policy and signed ledger, the Proof of AI envelope and the chain as witness, joined in one bundle whose verifier checks only the links between them |
|
| [`ai-trust/`](ai-trust/) | the trust chain of an AI result: the agent's identity (agents/), the model artifact's attestation, the host's runtime record (verify-layer/), the policy and signed ledger, the Proof of AI envelope and the chain as witness, joined in one bundle whose verifier checks only the links between them |
|
||||||
|
| [`conformance/`](conformance/) | a conformance suite for the AIP-23 proof kinds: one verdict form over the verifiers published here (four levels: integrity, authenticity, anchoring, finality; each passed, failed or not measured, with the named rule), 122 vectors derived from the producers and from evidence recorded on testnet 28001 (each invalid one is one operation away from a valid one and must be refused for exactly its named rule), and a runner that scores any implementation given as a command, in any language. Not a certification and not an audit |
|
||||||
| [`identity/`](identity/) | post-quantum credentials: an issuer signs claims (hybrid Ed25519 + ML-DSA-65, both required), the holder shows only the claims it picks (selective disclosure in the manner of SD-JWT, RFC 9901, in a format of its own), bound to the verifier's audience and nonce; delegation to a phone, an agent or a ten-minute session key that can only narrow; revocation and an issuer status list in the manner of W3C Bitstring Status List; all checked offline from the files; and compliance without surveillance: a verifier's policy (issuers, required claims) judged on a presentation, recorded as an AIP-23 envelope that carries no personal data; and the Travel Rule between VASPs, the IVMS101 data sealed for the receiving VASP with a hybrid X25519 + ML-KEM-768 key encapsulation, signed, bound to the transfer and acknowledged; and the same credentials as standard SD-JWT (IETF RFC 9901): issued with the issuer's Ed25519 key (EdDSA) or its ML-DSA-65 key, presented with a key binding JWT, and verified against the RFC's own example vectors (`identity-cli.mjs verify-sdjwt`, behind Aere Cloud's POST /v1/identity/sd-jwt/verify) |
|
| [`identity/`](identity/) | post-quantum credentials: an issuer signs claims (hybrid Ed25519 + ML-DSA-65, both required), the holder shows only the claims it picks (selective disclosure in the manner of SD-JWT, RFC 9901, in a format of its own), bound to the verifier's audience and nonce; delegation to a phone, an agent or a ten-minute session key that can only narrow; revocation and an issuer status list in the manner of W3C Bitstring Status List; all checked offline from the files; and compliance without surveillance: a verifier's policy (issuers, required claims) judged on a presentation, recorded as an AIP-23 envelope that carries no personal data; and the Travel Rule between VASPs, the IVMS101 data sealed for the receiving VASP with a hybrid X25519 + ML-KEM-768 key encapsulation, signed, bound to the transfer and acknowledged; and the same credentials as standard SD-JWT (IETF RFC 9901): issued with the issuer's Ed25519 key (EdDSA) or its ML-DSA-65 key, presented with a key binding JWT, and verified against the RFC's own example vectors (`identity-cli.mjs verify-sdjwt`, behind Aere Cloud's POST /v1/identity/sd-jwt/verify) |
|
||||||
|
|
||||||
Each component's README says what it is **not** and what is **not measured**. No third party has reviewed any of them.
|
Each component's README says what it is **not** and what is **not measured**. No third party has reviewed any of them.
|
||||||
@ -43,10 +44,11 @@ test, counts as a failure of the control. Results measured on 2026-09-29 (Node.j
|
|||||||
| identity | 44/44 (`node proba-identity.mjs`, with the AIP-23 verifier for its envelope test; without it that test is reported as skipped and the exit code is 2), compliance 15/15 (`node proba-conformitate.mjs`), Travel Rule 19/19 (`node proba-travel-rule.mjs`), SD-JWT 23/23 (`node proba-sdjwt.mjs`, the RFC 9901 vectors included), measured 2026-09-30 | 49/49 (`node control-negativ-identity.mjs`); compliance 14/14 (`node control-negativ-conformitate.mjs`); Travel Rule 19/19 (`node control-negativ-travel-rule.mjs`); SD-JWT 28/28 (`node control-negativ-sdjwt.mjs`) |
|
| identity | 44/44 (`node proba-identity.mjs`, with the AIP-23 verifier for its envelope test; without it that test is reported as skipped and the exit code is 2), compliance 15/15 (`node proba-conformitate.mjs`), Travel Rule 19/19 (`node proba-travel-rule.mjs`), SD-JWT 23/23 (`node proba-sdjwt.mjs`, the RFC 9901 vectors included), measured 2026-09-30 | 49/49 (`node control-negativ-identity.mjs`); compliance 14/14 (`node control-negativ-conformitate.mjs`); Travel Rule 19/19 (`node control-negativ-travel-rule.mjs`); SD-JWT 28/28 (`node control-negativ-sdjwt.mjs`) |
|
||||||
| agents | policy 27/27 with the AIP-23 verifier (without it 25 run, 2 are reported as skipped and the exit code is 2), ledger 51/51, approval and revocation 39/39, the chain as witness 26/26 without a network and 7/7 on testnet 28001 on 2026-09-30 (`proba-agent-ancora-testnet.mjs`, needs a funded testnet key and the AIP-23 verifier), command line 23/23 through files and processes only (on Linux and macOS one more test checks the key file mode; not measured here); x402 wallet 25/25, 2-of-2 co-signing 16/16 and payment verifier 14/14 without a network; on the public testnet 28001, 9/9 with the wallet key and 13/13 with the 2-of-2 contract wallet (`x402/proba-x402-testnet.mjs`, `x402/proba-cosign-testnet.mjs`, each needs a funded testnet key); the contract's artifact recompiles byte for byte with solc 0.8.23 (`node x402/recompileaza-contract.mjs --solc <solc>`) | 26/26 (`node control-negativ-aprobare.mjs`); the chain as witness 11/11 (`node control-negativ-ancora.mjs`); x402 30/30 (`node x402/control-negativ-wallet.mjs`); the contract's own tests (7) and their negative control (4/4) run in the Aere Network contracts project, not in this repository |
|
| agents | policy 27/27 with the AIP-23 verifier (without it 25 run, 2 are reported as skipped and the exit code is 2), ledger 51/51, approval and revocation 39/39, the chain as witness 26/26 without a network and 7/7 on testnet 28001 on 2026-09-30 (`proba-agent-ancora-testnet.mjs`, needs a funded testnet key and the AIP-23 verifier), command line 23/23 through files and processes only (on Linux and macOS one more test checks the key file mode; not measured here); x402 wallet 25/25, 2-of-2 co-signing 16/16 and payment verifier 14/14 without a network; on the public testnet 28001, 9/9 with the wallet key and 13/13 with the 2-of-2 contract wallet (`x402/proba-x402-testnet.mjs`, `x402/proba-cosign-testnet.mjs`, each needs a funded testnet key); the contract's artifact recompiles byte for byte with solc 0.8.23 (`node x402/recompileaza-contract.mjs --solc <solc>`) | 26/26 (`node control-negativ-aprobare.mjs`); the chain as witness 11/11 (`node control-negativ-ancora.mjs`); x402 30/30 (`node x402/control-negativ-wallet.mjs`); the contract's own tests (7) and their negative control (4/4) run in the Aere Network contracts project, not in this repository |
|
||||||
| proof-of-ai | 6/6 with the AIP-23 verifier (`AERE_VERIFY_PROOF=... node proba-proof-of-ai.mjs`); without it the probe reports NEMASURAT and exits 2 | one negative control inside the test (an envelope touched after its hash: INVALID) |
|
| proof-of-ai | 6/6 with the AIP-23 verifier (`AERE_VERIFY_PROOF=... node proba-proof-of-ai.mjs`); without it the probe reports NEMASURAT and exits 2 | one negative control inside the test (an envelope touched after its hash: INVALID) |
|
||||||
| payments | 22/22 without a chain (`node proba-risc.mjs`: the verdicts under a policy, the reproducible verdict hash, a receipt verified, nine forged ones refused by name); 9/9 on testnet 28001 on 2026-10-02 (`AERE_TESTNET_KEY_FILE=... AERE_ETHERS_DIR=... node proba-plata-28001.mjs`: a payment allowed, paid, its receipt notarized and read back with finality PASSED, the public reader VALID; a payment above the limit refused with nothing sent; the fourth in the window refused; a forged receipt and a loosened policy INVALID) | 8/8 (`node proba-risc.mjs --control-negativ`: counterparty, rate, per-payment limit, window, linkage, USD arithmetic, verdict reproduction, chain facts, each planted out on a copy and each forged fixture then accepted) |
|
| payments | 23/23 without a chain (`node proba-risc.mjs`: the verdicts under a policy, the reproducible verdict hash, a receipt verified, nine forged ones refused by name, a malformed payment refused by name); 9/9 on testnet 28001 on 2026-10-02 (`AERE_TESTNET_KEY_FILE=... AERE_ETHERS_DIR=... node proba-plata-28001.mjs`: a payment allowed, paid, its receipt notarized and read back with finality PASSED, the public reader VALID; a payment above the limit refused with nothing sent; the fourth in the window refused; a forged receipt and a loosened policy INVALID) | 10/10 (`node proba-risc.mjs --control-negativ`: form, asset, counterparty, rate, per-payment limit, window, linkage, USD arithmetic, verdict reproduction, chain facts, each planted out on a copy and each forged fixture then accepted) |
|
||||||
| market-settlement | 20/20 on testnet 28001 on 2026-10-02 (`AERE_TESTNET_KEY_FILE=... AERE_ETHERS_DIR=... node proba-piata-28001.mjs`: five scenarios on AereComputeMarketV3 deployed from the committed artifact, every refusal by its named custom error, the provider's notarized envelope read back under a post-quantum certified anchor); the judge on the recorded timelines 16/16 without a chain (`node proba-judecata.mjs`: five honest timelines VALID, ten forged ones INVALID for their named reason, the settlement receipt) | 7/7 (`node proba-judecata.mjs --control-negativ`: deadline, window, arbiter, payout, result bytes, replay, proof, each planted out on a copy and each forged fixture then accepted) |
|
| market-settlement | 20/20 on testnet 28001 on 2026-10-02 (`AERE_TESTNET_KEY_FILE=... AERE_ETHERS_DIR=... node proba-piata-28001.mjs`: five scenarios on AereComputeMarketV3 deployed from the committed artifact, every refusal by its named custom error, the provider's notarized envelope read back under a post-quantum certified anchor); the judge on the recorded timelines 21/21 without a chain (`node proba-judecata.mjs`: five honest timelines VALID, fifteen forged or malformed ones INVALID for their named reason, the settlement receipt) | 10/10 (`node proba-judecata.mjs --control-negativ`: form, completeness of the timeline, posting, deadline, window, arbiter, payout, result bytes, replay, proof, each planted out on a copy and each forged fixture then accepted) |
|
||||||
| verifiable-data | 22/22 with the AIP-23 verifier (`AERE_VERIFY_PROOF=... node proba-verifiable-data.mjs`: honest answers VALID, nine forged ones INVALID for their named reason, availability sampling on a local server; the envelope row is NEMASURAT without the verifier, exit 2); 24/24 with `--viu` on testnet 28001 on 2026-10-02 (a version notarized with a test key and read back under a post-quantum certified anchor; evidence in `dovezi/`) | 5/5 (`node proba-verifiable-data.mjs --control-negativ`: field commitment, index order, completeness, consistency, sampling, each planted out on a copy and each forged fixture then accepted) |
|
| verifiable-data | 23/23 with the AIP-23 verifier (`AERE_VERIFY_PROOF=... node proba-verifiable-data.mjs`: honest answers VALID, ten forged or malformed ones INVALID for their named reason, availability sampling on a local server; the envelope row is NEMASURAT without the verifier, exit 2); the two chain rows of `--viu` measured on testnet 28001 on 2026-10-02 (a version notarized with a test key and read back under a post-quantum certified anchor; evidence in `dovezi/`) | 5/5 (`node proba-verifiable-data.mjs --control-negativ`: field commitment, index order, completeness, consistency, sampling, each planted out on a copy and each forged fixture then accepted) |
|
||||||
| ai-trust | 13/13 with the AIP-23 verifier (`AERE_VERIFY_PROOF=... node proba-lant-de-incredere.mjs`: the whole chain on a committed fixture, then ten links broken on purpose, each refused for its named reason); without the verifier it exits 2 | 8/8 (`node proba-lant-de-incredere.mjs --control-negativ`) |
|
| ai-trust | 13/13 with the AIP-23 verifier (`AERE_VERIFY_PROOF=... node proba-lant-de-incredere.mjs`: the whole chain on a committed fixture, then ten links broken on purpose, each refused for its named reason); without the verifier it exits 2 | 8/8 (`node proba-lant-de-incredere.mjs --control-negativ`) |
|
||||||
|
| conformance | 10/10 on 2026-10-03 with the AIP-23 verifier, Python 3 and testnet 28001 read (`AERE_VERIFY_PROOF=... node proba-conformance.mjs --online`: the rules and the vectors are what the code derives, every rule has a vector, every invalid vector is one operation from its base, the published verifiers pass 122/122, an independent Python implementation passes the 55 it claims, 6,847 malformed inputs each get a verdict); without `--online` the five chain vectors are reported unmeasured and the exit code is 2 | 35/35 rules (`node proba-conformance.mjs --control-negativ --online`: each rule planted out of its verifier in a copy; the vectors that expect it, and only they, must fail), then five controls of the instruments |
|
||||||
|
|
||||||
Code comments, most function and variable names (also many exported between the files of a component), test names and control
|
Code comments, most function and variable names (also many exported between the files of a component), test names and control
|
||||||
messages are in Romanian, and so are the two command words of the KMS HSM tool (explained in its README). Error codes, error
|
messages are in Romanian, and so are the two command words of the KMS HSM tool (explained in its README). Error codes, error
|
||||||
@ -55,4 +57,4 @@ interface, command line and data (`definePolicy`, `verifyLedger`, `approve`, ...
|
|||||||
|
|
||||||
## Licence
|
## Licence
|
||||||
|
|
||||||
MIT, see [LICENSE](LICENSE). Files: 191 (pq-gateway 6, pq-kms 10, pq-pki 6, crypto-inventory 42, verify-layer 12, proof-kinds 3, control-plane 19, agents 39, identity 15, proof-of-ai 3, ai-trust 6, verifiable-data 7, market-settlement 9, payments 8, readiness 4).
|
MIT, see [LICENSE](LICENSE). Files: 325 (pq-gateway 6, pq-kms 10, pq-pki 6, crypto-inventory 42, verify-layer 12, proof-kinds 3, control-plane 19, agents 39, identity 15, proof-of-ai 3, ai-trust 6, verifiable-data 7, market-settlement 9, payments 8, conformance 134, readiness 4).
|
||||||
|
|||||||
160
conformance/README.md
Normal file
160
conformance/README.md
Normal file
@ -0,0 +1,160 @@
|
|||||||
|
# Conformance suite for the AIP-23 proof kinds
|
||||||
|
|
||||||
|
Every component beside this one ships its own verifier and its own way of saying no: the AIP-23 reference verifier prints four
|
||||||
|
levels, the payment modules return `reasons`, the market judge `motive`, the dataset module `ok`. This folder adds the one place that
|
||||||
|
says, in the same form for all of them, **this artifact passes or does not, at level N, for reason M**, and a set of vectors that any
|
||||||
|
implementation, in any language, can be run against.
|
||||||
|
|
||||||
|
It adds no verification rule. A verdict here is derived from the verdict of the published verifier of that artifact; the rule ids
|
||||||
|
are the ones those verifiers name, read from their code.
|
||||||
|
|
||||||
|
## The one verdict form
|
||||||
|
|
||||||
|
```json
|
||||||
|
{ "v": 1, "kind": "aere-conformance-verdict", "artifact": "payment-receipt", "verdict": "INVALID",
|
||||||
|
"levels": [
|
||||||
|
{ "level": "integrity", "state": "FAILED", "rules": ["receipt.chain"], "reason": "the transaction on chain is not this payment ..." },
|
||||||
|
{ "level": "authenticity", "state": "NOT_MEASURED", "rules": [], "cause": "absent", "reason": "the envelope carries no signature" },
|
||||||
|
{ "level": "anchoring", "state": "NOT_MEASURED", "rules": [], "cause": "absent", "reason": "no notarization claimed and no --rpc given" },
|
||||||
|
{ "level": "finality", "state": "NOT_MEASURED", "rules": [], "cause": "absent", "reason": "no notarization claimed and no --rpc given" } ],
|
||||||
|
"failed": ["receipt.chain"] }
|
||||||
|
```
|
||||||
|
|
||||||
|
| level | what it says |
|
||||||
|
|---|---|
|
||||||
|
| `integrity` | the artifact is what it says: its hashes bind its content, and the rules it declares (a policy, deadlines, a challenge window, Merkle paths, a payout) hold when recomputed from the evidence supplied |
|
||||||
|
| `authenticity` | the signature the artifact carries verifies (today: an ML-DSA signature on an AIP-23 envelope) |
|
||||||
|
| `anchoring` | its `statementHash` is recorded in the notary contract, under a state root that a post-quantum anchor covers |
|
||||||
|
| `finality` | that anchor's post-quantum certificate verifies. The finality is the one of the chain the artifact was notarized on |
|
||||||
|
|
||||||
|
Each level is `PASSED`, `FAILED` or `NOT_MEASURED`, with the reason; a level nobody judged says why (`cause`). The verdict is
|
||||||
|
`INVALID` when a level failed; `PARTIAL` when nothing failed but something the artifact **claims** was not measured (a notarization
|
||||||
|
claim not checked because the run was offline, a signature scheme the verifier cannot check, a timeline that is not terminal);
|
||||||
|
`VALID` otherwise, and only with integrity passed. A claim that was not checked is never `VALID`. `failed` is the sorted list of the
|
||||||
|
rule ids that refused; the suite compares it as an exact set.
|
||||||
|
|
||||||
|
A receipt or a market timeline that carries an AIP-23 envelope gets that envelope judged too, by the reference verifier, so one
|
||||||
|
verdict covers the artifact: the receipt recorded on testnet 28001 comes out with integrity, anchoring and finality `PASSED` in one
|
||||||
|
verdict (`vectori/payment-receipt/company-p1-28001.valid.json`).
|
||||||
|
|
||||||
|
## What is enrolled
|
||||||
|
|
||||||
|
`REGULI.json` is derived from the code (`node deriva-reguli.mjs --verifica`): 35 rules of 5 verifiers, 8 artifact kinds.
|
||||||
|
|
||||||
|
| artifact kind | judged by | rules |
|
||||||
|
|---|---|---|
|
||||||
|
| `envelope` (every AIP-23 kind) | the AIP-23 reference verifier, run as the program it is (`AERE_VERIFY_PROOF=<verify-proof.mjs>`, published with aere-node) | `envelope.form`, `.integrity`, `.signature`, `.finality` |
|
||||||
|
| `payment-risk` (a payment presented as allowed under a declared policy) | `payments/risc.mjs` | `risk.form`, `.asset`, `.counterparty`, `.rate`, `.limit`, `.window` |
|
||||||
|
| `payment-receipt` | `payments/chitanta.mjs` | `receipt.binding`, `.amount`, `.policy`, `.risk`, `.chain` |
|
||||||
|
| `market-timeline` | `market-settlement/piata.mjs` | `market.form`, `.complete`, `.posting`, `.deadline`, `.window`, `.arbiter`, `.payout`, `.result`, `.replay`, `.proof` |
|
||||||
|
| `dataset-record`, `-answer`, `-consistency`, `-sample` | `verifiable-data/baza.mjs` | `dataset.form`, `.commitment`, `.field`, `.inclusion`, `.index`, `.range`, `.order`, `.completeness`, `.consistency`, `.sample` |
|
||||||
|
|
||||||
|
A module verifier exports the list of rules it can name (`REGULI`; its helper throws on any other) and marks every check of a rule;
|
||||||
|
the derivation requires declared == marked == mapped here. A rule added to a verifier and not mapped is a refusal of the derivation;
|
||||||
|
a mapped rule without a vector is a refusal of the probe. For the reference verifier, a published program this suite does not edit,
|
||||||
|
the rules are its level names, and each of the six places where its `finality` level can refuse is classified as `anchoring` or
|
||||||
|
`finality` (a seventh place would be a refusal of the derivation).
|
||||||
|
|
||||||
|
**Not enrolled**, measured in the same file: `ai-trust` (20 refusal sites; its refusals already carry a level and a code, enrolling it
|
||||||
|
is a vector per code), `agents` ledger (17), `identity` (15), `verify-layer` log and tree (36): their refusals are free text, and a
|
||||||
|
rule id per refusal comes first. Their own probes and negative controls stay what checks them.
|
||||||
|
|
||||||
|
## The vectors
|
||||||
|
|
||||||
|
`vectori/` holds 122 vectors (117 offline, 5 that read testnet 28001), listed with their digests in `vectori/INDEX.json`:
|
||||||
|
envelope 54, payment-risk 11, payment-receipt 10, market-timeline 25, dataset 22. None is typed by hand (`node genereaza-vectori.mjs
|
||||||
|
--verifica` regenerates them and compares byte for byte):
|
||||||
|
|
||||||
|
- the 16 AIP-23 kinds come from their producers on fixed inputs (the same envelopes as the published AIP-23 kind vectors);
|
||||||
|
- the receipt, the five market timelines and the notarized dataset commitment are the evidence recorded on testnet 28001 on
|
||||||
|
2026-10-02 beside those components;
|
||||||
|
- `surse-proaspete.json` holds what needed a key, randomness or the chain, made once by `--proaspat`: a tree head signed with an
|
||||||
|
ML-DSA-65 key that was generated and discarded in that call, an envelope with random content that nobody notarized, a dataset of
|
||||||
|
16 records with random salts, and the transaction of the recorded receipt read from the chain (two read calls).
|
||||||
|
|
||||||
|
An `INVALID` vector names its `base` and its `mutation`: **one operation** (set, remove or add at one JSON path) applied to the input
|
||||||
|
of a vector that is not invalid, and it must be refused for exactly the rules in `expected.failed`, not merely refused. Where the rule
|
||||||
|
sits under a hash, one place is not reachable (changing an amount under the instruction hash trips the binding first): six vectors
|
||||||
|
are then made at the producer, the commitments above the change recomputed with the published formulas, and every path that moved is
|
||||||
|
declared (`mutation.changed`). Three vectors expect two rules: rules that guard the same field cannot be separated (a looser policy
|
||||||
|
shown under a receipt also makes the risk verdict not reproduce).
|
||||||
|
|
||||||
|
## Run it
|
||||||
|
|
||||||
|
```
|
||||||
|
AERE_VERIFY_PROOF=<verify-proof.mjs from aere-node, with npm install done beside it>
|
||||||
|
node conformance.mjs --impl "node implementare-aere.mjs" # the published verifiers behind the one verdict form: 117 offline vectors
|
||||||
|
node conformance.mjs --impl "node implementare-aere.mjs" --online # and the 5 that read testnet 28001 (nothing is sent)
|
||||||
|
node conformance.mjs --impl "python3 implementare-integritate.py" # an independent implementation: 55 vectors, 67 reported NOT COVERED
|
||||||
|
node conformance.mjs --impl "<your command>" # yours
|
||||||
|
node implementare-aere.mjs <artifact.json> [--online] # one artifact { artifact, input }: its verdict
|
||||||
|
```
|
||||||
|
|
||||||
|
An implementation is a command that answers three calls with JSON on stdout: `--capabilities` (`{ artifacts, rules, online, batch }`:
|
||||||
|
what it claims to judge), `<vector.json> [--online]` (the verdict above for the file's `{ artifact, input }`), and, if it says
|
||||||
|
`batch`, `--batch <list.json>` (one verdict per line). A vector is scored only if the implementation claims its artifact kind and
|
||||||
|
every rule the vector exercises; otherwise it is reported `NOT COVERED`, never passed. A scored vector passes when the verdict, the
|
||||||
|
exact set of failed rules and the state of each of the four levels are the expected ones. No output is `BROKEN`: a crash is not a
|
||||||
|
refusal. Without `--online` an implementation must not open a connection.
|
||||||
|
|
||||||
|
`implementare-integritate.py` is the second implementation: Python, standard library only, written from the rules and not from the
|
||||||
|
JavaScript. It claims 6 of the 35 rules (the form and the statement hash of an envelope; the form, the commitment, the salted field
|
||||||
|
commitments and the RFC 9162 inclusion of a dataset record) and passes all 55 vectors it claims. It cannot check an ML-DSA signature
|
||||||
|
or read a chain, says so in its capabilities, and the runner reports the rest as not covered.
|
||||||
|
|
||||||
|
## How the suite itself is checked
|
||||||
|
|
||||||
|
Measured on 2026-10-03 (Node.js 24.14.1, Python 3.14.4, testnet 28001 read):
|
||||||
|
|
||||||
|
- `node proba-conformance.mjs --online`: every row green, 10 in this copy (an eleventh, the comparison of the 16 kind envelopes with
|
||||||
|
the published AIP-23 kind vectors, runs where their generator is, in the development repository: 11/11 there, and here it is
|
||||||
|
printed as information). The rules and the vectors are what the code derives now; every rule has a vector that
|
||||||
|
expects it; every kind has a valid vector; every invalid vector is its base with one operation (80) or one declared producer change
|
||||||
|
(6); the published verifiers pass 122/122; the independent implementation passes all 55 it claims; and 6,847 malformed inputs (every
|
||||||
|
path of every vector removed, or replaced by null, a string, a number, a list, an object) given to the module verifiers each got a
|
||||||
|
verdict, none threw. Without `--online` the five chain vectors are reported unmeasured and the exit code is 2.
|
||||||
|
- `node proba-conformance.mjs --control-negativ --online`: 35 of 35 rules. Each rule is planted out of its verifier, one at a time, in
|
||||||
|
a copy (every check that carries its marker made true at run time); the suite is run against the planted verifier; the vectors that
|
||||||
|
expect the rule, **and only they**, must fail, and none may break. Then the instruments: an implementation that calls everything
|
||||||
|
valid fails every vector that is not plainly valid; the coverage gate goes red when one rule's vector is taken away; a rule added
|
||||||
|
to a verifier and not mapped is refused by the derivation; a judge that throws again turns the malformed-input row red.
|
||||||
|
- `node proba-conformance.mjs --pe-loc` is a measurement, not a gate: each of the 60 marked checks of the module verifiers planted
|
||||||
|
out alone. For 46 of them a vector then fails. The other 14 are checks whose vector trips a second check of the same rule at the
|
||||||
|
same time, so removing one alone changes nothing (the three checks of `market.replay`, the run and neighbour checks of
|
||||||
|
`dataset.completeness`), or checks no vector reaches (a dispute timed out before the arbitration timeout: no recorded timeline has
|
||||||
|
one). The control above shows that each **rule** is load-bearing, not each of its checks.
|
||||||
|
|
||||||
|
On its first day the suite found three defects in the verifiers it enrols, all fixed the same day and each now a vector or a probe
|
||||||
|
row: a malformed payment made the risk module throw instead of refusing by name; malformed dataset answers made the dataset verifier
|
||||||
|
throw; and the market judge accepted a timeline from which the submission event had been withheld, which skipped the challenge-window
|
||||||
|
rule (the judge now requires every event the job state implies: `market.complete`).
|
||||||
|
|
||||||
|
## What it is not, and what is not measured
|
||||||
|
|
||||||
|
- **Not a certification, not an audit, not a mark.** Passing says that an implementation agrees with the published verifiers on these
|
||||||
|
122 inputs. It does not say either of them is correct, and no third party has reviewed the verifiers, the vectors or this suite.
|
||||||
|
- **The vectors and the verifiers have the same authors.** The expected verdicts were written by the people who wrote the verifiers.
|
||||||
|
The second implementation is independent in code and language, not in authorship, and it covers 6 rules of 35.
|
||||||
|
- **Finality is the chain's.** The level says that the post-quantum certificate of the covering anchor verified on the chain where the
|
||||||
|
artifact was notarized. Every notarized vector here is on chain 28001, a testnet; nothing in this suite ran on mainnet.
|
||||||
|
- **Five of the six finality refusals have no vector.** The reference verifier can refuse at its finality level in six places; the
|
||||||
|
vectors reach one (a notarization claimed that the chain does not hold). The others need an endpoint that lies or an anchor that
|
||||||
|
does not verify, and are not exercised here.
|
||||||
|
- **The chain vectors depend on the testnet's state.** The notary contract is open: anyone can notarize the fresh envelope's hash on
|
||||||
|
28001, and `envelope/fresh-28001.*` then change verdict. The runner would show it; `--proaspat` makes a new one.
|
||||||
|
- **Integrity is over the evidence supplied.** A market timeline and the transaction facts of a receipt are the caller's reading of the
|
||||||
|
chain; this suite does not certify that reading under an anchor. The market judge now refuses a timeline that lacks an event the
|
||||||
|
job state implies; it does not prove that the job state shown is the chain's.
|
||||||
|
- **A notarization time is taken from the claim.** `market.proof` compares the envelope's claimed first-seen time with the challenge
|
||||||
|
window; the reference verifier certifies the time it reads from the chain, and nothing here compares the two.
|
||||||
|
- **Authenticity is one scheme.** The reference verifier checks ML-DSA signatures on envelopes; a hybrid signature (as on identity
|
||||||
|
credentials) is reported unmeasured and the verdict is `PARTIAL`.
|
||||||
|
- **What a damaged artifact can still pass.** Of the 6,847 malformed inputs, 1,810 were still accepted, at 81 distinct paths: parts a
|
||||||
|
verifier treats as optional (the transaction facts of a receipt, the envelope of a timeline) and fields no rule reads
|
||||||
|
(`node proba-conformance.mjs --acceptate` lists them). A policy that cannot be defined makes the risk module throw, by design. The
|
||||||
|
reference envelope verifier is run as published: given the JSON value `null` as an envelope it exits with an exception instead of
|
||||||
|
a verdict (1 of 88 malformed envelopes tried on 2026-10-03); the runner scores that `BROKEN`.
|
||||||
|
- **Not part of AIP-23.** The rule ids, the four levels and the verdict form are this suite's reading of the published verifiers;
|
||||||
|
AIP-23 defines the envelope. Four verifiers published beside these are not enrolled.
|
||||||
|
- **The Python implementation** writes numbers the way JavaScript does only for integers and plain decimals, and sorts keys by code
|
||||||
|
point (JavaScript's order for keys in the Basic Multilingual Plane).
|
||||||
349
conformance/REGULI.json
Normal file
349
conformance/REGULI.json
Normal file
@ -0,0 +1,349 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-rules",
|
||||||
|
"levels": [
|
||||||
|
"integrity",
|
||||||
|
"authenticity",
|
||||||
|
"anchoring",
|
||||||
|
"finality"
|
||||||
|
],
|
||||||
|
"verifiers": {
|
||||||
|
"aip23-envelope": {
|
||||||
|
"artifacts": [
|
||||||
|
"envelope"
|
||||||
|
],
|
||||||
|
"rules": [
|
||||||
|
{
|
||||||
|
"id": "envelope.form",
|
||||||
|
"source": "form",
|
||||||
|
"level": "integrity",
|
||||||
|
"sites": 1,
|
||||||
|
"says": "the envelope has a statement (object) and a statementHash (0x + 64 hex)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "envelope.integrity",
|
||||||
|
"source": "integrity",
|
||||||
|
"level": "integrity",
|
||||||
|
"sites": 1,
|
||||||
|
"says": "sha256 of the canonical statement text is the statementHash"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "envelope.signature",
|
||||||
|
"source": "signature",
|
||||||
|
"level": "authenticity",
|
||||||
|
"sites": 1,
|
||||||
|
"says": "the ML-DSA signature the envelope carries verifies over the canonical statement text"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "envelope.finality",
|
||||||
|
"source": "finality",
|
||||||
|
"level": "anchoring",
|
||||||
|
"sites": 6,
|
||||||
|
"says": "the statementHash is recorded in the notary under a state root that a verified post-quantum anchor certificate covers (level by site: see finalitySites)"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"finalitySites": [
|
||||||
|
{
|
||||||
|
"site": "most recent anchor did not verify",
|
||||||
|
"level": "finality",
|
||||||
|
"reachableWithAnHonestEndpoint": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"site": "the header the endpoint served for block",
|
||||||
|
"level": "anchoring",
|
||||||
|
"reachableWithAnHonestEndpoint": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"site": "has no account at",
|
||||||
|
"level": "anchoring",
|
||||||
|
"reachableWithAnHonestEndpoint": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"site": "is not the AereNotary contract",
|
||||||
|
"level": "anchoring",
|
||||||
|
"reachableWithAnHonestEndpoint": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"site": "the Merkle proof for block",
|
||||||
|
"level": "anchoring",
|
||||||
|
"reachableWithAnHonestEndpoint": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"site": "not notarized:",
|
||||||
|
"level": "anchoring",
|
||||||
|
"reachableWithAnHonestEndpoint": true
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"payment-risk": {
|
||||||
|
"artifacts": [
|
||||||
|
"payment-risk"
|
||||||
|
],
|
||||||
|
"rules": [
|
||||||
|
{
|
||||||
|
"id": "risk.form",
|
||||||
|
"source": "forma",
|
||||||
|
"level": "integrity",
|
||||||
|
"sites": 4,
|
||||||
|
"says": "payer and payee are addresses; chain, asset, a positive integer amount and the time are given"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "risk.asset",
|
||||||
|
"source": "activ",
|
||||||
|
"level": "integrity",
|
||||||
|
"sites": 1,
|
||||||
|
"says": "the asset on that chain is allowed by the declared policy"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "risk.counterparty",
|
||||||
|
"source": "contrapartida",
|
||||||
|
"level": "integrity",
|
||||||
|
"sites": 1,
|
||||||
|
"says": "the payee is not the payer and is not a refused counterparty of the policy"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "risk.rate",
|
||||||
|
"source": "curs",
|
||||||
|
"level": "integrity",
|
||||||
|
"sites": 1,
|
||||||
|
"says": "the USD rate is declared (value, source, time) when the policy requires it"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "risk.limit",
|
||||||
|
"source": "limita",
|
||||||
|
"level": "integrity",
|
||||||
|
"sites": 1,
|
||||||
|
"says": "the amount in USD is within the per-payment limit of the policy"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "risk.window",
|
||||||
|
"source": "fereastra",
|
||||||
|
"level": "integrity",
|
||||||
|
"sites": 1,
|
||||||
|
"says": "the amount and the count stay within the sliding window of the policy"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"payment-receipt": {
|
||||||
|
"artifacts": [
|
||||||
|
"payment-receipt"
|
||||||
|
],
|
||||||
|
"rules": [
|
||||||
|
{
|
||||||
|
"id": "receipt.binding",
|
||||||
|
"source": "legatura",
|
||||||
|
"level": "integrity",
|
||||||
|
"sites": 2,
|
||||||
|
"says": "the settlement envelope commits to this instruction and says the same thing"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "receipt.amount",
|
||||||
|
"source": "suma",
|
||||||
|
"level": "integrity",
|
||||||
|
"sites": 1,
|
||||||
|
"says": "the USD amount is the amount at the declared rate, exactly"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "receipt.policy",
|
||||||
|
"source": "politica",
|
||||||
|
"level": "integrity",
|
||||||
|
"sites": 1,
|
||||||
|
"says": "the policy shown hashes to the policy the risk verdict names"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "receipt.risk",
|
||||||
|
"source": "risc",
|
||||||
|
"level": "integrity",
|
||||||
|
"sites": 3,
|
||||||
|
"says": "the risk verdict reproduces from the inputs and the policy, and it allowed this payment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "receipt.chain",
|
||||||
|
"source": "lant",
|
||||||
|
"level": "integrity",
|
||||||
|
"sites": 1,
|
||||||
|
"says": "the transaction supplied is this payment: payer, payee, value, block, mined"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"market-timeline": {
|
||||||
|
"artifacts": [
|
||||||
|
"market-timeline"
|
||||||
|
],
|
||||||
|
"rules": [
|
||||||
|
{
|
||||||
|
"id": "market.form",
|
||||||
|
"source": "forma",
|
||||||
|
"level": "integrity",
|
||||||
|
"sites": 1,
|
||||||
|
"says": "the timeline is well formed: events with name, arguments, sender, integer time and block; the job and the constants with their integer fields"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "market.complete",
|
||||||
|
"source": "intreg",
|
||||||
|
"level": "integrity",
|
||||||
|
"sites": 1,
|
||||||
|
"says": "the timeline carries every event the job state implies: posted; claimed when a provider is set; submitted and disputed when their times are set"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "market.posting",
|
||||||
|
"source": "postare",
|
||||||
|
"level": "integrity",
|
||||||
|
"sites": 1,
|
||||||
|
"says": "the JobPosted event matches the job (requester, spec, deadline, reward)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "market.deadline",
|
||||||
|
"source": "termen",
|
||||||
|
"level": "integrity",
|
||||||
|
"sites": 3,
|
||||||
|
"says": "claim and submission are within the deadline; an expiry refund only after it"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "market.window",
|
||||||
|
"source": "fereastra",
|
||||||
|
"level": "integrity",
|
||||||
|
"sites": 2,
|
||||||
|
"says": "a dispute is raised inside the challenge window; a third party finalizes only after it"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "market.arbiter",
|
||||||
|
"source": "arbitru",
|
||||||
|
"level": "integrity",
|
||||||
|
"sites": 3,
|
||||||
|
"says": "a dispute is resolved by the arbiter, or timed out only after the arbitration timeout"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "market.payout",
|
||||||
|
"source": "plata",
|
||||||
|
"level": "integrity",
|
||||||
|
"sites": 4,
|
||||||
|
"says": "the terminal payout matches the final state (who, how much, which bond)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "market.result",
|
||||||
|
"source": "rezultat",
|
||||||
|
"level": "integrity",
|
||||||
|
"sites": 1,
|
||||||
|
"says": "the result bytes hash to the commitment on chain"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "market.replay",
|
||||||
|
"source": "replay",
|
||||||
|
"level": "integrity",
|
||||||
|
"sites": 3,
|
||||||
|
"says": "the public task recomputed agrees with who was paid or slashed"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "market.proof",
|
||||||
|
"source": "dovada",
|
||||||
|
"level": "integrity",
|
||||||
|
"sites": 2,
|
||||||
|
"says": "the execution envelope names this job and existed before the window closed"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"dataset": {
|
||||||
|
"artifacts": [
|
||||||
|
"dataset-record",
|
||||||
|
"dataset-answer",
|
||||||
|
"dataset-consistency",
|
||||||
|
"dataset-sample"
|
||||||
|
],
|
||||||
|
"rules": [
|
||||||
|
{
|
||||||
|
"id": "dataset.form",
|
||||||
|
"source": "forma",
|
||||||
|
"level": "integrity",
|
||||||
|
"sites": 1,
|
||||||
|
"says": "a row carries its field commitments and its disclosed fields"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "dataset.commitment",
|
||||||
|
"source": "angajament",
|
||||||
|
"level": "integrity",
|
||||||
|
"sites": 4,
|
||||||
|
"says": "the record, answer or proof names the commitment it is checked against"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "dataset.field",
|
||||||
|
"source": "camp",
|
||||||
|
"level": "integrity",
|
||||||
|
"sites": 2,
|
||||||
|
"says": "a disclosed value opens its salted field commitment"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "dataset.inclusion",
|
||||||
|
"source": "includere",
|
||||||
|
"level": "integrity",
|
||||||
|
"sites": 1,
|
||||||
|
"says": "the record is in the log of that version (RFC 9162 inclusion)"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "dataset.index",
|
||||||
|
"source": "index",
|
||||||
|
"level": "integrity",
|
||||||
|
"sites": 2,
|
||||||
|
"says": "the row is at its stated position of the sorted index"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "dataset.range",
|
||||||
|
"source": "interval",
|
||||||
|
"level": "integrity",
|
||||||
|
"sites": 2,
|
||||||
|
"says": "every row returned is inside the queried range"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "dataset.order",
|
||||||
|
"source": "ordine",
|
||||||
|
"level": "integrity",
|
||||||
|
"sites": 1,
|
||||||
|
"says": "consecutive rows are in index order"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "dataset.completeness",
|
||||||
|
"source": "completitudine",
|
||||||
|
"level": "integrity",
|
||||||
|
"sites": 5,
|
||||||
|
"says": "the rows are the whole contiguous run; the neighbours on both sides are outside the range"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "dataset.consistency",
|
||||||
|
"source": "consistenta",
|
||||||
|
"level": "integrity",
|
||||||
|
"sites": 3,
|
||||||
|
"says": "the older log is a prefix of the newer (RFC 9162 consistency) and the versions are linked"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "dataset.sample",
|
||||||
|
"source": "esantion",
|
||||||
|
"level": "integrity",
|
||||||
|
"sites": 1,
|
||||||
|
"says": "every sampled position is served and verifies"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"notEnrolled": [
|
||||||
|
{
|
||||||
|
"verifier": "ai-trust",
|
||||||
|
"refusalSites": 20,
|
||||||
|
"why": "its refusals already carry a level and a code; enrolling it is a vector per code, not done here"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"verifier": "agents (ledger)",
|
||||||
|
"refusalSites": 17,
|
||||||
|
"why": "its refusals are free text; a rule id per refusal comes first"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"verifier": "identity",
|
||||||
|
"refusalSites": 15,
|
||||||
|
"why": "its checks are labelled rows, not rule ids"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"verifier": "verify-layer (log and tree)",
|
||||||
|
"refusalSites": 36,
|
||||||
|
"why": "its refusals are free text; a rule id per refusal comes first"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
104
conformance/conformance.mjs
Normal file
104
conformance/conformance.mjs
Normal file
@ -0,0 +1,104 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
// conformance.mjs: runs the conformance vectors against ANY implementation, given as a command in any language.
|
||||||
|
//
|
||||||
|
// node conformance.mjs --impl "<command>" [--online] [--only <id prefix>] [--vectors <dir>] [--json]
|
||||||
|
//
|
||||||
|
// The contract of an implementation (three calls, JSON on stdout):
|
||||||
|
// <command> --capabilities { artifacts: [...], rules: [...], online: bool, batch: bool } what it claims to judge
|
||||||
|
// <command> <vector.json> [--online] the verdict of verdict.mjs for the file's { artifact, input }:
|
||||||
|
// { verdict: VALID|INVALID|PARTIAL, failed: [rule ids], levels: [{ level, state }, ...] }
|
||||||
|
// <command> --batch <list.json> (only if batch) list = [{ file, online }]; one verdict per line, in order
|
||||||
|
// Without --online the implementation must not open a connection; vectors that need the testnet endpoint are run only with --online.
|
||||||
|
//
|
||||||
|
// A vector is scored only if the implementation claims its artifact and every rule the vector exercises; otherwise it is reported as
|
||||||
|
// NOT COVERED, never as passed. A scored vector PASSES when the verdict, the exact set of failed rules and the state of each of the
|
||||||
|
// four levels are the expected ones; it FAILS otherwise; it is BROKEN when the implementation gave no verdict at all (a crash is not
|
||||||
|
// a refusal). Exit: 0 every scored vector passed (and at least one was scored); 1 a vector failed or broke; 2 nothing was scored, or
|
||||||
|
// the vector set itself is not whole.
|
||||||
|
import fs from 'node:fs'; import os from 'node:os'; import path from 'node:path'; import crypto from 'node:crypto'; import { spawnSync } from 'node:child_process'; import { fileURLToPath } from 'node:url';
|
||||||
|
|
||||||
|
const AICI = path.dirname(fileURLToPath(import.meta.url));
|
||||||
|
const sha256 = (b) => '0x' + crypto.createHash('sha256').update(b).digest('hex');
|
||||||
|
const desparte = (s) => (s.match(/"[^"]*"|\S+/g) || []).map((x) => x.replace(/^"|"$/g, ''));
|
||||||
|
const peDisc = (d, pre = '') => fs.readdirSync(d, { withFileTypes: true }).flatMap((e) => (e.isDirectory() ? peDisc(path.join(d, e.name), pre + e.name + '/') : [pre + e.name]));
|
||||||
|
|
||||||
|
/** The vector set, whole: every file of the index present with its digest, and no file the index does not name. */
|
||||||
|
export function incarcaVectorii(dir = path.join(AICI, 'vectori')) {
|
||||||
|
const ip = path.join(dir, 'INDEX.json'); if (!fs.existsSync(ip)) return { eroare: 'no INDEX.json in ' + dir };
|
||||||
|
const index = JSON.parse(fs.readFileSync(ip, 'utf8')); const vectori = [];
|
||||||
|
for (const e of index.vectors) {
|
||||||
|
const f = path.join(dir, e.id + '.json'); if (!fs.existsSync(f)) return { eroare: 'the index names ' + e.id + ', which is not on disk' };
|
||||||
|
// the digest is over the text with LF line ends: a checkout that wrote CRLF (git on Windows) holds the same vector
|
||||||
|
const b = fs.readFileSync(f, 'utf8').replace(/\r\n/g, '\n'); if (sha256(Buffer.from(b, 'utf8')) !== e.sha256) return { eroare: 'vector ' + e.id + ' does not hash to its index entry' };
|
||||||
|
vectori.push({ ...JSON.parse(b), file: f });
|
||||||
|
}
|
||||||
|
const straine = peDisc(dir).filter((f) => f !== 'INDEX.json' && !index.vectors.some((e) => e.id + '.json' === f));
|
||||||
|
if (straine.length) return { eroare: 'files the index does not name: ' + straine.join(', ') };
|
||||||
|
if (index.count !== vectori.length) return { eroare: 'the index counts ' + index.count + ' vectors and lists ' + vectori.length };
|
||||||
|
return { index, vectori };
|
||||||
|
}
|
||||||
|
/** Compares a verdict with the expectation of a vector; returns the list of differences (empty: the vector passed). */
|
||||||
|
export function compara(v, r) {
|
||||||
|
const d = []; const e = v.expected;
|
||||||
|
if (r.verdict !== e.verdict) d.push(`verdict ${r.verdict}, expected ${e.verdict}`);
|
||||||
|
const f = Array.isArray(r.failed) ? [...r.failed].sort() : null;
|
||||||
|
if (!f || f.join() !== e.failed.join()) d.push(`failed rules [${f ? f.join(', ') : 'none given'}], expected [${e.failed.join(', ')}]`);
|
||||||
|
for (const [l, s] of Object.entries(e.levels)) { const x = (r.levels || []).find((y) => y.level === l); if (!x || x.state !== s) d.push(`${l} ${x ? x.state : 'missing'}, expected ${s}`); }
|
||||||
|
return d;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Runs the suite. @returns {{ caps, rezultate: [{ id, stare: 'PASS'|'FAIL'|'BROKEN'|'NOT_COVERED'|'SKIPPED_ONLINE', detaliu }], eroare? }}
|
||||||
|
* `env` is added to the environment of the implementation (the planting control points it at planted copies through it).
|
||||||
|
*/
|
||||||
|
export function ruleazaSuita({ impl, online = false, dir, doar = null, env = {}, vectori: dati = null }) {
|
||||||
|
const cmd = desparte(impl); if (!cmd.length) return { eroare: 'no implementation command' };
|
||||||
|
if (cmd[0] === 'node') cmd[0] = process.execPath;
|
||||||
|
const mediu = { ...process.env, ...env };
|
||||||
|
const exec = (args, timeout) => spawnSync(cmd[0], [...cmd.slice(1), ...args], { encoding: 'utf8', env: mediu, timeout, maxBuffer: 64 << 20, stdio: ['ignore', 'pipe', 'pipe'] });
|
||||||
|
const c = exec(['--capabilities'], 60000); let caps; try { caps = JSON.parse(c.stdout); } catch { return { eroare: 'the implementation gave no capabilities (exit ' + c.status + '): ' + String(c.stderr || c.error || '').trim().split('\n').slice(-1)[0].slice(0, 200) }; }
|
||||||
|
if (!Array.isArray(caps.artifacts) || !Array.isArray(caps.rules)) return { eroare: 'capabilities need artifacts and rules' };
|
||||||
|
let vectori = dati; if (!vectori) { const s = incarcaVectorii(dir); if (s.eroare) return { eroare: s.eroare }; vectori = s.vectori; }
|
||||||
|
if (doar) vectori = vectori.filter((v) => v.id.startsWith(doar));
|
||||||
|
const rezultate = []; const deRulat = [];
|
||||||
|
for (const v of vectori) {
|
||||||
|
const lipsa = !caps.artifacts.includes(v.artifact) ? ['artifact ' + v.artifact] : v.exercises.filter((r) => !caps.rules.includes(r));
|
||||||
|
if (v.requires.length && !caps.online) lipsa.push('online');
|
||||||
|
if (lipsa.length) rezultate.push({ id: v.id, stare: 'NOT_COVERED', detaliu: 'the implementation does not claim: ' + lipsa.join(', ') });
|
||||||
|
else if (v.requires.length && !online) rezultate.push({ id: v.id, stare: 'SKIPPED_ONLINE', detaliu: 'needs ' + v.requires.join(', ') + ' (run with --online)' });
|
||||||
|
else deRulat.push(v);
|
||||||
|
}
|
||||||
|
const raspunsuri = new Map();
|
||||||
|
if (caps.batch && deRulat.length) {
|
||||||
|
const lf = path.join(fs.mkdtempSync(path.join(os.tmpdir(), 'aere-conf-run-')), 'list.json'); fs.writeFileSync(lf, JSON.stringify(deRulat.map((v) => ({ file: v.file, online: v.requires.length > 0 }))));
|
||||||
|
const r = exec(['--batch', lf], 1800000); fs.rmSync(path.dirname(lf), { recursive: true, force: true });
|
||||||
|
const linii = String(r.stdout || '').split('\n').filter((l) => l.trim());
|
||||||
|
deRulat.forEach((v, k) => { try { raspunsuri.set(v.id, JSON.parse(linii[k])); } catch { raspunsuri.set(v.id, { error: 'no verdict line (exit ' + r.status + '): ' + String(r.stderr || r.error || '').trim().split('\n').slice(-1)[0].slice(0, 160) }); } });
|
||||||
|
} else for (const v of deRulat) {
|
||||||
|
const r = exec([v.file, ...(v.requires.length ? ['--online'] : [])], 600000);
|
||||||
|
try { raspunsuri.set(v.id, JSON.parse(r.stdout)); } catch { raspunsuri.set(v.id, { error: 'no verdict (exit ' + r.status + '): ' + String(r.stderr || r.error || '').trim().split('\n').slice(-1)[0].slice(0, 160) }); }
|
||||||
|
}
|
||||||
|
for (const v of deRulat) {
|
||||||
|
const r = raspunsuri.get(v.id);
|
||||||
|
if (!r || r.error || !r.verdict) { rezultate.push({ id: v.id, stare: 'BROKEN', detaliu: (r && r.error) || 'no verdict' }); continue; }
|
||||||
|
const d = compara(v, r); rezultate.push({ id: v.id, stare: d.length ? 'FAIL' : 'PASS', detaliu: d.join('; '), primit: { verdict: r.verdict, failed: r.failed } });
|
||||||
|
}
|
||||||
|
const ordine = new Map(vectori.map((v, k) => [v.id, k])); rezultate.sort((x, y) => ordine.get(x.id) - ordine.get(y.id));
|
||||||
|
return { caps, rezultate };
|
||||||
|
}
|
||||||
|
|
||||||
|
if (process.argv[1] && path.resolve(process.argv[1]) === fileURLToPath(import.meta.url)) {
|
||||||
|
const a = process.argv.slice(2); const opt = (n) => { const i = a.indexOf(n); return i >= 0 ? a[i + 1] : null; };
|
||||||
|
const impl = opt('--impl'); if (!impl) { console.error('usage: node conformance.mjs --impl "<command>" [--online] [--only <id prefix>] [--vectors <dir>] [--json]'); process.exit(2); }
|
||||||
|
const s = ruleazaSuita({ impl, online: a.includes('--online'), dir: opt('--vectors') || undefined, doar: opt('--only') });
|
||||||
|
if (s.eroare) { console.log('NOT MEASURED: ' + s.eroare); process.exit(2); }
|
||||||
|
const n = (st) => s.rezultate.filter((r) => r.stare === st).length;
|
||||||
|
if (a.includes('--json')) console.log(JSON.stringify({ implementation: s.caps.name || impl, results: s.rezultate }, null, 1));
|
||||||
|
else {
|
||||||
|
console.log('implementation: ' + (s.caps.name || impl) + ' claims ' + s.caps.artifacts.length + ' artifact kind(s), ' + s.caps.rules.length + ' rule(s)' + (s.caps.online ? ', online' : ''));
|
||||||
|
for (const r of s.rezultate) if (r.stare === 'FAIL' || r.stare === 'BROKEN') console.log(` [${r.stare.padEnd(6)}] ${r.id}: ${r.detaliu}`);
|
||||||
|
const nc = s.rezultate.filter((r) => r.stare === 'NOT_COVERED'); const peMotiv = {}; for (const r of nc) peMotiv[r.detaliu] = (peMotiv[r.detaliu] || 0) + 1;
|
||||||
|
for (const [m, k] of Object.entries(peMotiv)) console.log(` [NOT COVERED] ${k} vector(s): ${m}`);
|
||||||
|
console.log(`\nconformance: ${n('PASS')} passed, ${n('FAIL')} failed, ${n('BROKEN')} broken, ${n('NOT_COVERED')} not covered, ${n('SKIPPED_ONLINE')} skipped (online) of ${s.rezultate.length} vectors`);
|
||||||
|
}
|
||||||
|
process.exitCode = n('FAIL') || n('BROKEN') ? 1 : n('PASS') ? 0 : 2;
|
||||||
|
}
|
||||||
18
conformance/deriva-reguli.mjs
Normal file
18
conformance/deriva-reguli.mjs
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
// deriva-reguli.mjs: writes REGULI.json, the table of the rules the enrolled verifiers name, DERIVED from their code (reguli.mjs).
|
||||||
|
// node deriva-reguli.mjs derives and writes REGULI.json; refuses (1) if a rule is unmapped, unmarked or gone
|
||||||
|
// node deriva-reguli.mjs --verifica derives and compares with REGULI.json: LA ZI (0), DIFERIT (1), NEMASURAT (2: a source not here)
|
||||||
|
import fs from 'node:fs'; import path from 'node:path'; import { fileURLToPath } from 'node:url';
|
||||||
|
import { deriva } from './reguli.mjs';
|
||||||
|
|
||||||
|
const F = path.join(path.dirname(fileURLToPath(import.meta.url)), 'REGULI.json');
|
||||||
|
const { tabel, probleme, nemasurat } = await deriva();
|
||||||
|
for (const p of probleme) console.log('REFUSED: ' + p);
|
||||||
|
for (const n of nemasurat) console.log('NOT MEASURED: ' + n);
|
||||||
|
if (probleme.length) process.exitCode = 1;
|
||||||
|
else if (nemasurat.length) process.exitCode = 2;
|
||||||
|
else {
|
||||||
|
const text = JSON.stringify(tabel, null, 1) + '\n'; const n = Object.values(tabel.verifiers).reduce((s, v) => s + v.rules.length, 0);
|
||||||
|
if (process.argv.includes('--verifica')) { const egal = fs.existsSync(F) && fs.readFileSync(F, 'utf8').replace(/\r\n/g, '\n') === text; console.log(egal ? `LA ZI (${n} rules of ${Object.keys(tabel.verifiers).length} verifiers)` : 'DIFERIT: REGULI.json is not what the code derives now'); process.exitCode = egal ? 0 : 1; }
|
||||||
|
else { fs.writeFileSync(F, text); console.log(`written REGULI.json: ${n} rules of ${Object.keys(tabel.verifiers).length} verifiers; not enrolled: ` + tabel.notEnrolled.map((x) => x.verifier + ' (' + x.refusalSites + ' refusal sites)').join(', ')); }
|
||||||
|
}
|
||||||
299
conformance/genereaza-vectori.mjs
Normal file
299
conformance/genereaza-vectori.mjs
Normal file
@ -0,0 +1,299 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
// genereaza-vectori.mjs: the conformance vectors, DERIVED from the producers and from evidence already recorded, never typed by hand.
|
||||||
|
//
|
||||||
|
// node genereaza-vectori.mjs rewrites vectori/ from: the producers run on fixed inputs (the AIP-23 kinds), the evidence
|
||||||
|
// recorded on testnet 28001 beside the products (a receipt, five market timelines, a notarized
|
||||||
|
// dataset commitment), and surse-proaspete.json (what needs a key, randomness or the chain)
|
||||||
|
// node genereaza-vectori.mjs --verifica regenerates in memory and compares with vectori/ byte for byte: LA ZI (0) or DIFERIT (1)
|
||||||
|
// node genereaza-vectori.mjs --proaspat rebuilds surse-proaspete.json: an ML-DSA-65 key made and discarded here signs a tree head,
|
||||||
|
// a random envelope nobody notarized, a small dataset (random salts), and the transaction of
|
||||||
|
// the recorded receipt READ from testnet 28001 (two eth_ calls; nothing is sent)
|
||||||
|
//
|
||||||
|
// A vector is { artifact, input, expected: { verdict, failed, levels } }. An INVALID vector names its `base` (a vector that is not
|
||||||
|
// INVALID) and its `mutation`: ONE operation (set, remove, add at one JSON path) applied to the base input, so that it differs from the
|
||||||
|
// base in exactly one place and must be refused for exactly the rules in `expected.failed`. Where the rule sits under a hash (an amount
|
||||||
|
// under the instruction hash, an order under an index root) one place is not reachable: the mutation is then made at the PRODUCER
|
||||||
|
// (`mutation.producer`), the commitments above it recomputed, and `mutation.changed` lists every path that moved.
|
||||||
|
// `exercises` are the rules an implementation must be able to judge to be scored on the vector; `requires: ['rpc-28001']` marks the
|
||||||
|
// vectors that need the testnet endpoint (run only with --online).
|
||||||
|
import fs from 'node:fs'; import os from 'node:os'; import path from 'node:path'; import crypto from 'node:crypto'; import { fileURLToPath } from 'node:url';
|
||||||
|
import { buildProof, KINDS } from '../proof-kinds/proof-kinds.mjs';
|
||||||
|
import { buildProofOfAi } from '../proof-of-ai/proof-of-ai.mjs';
|
||||||
|
import { definePolicy, checkAction, decisionEnvelope } from '../agents/agent-policy.mjs';
|
||||||
|
import { capDeArbore } from '../verify-layer/jurnal-arbore.mjs';
|
||||||
|
import { hashIntrare } from '../verify-layer/sidecar.mjs';
|
||||||
|
import { merkleTree } from '../verify-layer/arbore-merkle.mjs';
|
||||||
|
import * as RISC from '../payments/risc.mjs';
|
||||||
|
import * as BAZA from '../verifiable-data/baza.mjs';
|
||||||
|
import { hartaPublica, LEVELS } from './reguli.mjs';
|
||||||
|
|
||||||
|
const AICI = path.dirname(fileURLToPath(import.meta.url));
|
||||||
|
const DIR = path.join(AICI, 'vectori'); const PROASPETE = path.join(AICI, 'surse-proaspete.json');
|
||||||
|
const DOV = { chitanta: new URL('../payments/dovezi/chitanta-28001-2026-10-02T1716Z.json', import.meta.url), piata: new URL('../market-settlement/dovezi/piata-28001-2026-10-02T1652Z.json', import.meta.url),
|
||||||
|
date: new URL('../verifiable-data/dovezi/notarizare-28001-2026-10-02T0820Z.json', import.meta.url) };
|
||||||
|
const citeste = (u) => JSON.parse(fs.readFileSync(fileURLToPath(u), 'utf8'));
|
||||||
|
const clona = (x) => JSON.parse(JSON.stringify(x));
|
||||||
|
const sha256 = (b) => '0x' + crypto.createHash('sha256').update(b).digest('hex');
|
||||||
|
const HARTA = hartaPublica();
|
||||||
|
const RPC_28001 = process.env.AERE_CONFORMANCE_RPC_28001 || 'https://testnet-rpc.aere.network';
|
||||||
|
|
||||||
|
// ---------- one operation at one path ----------
|
||||||
|
export function aplica(input, op) {
|
||||||
|
const c = clona(input); let o = c; const p = op.path;
|
||||||
|
for (const k of p.slice(0, -1)) { if (o == null || !(k in Object(o))) throw new Error('mutation path not in the base: ' + p.join('.')); o = o[k]; }
|
||||||
|
const k = p[p.length - 1];
|
||||||
|
if (op.op === 'set') { if (!(k in Object(o))) throw new Error('set: nothing at ' + p.join('.')); o[k] = clona(op.value); }
|
||||||
|
else if (op.op === 'add') { if (k in Object(o)) throw new Error('add: something already at ' + p.join('.')); o[k] = clona(op.value); }
|
||||||
|
else if (op.op === 'remove') { if (!(k in Object(o))) throw new Error('remove: nothing at ' + p.join('.')); if (Array.isArray(o)) o.splice(k, 1); else delete o[k]; }
|
||||||
|
else throw new Error('unknown op ' + op.op);
|
||||||
|
return c;
|
||||||
|
}
|
||||||
|
const nivele = (failed, extra = {}) => {
|
||||||
|
const n = Object.fromEntries(LEVELS.map((l) => [l, 'NOT_MEASURED'])); n.integrity = 'PASSED'; Object.assign(n, extra);
|
||||||
|
for (const r of failed) { if (!HARTA[r]) throw new Error('a vector expects an unknown rule: ' + r); n[HARTA[r].level] = 'FAILED'; }
|
||||||
|
return n;
|
||||||
|
};
|
||||||
|
|
||||||
|
const V = []; // the vectors, in order
|
||||||
|
function valid(id, artifact, title, source, input, { exercises, requires = [], verdict = 'VALID', levels = {}, base = null, mutation = null }) {
|
||||||
|
V.push({ v: 1, kind: 'aere-conformance-vector', id, artifact, title, source, requires, exercises: [...exercises].sort(), base, mutation, input, expected: { verdict, failed: [], levels: nivele([], levels) } });
|
||||||
|
return input;
|
||||||
|
}
|
||||||
|
function invalid(id, title, bazaId, op, failed, { levels = {}, exercises = null, requires = null, producer = null } = {}) {
|
||||||
|
const b = V.find((x) => x.id === bazaId); if (!b) throw new Error('no base ' + bazaId); if (b.expected.verdict === 'INVALID') throw new Error('the base of ' + id + ' is itself INVALID');
|
||||||
|
const input = producer ? producer.input : aplica(b.input, op);
|
||||||
|
const mutation = producer ? { producer: producer.note, changed: producer.changed } : op;
|
||||||
|
V.push({ v: 1, kind: 'aere-conformance-vector', id, artifact: b.artifact, title, source: 'derived from ' + bazaId, requires: requires || b.requires, exercises: (exercises || b.exercises).slice().sort(), base: bazaId, mutation, input,
|
||||||
|
expected: { verdict: 'INVALID', failed: [...failed].sort(), levels: nivele(failed, { ...b.expected.levels, ...levels }) } });
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------- the fresh sources: a key, randomness, the chain ----------
|
||||||
|
async function proaspat() {
|
||||||
|
const AT = new Date().toISOString();
|
||||||
|
// (1) a signed tree head: three envelopes in a hash-chained log, the head signed with an ML-DSA-65 key that exists only in this call
|
||||||
|
const INT = intrariKinds(); let prev = '0x' + '00'.repeat(32);
|
||||||
|
const jurnal = ['data', 'execution', 'time'].map((k, seq) => { const proof = buildProof(k, INT[k]); const hash = hashIntrare(seq, prev, proof); const e = { seq, prev, proof, hash }; prev = hash; return e; });
|
||||||
|
const { privateKey } = crypto.generateKeyPairSync('ml-dsa-65');
|
||||||
|
const signedHead = capDeArbore(jurnal, { host: 'conformance', createdAt: AT, signKeyPem: privateKey.export({ type: 'pkcs8', format: 'pem' }) });
|
||||||
|
// (2) an envelope nobody notarized: random content
|
||||||
|
const fresh = buildProof('data', { name: 'conformance-fresh', content: crypto.randomBytes(32).toString('hex'), createdAt: AT });
|
||||||
|
// (3) the transaction of the recorded receipt, read from the chain
|
||||||
|
const ins = citeste(DOV.chitanta).instruction;
|
||||||
|
const rpc = async (method, params) => { const r = await fetch(RPC_28001, { method: 'POST', headers: { 'content-type': 'application/json' }, body: JSON.stringify({ jsonrpc: '2.0', id: 1, method, params }), signal: AbortSignal.timeout(20000) }); if (!r.ok) throw new Error(method + ': HTTP ' + r.status); const j = await r.json(); if (j.error || !j.result) throw new Error(method + ': ' + JSON.stringify(j.error || 'no result')); return j.result; };
|
||||||
|
const t = await rpc('eth_getTransactionByHash', [ins.txHash]); const rc = await rpc('eth_getTransactionReceipt', [ins.txHash]);
|
||||||
|
const receiptTx = { chainId: 28001, readAt: AT, tx: { from: t.from, to: t.to, value: t.value, blockHash: t.blockHash }, txReceipt: { status: rc.status, blockHash: rc.blockHash } };
|
||||||
|
// (4) a small dataset: 12 records committed as version 1, 4 more as version 2
|
||||||
|
const T = fs.mkdtempSync(path.join(os.tmpdir(), 'aere-conf-set-')); let dataset;
|
||||||
|
try {
|
||||||
|
const TARI = ['RO', 'DE', 'FR', 'ES']; const rec = (n, de = 0) => Array.from({ length: n }, (_, j) => { const k = de + j; return { id: 'r' + k, country: TARI[k % 4], age: 20 + ((k * 7) % 40), email: 'u' + k + '@example.test', note: 'undisclosed-' + k }; });
|
||||||
|
const db = BAZA.creeaza(path.join(T, 'set'), { name: 'conformance', indexes: ['country', 'age'] });
|
||||||
|
BAZA.adauga(db, rec(12)); BAZA.angajeaza(db, { createdAt: '2026-10-03T00:00:00.000Z' }); BAZA.adauga(db, rec(4, 12)); BAZA.angajeaza(db, { createdAt: '2026-10-03T00:01:00.000Z' });
|
||||||
|
const c1 = BAZA.versiune(db, 1), c2 = BAZA.versiune(db, 2);
|
||||||
|
const cerute = []; const seed = 'conformance-sample'; const k = 4;
|
||||||
|
await BAZA.esantioneaza({ url: 'vector://served', commitment: c2, k, seed, ia: async (u) => { cerute.push(Number(u.split('/').pop())); return null; } });
|
||||||
|
dataset = { older: c1, newer: c2, record: BAZA.dovadaInregistrare(db, 2, 5, { fields: ['country', 'age'] }), answer: BAZA.interogheaza(db, 2, { field: 'age', from: 30, to: 45, fields: ['country'] }),
|
||||||
|
consistency: BAZA.dovadaConsistenta(db, 1, 2), sample: { k, seed, served: Object.fromEntries(cerute.map((i) => [String(i), BAZA.dovadaInregistrare(db, 2, i, { fields: ['country'] })])) } };
|
||||||
|
} finally { fs.rmSync(T, { recursive: true, force: true }); }
|
||||||
|
fs.writeFileSync(PROASPETE, JSON.stringify({ v: 1, kind: 'aere-conformance-fresh-sources', at: AT, signedHead, fresh, receiptTx, dataset }, null, 1) + '\n');
|
||||||
|
console.log('written ' + path.basename(PROASPETE) + ' (a signed head, a fresh envelope, the receipt transaction read from 28001, a dataset of ' + dataset.newer.size + ' records)');
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------- fixed inputs of the AIP-23 kinds (the inputs of the published AIP-23 kind vectors) ----------
|
||||||
|
function intrariKinds() {
|
||||||
|
const AT = '2026-09-26T00:00:00Z'; const H = (s) => sha256(Buffer.from(s, 'utf8'));
|
||||||
|
return { data: { name: 'report.csv', content: 'a,b,c', createdAt: AT }, execution: { program: 'aere-node', input: 'in', output: 'out', exitCode: 0, createdAt: AT },
|
||||||
|
identity: { subjectId: 'agent-1', publicKey: 'PK', method: 'ml-dsa-65', createdAt: AT }, compliance: { subject: 'org-x', policy: 'pq-ready', result: 'pass', evidence: 'EV', createdAt: AT },
|
||||||
|
runtime: { host: 'h1', artifactContent: 'BIN', attested: H('BIN'), matches: true, createdAt: AT }, location: { subject: 'srv-eu', region: 'eu-central', evidence: 'EV', createdAt: AT },
|
||||||
|
device: { deviceId: 'dev-9', attestation: 'ATT', publicKey: 'PK', posture: 'secure-boot', createdAt: AT }, payment: { from: '0xa', to: '0xb', amount: '100', asset: 'AERE', tx: 'TX', createdAt: AT },
|
||||||
|
ownership: { owner: '0xowner', assetId: 'nft-7', asset: 'ASSET', createdAt: AT }, time: { subject: 'SUBJ', source: 'aere-anchor', at: AT, createdAt: AT },
|
||||||
|
block: { blockHash: '0x' + 'ab'.repeat(32), stateRoot: '0x' + 'cd'.repeat(32), anchorHeight: 20255488, certificateDigest: '0x' + 'ef'.repeat(32), createdAt: AT },
|
||||||
|
authorization: { grantor: 'org-x', grantee: 'agent-7', scope: 'payments:send<=100', policy: 'POLICY', expiresAt: '2026-12-31T00:00:00Z', createdAt: AT },
|
||||||
|
settlement: { chainId: 2800, txHash: '0x' + '12'.repeat(32), blockHash: '0x' + '34'.repeat(32), from: '0xa', to: '0xb', amount: '100', asset: 'AERE', instruction: 'INSTR', createdAt: AT },
|
||||||
|
provenance: { subject: 'ARTIFACT', parents: ['SRC-1', 'SRC-2'], process: 'BUILD', actor: 'build-bot', createdAt: AT } };
|
||||||
|
}
|
||||||
|
/** Every AIP-23 kind, from its producer, on the fixed inputs. */
|
||||||
|
export function plicuriKinds() {
|
||||||
|
const AT = '2026-09-26T00:00:00Z'; const INT = intrariKinds(); const out = [];
|
||||||
|
for (const k of KINDS) { if (!INT[k]) throw new Error('proof kind ' + k + ' has no fixed input here: a new kind needs its vectors'); out.push([k, buildProof(k, INT[k])]); }
|
||||||
|
out.push(['ai', buildProofOfAi({ model: { name: 'example-model', version: '1.0' }, prompt: 'summarize', output: 'summary', tools: ['search'], agentId: 'agent-7', createdAt: AT })]);
|
||||||
|
const { policy, policyHash } = definePolicy({ agentId: 'agent-7', spend: { amount: '100', windowSeconds: 3600, asset: 'AERE' }, tools: ['search'], recipients: null });
|
||||||
|
const action = { kind: 'payment', to: '0xb', amount: '50', at: 1 };
|
||||||
|
out.push(['agent-decision', decisionEnvelope({ policyHash, action, decision: checkAction(policy, action, []), createdAt: AT })]);
|
||||||
|
return out;
|
||||||
|
}
|
||||||
|
|
||||||
|
// ---------- the vectors ----------
|
||||||
|
function construieste() {
|
||||||
|
if (!fs.existsSync(PROASPETE)) throw new Error('surse-proaspete.json is missing: run with --proaspat once (it reads testnet 28001)');
|
||||||
|
const P = JSON.parse(fs.readFileSync(PROASPETE, 'utf8'));
|
||||||
|
const E = ['envelope.form', 'envelope.integrity'];
|
||||||
|
|
||||||
|
// (A) AIP-23 envelopes: every kind VALID; its statementHash cut short (form); one statement field changed (integrity)
|
||||||
|
for (const [k, env] of plicuriKinds()) {
|
||||||
|
valid(`envelope/${k}.valid`, 'envelope', `the ${k} envelope from its producer`, 'producer on fixed inputs', { envelope: env }, { exercises: E });
|
||||||
|
invalid(`envelope/${k}.form`, `${k}: the statementHash is 63 hex digits`, `envelope/${k}.valid`, { op: 'set', path: ['envelope', 'statementHash'], value: env.statementHash.slice(0, -1) }, ['envelope.form']);
|
||||||
|
const camp = Object.keys(env.statement).find((c) => c !== 'kind' && typeof env.statement[c] === 'string'); if (!camp) throw new Error('kind ' + k + ' has no string field to change');
|
||||||
|
invalid(`envelope/${k}.integrity`, `${k}: statement.${camp} changed after hashing`, `envelope/${k}.valid`, { op: 'set', path: ['envelope', 'statement', camp], value: env.statement[camp] + '0' }, ['envelope.integrity']);
|
||||||
|
}
|
||||||
|
// a signed envelope: the tree head of an audit log, ML-DSA-65
|
||||||
|
const b64 = P.signedHead.signature.signature;
|
||||||
|
valid('envelope/signed-head.valid', 'envelope', 'a tree head signed with ML-DSA-65', 'producer (verify-layer tree head), key made and discarded at generation', { envelope: P.signedHead }, { exercises: [...E, 'envelope.signature'], levels: { authenticity: 'PASSED' } });
|
||||||
|
invalid('envelope/signed-head.signature', 'the signature has one character changed', 'envelope/signed-head.valid', { op: 'set', path: ['envelope', 'signature', 'signature'], value: (b64[0] === 'A' ? 'B' : 'A') + b64.slice(1) }, ['envelope.signature']);
|
||||||
|
// notarization: a recorded envelope on 28001 (online), the same judged offline (the claim is not checked), a fresh one with a false claim
|
||||||
|
const D = citeste(DOV.date); const F = [...E, 'envelope.finality']; const R = ['rpc-28001'];
|
||||||
|
valid('envelope/notarized-28001.valid', 'envelope', 'a dataset commitment notarized on testnet 28001, read back under a verified post-quantum anchor', 'recorded (verifiable-data, 2026-10-02)', { envelope: D.envelope, chain: 28001 }, { exercises: F, requires: R, levels: { anchoring: 'PASSED', finality: 'PASSED' } });
|
||||||
|
valid('envelope/notarized-claim.partial', 'envelope', 'the same envelope judged offline: the notarization it claims is not checked, so it is not VALID', 'recorded (verifiable-data, 2026-10-02)', { envelope: D.envelope, chain: 28001 }, { exercises: E, verdict: 'PARTIAL' });
|
||||||
|
valid('envelope/fresh-28001.valid', 'envelope', 'an envelope nobody notarized, claiming nothing', 'producer, random content', { envelope: P.fresh, chain: 28001 }, { exercises: F, requires: R });
|
||||||
|
invalid('envelope/fresh-28001.finality', 'the same envelope claims a notarization the chain does not hold', 'envelope/fresh-28001.valid', { op: 'add', path: ['envelope', 'notarization'], value: { chainId: 28001 } }, ['envelope.finality']);
|
||||||
|
|
||||||
|
// (B) a payment under a declared policy: the recorded payment P1, then one input changed per rule
|
||||||
|
const C = citeste(DOV.chitanta); const RK = Object.keys(HARTA).filter((r) => r.startsWith('risk.'));
|
||||||
|
valid('payment-risk/company-p1.valid', 'payment-risk', 'the recorded payment to a company, allowed by its policy', 'recorded (payments, 2026-10-02)', { policy: C.policy, inputs: C.inputs }, { exercises: RK });
|
||||||
|
const ref = C.policy.refusedCounterparties[0].address; const acum = C.inputs.now;
|
||||||
|
const risc = (nume, titlu, op, r) => invalid('payment-risk/company-p1.' + nume, titlu, 'payment-risk/company-p1.valid', op, [r]);
|
||||||
|
risc('form', 'the payer is not an address', { op: 'set', path: ['inputs', 'payer'], value: '0x1234' }, 'risk.form');
|
||||||
|
risc('form-amount', 'the amount is zero', { op: 'set', path: ['inputs', 'amount'], value: '0' }, 'risk.form');
|
||||||
|
risc('form-time', 'no time given', { op: 'remove', path: ['inputs', 'now'] }, 'risk.form');
|
||||||
|
risc('form-history', 'a history entry the engine cannot count (it is refused, not left out of the window)', { op: 'set', path: ['inputs', 'history'], value: [{ at: 'yesterday', amountUsd: '0.100000' }] }, 'risk.form');
|
||||||
|
risc('asset', 'an asset the policy does not allow', { op: 'set', path: ['inputs', 'asset'], value: 'other-token' }, 'risk.asset');
|
||||||
|
risc('counterparty', 'the payee is a refused counterparty of the policy', { op: 'set', path: ['inputs', 'payee'], value: ref }, 'risk.counterparty');
|
||||||
|
risc('rate', 'no USD rate declared, and the policy requires one', { op: 'remove', path: ['inputs', 'rate'] }, 'risk.rate');
|
||||||
|
risc('rate-number', 'the USD rate given as a JSON number instead of a decimal string (refused, not rounded)', { op: 'set', path: ['inputs', 'rate', 'usdPerUnit'], value: 0.5 }, 'risk.rate');
|
||||||
|
risc('limit', 'an amount above the per-payment limit', { op: 'set', path: ['inputs', 'amount'], value: '2400000000000000000' }, 'risk.limit');
|
||||||
|
risc('window', 'three payments already in the window (the fourth is one too many)', { op: 'set', path: ['inputs', 'history'], value: [1, 2, 3].map((s) => ({ at: acum - 10 * s, amountUsd: '0.100000' })) }, 'risk.window');
|
||||||
|
|
||||||
|
// (C) the receipt of that payment: as the issuer built it; with its notarization claim (offline: PARTIAL; online: VALID)
|
||||||
|
const CK = [...Object.keys(HARTA).filter((r) => r.startsWith('receipt.')), ...E]; const claim = C.envelope.notarization; const env0 = clona(C.envelope); delete env0.notarization;
|
||||||
|
const rb = 'payment-receipt/company-p1.valid'; const tx = P.receiptTx;
|
||||||
|
valid(rb, 'payment-receipt', 'the recorded receipt as its issuer built it, with the policy, the inputs judged and the transaction read from the chain', 'recorded (payments, 2026-10-02); transaction read from 28001 at ' + tx.readAt, { receipt: { instruction: C.instruction, envelope: env0 }, policy: C.policy, inputs: C.inputs, tx: tx.tx, txReceipt: tx.txReceipt, chain: 28001 }, { exercises: CK });
|
||||||
|
const chit = (nume, titlu, op, r, o) => invalid('payment-receipt/company-p1.' + nume, titlu, rb, op, r, o);
|
||||||
|
chit('binding', 'the purpose on the instruction changed after the envelope committed to it', { op: 'set', path: ['receipt', 'instruction', 'purpose'], value: C.instruction.purpose + ' (edited)' }, ['receipt.binding']);
|
||||||
|
chit('policy', 'a looser policy shown in place of the one under the hash (so the verdict does not reproduce either)', { op: 'set', path: ['policy', 'perPaymentMaxUsd'], value: '1000.000000' }, ['receipt.policy', 'receipt.risk']);
|
||||||
|
chit('risk', 'other inputs shown than the ones the issuer judged', { op: 'set', path: ['inputs', 'now'], value: C.inputs.now + 1 }, ['receipt.risk']);
|
||||||
|
chit('chain', 'the transaction on chain pays someone else', { op: 'set', path: ['tx', 'to'], value: C.policy.refusedCounterparties[0].address }, ['receipt.chain']);
|
||||||
|
{ // the amount in USD sits under the instruction hash: the issuer writes another amount and commits to it
|
||||||
|
const r = { instruction: clona(C.instruction), envelope: clona(env0) }; r.instruction.amountUsd = '0.300000';
|
||||||
|
r.envelope.statement.instructionHash = sha256(Buffer.from(RISC.canonical(r.instruction), 'utf8')); r.envelope.statementHash = sha256(Buffer.from(JSON.stringify(r.envelope.statement), 'utf8'));
|
||||||
|
const b = V.find((x) => x.id === rb);
|
||||||
|
chit('amount', 'the issuer wrote a USD amount that is not the amount at the declared rate, and committed to it', null, ['receipt.amount'], { producer: { note: 'instruction.amountUsd changed by the issuer; instructionHash and statementHash recomputed with the published formulas', input: { ...clona(b.input), receipt: r },
|
||||||
|
changed: [['receipt', 'instruction', 'amountUsd'], ['receipt', 'envelope', 'statement', 'instructionHash'], ['receipt', 'envelope', 'statementHash']] } });
|
||||||
|
}
|
||||||
|
{ // the risk verdict sits under the instruction hash: the issuer attaches a verdict made for ANOTHER payment and commits to it
|
||||||
|
const b = V.find((x) => x.id === rb); const reangajeaza = (r) => { r.envelope.statement.instructionHash = sha256(Buffer.from(RISC.canonical(r.instruction), 'utf8')); r.envelope.statementHash = sha256(Buffer.from(JSON.stringify(r.envelope.statement), 'utf8')); return r; };
|
||||||
|
const cuVerdict = (inputs) => { const v = RISC.judeca(C.policy, inputs); if (v.decision !== 'ALLOW') throw new Error('the reused verdict must be an ALLOW'); const r = { instruction: clona(C.instruction), envelope: clona(env0) };
|
||||||
|
r.instruction.risk = { ...r.instruction.risk, policyHash: v.policyHash, inputsHash: v.inputsHash, verdictHash: v.verdictHash, decision: v.decision, unmeasured: v.unmeasured }; return { ...clona(b.input), receipt: reangajeaza(r), inputs }; };
|
||||||
|
const H = [['receipt', 'instruction', 'risk', 'inputsHash'], ['receipt', 'instruction', 'risk', 'verdictHash'], ['receipt', 'envelope', 'statement', 'instructionHash'], ['receipt', 'envelope', 'statementHash']];
|
||||||
|
chit('risk-other-payment', 'the issuer attached an ALLOW verdict that was made for a payment to someone else', null, ['receipt.risk'], { producer: { note: 'the risk verdict was computed for another payee; its hashes are on the instruction; instructionHash and statementHash recomputed', input: cuVerdict({ ...clona(C.inputs), payee: '0x' + '11'.repeat(20) }), changed: [['inputs', 'payee'], ...H] } });
|
||||||
|
chit('risk-other-rate', 'the issuer attached an ALLOW verdict that was made at another USD rate than the one on the receipt', null, ['receipt.risk'], { producer: { note: 'the risk verdict was computed at another rate; its hashes are on the instruction; instructionHash and statementHash recomputed', input: cuVerdict({ ...clona(C.inputs), rate: { ...C.inputs.rate, usdPerUnit: '0.25' } }), changed: [['inputs', 'rate', 'usdPerUnit'], ...H] } }); }
|
||||||
|
const cuClaim = { op: 'add', path: ['receipt', 'envelope', 'notarization'], value: claim };
|
||||||
|
{ const b = V.find((x) => x.id === rb); const inp = aplica(b.input, cuClaim);
|
||||||
|
valid('payment-receipt/company-p1-claim.partial', 'payment-receipt', 'the notarized receipt judged offline: its notarization claim is not checked', 'recorded (payments, 2026-10-02)', inp, { exercises: CK, verdict: 'PARTIAL', base: rb, mutation: cuClaim });
|
||||||
|
valid('payment-receipt/company-p1-28001.valid', 'payment-receipt', 'the notarized receipt judged with the chain: integrity, anchoring and finality in one verdict', 'recorded (payments, 2026-10-02)', inp, { exercises: [...CK, 'envelope.finality'], requires: R, levels: { anchoring: 'PASSED', finality: 'PASSED' }, base: rb, mutation: cuClaim }); }
|
||||||
|
|
||||||
|
// (D) market timelines recorded on 28001. The public task (`spec`) stays in the input only where the replay rule is exercised:
|
||||||
|
// each replay recomputes the task and costs seconds.
|
||||||
|
const M = citeste(DOV.piata).scenarii; const MK = Object.keys(HARTA).filter((r) => r.startsWith('market.'));
|
||||||
|
const tl = (s, cuSpec) => { const d = clona(M[s].date); if (!cuSpec) delete d.spec; if (d.envelope === null) delete d.envelope; return d; };
|
||||||
|
const mv = (id, s, titlu, o = {}) => valid('market-timeline/' + id, 'market-timeline', titlu, 'recorded (market-settlement, 2026-10-02), scenario ' + s, tl(s, o.spec), { exercises: o.exercises || MK, verdict: o.verdict, requires: o.requires, levels: o.levels });
|
||||||
|
mv('s2-slashed.valid', 'S2', 'a dispute the challenger won: the provider slashed');
|
||||||
|
mv('s3-paid-after-dispute.valid', 'S3', 'a dispute the provider won');
|
||||||
|
mv('s3-paid-after-dispute-replayed.valid', 'S3', 'the same timeline with the public task: the judge recomputes it and agrees with the arbiter', { spec: true });
|
||||||
|
mv('s4-refunded-expired.valid', 'S4', 'claimed and never delivered: the escrow reclaimed after the deadline');
|
||||||
|
mv('s5-refunded-cancelled.valid', 'S5', 'posted and cancelled: the escrow returned');
|
||||||
|
mv('s1-paid-claim.partial', 'S1', 'accepted and paid; its execution envelope claims a notarization that an offline run does not check', { exercises: [...MK, ...E], verdict: 'PARTIAL' });
|
||||||
|
mv('s1-paid-28001.valid', 'S1', 'the same timeline judged with the chain: the execution envelope is under a verified post-quantum anchor', { exercises: [...MK, ...F], requires: R, levels: { anchoring: 'PASSED', finality: 'PASSED' } });
|
||||||
|
const ev = (d, n) => d.events.findIndex((e) => e.name === n); const S = (s) => V.find((x) => x.id === 'market-timeline/' + s).input;
|
||||||
|
const piata = (nume, titlu, baza, op, r) => invalid('market-timeline/' + nume, titlu, 'market-timeline/' + baza, op, r);
|
||||||
|
{ const d = S('s2-slashed.valid'); const j = d.job;
|
||||||
|
piata('s2.posting', 'the JobPosted event names another requester than the job', 's2-slashed.valid', { op: 'set', path: ['events', ev(d, 'JobPosted'), 'args', 'requester'], value: j.provider }, ['market.posting']);
|
||||||
|
piata('s2.window', 'the dispute was raised after the challenge window closed', 's2-slashed.valid', { op: 'set', path: ['events', ev(d, 'JobDisputed'), 'timestamp'], value: j.submittedAt + j.challengeWindow + 5 }, ['market.window']);
|
||||||
|
piata('s2.deadline-submitted', 'the result was submitted after the deadline', 's2-slashed.valid', { op: 'set', path: ['events', ev(d, 'ResultSubmitted'), 'timestamp'], value: j.deadline + 1 }, ['market.deadline']);
|
||||||
|
piata('s2.arbiter', 'the dispute was resolved by an address that is not the arbiter', 's2-slashed.valid', { op: 'set', path: ['events', ev(d, 'DisputeResolved'), 'from'], value: j.requester }, ['market.arbiter']);
|
||||||
|
piata('s2.payout', 'the slashed bond is paid to someone who is not the challenger', 's2-slashed.valid', { op: 'set', path: ['events', ev(d, 'JobSlashed'), 'args', 'challenger'], value: j.provider }, ['market.payout']);
|
||||||
|
piata('s2.result', 'the result bytes shown do not hash to the commitment on chain', 's2-slashed.valid', { op: 'set', path: ['result'], value: d.result.slice(0, -2) + (d.result.endsWith('00') ? '01' : '00') }, ['market.result']); }
|
||||||
|
{ const d = S('s3-paid-after-dispute.valid');
|
||||||
|
piata('s3.payout', 'the payout names someone who is not the provider', 's3-paid-after-dispute.valid', { op: 'set', path: ['events', ev(d, 'JobPaid'), 'args', 'provider'], value: d.job.requester }, ['market.payout']);
|
||||||
|
piata('s3.arbiter-no-dispute', 'the dispute withheld from the timeline: a resolution with no dispute, and an event the job state implies is missing', 's3-paid-after-dispute.valid', { op: 'remove', path: ['events', ev(d, 'JobDisputed')] }, ['market.arbiter', 'market.complete']);
|
||||||
|
piata('s3.replay', 'another task shown than the one the job committed to: the recomputation contradicts the arbiter', 's3-paid-after-dispute-replayed.valid', { op: 'set', path: ['spec', 'seed'], value: '0x' + 'ab'.repeat(32) }, ['market.replay']); }
|
||||||
|
{ const d = S('s4-refunded-expired.valid');
|
||||||
|
piata('s4.deadline', 'the escrow was reclaimed as expired before the deadline', 's4-refunded-expired.valid', { op: 'set', path: ['events', ev(d, 'JobRefunded'), 'timestamp'], value: d.job.deadline - 1 }, ['market.deadline']);
|
||||||
|
piata('s4.complete-claim', 'the claim withheld from the timeline (the job state names a provider)', 's4-refunded-expired.valid', { op: 'remove', path: ['events', ev(d, 'JobClaimed')] }, ['market.complete']);
|
||||||
|
piata('s4.payout', 'the refund names someone who is not the requester', 's4-refunded-expired.valid', { op: 'set', path: ['events', ev(d, 'JobRefunded'), 'args', 'requester'], value: d.job.provider }, ['market.payout']); }
|
||||||
|
{ const d = S('s5-refunded-cancelled.valid');
|
||||||
|
piata('s5.form', 'an event whose time is not a whole number of seconds', 's5-refunded-cancelled.valid', { op: 'set', path: ['events', ev(d, 'JobPosted'), 'timestamp'], value: d.events[ev(d, 'JobPosted')].timestamp + 0.5 }, ['market.form']); }
|
||||||
|
{ const d = S('s1-paid-claim.partial'); const j = d.job;
|
||||||
|
piata('s1.window', 'a third party finalized inside the challenge window', 's1-paid-claim.partial', { op: 'set', path: ['events', ev(d, 'JobPaid'), 'timestamp'], value: j.submittedAt + 1 }, ['market.window']);
|
||||||
|
piata('s1.complete-submission', 'the submission withheld from the timeline (the job state has a submission time)', 's1-paid-claim.partial', { op: 'remove', path: ['events', ev(d, 'ResultSubmitted')] }, ['market.complete']);
|
||||||
|
piata('s1.deadline', 'the job was claimed after its deadline', 's1-paid-claim.partial', { op: 'set', path: ['events', ev(d, 'JobClaimed'), 'timestamp'], value: j.deadline + 1 }, ['market.deadline']);
|
||||||
|
piata('s1.proof-late', 'the execution envelope was notarized only after the challenge window closed', 's1-paid-claim.partial', { op: 'set', path: ['envelope', 'notarization', 'firstSeen'], value: j.submittedAt + j.challengeWindow + 1 }, ['market.proof']);
|
||||||
|
piata('s1.proof-other-result', 'the execution envelope names another result (and so no longer hashes to its statementHash)', 's1-paid-claim.partial', { op: 'set', path: ['envelope', 'statement', 'outputHash'], value: '0x' + 'cc'.repeat(32) }, ['envelope.integrity', 'market.proof']); }
|
||||||
|
|
||||||
|
// (E) a dataset: a record, a range answer, a consistency proof, an availability sample
|
||||||
|
const DS = P.dataset; const REC = ['dataset.form', 'dataset.commitment', 'dataset.field', 'dataset.inclusion']; const src = 'producer (verifiable-data), random salts, generated ' + P.at;
|
||||||
|
valid('dataset-record/r5.valid', 'dataset-record', 'one record against the commitment of version 2, two fields disclosed', src, { record: DS.record, commitment: DS.newer }, { exercises: REC });
|
||||||
|
const inr = (nume, titlu, op, r) => invalid('dataset-record/r5.' + nume, titlu, 'dataset-record/r5.valid', op, [r]);
|
||||||
|
const altHex = (h) => h.slice(0, -1) + (h.endsWith('0') ? '1' : '0');
|
||||||
|
inr('form', 'the field commitments are not an object', { op: 'set', path: ['record', 'c'], value: 'x' }, 'dataset.form');
|
||||||
|
inr('commitment', 'the record names another commitment', { op: 'set', path: ['record', 'commitmentHash'], value: altHex(DS.record.commitmentHash) }, 'dataset.commitment');
|
||||||
|
inr('field', 'a disclosed value changed after commitment', { op: 'set', path: ['record', 'disclosed', 'age', 'value'], value: DS.record.disclosed.age.value + 1 }, 'dataset.field');
|
||||||
|
inr('field-no-salt', 'a disclosed field shown without its salt', { op: 'remove', path: ['record', 'disclosed', 'age', 'salt'] }, 'dataset.field');
|
||||||
|
inr('inclusion', 'one hash of the log proof changed', { op: 'set', path: ['record', 'logProof', 'path', 0], value: altHex(DS.record.logProof.path[0]) }, 'dataset.inclusion');
|
||||||
|
const ANS = [...REC, 'dataset.index', 'dataset.range', 'dataset.order', 'dataset.completeness'];
|
||||||
|
if (DS.answer.rows.length < 4) throw new Error('the fresh dataset answer has under four rows; regenerate with --proaspat');
|
||||||
|
valid('dataset-answer/age-30-45.valid', 'dataset-answer', 'a range query on an indexed field: every row, and the two neighbours that prove nothing is missing', src, { answer: DS.answer, commitment: DS.newer }, { exercises: ANS });
|
||||||
|
const rasp = (nume, titlu, op, r) => invalid('dataset-answer/age-30-45.' + nume, titlu, 'dataset-answer/age-30-45.valid', op, [r]);
|
||||||
|
rasp('commitment', 'an answer that names another version than the commitment it is checked against', { op: 'set', path: ['answer', 'version'], value: DS.answer.version - 1 }, 'dataset.commitment');
|
||||||
|
rasp('index-size', 'the answer states another index size than the commitment', { op: 'set', path: ['answer', 'indexSize'], value: DS.answer.indexSize + 1 }, 'dataset.commitment');
|
||||||
|
rasp('index-undisclosed', 'a row that does not disclose the queried field', { op: 'remove', path: ['answer', 'rows', 1, 'disclosed', 'age'] }, 'dataset.index');
|
||||||
|
rasp('index', 'one hash of a row\'s index proof changed', { op: 'set', path: ['answer', 'rows', 1, 'indexProof', 'path', 0], value: altHex(DS.answer.rows[1].indexProof.path[0]) }, 'dataset.index');
|
||||||
|
rasp('range', 'the answer claims a narrower range than the rows it returns', { op: 'set', path: ['answer', 'to'], value: DS.answer.rows[0].disclosed.age.value }, 'dataset.range');
|
||||||
|
rasp('completeness', 'a row dropped from the middle of the run', { op: 'remove', path: ['answer', 'rows', 1] }, 'dataset.completeness');
|
||||||
|
{ // the two forgeries only the SERVER of an answer can make: a matching row withheld and shown as the neighbour that closes the run
|
||||||
|
const b = V.find((x) => x.id === 'dataset-answer/age-30-45.valid'); const vecin = (r) => ({ pos: r.pos, value: r.disclosed.age.value, i: r.i, recordLeaf: BAZA.frunzaInregistrare(r.id, r.c), indexProof: r.indexProof });
|
||||||
|
const dupa = clona(b.input); const ultima = dupa.answer.rows.pop(); dupa.answer.after = vecin(ultima);
|
||||||
|
invalid('dataset-answer/age-30-45.completeness-last', 'the last matching row withheld and shown as the neighbour after the run (its value is still in range)', 'dataset-answer/age-30-45.valid', null, ['dataset.completeness'], { producer: { note: 'the server dropped the last row and presented it as the neighbour after', input: dupa, changed: [['answer', 'rows', dupa.answer.rows.length], ['answer', 'after']] } });
|
||||||
|
const inainte = clona(b.input); const prima = inainte.answer.rows.shift(); inainte.answer.before = vecin(prima);
|
||||||
|
invalid('dataset-answer/age-30-45.completeness-first', 'the first matching row withheld and shown as the neighbour before the run', 'dataset-answer/age-30-45.valid', null, ['dataset.completeness'], { producer: { note: 'the server dropped the first row and presented it as the neighbour before', input: inainte, changed: [['answer', 'rows'], ['answer', 'before']] } }); }
|
||||||
|
{ // order sits under the index root: two publishers of the same two records, one builds the index sorted, the other not
|
||||||
|
const recs = [{ id: 'x', k: 'b', salt: '00'.repeat(16) }, { id: 'y', k: 'a', salt: '11'.repeat(16) }].map((r) => { const c = { k: BAZA.angajamentCamp('k', r.k, r.salt) }; return { ...r, c, leaf: BAZA.frunzaInregistrare(r.id, c) }; });
|
||||||
|
const log = merkleTree(recs.map((r) => r.leaf)); const dov = (p) => ({ index: p.index, treeSize: p.treeSize, path: p.path });
|
||||||
|
const publica = (ordine, nume) => { const idx = merkleTree(ordine.map((i) => BAZA.frunzaIndex('k', recs[i].k, i, recs[i].leaf)));
|
||||||
|
const c = { v: 1, format: BAZA.FORMAT, name: nume, version: 1, size: 2, logRoot: log.root(), createdAt: '2026-10-03T00:00:00.000Z', indexes: { k: { root: idx.root(), size: 2 } }, previous: null };
|
||||||
|
const rand = (pos) => { const i = ordine[pos]; return { pos, i, id: recs[i].id, c: recs[i].c, disclosed: { k: { value: recs[i].k, salt: recs[i].salt } }, logProof: dov(log.inclusionProof(i, 2)), indexProof: dov(idx.inclusionProof(pos, 2)) }; };
|
||||||
|
return { answer: { v: 1, kind: BAZA.KIND_RASPUNS, name: nume, version: 1, commitmentHash: BAZA.hashAngajament(c), field: 'k', from: 'a', to: 'b', indexSize: 2, rows: [rand(0), rand(1)], before: null, after: null }, commitment: c }; };
|
||||||
|
valid('dataset-answer/two-records.valid', 'dataset-answer', 'two records, the index built in sorted order', 'producer formulas (verifiable-data), fixed salts', publica([1, 0], 'two-records'), { exercises: ANS });
|
||||||
|
invalid('dataset-answer/two-records.order', 'the same two records from a publisher whose index is not sorted: every proof holds, the order does not', 'dataset-answer/two-records.valid', null, ['dataset.order'],
|
||||||
|
{ producer: { note: 'the publisher built the index in record order instead of sorted order; the index root, the commitment hash and the rows follow from that', input: publica([0, 1], 'two-records'), changed: [['commitment', 'indexes', 'k', 'root'], ['answer', 'commitmentHash'], ['answer', 'rows']] } }); }
|
||||||
|
valid('dataset-consistency/v1-v2.valid', 'dataset-consistency', 'version 1 is a prefix of version 2', src, { proof: DS.consistency, older: DS.older, newer: DS.newer }, { exercises: ['dataset.commitment', 'dataset.consistency'] });
|
||||||
|
invalid('dataset-consistency/v1-v2.commitment', 'the proof names another newer commitment', 'dataset-consistency/v1-v2.valid', { op: 'set', path: ['proof', 'to', 'commitmentHash'], value: altHex(DS.consistency.to.commitmentHash) }, ['dataset.commitment']);
|
||||||
|
invalid('dataset-consistency/v1-v2.consistency', 'one hash of the consistency path changed', 'dataset-consistency/v1-v2.valid', { op: 'set', path: ['proof', 'proof', 'path', 0], value: altHex(DS.consistency.proof.path[0]) }, ['dataset.consistency']);
|
||||||
|
valid('dataset-sample/four-of-sixteen.valid', 'dataset-sample', 'four positions drawn from a seed, each served and verified', src, { commitment: DS.newer, k: DS.sample.k, seed: DS.sample.seed, served: DS.sample.served }, { exercises: [...REC, 'dataset.sample'] });
|
||||||
|
invalid('dataset-sample/four-of-sixteen.sample', 'the publisher does not serve one of the sampled records', 'dataset-sample/four-of-sixteen.valid', { op: 'remove', path: ['served', Object.keys(DS.sample.served)[0]] }, ['dataset.sample']);
|
||||||
|
return V;
|
||||||
|
}
|
||||||
|
|
||||||
|
const text = (v) => JSON.stringify(v, null, 1) + '\n';
|
||||||
|
function fisiere(vectori) {
|
||||||
|
const out = new Map(); const reguli = {};
|
||||||
|
for (const v of vectori) { if (out.has(v.id + '.json')) throw new Error('two vectors with the id ' + v.id); out.set(v.id + '.json', text(v)); for (const r of v.expected.failed) (reguli[r] || (reguli[r] = [])).push(v.id); }
|
||||||
|
const artifacte = {}; for (const v of vectori) artifacte[v.artifact] = (artifacte[v.artifact] || 0) + 1;
|
||||||
|
const index = { v: 1, kind: 'aere-conformance-vector-index', count: vectori.length, artifacts: artifacte, offline: vectori.filter((v) => !v.requires.length).length, online: vectori.filter((v) => v.requires.length).length,
|
||||||
|
rules: Object.fromEntries(Object.keys(reguli).sort().map((r) => [r, reguli[r]])), vectors: vectori.map((v) => ({ id: v.id, artifact: v.artifact, verdict: v.expected.verdict, requires: v.requires, sha256: sha256(Buffer.from(out.get(v.id + '.json'), 'utf8')) })) };
|
||||||
|
out.set('INDEX.json', text(index)); return out;
|
||||||
|
}
|
||||||
|
const peDisc = (d, pre = '') => (fs.existsSync(d) ? fs.readdirSync(d, { withFileTypes: true }).flatMap((e) => (e.isDirectory() ? peDisc(path.join(d, e.name), pre + e.name + '/') : [pre + e.name])) : []);
|
||||||
|
|
||||||
|
if (process.argv[1] && path.resolve(process.argv[1]) === fileURLToPath(import.meta.url)) {
|
||||||
|
const a = process.argv.slice(2);
|
||||||
|
if (a.includes('--proaspat')) await proaspat();
|
||||||
|
const out = fisiere(construieste());
|
||||||
|
if (a.includes('--verifica')) {
|
||||||
|
let dif = 0; for (const [f, t] of out) { const p = path.join(DIR, f); if (!fs.existsSync(p) || fs.readFileSync(p, 'utf8').replace(/\r\n/g, '\n') !== t) { dif++; console.log('DIFERIT: ' + f); } }
|
||||||
|
const straine = peDisc(DIR).filter((f) => !out.has(f)); if (straine.length) { dif += straine.length; console.log('STRAINE: ' + straine.join(', ')); }
|
||||||
|
console.log(dif ? `DIFERIT (${dif})` : `LA ZI (${out.size - 1} vectors + INDEX.json)`); process.exitCode = dif ? 1 : 0;
|
||||||
|
} else {
|
||||||
|
for (const f of peDisc(DIR)) if (!out.has(f)) fs.rmSync(path.join(DIR, f));
|
||||||
|
for (const [f, t] of out) { const p = path.join(DIR, f); fs.mkdirSync(path.dirname(p), { recursive: true }); fs.writeFileSync(p, t); }
|
||||||
|
const idx = JSON.parse(out.get('INDEX.json')); console.log(`written ${idx.count} vectors (${idx.offline} offline, ${idx.online} need testnet 28001): ` + Object.entries(idx.artifacts).map(([k, n]) => k + ' ' + n).join(', '));
|
||||||
|
}
|
||||||
|
}
|
||||||
115
conformance/implementare-aere.mjs
Normal file
115
conformance/implementare-aere.mjs
Normal file
@ -0,0 +1,115 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
// implementare-aere.mjs: the published verifiers behind the one verdict form (verdict.mjs). This file holds NO verification rule of
|
||||||
|
// its own: an AIP-23 envelope is judged by the reference verifier (verify-proof.mjs, run as the program it is), a payment by the
|
||||||
|
// risk module, a receipt by the receipt verifier, a market timeline by the market judge, a dataset record, answer, consistency proof
|
||||||
|
// or sample by the dataset module. What it adds is the translation: the rule ids those verifiers name -> the public rule ids and
|
||||||
|
// the level of each (reguli.mjs), and the composition (a receipt or a timeline that carries an AIP-23 envelope gets that envelope
|
||||||
|
// judged too, so one verdict covers the artifact).
|
||||||
|
//
|
||||||
|
// node implementare-aere.mjs --capabilities what this implementation judges (artifacts, rules, online)
|
||||||
|
// node implementare-aere.mjs <file.json> [--online] one artifact: { artifact, input } (a vector file is one); verdict on stdout
|
||||||
|
// node implementare-aere.mjs --batch <list.json> [{ file, online }]; one verdict per line, in order
|
||||||
|
//
|
||||||
|
// Offline (no --online) nothing here opens a connection: an envelope that claims a notarization is judged without the claim and the
|
||||||
|
// verdict says so (PARTIAL: claim-not-checked). With --online the envelope goes to the reference verifier with the chain's endpoint.
|
||||||
|
// Exit: 0 VALID, 1 INVALID, 2 PARTIAL, 3 the artifact could not be judged at all (not a verdict).
|
||||||
|
import fs from 'node:fs'; import os from 'node:os'; import path from 'node:path'; import { spawn } from 'node:child_process';
|
||||||
|
import { VERIFICATOARE, FINALITY_SITES, VERIFY_PROOF, incarca } from './reguli.mjs';
|
||||||
|
import { acumulator, pica, trece, nemasurat, verdictUnic } from './verdict.mjs';
|
||||||
|
|
||||||
|
const RPC = { 2800: process.env.AERE_CONFORMANCE_RPC_2800 || 'https://rpc.aere.network', 28001: process.env.AERE_CONFORMANCE_RPC_28001 || 'https://testnet-rpc.aere.network' };
|
||||||
|
const LANT = (n) => (n === 28001 ? 'chain 28001, a testnet' : 'chain ' + n);
|
||||||
|
const ARTIFACTE = Object.values(VERIFICATOARE).flatMap((v) => v.artifacts);
|
||||||
|
const toateRegulile = Object.values(VERIFICATOARE).flatMap((v) => Object.values(v.reguli).map((r) => r[0]));
|
||||||
|
|
||||||
|
function ruleaza(cmd, args, timeout) {
|
||||||
|
return new Promise((gata) => {
|
||||||
|
const c = spawn(cmd, args, { stdio: ['ignore', 'pipe', 'pipe'] }); let out = '', err = ''; const t = setTimeout(() => c.kill(), timeout);
|
||||||
|
c.stdout.on('data', (d) => { out += d; }); c.stderr.on('data', (d) => { err += d; });
|
||||||
|
c.on('error', (e) => { clearTimeout(t); gata({ code: null, out, err: String(e.message) }); }); c.on('close', (code) => { clearTimeout(t); gata({ code, out, err }); });
|
||||||
|
});
|
||||||
|
}
|
||||||
|
/** The envelope, judged by the reference verifier; its levels land in the accumulator under the public rule ids. */
|
||||||
|
async function plic(acc, env, { online, chain }) {
|
||||||
|
if (!fs.existsSync(VERIFY_PROOF)) throw new Error('the AIP-23 reference verifier is not at ' + VERIFY_PROOF + ' (AERE_VERIFY_PROOF=<verify-proof.mjs>)');
|
||||||
|
const claim = env && typeof env === 'object' ? env.notarization : null; let judecat = env;
|
||||||
|
if (!online && claim) { judecat = { ...env }; delete judecat.notarization; }
|
||||||
|
const f = path.join(fs.mkdtempSync(path.join(os.tmpdir(), 'aere-conf-')), 'envelope.json'); fs.writeFileSync(f, JSON.stringify(judecat === undefined ? null : judecat));
|
||||||
|
const lant = Number(chain || (claim && claim.chainId) || 28001);
|
||||||
|
const args = [VERIFY_PROOF, f, '--json']; if (online) { if (!RPC[lant]) throw new Error('no endpoint known for chain ' + lant); args.push('--chain', String(lant), '--rpc', RPC[lant]); }
|
||||||
|
let r; try { r = await ruleaza(process.execPath, args, online ? 240000 : 60000); } finally { fs.rmSync(path.dirname(f), { recursive: true, force: true }); }
|
||||||
|
let j; try { j = JSON.parse(r.out); } catch { throw new Error('the reference verifier gave no verdict (exit ' + r.code + '): ' + (r.err || r.out).trim().split('\n').slice(-1)[0].slice(0, 160)); }
|
||||||
|
const nivel = (n) => (j.levels || []).find((x) => x.level === n); const R = VERIFICATOARE['aip23-envelope'].reguli;
|
||||||
|
for (const n of ['form', 'integrity']) { const x = nivel(n); if (!x) continue; if (x.state === 'FAILED') pica(acc, 'integrity', R[n][0], x.detail); else trece(acc, 'integrity', 'envelope ' + n); }
|
||||||
|
const s = nivel('signature');
|
||||||
|
if (!s) nemasurat(acc, 'authenticity', 'not-reached', 'the envelope failed before its signature was looked at');
|
||||||
|
else if (s.state === 'PASSED') trece(acc, 'authenticity', s.detail);
|
||||||
|
else if (s.state === 'FAILED') pica(acc, 'authenticity', R.signature[0], s.detail);
|
||||||
|
else nemasurat(acc, 'authenticity', s.state === 'ABSENT' ? 'absent' : 'unmeasurable', s.detail);
|
||||||
|
const fin = nivel('finality'); const ambele = (cause, reason) => { nemasurat(acc, 'anchoring', cause, reason); nemasurat(acc, 'finality', cause, reason); };
|
||||||
|
if (!online && claim) ambele('claim-not-checked', 'the envelope claims a notarization on chain ' + (claim.chainId || '?') + '; this run was offline, the claim was not checked');
|
||||||
|
else if (!fin) ambele('not-reached', 'the envelope failed before its notarization was looked at');
|
||||||
|
else if (fin.state === 'PASSED') { trece(acc, 'anchoring', fin.detail); trece(acc, 'finality', 'the post-quantum certificate of the covering anchor verified (' + LANT(lant) + '; the finality is that chain\'s)'); }
|
||||||
|
else if (fin.state === 'FAILED') {
|
||||||
|
const loc = FINALITY_SITES.filter((x) => x.re.test(fin.detail));
|
||||||
|
if (loc.length !== 1) throw new Error('the reference verifier refused finality at a site this suite does not classify: ' + fin.detail.slice(0, 120));
|
||||||
|
pica(acc, loc[0].level, R.finality[0], fin.detail);
|
||||||
|
if (loc[0].level === 'anchoring') nemasurat(acc, 'finality', 'not-applicable', 'nothing is anchored, so no certificate covers it');
|
||||||
|
else nemasurat(acc, 'anchoring', 'not-reached', 'the anchor certificate did not verify, the notary state under it was not read');
|
||||||
|
} else ambele(fin.state === 'ABSENT' ? 'absent' : fin.state === 'PENDING' ? 'pending' : 'unmeasurable', fin.detail);
|
||||||
|
}
|
||||||
|
const faraPlic = (acc) => { for (const l of ['authenticity', 'anchoring', 'finality']) nemasurat(acc, l, 'not-judged', 'this artifact carries no AIP-23 envelope; its commitment is signed or anchored through one, judged as the artifact `envelope`'); };
|
||||||
|
/** The rules a module named, as public ids at their levels; `text` is the module's own reasons. */
|
||||||
|
function reguli(acc, verifier, surse, motive, titlu) {
|
||||||
|
const R = VERIFICATOARE[verifier].reguli; const text = (motive || []).filter(Boolean).join('; ');
|
||||||
|
for (const s of surse) { if (!R[s]) throw new Error(`${verifier} named a rule this suite does not map: ${s}`); pica(acc, R[s][1], R[s][0], text); }
|
||||||
|
if (!surse.length) trece(acc, 'integrity', titlu);
|
||||||
|
}
|
||||||
|
|
||||||
|
async function judeca(artifact, input, online) {
|
||||||
|
const acc = acumulator();
|
||||||
|
if (artifact === 'envelope') await plic(acc, input.envelope, { online, chain: input.chain });
|
||||||
|
else if (artifact === 'payment-risk') {
|
||||||
|
const M = await incarca('risc'); const v = M.judeca(input.policy, input.inputs);
|
||||||
|
if ((v.decision === 'ALLOW') !== (v.rules.length === 0)) throw new Error('the risk module refused without naming a rule');
|
||||||
|
reguli(acc, 'payment-risk', v.rules, v.reasons, 'the declared policy allows this payment'); faraPlic(acc);
|
||||||
|
} else if (artifact === 'payment-receipt') {
|
||||||
|
const M = await incarca('chitanta'); const r = M.verificaChitanta(input.receipt, { policy: input.policy, inputs: input.inputs, tx: input.tx, receipt: input.txReceipt });
|
||||||
|
if ((r.verdict === 'VALID') !== (r.reguli.length === 0)) throw new Error('the receipt verifier refused without naming a rule');
|
||||||
|
reguli(acc, 'payment-receipt', r.reguli, r.motive, 'no rule of the receipt verifier refused' + (r.chainChecked ? ' (transaction facts supplied)' : ' (no transaction facts supplied)'));
|
||||||
|
await plic(acc, input.receipt && input.receipt.envelope, { online, chain: input.chain });
|
||||||
|
} else if (artifact === 'market-timeline') {
|
||||||
|
const M = await incarca('piata'); const r = M.judeca(input);
|
||||||
|
if (r.verdict === 'INCOMPLETE') nemasurat(acc, 'integrity', 'incomplete', 'the timeline is not terminal (' + (r.status || 'no job or no events') + ')');
|
||||||
|
else { if ((r.verdict === 'VALID') !== (r.reguli.length === 0)) throw new Error('the market judge refused without naming a rule'); reguli(acc, 'market-timeline', r.reguli, r.motive, 'no rule of the market judge refused (status ' + r.status + ')'); }
|
||||||
|
if (input.envelope) await plic(acc, input.envelope, { online, chain: input.chainId }); else faraPlic(acc);
|
||||||
|
} else if (artifact.startsWith('dataset-')) {
|
||||||
|
const M = await incarca('baza'); let r;
|
||||||
|
if (artifact === 'dataset-record') r = M.verificaInregistrare(input.record, input.commitment);
|
||||||
|
else if (artifact === 'dataset-answer') { r = M.verificaRaspuns(input.answer, input.commitment); r.ok = r.verdict === 'VALID'; }
|
||||||
|
else if (artifact === 'dataset-consistency') r = M.verificaConsistentaVersiuni(input.proof, input.older, input.newer);
|
||||||
|
else if (artifact === 'dataset-sample') r = await M.esantioneaza({ url: 'vector://served', commitment: input.commitment, k: input.k, seed: input.seed, ia: async (u) => (input.served || {})[u.split('/').pop()] || null });
|
||||||
|
else throw new Error('unknown artifact ' + artifact);
|
||||||
|
if (r.ok !== (r.reguli.length === 0)) throw new Error('the dataset module refused without naming a rule');
|
||||||
|
reguli(acc, 'dataset', r.reguli, r.motive, 'no rule of the dataset module refused'); faraPlic(acc);
|
||||||
|
} else throw new Error('unknown artifact ' + artifact);
|
||||||
|
return verdictUnic(artifact, acc);
|
||||||
|
}
|
||||||
|
async function unul(file, online) {
|
||||||
|
let j; try { j = JSON.parse(fs.readFileSync(file, 'utf8')); } catch (e) { return { error: 'the file cannot be read: ' + e.message }; }
|
||||||
|
if (!j || !ARTIFACTE.includes(j.artifact) || !j.input) return { error: 'not { artifact, input } with a known artifact (' + ARTIFACTE.join(', ') + ')' };
|
||||||
|
try { return await judeca(j.artifact, j.input, online); } catch (e) { return { error: String(e.message).split('\n')[0].slice(0, 300) }; }
|
||||||
|
}
|
||||||
|
|
||||||
|
const a = process.argv.slice(2);
|
||||||
|
if (a.includes('--capabilities')) console.log(JSON.stringify({ v: 1, kind: 'aere-conformance-capabilities', name: 'aere reference verifiers (JavaScript)', artifacts: ARTIFACTE, rules: toateRegulile.sort(), online: true, batch: true }));
|
||||||
|
else if (a.includes('--batch')) {
|
||||||
|
const lista = JSON.parse(fs.readFileSync(a[a.indexOf('--batch') + 1], 'utf8')); const rez = new Array(lista.length); let urm = 0;
|
||||||
|
const lucrator = async () => { while (urm < lista.length) { const k = urm++; rez[k] = await unul(lista[k].file, !!lista[k].online); } };
|
||||||
|
await Promise.all(Array.from({ length: Math.min(6, lista.length) }, lucrator));
|
||||||
|
for (const r of rez) console.log(JSON.stringify(r));
|
||||||
|
} else {
|
||||||
|
const file = a.find((x) => !x.startsWith('--'));
|
||||||
|
if (!file) { console.error('usage: node implementare-aere.mjs --capabilities | <file.json> [--online] | --batch <list.json>'); process.exitCode = 3; }
|
||||||
|
else { const r = await unul(file, a.includes('--online')); console.log(JSON.stringify(r, null, 1)); process.exitCode = r.error ? 3 : r.verdict === 'VALID' ? 0 : r.verdict === 'INVALID' ? 1 : 2; }
|
||||||
|
}
|
||||||
223
conformance/implementare-integritate.py
Normal file
223
conformance/implementare-integritate.py
Normal file
@ -0,0 +1,223 @@
|
|||||||
|
#!/usr/bin/env python3
|
||||||
|
"""implementare-integritate.py: an INDEPENDENT implementation, written from the rules and not from the JavaScript code, in another
|
||||||
|
language, with nothing but the Python standard library. It exists to show that the conformance vectors are not tied to one
|
||||||
|
implementation: the same runner scores it, and it passes every vector whose rules it claims.
|
||||||
|
|
||||||
|
It claims little, on purpose, and says so through --capabilities:
|
||||||
|
envelope envelope.form, envelope.integrity (it cannot check an ML-DSA signature or read a chain: vectors that exercise
|
||||||
|
those rules are reported by the runner as NOT COVERED, never as passed)
|
||||||
|
dataset-record dataset.form, dataset.commitment, dataset.field, dataset.inclusion (RFC 9162 inclusion, salted field commitments)
|
||||||
|
|
||||||
|
python3 implementare-integritate.py --capabilities
|
||||||
|
python3 implementare-integritate.py <vector.json>
|
||||||
|
python3 implementare-integritate.py --batch <list.json>
|
||||||
|
|
||||||
|
Limits of this implementation: numbers are written the way JavaScript writes them only for integers and for the common decimal
|
||||||
|
floats (no exponent forms); object keys are sorted by code point, which equals JavaScript's order for keys in the Basic
|
||||||
|
Multilingual Plane. It never opens a connection: --online is not claimed.
|
||||||
|
"""
|
||||||
|
import hashlib
|
||||||
|
import json
|
||||||
|
import re
|
||||||
|
import sys
|
||||||
|
|
||||||
|
LEVELS = ['integrity', 'authenticity', 'anchoring', 'finality']
|
||||||
|
H64 = re.compile(r'^0x[0-9a-fA-F]{64}$')
|
||||||
|
H64_LOW = re.compile(r'^0x[0-9a-f]{64}$')
|
||||||
|
KIND_RECORD = 'aere-verifiable-record'
|
||||||
|
|
||||||
|
|
||||||
|
def sha256_hex(b):
|
||||||
|
return '0x' + hashlib.sha256(b).hexdigest()
|
||||||
|
|
||||||
|
|
||||||
|
def js_number(x):
|
||||||
|
if isinstance(x, bool):
|
||||||
|
raise ValueError('not a number')
|
||||||
|
if isinstance(x, int):
|
||||||
|
return str(x)
|
||||||
|
if x != x or x in (float('inf'), float('-inf')):
|
||||||
|
raise ValueError('a number must be finite')
|
||||||
|
if x == int(x) and abs(x) < 1e21:
|
||||||
|
return str(int(x))
|
||||||
|
r = repr(x)
|
||||||
|
if 'e' in r or 'E' in r:
|
||||||
|
raise ValueError('exponent form: not reproduced by this implementation')
|
||||||
|
return r
|
||||||
|
|
||||||
|
|
||||||
|
def js_stringify(x):
|
||||||
|
"""JSON.stringify(x) for parsed JSON: insertion order of keys, no whitespace."""
|
||||||
|
if x is None:
|
||||||
|
return 'null'
|
||||||
|
if x is True:
|
||||||
|
return 'true'
|
||||||
|
if x is False:
|
||||||
|
return 'false'
|
||||||
|
if isinstance(x, str):
|
||||||
|
return json.dumps(x, ensure_ascii=False)
|
||||||
|
if isinstance(x, (int, float)):
|
||||||
|
return js_number(x)
|
||||||
|
if isinstance(x, list):
|
||||||
|
return '[' + ','.join(js_stringify(v) for v in x) + ']'
|
||||||
|
if isinstance(x, dict):
|
||||||
|
return '{' + ','.join(json.dumps(k, ensure_ascii=False) + ':' + js_stringify(v) for k, v in x.items()) + '}'
|
||||||
|
raise ValueError('unsupported value')
|
||||||
|
|
||||||
|
|
||||||
|
def canonical(x):
|
||||||
|
"""Canonical JSON of the dataset format: keys sorted at every depth, no whitespace."""
|
||||||
|
if isinstance(x, list):
|
||||||
|
return '[' + ','.join(canonical(v) for v in x) + ']'
|
||||||
|
if isinstance(x, dict):
|
||||||
|
return '{' + ','.join(json.dumps(k, ensure_ascii=False) + ':' + canonical(x[k]) for k in sorted(x.keys())) + '}'
|
||||||
|
return js_stringify(x)
|
||||||
|
|
||||||
|
|
||||||
|
def verdict(artifact, failed_by_level, reasons, passed, partial=None):
|
||||||
|
"""The one verdict form: four levels, each PASSED, FAILED or NOT_MEASURED with its reason."""
|
||||||
|
levels = []
|
||||||
|
for l in LEVELS:
|
||||||
|
if failed_by_level.get(l):
|
||||||
|
levels.append({'level': l, 'state': 'FAILED', 'rules': sorted(set(failed_by_level[l])), 'reason': '; '.join(reasons)})
|
||||||
|
elif partial and l in partial:
|
||||||
|
levels.append({'level': l, 'state': 'NOT_MEASURED', 'rules': [], 'cause': partial[l][0], 'reason': partial[l][1]})
|
||||||
|
elif l in passed:
|
||||||
|
levels.append({'level': l, 'state': 'PASSED', 'rules': [], 'reason': passed[l]})
|
||||||
|
else:
|
||||||
|
levels.append({'level': l, 'state': 'NOT_MEASURED', 'rules': [], 'cause': 'not-judged', 'reason': 'this implementation does not judge this level'})
|
||||||
|
failed = sorted({r for x in levels for r in x['rules']})
|
||||||
|
is_partial = any(x['state'] == 'NOT_MEASURED' and x.get('cause') in ('claim-not-checked', 'unmeasurable') for x in levels)
|
||||||
|
v = 'INVALID' if failed else ('PARTIAL' if is_partial or levels[0]['state'] != 'PASSED' else 'VALID')
|
||||||
|
return {'v': 1, 'kind': 'aere-conformance-verdict', 'artifact': artifact, 'verdict': v, 'levels': levels, 'failed': failed}
|
||||||
|
|
||||||
|
|
||||||
|
def judge_envelope(inp):
|
||||||
|
env = inp.get('envelope')
|
||||||
|
ok_form = isinstance(env, dict) and isinstance(env.get('statement'), dict) and isinstance(env.get('statementHash'), str) and bool(H64.match(env['statementHash']))
|
||||||
|
if not ok_form:
|
||||||
|
return verdict('envelope', {'integrity': ['envelope.form']}, ['the envelope lacks a statement (object) and a statementHash (0x + 64 hex)'], {})
|
||||||
|
h = sha256_hex(js_stringify(env['statement']).encode('utf-8'))
|
||||||
|
if h != env['statementHash'].lower():
|
||||||
|
return verdict('envelope', {'integrity': ['envelope.integrity']}, ['sha256 of the statement text is ' + h[:18] + '.., not the statementHash'], {})
|
||||||
|
partial = {}
|
||||||
|
if env.get('signature'):
|
||||||
|
partial['authenticity'] = ('unmeasurable', 'the envelope carries a signature this implementation cannot check')
|
||||||
|
if env.get('notarization'):
|
||||||
|
why = ('claim-not-checked', 'the envelope claims a notarization; this implementation never reads a chain')
|
||||||
|
partial['anchoring'] = why
|
||||||
|
partial['finality'] = why
|
||||||
|
return verdict('envelope', {}, [], {'integrity': 'form and statement hash hold'}, partial)
|
||||||
|
|
||||||
|
|
||||||
|
def node_hash(a, b):
|
||||||
|
return hashlib.sha256(b'\x01' + a + b).digest()
|
||||||
|
|
||||||
|
|
||||||
|
def unhex(s):
|
||||||
|
if not isinstance(s, str) or not H64_LOW.match(s):
|
||||||
|
raise ValueError('not a 32-byte hash')
|
||||||
|
return bytes.fromhex(s[2:])
|
||||||
|
|
||||||
|
|
||||||
|
def is_int(x):
|
||||||
|
return type(x) is int
|
||||||
|
|
||||||
|
|
||||||
|
def verify_inclusion(leaf, index, tree_size, path, root):
|
||||||
|
"""RFC 9162, 2.1.3.2."""
|
||||||
|
try:
|
||||||
|
if not (is_int(index) and is_int(tree_size) and 0 <= index < tree_size and isinstance(path, list)):
|
||||||
|
return False
|
||||||
|
fn, sn, r = index, tree_size - 1, unhex(leaf)
|
||||||
|
for p in path:
|
||||||
|
pb = unhex(p)
|
||||||
|
if sn == 0:
|
||||||
|
return False
|
||||||
|
if (fn & 1) or fn == sn:
|
||||||
|
r = node_hash(pb, r)
|
||||||
|
if not (fn & 1):
|
||||||
|
while not (fn & 1) and fn != 0:
|
||||||
|
fn >>= 1
|
||||||
|
sn >>= 1
|
||||||
|
else:
|
||||||
|
r = node_hash(r, pb)
|
||||||
|
fn >>= 1
|
||||||
|
sn >>= 1
|
||||||
|
return sn == 0 and '0x' + r.hex() == str(root)
|
||||||
|
except ValueError:
|
||||||
|
return False
|
||||||
|
|
||||||
|
|
||||||
|
def judge_record(inp):
|
||||||
|
rec, com = inp.get('record'), inp.get('commitment')
|
||||||
|
failed, reasons = [], []
|
||||||
|
if not isinstance(rec, dict) or rec.get('kind') != KIND_RECORD or not isinstance(com, dict):
|
||||||
|
return verdict('dataset-record', {'integrity': ['dataset.form']}, ['not a ' + KIND_RECORD], {})
|
||||||
|
if not (rec.get('commitmentHash') == sha256_hex(canonical(com).encode('utf-8')) and rec.get('version') == com.get('version')):
|
||||||
|
failed.append('dataset.commitment')
|
||||||
|
reasons.append('the record names another commitment')
|
||||||
|
|
||||||
|
def row():
|
||||||
|
c, disclosed = rec.get('c'), rec.get('disclosed')
|
||||||
|
if not (isinstance(c, (dict, list)) and isinstance(disclosed, (dict, list))):
|
||||||
|
failed.append('dataset.form')
|
||||||
|
reasons.append('malformed row')
|
||||||
|
return
|
||||||
|
for k, d in (disclosed.items() if isinstance(disclosed, dict) else enumerate(disclosed)):
|
||||||
|
if not (isinstance(d, dict) and isinstance(d.get('salt'), str)):
|
||||||
|
failed.append('dataset.field')
|
||||||
|
reasons.append('disclosed field ' + str(k) + ' without a salt')
|
||||||
|
return
|
||||||
|
want = sha256_hex((d['salt'] + '|' + str(k) + '|' + canonical(d.get('value'))).encode('utf-8'))
|
||||||
|
if not (isinstance(c, dict) and c.get(k) == want):
|
||||||
|
failed.append('dataset.field')
|
||||||
|
reasons.append('the disclosed value of "' + str(k) + '" does not match its commitment')
|
||||||
|
return
|
||||||
|
leaf = sha256_hex(b'\x00' + canonical({'id': rec.get('id'), 'c': c}).encode('utf-8'))
|
||||||
|
lp = rec.get('logProof')
|
||||||
|
if not (isinstance(lp, dict) and verify_inclusion(leaf, lp.get('index'), com.get('size'), lp.get('path'), com.get('logRoot')) and lp.get('index') == rec.get('i')):
|
||||||
|
failed.append('dataset.inclusion')
|
||||||
|
reasons.append('the record is not in the log of version ' + str(com.get('version')))
|
||||||
|
|
||||||
|
row()
|
||||||
|
passed = {} if failed else {'integrity': 'the record opens its commitments and is in the log'}
|
||||||
|
return verdict('dataset-record', {'integrity': failed} if failed else {}, reasons, passed)
|
||||||
|
|
||||||
|
|
||||||
|
JUDGES = {'envelope': judge_envelope, 'dataset-record': judge_record}
|
||||||
|
CAPABILITIES = {'v': 1, 'kind': 'aere-conformance-capabilities', 'name': 'independent integrity checker (Python, standard library)', 'artifacts': sorted(JUDGES),
|
||||||
|
'rules': ['dataset.commitment', 'dataset.field', 'dataset.form', 'dataset.inclusion', 'envelope.form', 'envelope.integrity'], 'online': False, 'batch': True}
|
||||||
|
|
||||||
|
|
||||||
|
def one(path):
|
||||||
|
try:
|
||||||
|
with open(path, encoding='utf-8') as f:
|
||||||
|
j = json.load(f)
|
||||||
|
if not isinstance(j, dict) or j.get('artifact') not in JUDGES or not isinstance(j.get('input'), dict):
|
||||||
|
return {'error': 'not { artifact, input } with an artifact this implementation judges'}
|
||||||
|
return JUDGES[j['artifact']](j['input'])
|
||||||
|
except Exception as e: # a crash is reported as such: the runner scores it BROKEN, never as a refusal
|
||||||
|
return {'error': str(e)[:300]}
|
||||||
|
|
||||||
|
|
||||||
|
def main(a):
|
||||||
|
if '--capabilities' in a:
|
||||||
|
print(json.dumps(CAPABILITIES))
|
||||||
|
return 0
|
||||||
|
if '--batch' in a:
|
||||||
|
with open(a[a.index('--batch') + 1], encoding='utf-8') as f:
|
||||||
|
for e in json.load(f):
|
||||||
|
print(json.dumps(one(e['file'])))
|
||||||
|
return 0
|
||||||
|
files = [x for x in a if not x.startswith('--')]
|
||||||
|
if not files:
|
||||||
|
print('usage: implementare-integritate.py --capabilities | <vector.json> | --batch <list.json>', file=sys.stderr)
|
||||||
|
return 3
|
||||||
|
r = one(files[0])
|
||||||
|
print(json.dumps(r, indent=1))
|
||||||
|
return 3 if 'error' in r else {'VALID': 0, 'INVALID': 1}.get(r['verdict'], 2)
|
||||||
|
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
sys.exit(main(sys.argv[1:]))
|
||||||
213
conformance/proba-conformance.mjs
Normal file
213
conformance/proba-conformance.mjs
Normal file
@ -0,0 +1,213 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
// proba-conformance.mjs: the probe of the conformance suite itself. Three states per row: VERDE (as required), ROSU (not), STRICAT /
|
||||||
|
// NEMASURAT (the row could not be measured: counted, never passed); INFO rows are measurements printed beside the gates, not counted. Exit 0 all green, 1 a red or broken row, 2 only unmeasured rows.
|
||||||
|
//
|
||||||
|
// node proba-conformance.mjs [--online] [--acceptate] the suite is derived, whole, single-place, two implementations pass it,
|
||||||
|
// and malformed artifacts are refused by name (--acceptate lists what a
|
||||||
|
// verifier still accepts when damaged: the optional and the unread)
|
||||||
|
// node proba-conformance.mjs --control-negativ [--online] every rule planted out of its verifier, one at a time: the vectors that
|
||||||
|
// name the rule, and only they, must fail; plus the controls of the
|
||||||
|
// runner, of the coverage gate and of the rule derivation
|
||||||
|
// node proba-conformance.mjs --pe-loc a MEASUREMENT, not a gate: each check site planted out alone; how many
|
||||||
|
// of the sites the vectors reach
|
||||||
|
//
|
||||||
|
// The independent implementation needs Python 3 (AERE_CONFORMANCE_PYTHON=<command>, default python3 then python); the envelope
|
||||||
|
// vectors need the AIP-23 reference verifier (AERE_VERIFY_PROOF=<verify-proof.mjs>, with `npm install` done beside it); --online
|
||||||
|
// reads testnet 28001 (nothing is sent).
|
||||||
|
import fs from 'node:fs'; import os from 'node:os'; import path from 'node:path'; import { spawn, spawnSync } from 'node:child_process'; import { fileURLToPath, pathToFileURL } from 'node:url';
|
||||||
|
import { deriva, hartaPublica, VERIFICATOARE, MODULE, VERIFY_PROOF, FINALITY_SITES, incarca } from './reguli.mjs';
|
||||||
|
import { incarcaVectorii, ruleazaSuita } from './conformance.mjs';
|
||||||
|
import { aplica, plicuriKinds } from './genereaza-vectori.mjs';
|
||||||
|
|
||||||
|
const AICI = path.dirname(fileURLToPath(import.meta.url));
|
||||||
|
const a = process.argv.slice(2); const online = a.includes('--online'); const control = a.includes('--control-negativ'); const peLoc = a.includes('--pe-loc');
|
||||||
|
const REF = `node "${path.join(AICI, 'implementare-aere.mjs')}"`;
|
||||||
|
let verzi = 0, rosii = 0, nemas = 0;
|
||||||
|
const rand = (stare, text) => { console.log(` [${stare.padEnd(9)}] ${text}`); if (stare === 'VERDE') verzi++; else if (stare === 'ROSU') rosii++; else if (stare !== 'INFO') nemas++; };
|
||||||
|
const cer = (cond, text, detaliu = '') => rand(cond ? 'VERDE' : 'ROSU', text + (detaliu ? ': ' + detaliu : ''));
|
||||||
|
const canon = (x) => (x === null || typeof x !== 'object' ? JSON.stringify(x) : Array.isArray(x) ? '[' + x.map(canon).join(',') + ']' : '{' + Object.keys(x).sort().map((k) => JSON.stringify(k) + ':' + canon(x[k])).join(',') + '}');
|
||||||
|
/** the JSON paths at which two values differ (a subtree added, removed or of another type is one path) */
|
||||||
|
function difera(x, y, p = []) {
|
||||||
|
if (canon(x) === canon(y)) return [];
|
||||||
|
const ob = (v) => v !== null && typeof v === 'object';
|
||||||
|
if (!ob(x) || !ob(y) || Array.isArray(x) !== Array.isArray(y)) return [p];
|
||||||
|
return [...new Set([...Object.keys(x), ...Object.keys(y)])].flatMap((k) => (k in x && k in y ? difera(x[k], y[k], [...p, Array.isArray(x) ? Number(k) : k]) : [[...p, Array.isArray(x) ? Number(k) : k]]));
|
||||||
|
}
|
||||||
|
const prefix = (pre, p) => pre.length <= p.length && pre.every((k, i) => String(k) === String(p[i]));
|
||||||
|
|
||||||
|
if (!fs.existsSync(VERIFY_PROOF)) { console.log('NEMASURAT: the AIP-23 reference verifier is not at ' + VERIFY_PROOF + ' (AERE_VERIFY_PROOF=<verify-proof.mjs>)'); process.exit(2); }
|
||||||
|
const S = incarcaVectorii(); if (S.eroare) { console.log('ROSU: the vector set is not whole: ' + S.eroare); process.exit(1); }
|
||||||
|
const vectori = S.vectori; const HARTA = hartaPublica(); const TOATE = Object.keys(HARTA);
|
||||||
|
const cuRegula = (r, lista = vectori) => lista.filter((v) => v.expected.failed.includes(r)).map((v) => v.id);
|
||||||
|
/** coverage: every rule has a vector that expects it; returns the rules without one */
|
||||||
|
const neacoperite = (reguli, lista = vectori) => reguli.filter((r) => !cuRegula(r, lista).length);
|
||||||
|
const python = () => { for (const c of [process.env.AERE_CONFORMANCE_PYTHON, 'python3', 'python'].filter(Boolean)) { const r = spawnSync(c, ['--version'], { encoding: 'utf8', stdio: ['ignore', 'pipe', 'pipe'] }); if (r.status === 0 && /Python 3/.test(r.stdout + r.stderr)) return c; } return null; };
|
||||||
|
const numar = (s, st) => s.rezultate.filter((r) => r.stare === st);
|
||||||
|
|
||||||
|
// ---------- planting ----------
|
||||||
|
const PLANT = "|| String(1) === '1' /*PLANTAT*/";
|
||||||
|
/** exact-once plantings of the reference verifier (a published program without markers): rule -> [text, planted text] */
|
||||||
|
const PLANT_VP = {
|
||||||
|
form: [".test(env.statementHash);", ".test(env.statementHash) || String(1) === '1';"],
|
||||||
|
integrity: ["const ok = h === env.statementHash.toLowerCase();", "const ok = h === env.statementHash.toLowerCase() || String(1) === '1';"],
|
||||||
|
signature: ["const ok = crypto.verify(null, Buffer.from(text, 'utf8'), pub, sig);", "const ok = crypto.verify(null, Buffer.from(text, 'utf8'), pub, sig) || String(1) === '1';"],
|
||||||
|
finality: ["env.notarization ? 'FAILED' : 'ABSENT'", "(env.notarization && String(1) === '2') ? 'FAILED' : 'ABSENT'"],
|
||||||
|
};
|
||||||
|
/** Writes the planted copy of a rule's verifier beside the original; returns { copie, env } or { stricat }. `loc` plants one site only. */
|
||||||
|
function planteaza(verifier, sursa, loc = null) {
|
||||||
|
const d = VERIFICATOARE[verifier];
|
||||||
|
if (d.sursa === 'verify-proof') {
|
||||||
|
const src = fs.readFileSync(VERIFY_PROOF, 'utf8'); const [de, cu] = PLANT_VP[sursa] || []; const n = de ? src.split(de).length - 1 : 0;
|
||||||
|
if (n !== 1) return { stricat: `the planting anchor of ${sursa} appears ${n} times in the reference verifier` };
|
||||||
|
const copie = path.join(path.dirname(VERIFY_PROOF), `.plantat-conf-${process.pid}-${sursa}.mjs`); fs.writeFileSync(copie, src.replace(de, () => cu));
|
||||||
|
return { copie, env: { AERE_VERIFY_PROOF: copie } };
|
||||||
|
}
|
||||||
|
const p = fileURLToPath(MODULE[d.sursa].url); const src = fs.readFileSync(p, 'utf8'); const bucati = src.split(`/*PAZA:${sursa}*/`); const n = bucati.length - 1;
|
||||||
|
if (n < 1) return { stricat: `no /*PAZA:${sursa}*/ marker in ${path.basename(p)}` };
|
||||||
|
if (loc !== null && loc >= n) return { stricat: 'site ' + loc + ' of ' + n };
|
||||||
|
const text = loc === null ? bucati.join(PLANT) : bucati.map((b, i) => (i === bucati.length - 1 ? b : b + (i === loc ? PLANT : `/*PAZA:${sursa}*/`))).join('');
|
||||||
|
const copie = path.join(path.dirname(p), `_plantat-conf-${process.pid}-${sursa}${loc === null ? '' : '-' + loc}.mjs`); fs.writeFileSync(copie, text);
|
||||||
|
return { copie, env: { [MODULE[d.sursa].env]: copie } };
|
||||||
|
}
|
||||||
|
/** the suite, run as a separate program (several plantings run side by side) */
|
||||||
|
function suitaAsync(env, { online: on = false, doar = null } = {}) {
|
||||||
|
return new Promise((gata) => {
|
||||||
|
const args = [path.join(AICI, 'conformance.mjs'), '--impl', REF, '--json']; if (on) args.push('--online'); if (doar) args.push('--only', doar);
|
||||||
|
const c = spawn(process.execPath, args, { env: { ...process.env, ...env }, stdio: ['ignore', 'pipe', 'pipe'] }); let out = '', err = '';
|
||||||
|
c.stdout.on('data', (d) => { out += d; }); c.stderr.on('data', (d) => { err += d; });
|
||||||
|
c.on('close', () => { try { gata({ rezultate: JSON.parse(out).results }); } catch { gata({ eroare: (out + err).trim().split('\n').slice(-1)[0].slice(0, 200) }); } });
|
||||||
|
});
|
||||||
|
}
|
||||||
|
async function inParalel(sarcini, n = 4) { const rez = new Array(sarcini.length); let k = 0; await Promise.all(Array.from({ length: Math.min(n, sarcini.length) }, async () => { while (k < sarcini.length) { const i = k++; rez[i] = await sarcini[i](); } })); return rez; }
|
||||||
|
const ramase = () => [...Object.values(MODULE).map((m) => path.dirname(fileURLToPath(m.url))), path.dirname(VERIFY_PROOF)].flatMap((d) => fs.readdirSync(d).filter((f) => /^[._]plantat-conf-/.test(f)).map((f) => path.join(d, f)));
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Every path of every offline vector that is not INVALID, removed or replaced by null, a string, a number, a list, an object, and given
|
||||||
|
* to the module verifiers directly. Left out, and said: the policy (a policy that cannot be defined is refused by definePolicy by
|
||||||
|
* throwing, by design: nothing is judged under it) and the public task of a market job (each replay costs seconds).
|
||||||
|
* @returns {{ cazuri: number, aruncate: string[], acceptate: string[] }} acceptate = the paths (without array positions) whose damage was accepted
|
||||||
|
*/
|
||||||
|
async function malformate() {
|
||||||
|
const R = await incarca('risc'), C = await incarca('chitanta'), P = await incarca('piata'), B = await incarca('baza'); const clona = (x) => JSON.parse(JSON.stringify(x));
|
||||||
|
const J = { 'payment-risk': (i) => R.judeca(i.policy, i.inputs).decision === 'ALLOW', 'payment-receipt': (i) => C.verificaChitanta(i.receipt, { policy: i.policy, inputs: i.inputs, tx: i.tx, receipt: i.txReceipt }).verdict === 'VALID', 'market-timeline': (i) => P.judeca(i).verdict === 'VALID',
|
||||||
|
'dataset-record': (i) => B.verificaInregistrare(i.record, i.commitment).ok, 'dataset-answer': (i) => B.verificaRaspuns(i.answer, i.commitment).verdict === 'VALID', 'dataset-consistency': (i) => B.verificaConsistentaVersiuni(i.proof, i.older, i.newer).ok };
|
||||||
|
const cai = (x, p = []) => (x !== null && typeof x === 'object' ? [p, ...Object.keys(x).flatMap((k) => cai(x[k], [...p, Array.isArray(x) ? Number(k) : k]))] : [p]).filter((q) => q.length);
|
||||||
|
const VAL = [null, 'x', 7, [], {}]; let cazuri = 0; const aruncate = [], acceptate = [];
|
||||||
|
for (const v of vectori) {
|
||||||
|
if (!J[v.artifact] || v.expected.verdict === 'INVALID' || v.requires.length) continue;
|
||||||
|
const inp = clona(v.input); if (v.artifact === 'market-timeline') delete inp.spec;
|
||||||
|
for (const p of cai(inp)) { if (p[0] === 'policy') continue;
|
||||||
|
for (const op of ['remove', 0, 1, 2, 3, 4]) { const c = clona(inp); let o = c; for (const k of p.slice(0, -1)) o = o[k]; const k = p[p.length - 1];
|
||||||
|
if (op === 'remove') { if (Array.isArray(o)) o.splice(k, 1); else delete o[k]; } else { if (JSON.stringify(o[k]) === JSON.stringify(VAL[op])) continue; o[k] = clona(VAL[op]); }
|
||||||
|
cazuri++; try { if (J[v.artifact](c)) acceptate.push(v.artifact + ':' + p.filter((x) => typeof x !== 'number').join('.')); } catch (e) { aruncate.push(v.id + ' ' + p.join('.') + ' <- ' + (op === 'remove' ? 'removed' : JSON.stringify(VAL[op])) + ': ' + String(e.message).slice(0, 60)); } } }
|
||||||
|
}
|
||||||
|
return { cazuri, aruncate, acceptate };
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!control && !peLoc) {
|
||||||
|
console.log('A. the rules and the vectors are derived, and nothing is typed in their place');
|
||||||
|
const D = await deriva();
|
||||||
|
cer(!D.probleme.length && !D.nemasurat.length, `the rules derive from the code of ${Object.keys(D.tabel.verifiers).length} verifiers: declared == marked == mapped (${TOATE.length} rules)`, [...D.probleme, ...D.nemasurat].join(' | '));
|
||||||
|
const rj = path.join(AICI, 'REGULI.json'); cer(fs.existsSync(rj) && fs.readFileSync(rj, 'utf8').replace(/\r\n/g, '\n') === JSON.stringify(D.tabel, null, 1) + '\n', 'REGULI.json is what the code derives now');
|
||||||
|
const g = spawnSync(process.execPath, [path.join(AICI, 'genereaza-vectori.mjs'), '--verifica'], { encoding: 'utf8' });
|
||||||
|
cer(g.status === 0, 'the vectors on disk are what the generator derives now, byte for byte', g.status === 0 ? g.stdout.trim().split('\n').slice(-1)[0] : (g.stdout + g.stderr).trim().split('\n').slice(-3).join(' | '));
|
||||||
|
const dev = path.join(AICI, '..', 'aere-proof-protocol', 'genereaza-vectori-kinds.mjs');
|
||||||
|
if (fs.existsSync(dev)) { const G = await import(pathToFileURL(dev).href); const lor = new Map(G.totiVectorii().map((x) => [x.nume, canon(x.plic)])); const ale = plicuriKinds();
|
||||||
|
cer(ale.length === lor.size && ale.every(([k, p]) => lor.get(k) === canon(p)), `the ${ale.length} kind envelopes are the published AIP-23 kind vectors (same producers, same fixed inputs)`); }
|
||||||
|
else rand('INFO', 'the comparison with the published AIP-23 kind vectors is made in the development repository (their generator is not part of this copy)');
|
||||||
|
|
||||||
|
console.log('B. coverage and single place');
|
||||||
|
const fara = neacoperite(TOATE); cer(!fara.length, `every rule a verifier names has a vector that expects it (${TOATE.length} of ${TOATE.length})`, fara.length ? 'without a vector: ' + fara.join(', ') : '');
|
||||||
|
const artifacte = Object.values(VERIFICATOARE).flatMap((v) => v.artifacts); const faraValid = artifacte.filter((x) => !vectori.some((v) => v.artifact === x && v.expected.verdict === 'VALID'));
|
||||||
|
cer(!faraValid.length, `every artifact kind has a VALID vector (${artifacte.length} kinds)`, faraValid.join(', '));
|
||||||
|
const kinds = plicuriKinds().map(([k]) => k); const kLipsa = kinds.filter((k) => !['valid', 'form', 'integrity'].every((s) => vectori.some((v) => v.id === `envelope/${k}.${s}`)));
|
||||||
|
cer(!kLipsa.length, `every AIP-23 proof kind (${kinds.length}) has its VALID vector and one INVALID vector per offline envelope rule`, kLipsa.join(', '));
|
||||||
|
let unLoc = 0, prod = 0, alte = 0; const rele = [];
|
||||||
|
for (const v of vectori) {
|
||||||
|
if (!v.base) { if (v.expected.verdict === 'INVALID') rele.push(v.id + ': INVALID without a base'); continue; }
|
||||||
|
const b = vectori.find((x) => x.id === v.base); if (!b) { rele.push(v.id + ': base missing'); continue; }
|
||||||
|
if (b.expected.verdict === 'INVALID') rele.push(v.id + ': its base is INVALID');
|
||||||
|
if (v.mutation && v.mutation.op) { let m; try { m = aplica(b.input, v.mutation); } catch (e) { rele.push(v.id + ': ' + e.message); continue; } if (canon(m) !== canon(v.input)) rele.push(v.id + ': the input is not the base with the one operation applied'); else if (v.expected.verdict === 'INVALID') unLoc++; else alte++; }
|
||||||
|
else if (v.mutation && v.mutation.producer) { const dif = difera(b.input, v.input); const afara = dif.filter((p) => !v.mutation.changed.some((c) => prefix(c, p))); const neatinse = v.mutation.changed.filter((c) => !dif.some((p) => prefix(c, p)));
|
||||||
|
if (!dif.length || afara.length || neatinse.length) rele.push(v.id + ': differs outside what it declares (' + afara.map((p) => p.join('.')).join(', ') + ') or declares paths that did not move (' + neatinse.map((p) => p.join('.')).join(', ') + ')'); else prod++; }
|
||||||
|
else rele.push(v.id + ': a base without a mutation');
|
||||||
|
}
|
||||||
|
const inv = vectori.filter((v) => v.expected.verdict === 'INVALID').length;
|
||||||
|
cer(!rele.length && unLoc + prod === inv, `every INVALID vector (${inv}) is its base with ONE operation applied (${unLoc}), or one change at the producer with the paths that moved declared (${prod}); ${alte} more vectors that are not INVALID are also one operation from their base`, rele.slice(0, 4).join(' | '));
|
||||||
|
const multe = vectori.filter((v) => v.expected.failed.length > 1); const fin = cuRegula('envelope.finality');
|
||||||
|
rand('INFO', `measured, not a gate: ${multe.length} vector(s) expect more than one rule (rules that guard the same field: ${multe.map((v) => v.id.split('/')[1]).join(', ')}); of the ${FINALITY_SITES.length} refusal sites of the reference verifier's finality level the vectors reach ${fin.length ? FINALITY_SITES.filter((x) => x.reachable).length : 0} (the others need an endpoint that lies)`);
|
||||||
|
|
||||||
|
console.log('C. two implementations, one runner');
|
||||||
|
const r1 = ruleazaSuita({ impl: REF, online });
|
||||||
|
if (r1.eroare) rand('STRICAT', 'the reference verifiers: ' + r1.eroare);
|
||||||
|
else { const p = numar(r1, 'PASS').length, deRulat = vectori.filter((v) => online || !v.requires.length).length;
|
||||||
|
cer(p === deRulat && !numar(r1, 'FAIL').length && !numar(r1, 'BROKEN').length && !numar(r1, 'NOT_COVERED').length, `the published verifiers behind the one verdict form pass ${p} of ${deRulat} vectors${online ? ' (testnet 28001 read)' : ' (offline)'}`, [...numar(r1, 'FAIL'), ...numar(r1, 'BROKEN')].slice(0, 3).map((x) => x.id + ' ' + x.detaliu).join(' | '));
|
||||||
|
if (!online) rand('NEMASURAT', `${numar(r1, 'SKIPPED_ONLINE').length} vectors need testnet 28001 and were not run (--online)`); }
|
||||||
|
const py = python();
|
||||||
|
if (!py) rand('NEMASURAT', 'the independent implementation needs Python 3 (AERE_CONFORMANCE_PYTHON=<command>)');
|
||||||
|
else { const r2 = ruleazaSuita({ impl: `${py} "${path.join(AICI, 'implementare-integritate.py')}"`, online: false });
|
||||||
|
if (r2.eroare) rand('STRICAT', 'the independent implementation: ' + r2.eroare);
|
||||||
|
else { const p = numar(r2, 'PASS').length, nc = numar(r2, 'NOT_COVERED').length; const revendica = vectori.filter((v) => r2.caps.artifacts.includes(v.artifact) && v.exercises.every((x) => r2.caps.rules.includes(x)) && !v.requires.length).length;
|
||||||
|
cer(p === revendica && p > 0 && !numar(r2, 'FAIL').length && !numar(r2, 'BROKEN').length && p + nc === vectori.length, `an independent implementation in another language (${r2.caps.name}) passes all ${p} vectors it claims; the other ${nc} are reported NOT COVERED, never passed`, [...numar(r2, 'FAIL'), ...numar(r2, 'BROKEN')].slice(0, 3).map((x) => x.id + ' ' + x.detaliu).join(' | ')); } }
|
||||||
|
|
||||||
|
console.log('D. a malformed artifact is refused by name, never thrown at the reader');
|
||||||
|
{ const m = await malformate();
|
||||||
|
cer(m.cazuri > 1000 && !m.aruncate.length, `${m.cazuri} malformed inputs (every path removed or replaced) given to the module verifiers: each got a verdict, none threw`, m.aruncate.slice(0, 3).join(' | ') + (m.aruncate.length > 3 ? ' ... ' + m.aruncate.length + ' in all' : ''));
|
||||||
|
const cai = [...new Set(m.acceptate)].sort(); const peFel = {}; for (const c of cai) { const k = c.split(':')[0]; peFel[k] = (peFel[k] || 0) + 1; }
|
||||||
|
rand('INFO', `measured, not a gate: ${m.acceptate.length} of them were still accepted, at ${cai.length} distinct paths (${Object.entries(peFel).map(([k, n]) => k + ' ' + n).join(', ')}): parts a verifier treats as optional (the transaction facts of a receipt, the envelope of a timeline) and fields no rule reads; --acceptate lists them`);
|
||||||
|
if (a.includes('--acceptate')) for (const c of cai) console.log(' ' + c); }
|
||||||
|
} else if (control) {
|
||||||
|
console.log('CONTROL: every rule planted out of its verifier, one at a time; the vectors that expect the rule, and only they, must fail');
|
||||||
|
const cazuri = []; for (const [v, d] of Object.entries(VERIFICATOARE)) for (const [src, [id]] of Object.entries(d.reguli)) cazuri.push({ v, src, id, online: id === 'envelope.finality' });
|
||||||
|
const deRulat = cazuri.filter((c) => !c.online || online); let bune = 0;
|
||||||
|
try {
|
||||||
|
const rez = await inParalel(deRulat.map((c) => async () => { const p = planteaza(c.v, c.src); if (p.stricat) return { stricat: p.stricat }; try { return await suitaAsync(p.env, { online: c.online }); } finally { fs.rmSync(p.copie, { force: true }); } }));
|
||||||
|
deRulat.forEach((c, k) => {
|
||||||
|
const r = rez[k]; const asteptate = cuRegula(c.id, vectori.filter((v) => c.online || !v.requires.length)).sort();
|
||||||
|
if (r.stricat || r.eroare) return rand('STRICAT', `${c.id}: ${r.stricat || r.eroare}`);
|
||||||
|
const cazute = r.rezultate.filter((x) => x.stare === 'FAIL').map((x) => x.id).sort(); const stricate = r.rezultate.filter((x) => x.stare === 'BROKEN').map((x) => x.id);
|
||||||
|
const ok = asteptate.length > 0 && cazute.join() === asteptate.join() && !stricate.length; if (ok) bune++;
|
||||||
|
rand(ok ? 'VERDE' : stricate.length ? 'STRICAT' : 'ROSU', `${c.id} planted out: ${cazute.length} vector(s) fail` + (ok ? `, exactly the ${asteptate.length} that expect it` : `; expected exactly [${asteptate.join(', ')}], failed [${cazute.join(', ')}]` + (stricate.length ? `, broken [${stricate.join(', ')}]` : '')));
|
||||||
|
});
|
||||||
|
} finally { for (const f of ramase()) fs.rmSync(f, { force: true }); }
|
||||||
|
for (const c of cazuri.filter((x) => x.online && !online)) rand('NEMASURAT', `${c.id}: its vectors need testnet 28001 (--online)`);
|
||||||
|
console.log('CONTROL of the instruments');
|
||||||
|
{ // the runner can fail: an implementation that calls everything VALID
|
||||||
|
const stub = path.join(fs.mkdtempSync(path.join(os.tmpdir(), 'aere-conf-stub-')), 'stub.mjs');
|
||||||
|
fs.writeFileSync(stub, `import fs from 'node:fs'; const a = process.argv.slice(2); const V = JSON.stringify({ verdict: 'VALID', failed: [], levels: [{ level: 'integrity', state: 'PASSED' }, { level: 'authenticity', state: 'NOT_MEASURED' }, { level: 'anchoring', state: 'NOT_MEASURED' }, { level: 'finality', state: 'NOT_MEASURED' }] });\nif (a.includes('--capabilities')) console.log(JSON.stringify({ artifacts: ${JSON.stringify(Object.values(VERIFICATOARE).flatMap((v) => v.artifacts))}, rules: ${JSON.stringify(TOATE)}, online: false, batch: true }));\nelse for (const x of JSON.parse(fs.readFileSync(a[a.indexOf('--batch') + 1], 'utf8'))) console.log(V);\n`);
|
||||||
|
const r = ruleazaSuita({ impl: `node "${stub}"` }); fs.rmSync(path.dirname(stub), { recursive: true, force: true });
|
||||||
|
const off = vectori.filter((v) => !v.requires.length); const trebuie = off.filter((v) => !(v.expected.verdict === 'VALID' && Object.entries(v.expected.levels).every(([l, s]) => s === (l === 'integrity' ? 'PASSED' : 'NOT_MEASURED')))).map((v) => v.id).sort();
|
||||||
|
const cazute = r.eroare ? [] : numar(r, 'FAIL').map((x) => x.id).sort();
|
||||||
|
cer(!r.eroare && cazute.join() === trebuie.join() && trebuie.length > 0, `the runner fails an implementation that calls everything VALID on ${trebuie.length} of ${off.length} offline vectors (every one that is not plainly VALID)`, r.eroare || ''); }
|
||||||
|
{ const lista = vectori.filter((v) => !v.expected.failed.includes('dataset.order')); const f = neacoperite(TOATE, lista);
|
||||||
|
cer(f.join() === 'dataset.order', 'the coverage gate goes red when the vector of one rule is taken away (dataset.order)', f.join(', ')); }
|
||||||
|
{ // a rule added to a verifier and not mapped in the suite is refused by the derivation
|
||||||
|
const p = fileURLToPath(MODULE.baza.url); const copie = path.join(path.dirname(p), `_plantat-conf-${process.pid}-regula-noua.mjs`); const src = fs.readFileSync(p, 'utf8'); const anc = "'consistenta', 'esantion'];";
|
||||||
|
try { if (src.split(anc).length !== 2) rand('STRICAT', 'the anchor of the new-rule planting is not in the dataset module');
|
||||||
|
else { fs.writeFileSync(copie, src.replace(anc, "'consistenta', 'esantion', 'noua'];") + '\n/*PAZA:noua*/\n'); const D = await deriva({ cai: { baza: copie } });
|
||||||
|
cer(D.probleme.length === 1 && /names rule noua and the suite does not map it/.test(D.probleme[0]), 'a rule added to a verifier and not mapped in the suite is refused by the derivation (a new rule without a vector cannot pass unseen)', D.probleme.join(' | ')); }
|
||||||
|
} finally { fs.rmSync(copie, { force: true }); } }
|
||||||
|
{ // the malformed-input row can go red: the market judge without its form check and without its catch throws again, and the row counts it
|
||||||
|
const p = fileURLToPath(MODULE.piata.url); const copie = path.join(path.dirname(p), `_plantat-conf-${process.pid}-arunca.mjs`); const src = fs.readFileSync(p, 'utf8'); const anc = "catch (e) { return { verdict: 'INVALID', motive: ['malformed timeline: '";
|
||||||
|
try { if (src.split(anc).length !== 2) rand('STRICAT', 'the anchor of the throwing planting is not in the market judge');
|
||||||
|
else { fs.writeFileSync(copie, src.replace(anc, "catch (e) { throw e; return { verdict: 'INVALID', motive: ['malformed timeline: '").split('/*PAZA:forma*/').join(PLANT)); process.env[MODULE.piata.env] = copie; const m = await malformate(); delete process.env[MODULE.piata.env];
|
||||||
|
cer(m.aruncate.length > 0 && m.aruncate.every((x) => x.startsWith('market-timeline/')), `the malformed-input row goes red when a judge throws again (the market judge without its form check and its catch: ${m.aruncate.length} of ${m.cazuri} inputs thrown)`); }
|
||||||
|
} finally { delete process.env[MODULE.piata.env]; fs.rmSync(copie, { force: true }); } }
|
||||||
|
const r = ramase(); cer(!r.length, 'no planted copy is left behind', r.join(', '));
|
||||||
|
console.log(`CONTROL: ${bune} of ${cazuri.length} rules proven load-bearing through their vectors`);
|
||||||
|
} else {
|
||||||
|
console.log('MEASUREMENT (not a gate): each check site planted out alone, the vectors of its artifact kinds run');
|
||||||
|
const locuri = []; for (const [v, d] of Object.entries(VERIFICATOARE)) { if (d.sursa === 'verify-proof') continue; const src = fs.readFileSync(fileURLToPath(MODULE[d.sursa].url), 'utf8');
|
||||||
|
for (const [s, [id]] of Object.entries(d.reguli)) { const n = src.split(`/*PAZA:${s}*/`).length - 1; for (let k = 0; k < n; k++) locuri.push({ v, src: s, id, k, n, doar: d.artifacts[0].split('-')[0] }); } }
|
||||||
|
let atinse = 0;
|
||||||
|
try {
|
||||||
|
const rez = await inParalel(locuri.map((c) => async () => { const p = planteaza(c.v, c.src, c.k); if (p.stricat) return { stricat: p.stricat }; try { return await suitaAsync(p.env, { doar: c.doar }); } finally { fs.rmSync(p.copie, { force: true }); } }));
|
||||||
|
const peRegula = {};
|
||||||
|
locuri.forEach((c, k) => { const r = rez[k]; const cazute = r.rezultate ? r.rezultate.filter((x) => x.stare === 'FAIL').length : 0; if (cazute) atinse++; (peRegula[c.id] || (peRegula[c.id] = [])).push(r.stricat || r.eroare ? '?' : cazute ? 'reached' : 'NOT reached'); });
|
||||||
|
for (const [id, l] of Object.entries(peRegula)) console.log(` ${id}: ${l.filter((x) => x === 'reached').length} of ${l.length} site(s) reached` + (l.includes('NOT reached') ? ' (sites ' + l.map((x, i) => (x === 'NOT reached' ? i + 1 : null)).filter(Boolean).join(', ') + ' have no vector)' : ''));
|
||||||
|
} finally { for (const f of ramase()) fs.rmSync(f, { force: true }); }
|
||||||
|
console.log(`SITES: the vectors reach ${atinse} of ${locuri.length} check sites of the module verifiers (the reference verifier's own sites are counted in REGULI.json)`);
|
||||||
|
process.exit(0);
|
||||||
|
}
|
||||||
|
console.log(`\nconformance suite${control ? ' (control)' : ''}: ${verzi} VERDE, ${rosii} ROSU, ${nemas} NEMASURAT/STRICAT`);
|
||||||
|
process.exitCode = rosii ? 1 : nemas ? 2 : 0;
|
||||||
140
conformance/reguli.mjs
Normal file
140
conformance/reguli.mjs
Normal file
@ -0,0 +1,140 @@
|
|||||||
|
// reguli.mjs: which verifiers the conformance suite enrols, the rules each of them NAMES (derived from its code, never typed here as
|
||||||
|
// a list of its own), the public id and the level of each rule.
|
||||||
|
//
|
||||||
|
// A verifier that lives in this repository as a module exports `REGULI` (the rules it can name; its helper throws on any other) and
|
||||||
|
// carries a /*PAZA:<rule>*/ marker on every check of a rule. The derivation imports the module, reads its source, and requires:
|
||||||
|
// declared == marked == mapped below. A rule added to a verifier and not mapped here, or mapped here and gone from the verifier, is a
|
||||||
|
// refusal of the derivation, not a silent drift. The AIP-23 reference verifier (verify-proof.mjs) is a published program, not edited
|
||||||
|
// for this suite: its rules are its level names, read from its `level('<name>', ... 'FAILED'` sites, and every FAILED site of its
|
||||||
|
// `finality` level must be classified below (anchoring or finality) or the derivation refuses.
|
||||||
|
import fs from 'node:fs'; import path from 'node:path'; import { fileURLToPath, pathToFileURL } from 'node:url';
|
||||||
|
|
||||||
|
const AICI = path.dirname(fileURLToPath(import.meta.url));
|
||||||
|
export const LEVELS = ['integrity', 'authenticity', 'anchoring', 'finality'];
|
||||||
|
/** The AIP-23 reference verifier: AERE_VERIFY_PROOF=<verify-proof.mjs> (published with aere-node), or the development repository. */
|
||||||
|
export const VERIFY_PROOF = process.env.AERE_VERIFY_PROOF || path.resolve(AICI, '..', '..', 'verificator-falcon', 'verify-proof.mjs');
|
||||||
|
|
||||||
|
/** The modules judged in-process. `env` names the variable through which the planting control substitutes a planted copy. */
|
||||||
|
export const MODULE = {
|
||||||
|
risc: { url: new URL('../payments/risc.mjs', import.meta.url), env: 'AERE_CONF_MODUL_RISC' },
|
||||||
|
chitanta: { url: new URL('../payments/chitanta.mjs', import.meta.url), env: 'AERE_CONF_MODUL_CHITANTA' },
|
||||||
|
piata: { url: new URL('../market-settlement/piata.mjs', import.meta.url), env: 'AERE_CONF_MODUL_PIATA' },
|
||||||
|
baza: { url: new URL('../verifiable-data/baza.mjs', import.meta.url), env: 'AERE_CONF_MODUL_BAZA' },
|
||||||
|
};
|
||||||
|
export const caleModul = (k) => process.env[MODULE[k].env] || fileURLToPath(MODULE[k].url);
|
||||||
|
export const incarca = (k) => import(pathToFileURL(caleModul(k)).href);
|
||||||
|
|
||||||
|
const I = 'integrity';
|
||||||
|
/** verifier -> { artifacts it judges, where its rules come from, source rule -> [public id, level, what the rule says] } */
|
||||||
|
export const VERIFICATOARE = {
|
||||||
|
'aip23-envelope': { artifacts: ['envelope'], sursa: 'verify-proof', reguli: {
|
||||||
|
form: ['envelope.form', I, 'the envelope has a statement (object) and a statementHash (0x + 64 hex)'],
|
||||||
|
integrity: ['envelope.integrity', I, 'sha256 of the canonical statement text is the statementHash'],
|
||||||
|
signature: ['envelope.signature', 'authenticity', 'the ML-DSA signature the envelope carries verifies over the canonical statement text'],
|
||||||
|
finality: ['envelope.finality', 'anchoring', 'the statementHash is recorded in the notary under a state root that a verified post-quantum anchor certificate covers (level by site: see finalitySites)'] } },
|
||||||
|
'payment-risk': { artifacts: ['payment-risk'], sursa: 'risc', reguli: {
|
||||||
|
forma: ['risk.form', I, 'payer and payee are addresses; chain, asset, a positive integer amount and the time are given'],
|
||||||
|
activ: ['risk.asset', I, 'the asset on that chain is allowed by the declared policy'],
|
||||||
|
contrapartida: ['risk.counterparty', I, 'the payee is not the payer and is not a refused counterparty of the policy'],
|
||||||
|
curs: ['risk.rate', I, 'the USD rate is declared (value, source, time) when the policy requires it'],
|
||||||
|
limita: ['risk.limit', I, 'the amount in USD is within the per-payment limit of the policy'],
|
||||||
|
fereastra: ['risk.window', I, 'the amount and the count stay within the sliding window of the policy'] } },
|
||||||
|
'payment-receipt': { artifacts: ['payment-receipt'], sursa: 'chitanta', reguli: {
|
||||||
|
legatura: ['receipt.binding', I, 'the settlement envelope commits to this instruction and says the same thing'],
|
||||||
|
suma: ['receipt.amount', I, 'the USD amount is the amount at the declared rate, exactly'],
|
||||||
|
politica: ['receipt.policy', I, 'the policy shown hashes to the policy the risk verdict names'],
|
||||||
|
risc: ['receipt.risk', I, 'the risk verdict reproduces from the inputs and the policy, and it allowed this payment'],
|
||||||
|
lant: ['receipt.chain', I, 'the transaction supplied is this payment: payer, payee, value, block, mined'] } },
|
||||||
|
'market-timeline': { artifacts: ['market-timeline'], sursa: 'piata', reguli: {
|
||||||
|
forma: ['market.form', I, 'the timeline is well formed: events with name, arguments, sender, integer time and block; the job and the constants with their integer fields'],
|
||||||
|
intreg: ['market.complete', I, 'the timeline carries every event the job state implies: posted; claimed when a provider is set; submitted and disputed when their times are set'],
|
||||||
|
postare: ['market.posting', I, 'the JobPosted event matches the job (requester, spec, deadline, reward)'],
|
||||||
|
termen: ['market.deadline', I, 'claim and submission are within the deadline; an expiry refund only after it'],
|
||||||
|
fereastra: ['market.window', I, 'a dispute is raised inside the challenge window; a third party finalizes only after it'],
|
||||||
|
arbitru: ['market.arbiter', I, 'a dispute is resolved by the arbiter, or timed out only after the arbitration timeout'],
|
||||||
|
plata: ['market.payout', I, 'the terminal payout matches the final state (who, how much, which bond)'],
|
||||||
|
rezultat: ['market.result', I, 'the result bytes hash to the commitment on chain'],
|
||||||
|
replay: ['market.replay', I, 'the public task recomputed agrees with who was paid or slashed'],
|
||||||
|
dovada: ['market.proof', I, 'the execution envelope names this job and existed before the window closed'] } },
|
||||||
|
dataset: { artifacts: ['dataset-record', 'dataset-answer', 'dataset-consistency', 'dataset-sample'], sursa: 'baza', reguli: {
|
||||||
|
forma: ['dataset.form', I, 'a row carries its field commitments and its disclosed fields'],
|
||||||
|
angajament: ['dataset.commitment', I, 'the record, answer or proof names the commitment it is checked against'],
|
||||||
|
camp: ['dataset.field', I, 'a disclosed value opens its salted field commitment'],
|
||||||
|
includere: ['dataset.inclusion', I, 'the record is in the log of that version (RFC 9162 inclusion)'],
|
||||||
|
index: ['dataset.index', I, 'the row is at its stated position of the sorted index'],
|
||||||
|
interval: ['dataset.range', I, 'every row returned is inside the queried range'],
|
||||||
|
ordine: ['dataset.order', I, 'consecutive rows are in index order'],
|
||||||
|
completitudine: ['dataset.completeness', I, 'the rows are the whole contiguous run; the neighbours on both sides are outside the range'],
|
||||||
|
consistenta: ['dataset.consistency', I, 'the older log is a prefix of the newer (RFC 9162 consistency) and the versions are linked'],
|
||||||
|
esantion: ['dataset.sample', I, 'every sampled position is served and verifies'] } },
|
||||||
|
};
|
||||||
|
/**
|
||||||
|
* The FAILED sites of verify-proof's `finality` level, classified. `fragment` must appear on exactly one such source line; `re`
|
||||||
|
* matches the detail the verifier prints there; `level` is where the suite reports it. Only the last one is reachable by an honest
|
||||||
|
* endpoint (a claim that is not on chain); the others need an endpoint that lies or a chain whose anchor does not verify.
|
||||||
|
*/
|
||||||
|
export const FINALITY_SITES = [
|
||||||
|
{ fragment: 'most recent anchor did not verify', re: /^the chain's most recent anchor did not verify/, level: 'finality' },
|
||||||
|
{ fragment: 'the header the endpoint served for block', re: /^the header the endpoint served for block/, level: 'anchoring' },
|
||||||
|
{ fragment: 'has no account at', re: /has no account at/, level: 'anchoring' },
|
||||||
|
{ fragment: 'is not the AereNotary contract', re: /is not the AereNotary contract/, level: 'anchoring' },
|
||||||
|
{ fragment: 'the Merkle proof for block', re: /^the Merkle proof for block/, level: 'anchoring' },
|
||||||
|
{ fragment: 'not notarized:', re: /^not notarized:/, level: 'anchoring', reachable: true },
|
||||||
|
];
|
||||||
|
/** Verifiers published beside these that the suite does NOT enrol yet, with the pattern that counts their refusal sites. */
|
||||||
|
export const NEINROLATE = [
|
||||||
|
{ name: 'ai-trust', files: [new URL('../ai-trust/lant-de-incredere.mjs', import.meta.url)], re: /\bfail\('[a-z-]+', '[a-z-]+'/g, why: 'its refusals already carry a level and a code; enrolling it is a vector per code, not done here' },
|
||||||
|
{ name: 'agents (ledger)', files: [new URL('../agents/agent-ledger.mjs', import.meta.url)], re: /ok: false, error:/g, why: 'its refusals are free text; a rule id per refusal comes first' },
|
||||||
|
{ name: 'identity', files: [new URL('../identity/identity.mjs', import.meta.url)], re: /\bok\('/g, why: 'its checks are labelled rows, not rule ids' },
|
||||||
|
{ name: 'verify-layer (log and tree)', files: [new URL('../verify-layer/sidecar.mjs', import.meta.url), new URL('../verify-layer/jurnal-arbore.mjs', import.meta.url)], re: /ok: false/g, why: 'its refusals are free text; a rule id per refusal comes first' },
|
||||||
|
];
|
||||||
|
|
||||||
|
/** public rule id -> { verifier, source, level, says } for every mapped rule */
|
||||||
|
export function hartaPublica() {
|
||||||
|
const h = {};
|
||||||
|
for (const [v, d] of Object.entries(VERIFICATOARE)) for (const [src, [id, level, says]] of Object.entries(d.reguli)) h[id] = { verifier: v, source: src, level, says };
|
||||||
|
return h;
|
||||||
|
}
|
||||||
|
/** source rule ids of a verifier -> public ids */
|
||||||
|
export const public_ = (verifier, surse) => [...new Set(surse.map((s) => { const r = VERIFICATOARE[verifier].reguli[s]; if (!r) throw new Error(`${verifier}: the verifier named a rule this suite does not map: ${s}`); return r[0]; }))].sort();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Derives the rule table from the code. Returns { tabel, probleme, nemasurat }: `probleme` are refusals (a rule declared and not
|
||||||
|
* marked, marked and not declared, declared and not mapped, mapped and not declared, an unclassified finality site); `nemasurat`
|
||||||
|
* names a verifier whose source could not be read here. `cai` substitutes the file of a module (the probe's control derives from a
|
||||||
|
* planted copy to show that a rule added to a verifier and not mapped here is refused).
|
||||||
|
*/
|
||||||
|
export async function deriva({ cai = {} } = {}) {
|
||||||
|
const probleme = [], nemasurat = []; const tabel = { v: 1, kind: 'aere-conformance-rules', levels: LEVELS, verifiers: {}, notEnrolled: [] };
|
||||||
|
for (const [v, d] of Object.entries(VERIFICATOARE)) {
|
||||||
|
const rules = []; let declared = [], sites = {}, extra = {};
|
||||||
|
if (d.sursa === 'verify-proof') {
|
||||||
|
if (!fs.existsSync(VERIFY_PROOF)) { nemasurat.push(`${v}: the reference verifier is not at ${VERIFY_PROOF} (AERE_VERIFY_PROOF=<verify-proof.mjs>)`); continue; }
|
||||||
|
const linii = fs.readFileSync(VERIFY_PROOF, 'utf8').split('\n').filter((l) => /level\('[a-z]+',[^;]*'FAILED'/.test(l) && !/^\s*\/\//.test(l));
|
||||||
|
for (const l of linii) for (const m of l.matchAll(/level\('([a-z]+)',[^;]*?'FAILED'/g)) sites[m[1]] = (sites[m[1]] || 0) + 1;
|
||||||
|
declared = Object.keys(sites);
|
||||||
|
const fin = linii.filter((l) => /level\('finality'/.test(l));
|
||||||
|
for (const s of FINALITY_SITES) { const n = fin.filter((l) => l.includes(s.fragment)).length; if (n !== 1) probleme.push(`${v}: the finality site "${s.fragment}" appears on ${n} FAILED lines of the verifier (expected 1)`); }
|
||||||
|
if (fin.length !== FINALITY_SITES.length) probleme.push(`${v}: the verifier has ${fin.length} FAILED sites at its finality level, the suite classifies ${FINALITY_SITES.length}`);
|
||||||
|
extra = { finalitySites: FINALITY_SITES.map((s) => ({ site: s.fragment, level: s.level, reachableWithAnHonestEndpoint: !!s.reachable })) };
|
||||||
|
} else {
|
||||||
|
const p = cai[d.sursa] || fileURLToPath(MODULE[d.sursa].url); const src = fs.readFileSync(p, 'utf8'); const M = await import(pathToFileURL(p).href);
|
||||||
|
if (!Array.isArray(M.REGULI)) { probleme.push(`${v}: the module does not export REGULI`); continue; }
|
||||||
|
declared = [...M.REGULI];
|
||||||
|
for (const m of src.matchAll(/\/\*PAZA:([a-z]+)\*\//g)) sites[m[1]] = (sites[m[1]] || 0) + 1;
|
||||||
|
for (const r of declared) if (!sites[r]) probleme.push(`${v}: rule ${r} is declared and no check carries its marker`);
|
||||||
|
for (const r of Object.keys(sites)) if (!declared.includes(r)) probleme.push(`${v}: a check is marked ${r}, a rule the module does not declare`);
|
||||||
|
}
|
||||||
|
for (const r of declared) if (!d.reguli[r]) probleme.push(`${v}: the verifier names rule ${r} and the suite does not map it (a new rule needs a public id, a level and a vector)`);
|
||||||
|
for (const r of Object.keys(d.reguli)) if (!declared.includes(r)) probleme.push(`${v}: the suite maps rule ${r}, which the verifier no longer names`);
|
||||||
|
for (const [src, [id, level, says]] of Object.entries(d.reguli)) rules.push({ id, source: src, level, sites: sites[src] || 0, says });
|
||||||
|
tabel.verifiers[v] = { artifacts: d.artifacts, rules, ...extra };
|
||||||
|
}
|
||||||
|
for (const n of NEINROLATE) {
|
||||||
|
let sitesN = 0, citit = true;
|
||||||
|
for (const u of n.files) { const p = fileURLToPath(u); if (!fs.existsSync(p)) { citit = false; continue; } sitesN += (fs.readFileSync(p, 'utf8').match(n.re) || []).length; }
|
||||||
|
tabel.notEnrolled.push({ verifier: n.name, refusalSites: citit ? sitesN : null, why: n.why });
|
||||||
|
if (citit && sitesN === 0) probleme.push(`not enrolled ${n.name}: the pattern that counts its refusal sites finds none (the pattern is stale)`);
|
||||||
|
}
|
||||||
|
return { tabel, probleme, nemasurat };
|
||||||
|
}
|
||||||
612
conformance/surse-proaspete.json
Normal file
612
conformance/surse-proaspete.json
Normal file
@ -0,0 +1,612 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-fresh-sources",
|
||||||
|
"at": "2026-10-03T09:33:28.671Z",
|
||||||
|
"signedHead": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-audit-tree-head-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-audit-tree-head",
|
||||||
|
"host": "conformance",
|
||||||
|
"treeSize": 3,
|
||||||
|
"rootHash": "0xfeabb16d0b795805345b053ff7b77d732ca566303b0dace87992b667674b1bd3",
|
||||||
|
"createdAt": "2026-10-03T09:33:28.671Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0xe661da6bb6f98b38d5b891debb4b72111b90852f133bed0f6dc22cb3f9ae6c41",
|
||||||
|
"signature": {
|
||||||
|
"scheme": "ml-dsa-65",
|
||||||
|
"publicKey": "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",
|
||||||
|
"signature": "pm+Mh1v7TzZFyfloc+mLyaoZq3nJ4xuXNoaQzJBj0btuLyM9kLWWJlSXn00nIJYrfFBPAzFUnisSrKeM4ypAVsFAc9Y6jdvWCX2BV+JHiOt0jOo0nddWbpuvmAOYT8LIawJOL0MzWOuKfzqrD+kwsJYHnABTMRnZq21xz0Mi6+28FfL4+vXcQWjZqZ7k+R9xFCHamByD5f7aJltZZ2487A5KFLwpMloE9FExEOas2edGJ6LmiD0StSFHnvL8eVI/KxNoGHHEIJaPUte7sFNWDFr2IRoFI/hFW8rkFj+pdb3J11l/4AdJSINuKGXMWqa/NfvoEuN+K+smOuhqpzyEXg0EEmtg6dTJWRdMbN+TusrnLV0xFL+JT2cteA9FqvtMbajjcW9Cf+fQsHMr8N2kdnEz7R8dasJb+4ff0GniHL/7QzoS3DCqZWuc9I5VYrpCLLp5x6f9+ecdFcE3Vozk1zzTmWnhTQZZNABU4SgK6wBdD3/0UPEP49bZq9iWZNcyBKLC8RmNP0Hwos+4g5sOkejytLbQ3H+MQ00xEAIwgMKq4oZJaG71ZIpuXsrGQcU9U8vPLRxXxAZCHTzg+L24OWkegaCHcvPFvxpapp9+gf+iEalXlSKj1UsYj2XBGL0BwSBfoViqTGosWGcPoGTY/hfaDxnlxvDsmNGo7S3tLZ20FlXXPlFloYM7M0bBxf1UCrqCiaqTzv4xv1q9gRPK6joEkfwSQzTtP2NMrxj5cunpij2wY2VnLsHE/5fJ+F27Rifys+28D0GprKZb5mck5Y+n8CR0mb6eLmmRoP2pzyumlUPF0cvoMEEWzL3ehoc4OGKlLX9HW9+4KUAQ/1vKMSbnakAyqLXWR+0yU3koXFemQhJmP06CVdJtHw+iQ9Tce6zH6XaaKv6XXhv89Es/fIh+3uR6YPyqxVZG4P5CcgghLsttjvuGB8eqQR7d5GzJXjjP9YMp9vSrBgl1Eyvqf4cCV7FciJhVzX9BwaMiSX4MWvyoo0CxX+ZB3YaQbP5dz7IB4ZYjCRmZIYFMiY2aAGZN2GTzwRB9gVzxwGyyCHBJixGWKpC/kF1Mkn0GBWjSvYtqhGjN9y+ioIXQHGNPJb2wbQcieB/qsXa3h97KHZUMfUYeh8iiQWvza130HJCiH8D2VoDbXCDHY+EGQTk/rGYruyRQqaZXwd/dtnYYmsaIW9lB7BboF35WwoIFp40U6hquqianLTlo88Dx4qujG1LMPZUXNAdPt9hjXZyR0NbrtXsqBtHY/FG4mpR6psuZBW3LsEFIy3RNt55lFH5xRdn2it/5oVIYjZt+IKSbLE2Ytr8ffeo0DHqE2Lo2WvTBsov+AV8xZhRxGMFufBtt7IIH6t+tqMct/ksOu6AW3q36dl7HLdlD3MaMy64koIHVBfrxusTJ0qRprlPWYNWFAg28thIgA0m1qNIE/6zjRkLZvrFoKpRN4conyzfy6OOlFyLBp0E4Gli6oO0wWhW/xGwl3gi/CCFvm3KaFJRQcgoOvqAu8w0x6PAfu4BhzI2OeOUDGysmQ+jOypUw/mGQsMGTwd9VOtjdLN9vdhK+BXqn8XwPB5JKzdxhJrMwDErcyiJKPLI3vGDVHdG32OSj5tvlnjp+g5gMXJLnUoS9zgPUh+7qeLXHluLdSlFClXEa+Mg/sWpEY6clFQJ7gXA1R8aUuH5vZIhLUe1wwIYo0UwxmZaD9gz3nTbhq1iFk4TMUbLhfvaxGWHJzsx89IfmVohv2GUUIogzi/5ke+b/KJOdGZDLubBesSoWPigmoEy10r/Aj3jNty9E5DIHlsMQKL1af1T6QXrpWuRkDo48adUEFW0mcBQ9nLxKR0Ov8/CZ9FWxL+BZj8cNBgqjVa7E6FjsWYnb1gN0dtdTUzXR3r5S84KCzYVumC/Oy8x/bSsO/S2N9NABRfkzM0CY+aT+N+LNdmuMARdCG1EnIdW4U6CBy3Y79BqPmzZOmn1zFn4y2iqX3/iWqzS5J5A/W7uCX7aaAcfhKum4gjRtyQ5cToWETkUIVkbxg7AD0sEoH6HogdQwvLbBwTtaqXBTCTG63M9vskbzETp0HguOmcyvlAt23VM7Qcd8QIy9hqlQxhGgv0vVenitGkvVVvn/eL0E1cRg5UzMMJWOSPNXqH6AOg+K0he7w1YbMDdc+o6JKPkz0JesAJswDx5QF1tFvzBM8gfevDX0OkJe1zzSPR8D+OQOzlYWNlO1bHze1rKGHqJwghxj9PIaApWWAcPu2dDsjEkXJI2PNG08fxipBc1fdrA00LeXduC6pym8w6hhntnnuNqN5mFEgqWkICIlEyWc7F9wTkxU69iu1Mz9Lc6d33I5MnGMl989HOnAj8yaBifPldA6lpJz/YQCQTmLgh4Td36M2QtGJFSmAYG93fguy4YdJPV94E1qthtqOleDDpjMMq45k8UMAGAh4PaJF6uAM9niDSLJ6GFYoMzd7lGrWIoyyuwagtmL09lRRgn0Da/1dBQTW2kpbF7dJCPlyBELkyydET+SmAqwQvgJ7Q1gcUfQMpqGXJU2VJCRYh0qwmg2o33LBvkzSMmHwNF/bwmdjOL6ZohsPC4LdgqI/rtW0DTGSiZJIlKGjIE8lJCq2Pl5ZC5al0KX78vEGiCvD9c8Wb31JIehAMbIXzGc2VxM62gOeOeDmocyX+ByWI9RN7YijCWfk53iaQUTcWv6WofxE/FTdl0hyn0SxW/PyoAzQxaqNNBqVdjj6Bvz+IueTSmCUBBP8V+5V8GRo/NU5aly1mWlAITCCky/oiSeJy4YJlTbBLDCa94XQJYoBaZknEwnJpS239YRULM78kifGPwcpEzKcndUCyaKAlcKHLg9BhnATkNVxxybuRsHkHYefo/ddx2Mzpi886yFvGklHkN9+ZVojeuHBlYmco12GIkTYli0FFhb1oL5Zo/L6okUQ42kexy69ZwYbsxkbhtk4cH42EffOYs1nxI9rmpJ7HLyaoTmq7lZzYkcGMtmTOCLhS9DjHTryinA7DXs8Is1aDIHgFh2+xm1q+kVUV4MnjEanz8890ithVfnBAZNB6vF0SSaPMFaAV+Gk7cbFtI0JfNl9z9Kg6U8+Xj44vSKSriXV8At2J1bGD9jZ8gFyqYKsyKRWaJWktZMe7zLRv3R86B/Au0wFoozn4EJ7GV78dzPV/GL2NHpjOXsvztDwLPloU0s2Eq+lK8WXRNpR3rZJhglm/DSnaIYXi7i8ekvW89GHfxXHJn/BLxzRNgmDY8PUmNS9hJr2/O/YxeY2J5B4tbjWr5sltRJQlfMXJmDrPbGHmTbpZ8ms47IQh8C0enODotO02zCfcRSiImvy0kBiva8H3ttABPl32dMvX3WR8iEq7zvNF3rdVZb+ve8Sfjb63AsBN2curD2kTDqOCr8+RWRmjYc044xB9EinElZ3xz6OaA73ARwUWjsecoIOFu5mmJzP4rDs3uxKGy3op5Udeo0F/OOR8HREyUkuxDbEwQtSahWhXpK0z3D4d7ISDHbmpYZkNZpgzpBNkk5PsgUVs1E2h/P25DpvQn4IBiDLNn8J3tCyCOmRujlMT1GMJDlVFEq866IXVhCdldXtCvoKvZVLcKy8pH7p6sakboAt32N52Fw4XEmGDKJHnjkIN7Mtb2rqxOsAnCBqO1iNw0qyCwaHm1mw0BoktMDnB9y/y3xSe1avsLAJHKKMXwbeX6xlb/0DOVtOrURV5WA8OfSUmA+gkYd7VCKZo7dT3KzgKGiFoPUaKXIBMNkb7IXIgCNy/k1+A6IY8aR50nr/O9rWmCEG4/t9WXzRZ+0RyISGQkGYch7Pqgw/abatJ0oEIEZsKEPDuCu46rX5m31gg/SEx+E/gYm6o25wGdT97z7eNcb3skHbtLQOrasBbxxWf5QHoQnHzY8uTJeQ0G+5YqxmLFf5lT84mG7xe0CDCFUzAci+ZFx9CGoEbD8S9F8mqDjpUO4MEM4JyrPu049E3ln0gR7Z6MLVPd1Fti9zXhkUYo0VsWwwmsfFqWxbk8366oF1GYC8aqtipwhjSP785cPxIfFTaM6U2Iiv9ok+msPOtd0i6GpghV3wRXVMNAVHjRiqY9cLgD1J0mCZscd8wWdQOvzEGfU9hE/KbxAAWDF7+saN2SbjJ2cXdR8RkwSHQ1YQb1jSOx3lT8Bivrx4eA5wdGUOhSIxOtaEiWJE6KWkmaA//wAvI4NGMrFF6wVB8mCFlPHvTewCY92qqvMpWrvfgMkT5aWmXFqXnSPCxk30ntoApcWKSyqklKJ7y9TLDWVymgFIJyfdsIjARsgonIeXV9s+aYOJCfb5D+qu1dE8cA6YL8bNmR1pztJTpaazScwo/YIJ3+BgpfBID1ncnN6oq/jGS1CRWB+AAAAAAAAAAAAAAAAAAAAAAAABQsPFh8l"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"fresh": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-data-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-data",
|
||||||
|
"sha256": "0xb77944195dabe43e90c675cc0cdf281a63bc642859b32f9779cd359d79d5d699",
|
||||||
|
"name": "conformance-fresh",
|
||||||
|
"createdAt": "2026-10-03T09:33:28.671Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0x542f165753e134e1969f43a50c88cf726db62358e5e1a5341c22570c1181377e"
|
||||||
|
},
|
||||||
|
"receiptTx": {
|
||||||
|
"chainId": 28001,
|
||||||
|
"readAt": "2026-10-03T09:33:28.671Z",
|
||||||
|
"tx": {
|
||||||
|
"from": "0x86d6c68408ddb2cc0d1cf4dfd6e07d3830600faf",
|
||||||
|
"to": "0x5c5dc3eb504affbb15d0237fd0bff509840ebf64",
|
||||||
|
"value": "0x58d15e176280000",
|
||||||
|
"blockHash": "0x3c2fc5e4071a6ddcc4b5f843d142dbaeaa7019edf9ceee45fe51a0365dd0c102"
|
||||||
|
},
|
||||||
|
"txReceipt": {
|
||||||
|
"status": "0x1",
|
||||||
|
"blockHash": "0x3c2fc5e4071a6ddcc4b5f843d142dbaeaa7019edf9ceee45fe51a0365dd0c102"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"dataset": {
|
||||||
|
"older": {
|
||||||
|
"v": 1,
|
||||||
|
"format": "aere-verifiable-dataset-1",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 1,
|
||||||
|
"size": 12,
|
||||||
|
"logRoot": "0x513d3a071b8b56ce6d9d3d90ce4df590a9442330e8d52e249293a018935d3d64",
|
||||||
|
"createdAt": "2026-10-03T00:00:00.000Z",
|
||||||
|
"indexes": {
|
||||||
|
"age": {
|
||||||
|
"root": "0x8230b920edb9caf2223720db4b6550eab36ea116664a6b33726704711e0e3b44",
|
||||||
|
"size": 12
|
||||||
|
},
|
||||||
|
"country": {
|
||||||
|
"root": "0x4eec0d2495e0fe6ce17aad46e3d38058cba5f4ff88f0a565299b37cda61efba7",
|
||||||
|
"size": 12
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"previous": null
|
||||||
|
},
|
||||||
|
"newer": {
|
||||||
|
"v": 1,
|
||||||
|
"format": "aere-verifiable-dataset-1",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 2,
|
||||||
|
"size": 16,
|
||||||
|
"logRoot": "0x7b5bc02c63e970752f38d69995e4771ef596b56a640fc9addef32d570970be68",
|
||||||
|
"createdAt": "2026-10-03T00:01:00.000Z",
|
||||||
|
"indexes": {
|
||||||
|
"age": {
|
||||||
|
"root": "0xfc641a2eadd7d876f9b4fe284dac094fb83543cf43a2c2f80e88f6d9e98114a7",
|
||||||
|
"size": 16
|
||||||
|
},
|
||||||
|
"country": {
|
||||||
|
"root": "0x5be9a95a39966382ab8d83179ae93380d723d49eff2f3b76a290a72a8ee60149",
|
||||||
|
"size": 16
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"previous": "0xcea41f8f24fd00aa268619aac5c49b184e5971648db52fb514efdf5f0686d9aa"
|
||||||
|
},
|
||||||
|
"record": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-verifiable-record",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 2,
|
||||||
|
"commitmentHash": "0x4cd24b27c6c17493766099e86e188abfa3ac25d5e28a86e48792d20962a3486d",
|
||||||
|
"i": 5,
|
||||||
|
"id": "r5",
|
||||||
|
"c": {
|
||||||
|
"age": "0x6dd1cb642a41c2d474dc7764232b79718e57c56a22c4db6aafbd5c9d76fb711f",
|
||||||
|
"country": "0xcb77a35d9ad17c99e38939e1462c261ad4143ec0acf3dd1257bfd5004027cc8f",
|
||||||
|
"email": "0x3d6ddf25d6991f89b1d02087e062407a2379c28c8284a3709e66d242de58dd59",
|
||||||
|
"note": "0xbfcf4fba3f6f3aad1fe3b28ab76cf7bb923006b80063dbbf29372cbd7c8a0e9e"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "DE",
|
||||||
|
"salt": "b0760847d3e4e33261605d29a686c37f"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 55,
|
||||||
|
"salt": "5056c3b0bcfd665aefce9b421efb7826"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 5,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x423f202599ef3d02b5f3ff547235afd8e222ed7c26c61a01e4c15de7e2f4948b",
|
||||||
|
"0xe31e82f61895c75f5648f82d79fcbb86486581e1b39baa636dc71eada3ba3452",
|
||||||
|
"0xb69d58d00d2681aae7d29aa7836c94b0f65e2d4847379b4ba09caec5762875ea",
|
||||||
|
"0xe1ff507974903713d6ac9451d920007303edcffa4a82190f3976ba1c0b06d932"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"answer": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-verifiable-query-answer",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 2,
|
||||||
|
"commitmentHash": "0x4cd24b27c6c17493766099e86e188abfa3ac25d5e28a86e48792d20962a3486d",
|
||||||
|
"field": "age",
|
||||||
|
"from": 30,
|
||||||
|
"to": 45,
|
||||||
|
"indexSize": 16,
|
||||||
|
"rows": [
|
||||||
|
{
|
||||||
|
"pos": 5,
|
||||||
|
"i": 13,
|
||||||
|
"id": "r13",
|
||||||
|
"c": {
|
||||||
|
"age": "0x20131967249ae0130154c3dbbcbe8ab041200b4499ed270f2c9dd2c2ac3337f1",
|
||||||
|
"country": "0xffa95ca2afb61e95d628c3044b6e80746cccc11642ad35dafc6445cd905facdf",
|
||||||
|
"email": "0x2e6bca63ef9fad9e3ef55ae60405914a01577abd1caf0403109608f3f95a3700",
|
||||||
|
"note": "0x668a33b811cf8989b6ce36f7681928dd43371ea394d67df6136fb1580977121b"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "DE",
|
||||||
|
"salt": "b5ffd792267cac392d9d814c7809b198"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 31,
|
||||||
|
"salt": "314d5643f6f54376235b422614dd1562"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 13,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0xd3cbc725743f95177070e430cd03ec9f6af06bc64e84c0c84ad19e5d5562a983",
|
||||||
|
"0x85c6057fcfb4dd1d0fdfc0e4a925284def148b2ee0513c6858a29070aca4d50d",
|
||||||
|
"0xaa5a00c12fedc13a01a588cd3a41470e0fcaf2a5ee7b1dc27ffa5b4ff7a3311b",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 5,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0xc4723e9eb2ff7168890f1a366b02d3ed1452ac476e98996cd0c91634af7423ed",
|
||||||
|
"0x15febe1a672c219d5d2f9fa007af3b5a9c3e7e47a61fe89875ae1cf60ebfb2df",
|
||||||
|
"0xd62959693d950747d9c684becc5e4191521dd97b7496b0bb37326b54e6c58cb3",
|
||||||
|
"0xe07eef41b2e662b0af3e77b3c448378ecea5c476a9fa2f1da5e36d3a2bd1a010"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 6,
|
||||||
|
"i": 2,
|
||||||
|
"id": "r2",
|
||||||
|
"c": {
|
||||||
|
"age": "0xec15dd9b6e14956f9e3e9ea696f943972ab7601093c1c488ec18d40eb1431d42",
|
||||||
|
"country": "0x8d9e791776f47b5aeb079763edfdd40d26fc94742c8410a4f8d45e6ff1e901e6",
|
||||||
|
"email": "0xb9bfbcffff236803e9faabb11490ee1749c02a5566ae6e22380ae7dafc16322e",
|
||||||
|
"note": "0x86d1f7ae6700f8a22cb3c6a97b27d85d226beae6c4ca4c6eccd3e18b2fd85644"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "FR",
|
||||||
|
"salt": "6a20a411bddb217e3ba890baad65b87e"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 34,
|
||||||
|
"salt": "a83f62663d8735a83a784f603de20b88"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 2,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x559b8f51f7b31a6feed18feeb876141c8a19af7f49169aee7a9833b59b65eaa2",
|
||||||
|
"0x6528250e72e30d47b6b47dcefaa225bcb9fc1af0d20ee827c331486083baac56",
|
||||||
|
"0xef30cdbdc0b6467d74313d8b22b2054e32a17b3a484121ccc24cb16d8ad6fec0",
|
||||||
|
"0xe1ff507974903713d6ac9451d920007303edcffa4a82190f3976ba1c0b06d932"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 6,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0xdc9c9be2d7bc348acbd1cc004108f4af0386cec42492ae4fc3d62a9840d5f7bd",
|
||||||
|
"0x140d04bd298186a3efce73de4e3ea60f7f0300d21f2970efffc9f918ab004475",
|
||||||
|
"0xd62959693d950747d9c684becc5e4191521dd97b7496b0bb37326b54e6c58cb3",
|
||||||
|
"0xe07eef41b2e662b0af3e77b3c448378ecea5c476a9fa2f1da5e36d3a2bd1a010"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 7,
|
||||||
|
"i": 8,
|
||||||
|
"id": "r8",
|
||||||
|
"c": {
|
||||||
|
"age": "0xc6b4096f4947760268564e73c3afb7edf8c31f1fe8a5371c85eeb606ac22ea25",
|
||||||
|
"country": "0x9b959d0dad5df75cf7f29a408750b730b9fc41403f4fc50168cc14ce2ca437ee",
|
||||||
|
"email": "0x598b4823a385d1f34c855b8bb873241bc66ddbd0a8f6b09d92cba14534454484",
|
||||||
|
"note": "0x4bd0762227e6c5d7f6ceac6185a23fe5075a33576dcd1e4e51aa9a4b0e0a1158"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "RO",
|
||||||
|
"salt": "0a263d3e4223cc52f078c225a273e316"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 36,
|
||||||
|
"salt": "bcb34a3f54db5f21299add6f1c654670"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 8,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x7eb65d9a7f7ffa3039e627af43216d59accf7d3ca8a2951c2b0418c0199a1c9f",
|
||||||
|
"0x5290791446b6001dc5b5819d38d10ce762a0337736bbf8e90a111e8fe3c77efe",
|
||||||
|
"0xa06921f7770369ac27071f0fd2db808b66a643605278b92c06cabefffa234084",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 7,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x201009717c9f1fc80cd77e2a975390858ff4a4b76511bb7a31d36ea58bedeceb",
|
||||||
|
"0x140d04bd298186a3efce73de4e3ea60f7f0300d21f2970efffc9f918ab004475",
|
||||||
|
"0xd62959693d950747d9c684becc5e4191521dd97b7496b0bb37326b54e6c58cb3",
|
||||||
|
"0xe07eef41b2e662b0af3e77b3c448378ecea5c476a9fa2f1da5e36d3a2bd1a010"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 8,
|
||||||
|
"i": 14,
|
||||||
|
"id": "r14",
|
||||||
|
"c": {
|
||||||
|
"age": "0x2a86b9afad1aff1234aa90bdf96095d07ef5d479992a9081c21adc965a3c20c3",
|
||||||
|
"country": "0xebd5ee1cac77bb2b170c930d964032218f9f9c69284c89b213dbefb2d54b8eee",
|
||||||
|
"email": "0xb9319475dca37efe658a39f9f7c10d13dd21a32276ec911dc57a2677a4e4bb50",
|
||||||
|
"note": "0x3fdbec96439422e50f7faabf111c8c8c2690460aad638b745a6875678fd38f34"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "FR",
|
||||||
|
"salt": "15d426374424c484ffc8ae1bb736d960"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 38,
|
||||||
|
"salt": "d750eb0354fb432536e3c26e5c682210"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 14,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x12c9a4faf655bb09dbbb6a5fb3a24e44330e5d83222439ab2d2c2224c3791d84",
|
||||||
|
"0x1dd8a5c51c6218cb8ca3a57ee7683a06b1e94aaedc7252a6b296e4091c975377",
|
||||||
|
"0xaa5a00c12fedc13a01a588cd3a41470e0fcaf2a5ee7b1dc27ffa5b4ff7a3311b",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 8,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x9e4143c4b05ba68e176ae53bc5f122c1a490c3e1efeaa6bd9501110c5fb4d059",
|
||||||
|
"0xb3e51e807cccee32941e4d7009700ae40055645eb9e8bc6974ebe8ebf887a145",
|
||||||
|
"0x4b015cc323eaff67b141affbb3de0fc5e8052bf47a2f731b5605d19c23aa805a",
|
||||||
|
"0xca336a5bb1e6bf6a6302052ee7c87de5c9704132553a11e37b7e8f143c53439a"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 9,
|
||||||
|
"i": 3,
|
||||||
|
"id": "r3",
|
||||||
|
"c": {
|
||||||
|
"age": "0x13ec2a42a36e8b12ebdbd35af1d96962683a06b802e9e1f9e2e020487c691f7f",
|
||||||
|
"country": "0x1d18032f2e5acd907bffb4db2103b3d1d337388078ed9238a913c0cabecb928f",
|
||||||
|
"email": "0xe36f28b120650ba4c2597063b456d4d00847532129bd26dc8c150291265eef23",
|
||||||
|
"note": "0x086341fc0392c796d5f84f78f183deef347fa327e3d48707c460fc4d9c1f9910"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "ES",
|
||||||
|
"salt": "0ee225e77747d7afafb81d1bffdf68c0"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 41,
|
||||||
|
"salt": "9104931c19467233d902d1c967a15086"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 3,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x5083ccb306cbefaa21d75b69a47668b0cd3943865500881281d96e05429face8",
|
||||||
|
"0x6528250e72e30d47b6b47dcefaa225bcb9fc1af0d20ee827c331486083baac56",
|
||||||
|
"0xef30cdbdc0b6467d74313d8b22b2054e32a17b3a484121ccc24cb16d8ad6fec0",
|
||||||
|
"0xe1ff507974903713d6ac9451d920007303edcffa4a82190f3976ba1c0b06d932"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 9,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0xd0d85473c9adae91cb97fce47e564181ae990b38260de5efb1351e02ff9c3524",
|
||||||
|
"0xb3e51e807cccee32941e4d7009700ae40055645eb9e8bc6974ebe8ebf887a145",
|
||||||
|
"0x4b015cc323eaff67b141affbb3de0fc5e8052bf47a2f731b5605d19c23aa805a",
|
||||||
|
"0xca336a5bb1e6bf6a6302052ee7c87de5c9704132553a11e37b7e8f143c53439a"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 10,
|
||||||
|
"i": 9,
|
||||||
|
"id": "r9",
|
||||||
|
"c": {
|
||||||
|
"age": "0x1e440a3ce1d15a73c509b5b4da506157e42ac6cd8e96d486df66d049bfe8b8e6",
|
||||||
|
"country": "0xd5f75ca5ae34d41c6c6fe30f01061bec1260fd8fa9a134da20c616bd61b33428",
|
||||||
|
"email": "0x762b765d7cda44c06281ea75fea30bfc377adffe33d9df4ba065566f503ced67",
|
||||||
|
"note": "0x42b57a86fde59862104e06c5f9d7324e5edf2506e5c3874e0ae85e375ec46cdb"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "DE",
|
||||||
|
"salt": "b0371c1e4117eab6e65f46c8e7dd9b5c"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 43,
|
||||||
|
"salt": "994a5723c379b33784b813642d91bca5"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 9,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x65c032449d009130a92eb4bfc7a17fe17e0256c141a980d56ef6f7acc5ea65c1",
|
||||||
|
"0x5290791446b6001dc5b5819d38d10ce762a0337736bbf8e90a111e8fe3c77efe",
|
||||||
|
"0xa06921f7770369ac27071f0fd2db808b66a643605278b92c06cabefffa234084",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 10,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0xccb00a519667f5206d54663c1449cfe26d2a69a21b58934e639d7fa5274a610b",
|
||||||
|
"0x59b6ac5d90106bce7337c4bbb3a25828e76f9fa97e001caee65d2540dad98ef0",
|
||||||
|
"0x4b015cc323eaff67b141affbb3de0fc5e8052bf47a2f731b5605d19c23aa805a",
|
||||||
|
"0xca336a5bb1e6bf6a6302052ee7c87de5c9704132553a11e37b7e8f143c53439a"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 11,
|
||||||
|
"i": 15,
|
||||||
|
"id": "r15",
|
||||||
|
"c": {
|
||||||
|
"age": "0x3e1980c7f773e302e4f9bf175e8edec38a53da7f2e46a5e371a77d57842c02fb",
|
||||||
|
"country": "0x1919bce313ba6d86fc4bf751e1f67b0a39b699615086212681149ff62c0885cf",
|
||||||
|
"email": "0x8c8c71ef8dd79da410a4cfc25639ea6119cbdd02c031eaa3ee9d661c65ba9aea",
|
||||||
|
"note": "0x2b31e8289c6fa63c019472defa0f58b1aad47fb3ff63a99484ddf9b95d3a3bd5"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "ES",
|
||||||
|
"salt": "2e559c28fa7a80ed4f38fa8b45f2c82e"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 45,
|
||||||
|
"salt": "ddef75f62d6301533303c7876d013294"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 15,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x7bfd292a9ed546f18580c5251b801dc2756d80ab29a3c64eb0b81433a313307f",
|
||||||
|
"0x1dd8a5c51c6218cb8ca3a57ee7683a06b1e94aaedc7252a6b296e4091c975377",
|
||||||
|
"0xaa5a00c12fedc13a01a588cd3a41470e0fcaf2a5ee7b1dc27ffa5b4ff7a3311b",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 11,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x7144d8a6be6e7645cd0c8b69f028fc16b10e4f17fa86296a23c261922d75753e",
|
||||||
|
"0x59b6ac5d90106bce7337c4bbb3a25828e76f9fa97e001caee65d2540dad98ef0",
|
||||||
|
"0x4b015cc323eaff67b141affbb3de0fc5e8052bf47a2f731b5605d19c23aa805a",
|
||||||
|
"0xca336a5bb1e6bf6a6302052ee7c87de5c9704132553a11e37b7e8f143c53439a"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"before": {
|
||||||
|
"pos": 4,
|
||||||
|
"value": 29,
|
||||||
|
"i": 7,
|
||||||
|
"recordLeaf": "0xabbddf51854536b5605dc7c0630fd2fa170d2dcd9b1c5312aec6fea74c038c0d",
|
||||||
|
"indexProof": {
|
||||||
|
"index": 4,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x30a0dd012169393d0dea8791c0f24d70cc8d4c70d088f420825ec0dbf9230f67",
|
||||||
|
"0x15febe1a672c219d5d2f9fa007af3b5a9c3e7e47a61fe89875ae1cf60ebfb2df",
|
||||||
|
"0xd62959693d950747d9c684becc5e4191521dd97b7496b0bb37326b54e6c58cb3",
|
||||||
|
"0xe07eef41b2e662b0af3e77b3c448378ecea5c476a9fa2f1da5e36d3a2bd1a010"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"after": {
|
||||||
|
"pos": 12,
|
||||||
|
"value": 48,
|
||||||
|
"i": 4,
|
||||||
|
"recordLeaf": "0x423f202599ef3d02b5f3ff547235afd8e222ed7c26c61a01e4c15de7e2f4948b",
|
||||||
|
"indexProof": {
|
||||||
|
"index": 12,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x6e97bf24fed1277d34cc86719a8f63aab95067adfa7c5a6e70bde9daf8870f47",
|
||||||
|
"0x775811db8d2472f42cad2aeebbc3826f5f959e1f174501ca8ab4380ad815702a",
|
||||||
|
"0xec4bd620657cb68e435f6d2a71199370056c925b6184624a743fe49d818e9370",
|
||||||
|
"0xca336a5bb1e6bf6a6302052ee7c87de5c9704132553a11e37b7e8f143c53439a"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"consistency": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-verifiable-consistency",
|
||||||
|
"name": "conformance",
|
||||||
|
"from": {
|
||||||
|
"version": 1,
|
||||||
|
"commitmentHash": "0xcea41f8f24fd00aa268619aac5c49b184e5971648db52fb514efdf5f0686d9aa"
|
||||||
|
},
|
||||||
|
"to": {
|
||||||
|
"version": 2,
|
||||||
|
"commitmentHash": "0x4cd24b27c6c17493766099e86e188abfa3ac25d5e28a86e48792d20962a3486d"
|
||||||
|
},
|
||||||
|
"proof": {
|
||||||
|
"firstSize": 12,
|
||||||
|
"secondSize": 16,
|
||||||
|
"firstRoot": "0x513d3a071b8b56ce6d9d3d90ce4df590a9442330e8d52e249293a018935d3d64",
|
||||||
|
"secondRoot": "0x7b5bc02c63e970752f38d69995e4771ef596b56a640fc9addef32d570970be68",
|
||||||
|
"path": [
|
||||||
|
"0xaa5a00c12fedc13a01a588cd3a41470e0fcaf2a5ee7b1dc27ffa5b4ff7a3311b",
|
||||||
|
"0xa06921f7770369ac27071f0fd2db808b66a643605278b92c06cabefffa234084",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"sample": {
|
||||||
|
"k": 4,
|
||||||
|
"seed": "conformance-sample",
|
||||||
|
"served": {
|
||||||
|
"3": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-verifiable-record",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 2,
|
||||||
|
"commitmentHash": "0x4cd24b27c6c17493766099e86e188abfa3ac25d5e28a86e48792d20962a3486d",
|
||||||
|
"i": 3,
|
||||||
|
"id": "r3",
|
||||||
|
"c": {
|
||||||
|
"age": "0x13ec2a42a36e8b12ebdbd35af1d96962683a06b802e9e1f9e2e020487c691f7f",
|
||||||
|
"country": "0x1d18032f2e5acd907bffb4db2103b3d1d337388078ed9238a913c0cabecb928f",
|
||||||
|
"email": "0xe36f28b120650ba4c2597063b456d4d00847532129bd26dc8c150291265eef23",
|
||||||
|
"note": "0x086341fc0392c796d5f84f78f183deef347fa327e3d48707c460fc4d9c1f9910"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "ES",
|
||||||
|
"salt": "0ee225e77747d7afafb81d1bffdf68c0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 3,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x5083ccb306cbefaa21d75b69a47668b0cd3943865500881281d96e05429face8",
|
||||||
|
"0x6528250e72e30d47b6b47dcefaa225bcb9fc1af0d20ee827c331486083baac56",
|
||||||
|
"0xef30cdbdc0b6467d74313d8b22b2054e32a17b3a484121ccc24cb16d8ad6fec0",
|
||||||
|
"0xe1ff507974903713d6ac9451d920007303edcffa4a82190f3976ba1c0b06d932"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"7": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-verifiable-record",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 2,
|
||||||
|
"commitmentHash": "0x4cd24b27c6c17493766099e86e188abfa3ac25d5e28a86e48792d20962a3486d",
|
||||||
|
"i": 7,
|
||||||
|
"id": "r7",
|
||||||
|
"c": {
|
||||||
|
"age": "0xa1a74e2ac07bab6c41c2556b844aae64857449195ceac53645c629516238b344",
|
||||||
|
"country": "0xcc9aab9315438cb08ca38170956cb46c872df70d01652b24c09f8863300e6196",
|
||||||
|
"email": "0xa90cedaf1e40181e97badd77834f7ad7941cc0d185884b625f260b6843f21aae",
|
||||||
|
"note": "0xcdc993d68c62518d20dddb06072d1f2d576c80a87f33cafdbdfb64d73e78ef51"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "ES",
|
||||||
|
"salt": "985bd39a58f95e5356f853a164382b93"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 7,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x1834d4378c03e4b8303175bcb26d1d8004e2228abcb445a35a1add3901ed7af0",
|
||||||
|
"0xba1730442baeb4246d80e34e1200df5dfecce1c52067e73850f131a1193eefc1",
|
||||||
|
"0xb69d58d00d2681aae7d29aa7836c94b0f65e2d4847379b4ba09caec5762875ea",
|
||||||
|
"0xe1ff507974903713d6ac9451d920007303edcffa4a82190f3976ba1c0b06d932"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"12": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-verifiable-record",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 2,
|
||||||
|
"commitmentHash": "0x4cd24b27c6c17493766099e86e188abfa3ac25d5e28a86e48792d20962a3486d",
|
||||||
|
"i": 12,
|
||||||
|
"id": "r12",
|
||||||
|
"c": {
|
||||||
|
"age": "0x090dd84053907e69b2d2a99757f1a0e248d270d57fa8f442d20f9ecefef019c8",
|
||||||
|
"country": "0xa383f5cce4bec2b3d87ba7689f05af77bb0060b247c69ccd2cf64231592cd33a",
|
||||||
|
"email": "0x72559f17dfc692e8f3a8ceaa63727e94860120fe26e40bd5e81bccc7d0a836e4",
|
||||||
|
"note": "0x89a3d01a0711b2bc1697ec4cb82ca0dc4bcd5bc17bb7b10f22623f579833df54"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "RO",
|
||||||
|
"salt": "2acf87c71b169c498b2cbd745469589a"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 12,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0xc383e9a1e188c33996ec8ed77bb82230a72a4f52facef6bb31482535a09c30e0",
|
||||||
|
"0x85c6057fcfb4dd1d0fdfc0e4a925284def148b2ee0513c6858a29070aca4d50d",
|
||||||
|
"0xaa5a00c12fedc13a01a588cd3a41470e0fcaf2a5ee7b1dc27ffa5b4ff7a3311b",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"14": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-verifiable-record",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 2,
|
||||||
|
"commitmentHash": "0x4cd24b27c6c17493766099e86e188abfa3ac25d5e28a86e48792d20962a3486d",
|
||||||
|
"i": 14,
|
||||||
|
"id": "r14",
|
||||||
|
"c": {
|
||||||
|
"age": "0x2a86b9afad1aff1234aa90bdf96095d07ef5d479992a9081c21adc965a3c20c3",
|
||||||
|
"country": "0xebd5ee1cac77bb2b170c930d964032218f9f9c69284c89b213dbefb2d54b8eee",
|
||||||
|
"email": "0xb9319475dca37efe658a39f9f7c10d13dd21a32276ec911dc57a2677a4e4bb50",
|
||||||
|
"note": "0x3fdbec96439422e50f7faabf111c8c8c2690460aad638b745a6875678fd38f34"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "FR",
|
||||||
|
"salt": "15d426374424c484ffc8ae1bb736d960"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 14,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x12c9a4faf655bb09dbbb6a5fb3a24e44330e5d83222439ab2d2c2224c3791d84",
|
||||||
|
"0x1dd8a5c51c6218cb8ca3a57ee7683a06b1e94aaedc7252a6b296e4091c975377",
|
||||||
|
"0xaa5a00c12fedc13a01a588cd3a41470e0fcaf2a5ee7b1dc27ffa5b4ff7a3311b",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
1044
conformance/vectori/INDEX.json
Normal file
1044
conformance/vectori/INDEX.json
Normal file
File diff suppressed because it is too large
Load Diff
394
conformance/vectori/dataset-answer/age-30-45.commitment.json
Normal file
394
conformance/vectori/dataset-answer/age-30-45.commitment.json
Normal file
@ -0,0 +1,394 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "dataset-answer/age-30-45.commitment",
|
||||||
|
"artifact": "dataset-answer",
|
||||||
|
"title": "an answer that names another version than the commitment it is checked against",
|
||||||
|
"source": "derived from dataset-answer/age-30-45.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"dataset.commitment",
|
||||||
|
"dataset.completeness",
|
||||||
|
"dataset.field",
|
||||||
|
"dataset.form",
|
||||||
|
"dataset.inclusion",
|
||||||
|
"dataset.index",
|
||||||
|
"dataset.order",
|
||||||
|
"dataset.range"
|
||||||
|
],
|
||||||
|
"base": "dataset-answer/age-30-45.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "set",
|
||||||
|
"path": [
|
||||||
|
"answer",
|
||||||
|
"version"
|
||||||
|
],
|
||||||
|
"value": 1
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"answer": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-verifiable-query-answer",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 1,
|
||||||
|
"commitmentHash": "0x4cd24b27c6c17493766099e86e188abfa3ac25d5e28a86e48792d20962a3486d",
|
||||||
|
"field": "age",
|
||||||
|
"from": 30,
|
||||||
|
"to": 45,
|
||||||
|
"indexSize": 16,
|
||||||
|
"rows": [
|
||||||
|
{
|
||||||
|
"pos": 5,
|
||||||
|
"i": 13,
|
||||||
|
"id": "r13",
|
||||||
|
"c": {
|
||||||
|
"age": "0x20131967249ae0130154c3dbbcbe8ab041200b4499ed270f2c9dd2c2ac3337f1",
|
||||||
|
"country": "0xffa95ca2afb61e95d628c3044b6e80746cccc11642ad35dafc6445cd905facdf",
|
||||||
|
"email": "0x2e6bca63ef9fad9e3ef55ae60405914a01577abd1caf0403109608f3f95a3700",
|
||||||
|
"note": "0x668a33b811cf8989b6ce36f7681928dd43371ea394d67df6136fb1580977121b"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "DE",
|
||||||
|
"salt": "b5ffd792267cac392d9d814c7809b198"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 31,
|
||||||
|
"salt": "314d5643f6f54376235b422614dd1562"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 13,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0xd3cbc725743f95177070e430cd03ec9f6af06bc64e84c0c84ad19e5d5562a983",
|
||||||
|
"0x85c6057fcfb4dd1d0fdfc0e4a925284def148b2ee0513c6858a29070aca4d50d",
|
||||||
|
"0xaa5a00c12fedc13a01a588cd3a41470e0fcaf2a5ee7b1dc27ffa5b4ff7a3311b",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 5,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0xc4723e9eb2ff7168890f1a366b02d3ed1452ac476e98996cd0c91634af7423ed",
|
||||||
|
"0x15febe1a672c219d5d2f9fa007af3b5a9c3e7e47a61fe89875ae1cf60ebfb2df",
|
||||||
|
"0xd62959693d950747d9c684becc5e4191521dd97b7496b0bb37326b54e6c58cb3",
|
||||||
|
"0xe07eef41b2e662b0af3e77b3c448378ecea5c476a9fa2f1da5e36d3a2bd1a010"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 6,
|
||||||
|
"i": 2,
|
||||||
|
"id": "r2",
|
||||||
|
"c": {
|
||||||
|
"age": "0xec15dd9b6e14956f9e3e9ea696f943972ab7601093c1c488ec18d40eb1431d42",
|
||||||
|
"country": "0x8d9e791776f47b5aeb079763edfdd40d26fc94742c8410a4f8d45e6ff1e901e6",
|
||||||
|
"email": "0xb9bfbcffff236803e9faabb11490ee1749c02a5566ae6e22380ae7dafc16322e",
|
||||||
|
"note": "0x86d1f7ae6700f8a22cb3c6a97b27d85d226beae6c4ca4c6eccd3e18b2fd85644"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "FR",
|
||||||
|
"salt": "6a20a411bddb217e3ba890baad65b87e"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 34,
|
||||||
|
"salt": "a83f62663d8735a83a784f603de20b88"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 2,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x559b8f51f7b31a6feed18feeb876141c8a19af7f49169aee7a9833b59b65eaa2",
|
||||||
|
"0x6528250e72e30d47b6b47dcefaa225bcb9fc1af0d20ee827c331486083baac56",
|
||||||
|
"0xef30cdbdc0b6467d74313d8b22b2054e32a17b3a484121ccc24cb16d8ad6fec0",
|
||||||
|
"0xe1ff507974903713d6ac9451d920007303edcffa4a82190f3976ba1c0b06d932"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 6,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0xdc9c9be2d7bc348acbd1cc004108f4af0386cec42492ae4fc3d62a9840d5f7bd",
|
||||||
|
"0x140d04bd298186a3efce73de4e3ea60f7f0300d21f2970efffc9f918ab004475",
|
||||||
|
"0xd62959693d950747d9c684becc5e4191521dd97b7496b0bb37326b54e6c58cb3",
|
||||||
|
"0xe07eef41b2e662b0af3e77b3c448378ecea5c476a9fa2f1da5e36d3a2bd1a010"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 7,
|
||||||
|
"i": 8,
|
||||||
|
"id": "r8",
|
||||||
|
"c": {
|
||||||
|
"age": "0xc6b4096f4947760268564e73c3afb7edf8c31f1fe8a5371c85eeb606ac22ea25",
|
||||||
|
"country": "0x9b959d0dad5df75cf7f29a408750b730b9fc41403f4fc50168cc14ce2ca437ee",
|
||||||
|
"email": "0x598b4823a385d1f34c855b8bb873241bc66ddbd0a8f6b09d92cba14534454484",
|
||||||
|
"note": "0x4bd0762227e6c5d7f6ceac6185a23fe5075a33576dcd1e4e51aa9a4b0e0a1158"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "RO",
|
||||||
|
"salt": "0a263d3e4223cc52f078c225a273e316"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 36,
|
||||||
|
"salt": "bcb34a3f54db5f21299add6f1c654670"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 8,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x7eb65d9a7f7ffa3039e627af43216d59accf7d3ca8a2951c2b0418c0199a1c9f",
|
||||||
|
"0x5290791446b6001dc5b5819d38d10ce762a0337736bbf8e90a111e8fe3c77efe",
|
||||||
|
"0xa06921f7770369ac27071f0fd2db808b66a643605278b92c06cabefffa234084",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 7,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x201009717c9f1fc80cd77e2a975390858ff4a4b76511bb7a31d36ea58bedeceb",
|
||||||
|
"0x140d04bd298186a3efce73de4e3ea60f7f0300d21f2970efffc9f918ab004475",
|
||||||
|
"0xd62959693d950747d9c684becc5e4191521dd97b7496b0bb37326b54e6c58cb3",
|
||||||
|
"0xe07eef41b2e662b0af3e77b3c448378ecea5c476a9fa2f1da5e36d3a2bd1a010"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 8,
|
||||||
|
"i": 14,
|
||||||
|
"id": "r14",
|
||||||
|
"c": {
|
||||||
|
"age": "0x2a86b9afad1aff1234aa90bdf96095d07ef5d479992a9081c21adc965a3c20c3",
|
||||||
|
"country": "0xebd5ee1cac77bb2b170c930d964032218f9f9c69284c89b213dbefb2d54b8eee",
|
||||||
|
"email": "0xb9319475dca37efe658a39f9f7c10d13dd21a32276ec911dc57a2677a4e4bb50",
|
||||||
|
"note": "0x3fdbec96439422e50f7faabf111c8c8c2690460aad638b745a6875678fd38f34"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "FR",
|
||||||
|
"salt": "15d426374424c484ffc8ae1bb736d960"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 38,
|
||||||
|
"salt": "d750eb0354fb432536e3c26e5c682210"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 14,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x12c9a4faf655bb09dbbb6a5fb3a24e44330e5d83222439ab2d2c2224c3791d84",
|
||||||
|
"0x1dd8a5c51c6218cb8ca3a57ee7683a06b1e94aaedc7252a6b296e4091c975377",
|
||||||
|
"0xaa5a00c12fedc13a01a588cd3a41470e0fcaf2a5ee7b1dc27ffa5b4ff7a3311b",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 8,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x9e4143c4b05ba68e176ae53bc5f122c1a490c3e1efeaa6bd9501110c5fb4d059",
|
||||||
|
"0xb3e51e807cccee32941e4d7009700ae40055645eb9e8bc6974ebe8ebf887a145",
|
||||||
|
"0x4b015cc323eaff67b141affbb3de0fc5e8052bf47a2f731b5605d19c23aa805a",
|
||||||
|
"0xca336a5bb1e6bf6a6302052ee7c87de5c9704132553a11e37b7e8f143c53439a"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 9,
|
||||||
|
"i": 3,
|
||||||
|
"id": "r3",
|
||||||
|
"c": {
|
||||||
|
"age": "0x13ec2a42a36e8b12ebdbd35af1d96962683a06b802e9e1f9e2e020487c691f7f",
|
||||||
|
"country": "0x1d18032f2e5acd907bffb4db2103b3d1d337388078ed9238a913c0cabecb928f",
|
||||||
|
"email": "0xe36f28b120650ba4c2597063b456d4d00847532129bd26dc8c150291265eef23",
|
||||||
|
"note": "0x086341fc0392c796d5f84f78f183deef347fa327e3d48707c460fc4d9c1f9910"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "ES",
|
||||||
|
"salt": "0ee225e77747d7afafb81d1bffdf68c0"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 41,
|
||||||
|
"salt": "9104931c19467233d902d1c967a15086"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 3,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x5083ccb306cbefaa21d75b69a47668b0cd3943865500881281d96e05429face8",
|
||||||
|
"0x6528250e72e30d47b6b47dcefaa225bcb9fc1af0d20ee827c331486083baac56",
|
||||||
|
"0xef30cdbdc0b6467d74313d8b22b2054e32a17b3a484121ccc24cb16d8ad6fec0",
|
||||||
|
"0xe1ff507974903713d6ac9451d920007303edcffa4a82190f3976ba1c0b06d932"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 9,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0xd0d85473c9adae91cb97fce47e564181ae990b38260de5efb1351e02ff9c3524",
|
||||||
|
"0xb3e51e807cccee32941e4d7009700ae40055645eb9e8bc6974ebe8ebf887a145",
|
||||||
|
"0x4b015cc323eaff67b141affbb3de0fc5e8052bf47a2f731b5605d19c23aa805a",
|
||||||
|
"0xca336a5bb1e6bf6a6302052ee7c87de5c9704132553a11e37b7e8f143c53439a"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 10,
|
||||||
|
"i": 9,
|
||||||
|
"id": "r9",
|
||||||
|
"c": {
|
||||||
|
"age": "0x1e440a3ce1d15a73c509b5b4da506157e42ac6cd8e96d486df66d049bfe8b8e6",
|
||||||
|
"country": "0xd5f75ca5ae34d41c6c6fe30f01061bec1260fd8fa9a134da20c616bd61b33428",
|
||||||
|
"email": "0x762b765d7cda44c06281ea75fea30bfc377adffe33d9df4ba065566f503ced67",
|
||||||
|
"note": "0x42b57a86fde59862104e06c5f9d7324e5edf2506e5c3874e0ae85e375ec46cdb"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "DE",
|
||||||
|
"salt": "b0371c1e4117eab6e65f46c8e7dd9b5c"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 43,
|
||||||
|
"salt": "994a5723c379b33784b813642d91bca5"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 9,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x65c032449d009130a92eb4bfc7a17fe17e0256c141a980d56ef6f7acc5ea65c1",
|
||||||
|
"0x5290791446b6001dc5b5819d38d10ce762a0337736bbf8e90a111e8fe3c77efe",
|
||||||
|
"0xa06921f7770369ac27071f0fd2db808b66a643605278b92c06cabefffa234084",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 10,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0xccb00a519667f5206d54663c1449cfe26d2a69a21b58934e639d7fa5274a610b",
|
||||||
|
"0x59b6ac5d90106bce7337c4bbb3a25828e76f9fa97e001caee65d2540dad98ef0",
|
||||||
|
"0x4b015cc323eaff67b141affbb3de0fc5e8052bf47a2f731b5605d19c23aa805a",
|
||||||
|
"0xca336a5bb1e6bf6a6302052ee7c87de5c9704132553a11e37b7e8f143c53439a"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 11,
|
||||||
|
"i": 15,
|
||||||
|
"id": "r15",
|
||||||
|
"c": {
|
||||||
|
"age": "0x3e1980c7f773e302e4f9bf175e8edec38a53da7f2e46a5e371a77d57842c02fb",
|
||||||
|
"country": "0x1919bce313ba6d86fc4bf751e1f67b0a39b699615086212681149ff62c0885cf",
|
||||||
|
"email": "0x8c8c71ef8dd79da410a4cfc25639ea6119cbdd02c031eaa3ee9d661c65ba9aea",
|
||||||
|
"note": "0x2b31e8289c6fa63c019472defa0f58b1aad47fb3ff63a99484ddf9b95d3a3bd5"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "ES",
|
||||||
|
"salt": "2e559c28fa7a80ed4f38fa8b45f2c82e"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 45,
|
||||||
|
"salt": "ddef75f62d6301533303c7876d013294"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 15,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x7bfd292a9ed546f18580c5251b801dc2756d80ab29a3c64eb0b81433a313307f",
|
||||||
|
"0x1dd8a5c51c6218cb8ca3a57ee7683a06b1e94aaedc7252a6b296e4091c975377",
|
||||||
|
"0xaa5a00c12fedc13a01a588cd3a41470e0fcaf2a5ee7b1dc27ffa5b4ff7a3311b",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 11,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x7144d8a6be6e7645cd0c8b69f028fc16b10e4f17fa86296a23c261922d75753e",
|
||||||
|
"0x59b6ac5d90106bce7337c4bbb3a25828e76f9fa97e001caee65d2540dad98ef0",
|
||||||
|
"0x4b015cc323eaff67b141affbb3de0fc5e8052bf47a2f731b5605d19c23aa805a",
|
||||||
|
"0xca336a5bb1e6bf6a6302052ee7c87de5c9704132553a11e37b7e8f143c53439a"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"before": {
|
||||||
|
"pos": 4,
|
||||||
|
"value": 29,
|
||||||
|
"i": 7,
|
||||||
|
"recordLeaf": "0xabbddf51854536b5605dc7c0630fd2fa170d2dcd9b1c5312aec6fea74c038c0d",
|
||||||
|
"indexProof": {
|
||||||
|
"index": 4,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x30a0dd012169393d0dea8791c0f24d70cc8d4c70d088f420825ec0dbf9230f67",
|
||||||
|
"0x15febe1a672c219d5d2f9fa007af3b5a9c3e7e47a61fe89875ae1cf60ebfb2df",
|
||||||
|
"0xd62959693d950747d9c684becc5e4191521dd97b7496b0bb37326b54e6c58cb3",
|
||||||
|
"0xe07eef41b2e662b0af3e77b3c448378ecea5c476a9fa2f1da5e36d3a2bd1a010"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"after": {
|
||||||
|
"pos": 12,
|
||||||
|
"value": 48,
|
||||||
|
"i": 4,
|
||||||
|
"recordLeaf": "0x423f202599ef3d02b5f3ff547235afd8e222ed7c26c61a01e4c15de7e2f4948b",
|
||||||
|
"indexProof": {
|
||||||
|
"index": 12,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x6e97bf24fed1277d34cc86719a8f63aab95067adfa7c5a6e70bde9daf8870f47",
|
||||||
|
"0x775811db8d2472f42cad2aeebbc3826f5f959e1f174501ca8ab4380ad815702a",
|
||||||
|
"0xec4bd620657cb68e435f6d2a71199370056c925b6184624a743fe49d818e9370",
|
||||||
|
"0xca336a5bb1e6bf6a6302052ee7c87de5c9704132553a11e37b7e8f143c53439a"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"commitment": {
|
||||||
|
"v": 1,
|
||||||
|
"format": "aere-verifiable-dataset-1",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 2,
|
||||||
|
"size": 16,
|
||||||
|
"logRoot": "0x7b5bc02c63e970752f38d69995e4771ef596b56a640fc9addef32d570970be68",
|
||||||
|
"createdAt": "2026-10-03T00:01:00.000Z",
|
||||||
|
"indexes": {
|
||||||
|
"age": {
|
||||||
|
"root": "0xfc641a2eadd7d876f9b4fe284dac094fb83543cf43a2c2f80e88f6d9e98114a7",
|
||||||
|
"size": 16
|
||||||
|
},
|
||||||
|
"country": {
|
||||||
|
"root": "0x5be9a95a39966382ab8d83179ae93380d723d49eff2f3b76a290a72a8ee60149",
|
||||||
|
"size": 16
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"previous": "0xcea41f8f24fd00aa268619aac5c49b184e5971648db52fb514efdf5f0686d9aa"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"dataset.commitment"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,358 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "dataset-answer/age-30-45.completeness-first",
|
||||||
|
"artifact": "dataset-answer",
|
||||||
|
"title": "the first matching row withheld and shown as the neighbour before the run",
|
||||||
|
"source": "derived from dataset-answer/age-30-45.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"dataset.commitment",
|
||||||
|
"dataset.completeness",
|
||||||
|
"dataset.field",
|
||||||
|
"dataset.form",
|
||||||
|
"dataset.inclusion",
|
||||||
|
"dataset.index",
|
||||||
|
"dataset.order",
|
||||||
|
"dataset.range"
|
||||||
|
],
|
||||||
|
"base": "dataset-answer/age-30-45.valid",
|
||||||
|
"mutation": {
|
||||||
|
"producer": "the server dropped the first row and presented it as the neighbour before",
|
||||||
|
"changed": [
|
||||||
|
[
|
||||||
|
"answer",
|
||||||
|
"rows"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"answer",
|
||||||
|
"before"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"answer": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-verifiable-query-answer",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 2,
|
||||||
|
"commitmentHash": "0x4cd24b27c6c17493766099e86e188abfa3ac25d5e28a86e48792d20962a3486d",
|
||||||
|
"field": "age",
|
||||||
|
"from": 30,
|
||||||
|
"to": 45,
|
||||||
|
"indexSize": 16,
|
||||||
|
"rows": [
|
||||||
|
{
|
||||||
|
"pos": 6,
|
||||||
|
"i": 2,
|
||||||
|
"id": "r2",
|
||||||
|
"c": {
|
||||||
|
"age": "0xec15dd9b6e14956f9e3e9ea696f943972ab7601093c1c488ec18d40eb1431d42",
|
||||||
|
"country": "0x8d9e791776f47b5aeb079763edfdd40d26fc94742c8410a4f8d45e6ff1e901e6",
|
||||||
|
"email": "0xb9bfbcffff236803e9faabb11490ee1749c02a5566ae6e22380ae7dafc16322e",
|
||||||
|
"note": "0x86d1f7ae6700f8a22cb3c6a97b27d85d226beae6c4ca4c6eccd3e18b2fd85644"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "FR",
|
||||||
|
"salt": "6a20a411bddb217e3ba890baad65b87e"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 34,
|
||||||
|
"salt": "a83f62663d8735a83a784f603de20b88"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 2,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x559b8f51f7b31a6feed18feeb876141c8a19af7f49169aee7a9833b59b65eaa2",
|
||||||
|
"0x6528250e72e30d47b6b47dcefaa225bcb9fc1af0d20ee827c331486083baac56",
|
||||||
|
"0xef30cdbdc0b6467d74313d8b22b2054e32a17b3a484121ccc24cb16d8ad6fec0",
|
||||||
|
"0xe1ff507974903713d6ac9451d920007303edcffa4a82190f3976ba1c0b06d932"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 6,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0xdc9c9be2d7bc348acbd1cc004108f4af0386cec42492ae4fc3d62a9840d5f7bd",
|
||||||
|
"0x140d04bd298186a3efce73de4e3ea60f7f0300d21f2970efffc9f918ab004475",
|
||||||
|
"0xd62959693d950747d9c684becc5e4191521dd97b7496b0bb37326b54e6c58cb3",
|
||||||
|
"0xe07eef41b2e662b0af3e77b3c448378ecea5c476a9fa2f1da5e36d3a2bd1a010"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 7,
|
||||||
|
"i": 8,
|
||||||
|
"id": "r8",
|
||||||
|
"c": {
|
||||||
|
"age": "0xc6b4096f4947760268564e73c3afb7edf8c31f1fe8a5371c85eeb606ac22ea25",
|
||||||
|
"country": "0x9b959d0dad5df75cf7f29a408750b730b9fc41403f4fc50168cc14ce2ca437ee",
|
||||||
|
"email": "0x598b4823a385d1f34c855b8bb873241bc66ddbd0a8f6b09d92cba14534454484",
|
||||||
|
"note": "0x4bd0762227e6c5d7f6ceac6185a23fe5075a33576dcd1e4e51aa9a4b0e0a1158"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "RO",
|
||||||
|
"salt": "0a263d3e4223cc52f078c225a273e316"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 36,
|
||||||
|
"salt": "bcb34a3f54db5f21299add6f1c654670"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 8,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x7eb65d9a7f7ffa3039e627af43216d59accf7d3ca8a2951c2b0418c0199a1c9f",
|
||||||
|
"0x5290791446b6001dc5b5819d38d10ce762a0337736bbf8e90a111e8fe3c77efe",
|
||||||
|
"0xa06921f7770369ac27071f0fd2db808b66a643605278b92c06cabefffa234084",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 7,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x201009717c9f1fc80cd77e2a975390858ff4a4b76511bb7a31d36ea58bedeceb",
|
||||||
|
"0x140d04bd298186a3efce73de4e3ea60f7f0300d21f2970efffc9f918ab004475",
|
||||||
|
"0xd62959693d950747d9c684becc5e4191521dd97b7496b0bb37326b54e6c58cb3",
|
||||||
|
"0xe07eef41b2e662b0af3e77b3c448378ecea5c476a9fa2f1da5e36d3a2bd1a010"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 8,
|
||||||
|
"i": 14,
|
||||||
|
"id": "r14",
|
||||||
|
"c": {
|
||||||
|
"age": "0x2a86b9afad1aff1234aa90bdf96095d07ef5d479992a9081c21adc965a3c20c3",
|
||||||
|
"country": "0xebd5ee1cac77bb2b170c930d964032218f9f9c69284c89b213dbefb2d54b8eee",
|
||||||
|
"email": "0xb9319475dca37efe658a39f9f7c10d13dd21a32276ec911dc57a2677a4e4bb50",
|
||||||
|
"note": "0x3fdbec96439422e50f7faabf111c8c8c2690460aad638b745a6875678fd38f34"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "FR",
|
||||||
|
"salt": "15d426374424c484ffc8ae1bb736d960"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 38,
|
||||||
|
"salt": "d750eb0354fb432536e3c26e5c682210"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 14,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x12c9a4faf655bb09dbbb6a5fb3a24e44330e5d83222439ab2d2c2224c3791d84",
|
||||||
|
"0x1dd8a5c51c6218cb8ca3a57ee7683a06b1e94aaedc7252a6b296e4091c975377",
|
||||||
|
"0xaa5a00c12fedc13a01a588cd3a41470e0fcaf2a5ee7b1dc27ffa5b4ff7a3311b",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 8,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x9e4143c4b05ba68e176ae53bc5f122c1a490c3e1efeaa6bd9501110c5fb4d059",
|
||||||
|
"0xb3e51e807cccee32941e4d7009700ae40055645eb9e8bc6974ebe8ebf887a145",
|
||||||
|
"0x4b015cc323eaff67b141affbb3de0fc5e8052bf47a2f731b5605d19c23aa805a",
|
||||||
|
"0xca336a5bb1e6bf6a6302052ee7c87de5c9704132553a11e37b7e8f143c53439a"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 9,
|
||||||
|
"i": 3,
|
||||||
|
"id": "r3",
|
||||||
|
"c": {
|
||||||
|
"age": "0x13ec2a42a36e8b12ebdbd35af1d96962683a06b802e9e1f9e2e020487c691f7f",
|
||||||
|
"country": "0x1d18032f2e5acd907bffb4db2103b3d1d337388078ed9238a913c0cabecb928f",
|
||||||
|
"email": "0xe36f28b120650ba4c2597063b456d4d00847532129bd26dc8c150291265eef23",
|
||||||
|
"note": "0x086341fc0392c796d5f84f78f183deef347fa327e3d48707c460fc4d9c1f9910"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "ES",
|
||||||
|
"salt": "0ee225e77747d7afafb81d1bffdf68c0"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 41,
|
||||||
|
"salt": "9104931c19467233d902d1c967a15086"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 3,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x5083ccb306cbefaa21d75b69a47668b0cd3943865500881281d96e05429face8",
|
||||||
|
"0x6528250e72e30d47b6b47dcefaa225bcb9fc1af0d20ee827c331486083baac56",
|
||||||
|
"0xef30cdbdc0b6467d74313d8b22b2054e32a17b3a484121ccc24cb16d8ad6fec0",
|
||||||
|
"0xe1ff507974903713d6ac9451d920007303edcffa4a82190f3976ba1c0b06d932"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 9,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0xd0d85473c9adae91cb97fce47e564181ae990b38260de5efb1351e02ff9c3524",
|
||||||
|
"0xb3e51e807cccee32941e4d7009700ae40055645eb9e8bc6974ebe8ebf887a145",
|
||||||
|
"0x4b015cc323eaff67b141affbb3de0fc5e8052bf47a2f731b5605d19c23aa805a",
|
||||||
|
"0xca336a5bb1e6bf6a6302052ee7c87de5c9704132553a11e37b7e8f143c53439a"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 10,
|
||||||
|
"i": 9,
|
||||||
|
"id": "r9",
|
||||||
|
"c": {
|
||||||
|
"age": "0x1e440a3ce1d15a73c509b5b4da506157e42ac6cd8e96d486df66d049bfe8b8e6",
|
||||||
|
"country": "0xd5f75ca5ae34d41c6c6fe30f01061bec1260fd8fa9a134da20c616bd61b33428",
|
||||||
|
"email": "0x762b765d7cda44c06281ea75fea30bfc377adffe33d9df4ba065566f503ced67",
|
||||||
|
"note": "0x42b57a86fde59862104e06c5f9d7324e5edf2506e5c3874e0ae85e375ec46cdb"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "DE",
|
||||||
|
"salt": "b0371c1e4117eab6e65f46c8e7dd9b5c"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 43,
|
||||||
|
"salt": "994a5723c379b33784b813642d91bca5"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 9,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x65c032449d009130a92eb4bfc7a17fe17e0256c141a980d56ef6f7acc5ea65c1",
|
||||||
|
"0x5290791446b6001dc5b5819d38d10ce762a0337736bbf8e90a111e8fe3c77efe",
|
||||||
|
"0xa06921f7770369ac27071f0fd2db808b66a643605278b92c06cabefffa234084",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 10,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0xccb00a519667f5206d54663c1449cfe26d2a69a21b58934e639d7fa5274a610b",
|
||||||
|
"0x59b6ac5d90106bce7337c4bbb3a25828e76f9fa97e001caee65d2540dad98ef0",
|
||||||
|
"0x4b015cc323eaff67b141affbb3de0fc5e8052bf47a2f731b5605d19c23aa805a",
|
||||||
|
"0xca336a5bb1e6bf6a6302052ee7c87de5c9704132553a11e37b7e8f143c53439a"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 11,
|
||||||
|
"i": 15,
|
||||||
|
"id": "r15",
|
||||||
|
"c": {
|
||||||
|
"age": "0x3e1980c7f773e302e4f9bf175e8edec38a53da7f2e46a5e371a77d57842c02fb",
|
||||||
|
"country": "0x1919bce313ba6d86fc4bf751e1f67b0a39b699615086212681149ff62c0885cf",
|
||||||
|
"email": "0x8c8c71ef8dd79da410a4cfc25639ea6119cbdd02c031eaa3ee9d661c65ba9aea",
|
||||||
|
"note": "0x2b31e8289c6fa63c019472defa0f58b1aad47fb3ff63a99484ddf9b95d3a3bd5"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "ES",
|
||||||
|
"salt": "2e559c28fa7a80ed4f38fa8b45f2c82e"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 45,
|
||||||
|
"salt": "ddef75f62d6301533303c7876d013294"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 15,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x7bfd292a9ed546f18580c5251b801dc2756d80ab29a3c64eb0b81433a313307f",
|
||||||
|
"0x1dd8a5c51c6218cb8ca3a57ee7683a06b1e94aaedc7252a6b296e4091c975377",
|
||||||
|
"0xaa5a00c12fedc13a01a588cd3a41470e0fcaf2a5ee7b1dc27ffa5b4ff7a3311b",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 11,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x7144d8a6be6e7645cd0c8b69f028fc16b10e4f17fa86296a23c261922d75753e",
|
||||||
|
"0x59b6ac5d90106bce7337c4bbb3a25828e76f9fa97e001caee65d2540dad98ef0",
|
||||||
|
"0x4b015cc323eaff67b141affbb3de0fc5e8052bf47a2f731b5605d19c23aa805a",
|
||||||
|
"0xca336a5bb1e6bf6a6302052ee7c87de5c9704132553a11e37b7e8f143c53439a"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"before": {
|
||||||
|
"pos": 5,
|
||||||
|
"value": 31,
|
||||||
|
"i": 13,
|
||||||
|
"recordLeaf": "0xc383e9a1e188c33996ec8ed77bb82230a72a4f52facef6bb31482535a09c30e0",
|
||||||
|
"indexProof": {
|
||||||
|
"index": 5,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0xc4723e9eb2ff7168890f1a366b02d3ed1452ac476e98996cd0c91634af7423ed",
|
||||||
|
"0x15febe1a672c219d5d2f9fa007af3b5a9c3e7e47a61fe89875ae1cf60ebfb2df",
|
||||||
|
"0xd62959693d950747d9c684becc5e4191521dd97b7496b0bb37326b54e6c58cb3",
|
||||||
|
"0xe07eef41b2e662b0af3e77b3c448378ecea5c476a9fa2f1da5e36d3a2bd1a010"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"after": {
|
||||||
|
"pos": 12,
|
||||||
|
"value": 48,
|
||||||
|
"i": 4,
|
||||||
|
"recordLeaf": "0x423f202599ef3d02b5f3ff547235afd8e222ed7c26c61a01e4c15de7e2f4948b",
|
||||||
|
"indexProof": {
|
||||||
|
"index": 12,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x6e97bf24fed1277d34cc86719a8f63aab95067adfa7c5a6e70bde9daf8870f47",
|
||||||
|
"0x775811db8d2472f42cad2aeebbc3826f5f959e1f174501ca8ab4380ad815702a",
|
||||||
|
"0xec4bd620657cb68e435f6d2a71199370056c925b6184624a743fe49d818e9370",
|
||||||
|
"0xca336a5bb1e6bf6a6302052ee7c87de5c9704132553a11e37b7e8f143c53439a"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"commitment": {
|
||||||
|
"v": 1,
|
||||||
|
"format": "aere-verifiable-dataset-1",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 2,
|
||||||
|
"size": 16,
|
||||||
|
"logRoot": "0x7b5bc02c63e970752f38d69995e4771ef596b56a640fc9addef32d570970be68",
|
||||||
|
"createdAt": "2026-10-03T00:01:00.000Z",
|
||||||
|
"indexes": {
|
||||||
|
"age": {
|
||||||
|
"root": "0xfc641a2eadd7d876f9b4fe284dac094fb83543cf43a2c2f80e88f6d9e98114a7",
|
||||||
|
"size": 16
|
||||||
|
},
|
||||||
|
"country": {
|
||||||
|
"root": "0x5be9a95a39966382ab8d83179ae93380d723d49eff2f3b76a290a72a8ee60149",
|
||||||
|
"size": 16
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"previous": "0xcea41f8f24fd00aa268619aac5c49b184e5971648db52fb514efdf5f0686d9aa"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"dataset.completeness"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,359 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "dataset-answer/age-30-45.completeness-last",
|
||||||
|
"artifact": "dataset-answer",
|
||||||
|
"title": "the last matching row withheld and shown as the neighbour after the run (its value is still in range)",
|
||||||
|
"source": "derived from dataset-answer/age-30-45.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"dataset.commitment",
|
||||||
|
"dataset.completeness",
|
||||||
|
"dataset.field",
|
||||||
|
"dataset.form",
|
||||||
|
"dataset.inclusion",
|
||||||
|
"dataset.index",
|
||||||
|
"dataset.order",
|
||||||
|
"dataset.range"
|
||||||
|
],
|
||||||
|
"base": "dataset-answer/age-30-45.valid",
|
||||||
|
"mutation": {
|
||||||
|
"producer": "the server dropped the last row and presented it as the neighbour after",
|
||||||
|
"changed": [
|
||||||
|
[
|
||||||
|
"answer",
|
||||||
|
"rows",
|
||||||
|
6
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"answer",
|
||||||
|
"after"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"answer": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-verifiable-query-answer",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 2,
|
||||||
|
"commitmentHash": "0x4cd24b27c6c17493766099e86e188abfa3ac25d5e28a86e48792d20962a3486d",
|
||||||
|
"field": "age",
|
||||||
|
"from": 30,
|
||||||
|
"to": 45,
|
||||||
|
"indexSize": 16,
|
||||||
|
"rows": [
|
||||||
|
{
|
||||||
|
"pos": 5,
|
||||||
|
"i": 13,
|
||||||
|
"id": "r13",
|
||||||
|
"c": {
|
||||||
|
"age": "0x20131967249ae0130154c3dbbcbe8ab041200b4499ed270f2c9dd2c2ac3337f1",
|
||||||
|
"country": "0xffa95ca2afb61e95d628c3044b6e80746cccc11642ad35dafc6445cd905facdf",
|
||||||
|
"email": "0x2e6bca63ef9fad9e3ef55ae60405914a01577abd1caf0403109608f3f95a3700",
|
||||||
|
"note": "0x668a33b811cf8989b6ce36f7681928dd43371ea394d67df6136fb1580977121b"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "DE",
|
||||||
|
"salt": "b5ffd792267cac392d9d814c7809b198"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 31,
|
||||||
|
"salt": "314d5643f6f54376235b422614dd1562"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 13,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0xd3cbc725743f95177070e430cd03ec9f6af06bc64e84c0c84ad19e5d5562a983",
|
||||||
|
"0x85c6057fcfb4dd1d0fdfc0e4a925284def148b2ee0513c6858a29070aca4d50d",
|
||||||
|
"0xaa5a00c12fedc13a01a588cd3a41470e0fcaf2a5ee7b1dc27ffa5b4ff7a3311b",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 5,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0xc4723e9eb2ff7168890f1a366b02d3ed1452ac476e98996cd0c91634af7423ed",
|
||||||
|
"0x15febe1a672c219d5d2f9fa007af3b5a9c3e7e47a61fe89875ae1cf60ebfb2df",
|
||||||
|
"0xd62959693d950747d9c684becc5e4191521dd97b7496b0bb37326b54e6c58cb3",
|
||||||
|
"0xe07eef41b2e662b0af3e77b3c448378ecea5c476a9fa2f1da5e36d3a2bd1a010"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 6,
|
||||||
|
"i": 2,
|
||||||
|
"id": "r2",
|
||||||
|
"c": {
|
||||||
|
"age": "0xec15dd9b6e14956f9e3e9ea696f943972ab7601093c1c488ec18d40eb1431d42",
|
||||||
|
"country": "0x8d9e791776f47b5aeb079763edfdd40d26fc94742c8410a4f8d45e6ff1e901e6",
|
||||||
|
"email": "0xb9bfbcffff236803e9faabb11490ee1749c02a5566ae6e22380ae7dafc16322e",
|
||||||
|
"note": "0x86d1f7ae6700f8a22cb3c6a97b27d85d226beae6c4ca4c6eccd3e18b2fd85644"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "FR",
|
||||||
|
"salt": "6a20a411bddb217e3ba890baad65b87e"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 34,
|
||||||
|
"salt": "a83f62663d8735a83a784f603de20b88"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 2,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x559b8f51f7b31a6feed18feeb876141c8a19af7f49169aee7a9833b59b65eaa2",
|
||||||
|
"0x6528250e72e30d47b6b47dcefaa225bcb9fc1af0d20ee827c331486083baac56",
|
||||||
|
"0xef30cdbdc0b6467d74313d8b22b2054e32a17b3a484121ccc24cb16d8ad6fec0",
|
||||||
|
"0xe1ff507974903713d6ac9451d920007303edcffa4a82190f3976ba1c0b06d932"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 6,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0xdc9c9be2d7bc348acbd1cc004108f4af0386cec42492ae4fc3d62a9840d5f7bd",
|
||||||
|
"0x140d04bd298186a3efce73de4e3ea60f7f0300d21f2970efffc9f918ab004475",
|
||||||
|
"0xd62959693d950747d9c684becc5e4191521dd97b7496b0bb37326b54e6c58cb3",
|
||||||
|
"0xe07eef41b2e662b0af3e77b3c448378ecea5c476a9fa2f1da5e36d3a2bd1a010"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 7,
|
||||||
|
"i": 8,
|
||||||
|
"id": "r8",
|
||||||
|
"c": {
|
||||||
|
"age": "0xc6b4096f4947760268564e73c3afb7edf8c31f1fe8a5371c85eeb606ac22ea25",
|
||||||
|
"country": "0x9b959d0dad5df75cf7f29a408750b730b9fc41403f4fc50168cc14ce2ca437ee",
|
||||||
|
"email": "0x598b4823a385d1f34c855b8bb873241bc66ddbd0a8f6b09d92cba14534454484",
|
||||||
|
"note": "0x4bd0762227e6c5d7f6ceac6185a23fe5075a33576dcd1e4e51aa9a4b0e0a1158"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "RO",
|
||||||
|
"salt": "0a263d3e4223cc52f078c225a273e316"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 36,
|
||||||
|
"salt": "bcb34a3f54db5f21299add6f1c654670"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 8,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x7eb65d9a7f7ffa3039e627af43216d59accf7d3ca8a2951c2b0418c0199a1c9f",
|
||||||
|
"0x5290791446b6001dc5b5819d38d10ce762a0337736bbf8e90a111e8fe3c77efe",
|
||||||
|
"0xa06921f7770369ac27071f0fd2db808b66a643605278b92c06cabefffa234084",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 7,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x201009717c9f1fc80cd77e2a975390858ff4a4b76511bb7a31d36ea58bedeceb",
|
||||||
|
"0x140d04bd298186a3efce73de4e3ea60f7f0300d21f2970efffc9f918ab004475",
|
||||||
|
"0xd62959693d950747d9c684becc5e4191521dd97b7496b0bb37326b54e6c58cb3",
|
||||||
|
"0xe07eef41b2e662b0af3e77b3c448378ecea5c476a9fa2f1da5e36d3a2bd1a010"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 8,
|
||||||
|
"i": 14,
|
||||||
|
"id": "r14",
|
||||||
|
"c": {
|
||||||
|
"age": "0x2a86b9afad1aff1234aa90bdf96095d07ef5d479992a9081c21adc965a3c20c3",
|
||||||
|
"country": "0xebd5ee1cac77bb2b170c930d964032218f9f9c69284c89b213dbefb2d54b8eee",
|
||||||
|
"email": "0xb9319475dca37efe658a39f9f7c10d13dd21a32276ec911dc57a2677a4e4bb50",
|
||||||
|
"note": "0x3fdbec96439422e50f7faabf111c8c8c2690460aad638b745a6875678fd38f34"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "FR",
|
||||||
|
"salt": "15d426374424c484ffc8ae1bb736d960"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 38,
|
||||||
|
"salt": "d750eb0354fb432536e3c26e5c682210"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 14,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x12c9a4faf655bb09dbbb6a5fb3a24e44330e5d83222439ab2d2c2224c3791d84",
|
||||||
|
"0x1dd8a5c51c6218cb8ca3a57ee7683a06b1e94aaedc7252a6b296e4091c975377",
|
||||||
|
"0xaa5a00c12fedc13a01a588cd3a41470e0fcaf2a5ee7b1dc27ffa5b4ff7a3311b",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 8,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x9e4143c4b05ba68e176ae53bc5f122c1a490c3e1efeaa6bd9501110c5fb4d059",
|
||||||
|
"0xb3e51e807cccee32941e4d7009700ae40055645eb9e8bc6974ebe8ebf887a145",
|
||||||
|
"0x4b015cc323eaff67b141affbb3de0fc5e8052bf47a2f731b5605d19c23aa805a",
|
||||||
|
"0xca336a5bb1e6bf6a6302052ee7c87de5c9704132553a11e37b7e8f143c53439a"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 9,
|
||||||
|
"i": 3,
|
||||||
|
"id": "r3",
|
||||||
|
"c": {
|
||||||
|
"age": "0x13ec2a42a36e8b12ebdbd35af1d96962683a06b802e9e1f9e2e020487c691f7f",
|
||||||
|
"country": "0x1d18032f2e5acd907bffb4db2103b3d1d337388078ed9238a913c0cabecb928f",
|
||||||
|
"email": "0xe36f28b120650ba4c2597063b456d4d00847532129bd26dc8c150291265eef23",
|
||||||
|
"note": "0x086341fc0392c796d5f84f78f183deef347fa327e3d48707c460fc4d9c1f9910"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "ES",
|
||||||
|
"salt": "0ee225e77747d7afafb81d1bffdf68c0"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 41,
|
||||||
|
"salt": "9104931c19467233d902d1c967a15086"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 3,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x5083ccb306cbefaa21d75b69a47668b0cd3943865500881281d96e05429face8",
|
||||||
|
"0x6528250e72e30d47b6b47dcefaa225bcb9fc1af0d20ee827c331486083baac56",
|
||||||
|
"0xef30cdbdc0b6467d74313d8b22b2054e32a17b3a484121ccc24cb16d8ad6fec0",
|
||||||
|
"0xe1ff507974903713d6ac9451d920007303edcffa4a82190f3976ba1c0b06d932"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 9,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0xd0d85473c9adae91cb97fce47e564181ae990b38260de5efb1351e02ff9c3524",
|
||||||
|
"0xb3e51e807cccee32941e4d7009700ae40055645eb9e8bc6974ebe8ebf887a145",
|
||||||
|
"0x4b015cc323eaff67b141affbb3de0fc5e8052bf47a2f731b5605d19c23aa805a",
|
||||||
|
"0xca336a5bb1e6bf6a6302052ee7c87de5c9704132553a11e37b7e8f143c53439a"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 10,
|
||||||
|
"i": 9,
|
||||||
|
"id": "r9",
|
||||||
|
"c": {
|
||||||
|
"age": "0x1e440a3ce1d15a73c509b5b4da506157e42ac6cd8e96d486df66d049bfe8b8e6",
|
||||||
|
"country": "0xd5f75ca5ae34d41c6c6fe30f01061bec1260fd8fa9a134da20c616bd61b33428",
|
||||||
|
"email": "0x762b765d7cda44c06281ea75fea30bfc377adffe33d9df4ba065566f503ced67",
|
||||||
|
"note": "0x42b57a86fde59862104e06c5f9d7324e5edf2506e5c3874e0ae85e375ec46cdb"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "DE",
|
||||||
|
"salt": "b0371c1e4117eab6e65f46c8e7dd9b5c"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 43,
|
||||||
|
"salt": "994a5723c379b33784b813642d91bca5"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 9,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x65c032449d009130a92eb4bfc7a17fe17e0256c141a980d56ef6f7acc5ea65c1",
|
||||||
|
"0x5290791446b6001dc5b5819d38d10ce762a0337736bbf8e90a111e8fe3c77efe",
|
||||||
|
"0xa06921f7770369ac27071f0fd2db808b66a643605278b92c06cabefffa234084",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 10,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0xccb00a519667f5206d54663c1449cfe26d2a69a21b58934e639d7fa5274a610b",
|
||||||
|
"0x59b6ac5d90106bce7337c4bbb3a25828e76f9fa97e001caee65d2540dad98ef0",
|
||||||
|
"0x4b015cc323eaff67b141affbb3de0fc5e8052bf47a2f731b5605d19c23aa805a",
|
||||||
|
"0xca336a5bb1e6bf6a6302052ee7c87de5c9704132553a11e37b7e8f143c53439a"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"before": {
|
||||||
|
"pos": 4,
|
||||||
|
"value": 29,
|
||||||
|
"i": 7,
|
||||||
|
"recordLeaf": "0xabbddf51854536b5605dc7c0630fd2fa170d2dcd9b1c5312aec6fea74c038c0d",
|
||||||
|
"indexProof": {
|
||||||
|
"index": 4,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x30a0dd012169393d0dea8791c0f24d70cc8d4c70d088f420825ec0dbf9230f67",
|
||||||
|
"0x15febe1a672c219d5d2f9fa007af3b5a9c3e7e47a61fe89875ae1cf60ebfb2df",
|
||||||
|
"0xd62959693d950747d9c684becc5e4191521dd97b7496b0bb37326b54e6c58cb3",
|
||||||
|
"0xe07eef41b2e662b0af3e77b3c448378ecea5c476a9fa2f1da5e36d3a2bd1a010"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"after": {
|
||||||
|
"pos": 11,
|
||||||
|
"value": 45,
|
||||||
|
"i": 15,
|
||||||
|
"recordLeaf": "0x12c9a4faf655bb09dbbb6a5fb3a24e44330e5d83222439ab2d2c2224c3791d84",
|
||||||
|
"indexProof": {
|
||||||
|
"index": 11,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x7144d8a6be6e7645cd0c8b69f028fc16b10e4f17fa86296a23c261922d75753e",
|
||||||
|
"0x59b6ac5d90106bce7337c4bbb3a25828e76f9fa97e001caee65d2540dad98ef0",
|
||||||
|
"0x4b015cc323eaff67b141affbb3de0fc5e8052bf47a2f731b5605d19c23aa805a",
|
||||||
|
"0xca336a5bb1e6bf6a6302052ee7c87de5c9704132553a11e37b7e8f143c53439a"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"commitment": {
|
||||||
|
"v": 1,
|
||||||
|
"format": "aere-verifiable-dataset-1",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 2,
|
||||||
|
"size": 16,
|
||||||
|
"logRoot": "0x7b5bc02c63e970752f38d69995e4771ef596b56a640fc9addef32d570970be68",
|
||||||
|
"createdAt": "2026-10-03T00:01:00.000Z",
|
||||||
|
"indexes": {
|
||||||
|
"age": {
|
||||||
|
"root": "0xfc641a2eadd7d876f9b4fe284dac094fb83543cf43a2c2f80e88f6d9e98114a7",
|
||||||
|
"size": 16
|
||||||
|
},
|
||||||
|
"country": {
|
||||||
|
"root": "0x5be9a95a39966382ab8d83179ae93380d723d49eff2f3b76a290a72a8ee60149",
|
||||||
|
"size": 16
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"previous": "0xcea41f8f24fd00aa268619aac5c49b184e5971648db52fb514efdf5f0686d9aa"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"dataset.completeness"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
353
conformance/vectori/dataset-answer/age-30-45.completeness.json
Normal file
353
conformance/vectori/dataset-answer/age-30-45.completeness.json
Normal file
@ -0,0 +1,353 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "dataset-answer/age-30-45.completeness",
|
||||||
|
"artifact": "dataset-answer",
|
||||||
|
"title": "a row dropped from the middle of the run",
|
||||||
|
"source": "derived from dataset-answer/age-30-45.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"dataset.commitment",
|
||||||
|
"dataset.completeness",
|
||||||
|
"dataset.field",
|
||||||
|
"dataset.form",
|
||||||
|
"dataset.inclusion",
|
||||||
|
"dataset.index",
|
||||||
|
"dataset.order",
|
||||||
|
"dataset.range"
|
||||||
|
],
|
||||||
|
"base": "dataset-answer/age-30-45.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "remove",
|
||||||
|
"path": [
|
||||||
|
"answer",
|
||||||
|
"rows",
|
||||||
|
1
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"answer": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-verifiable-query-answer",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 2,
|
||||||
|
"commitmentHash": "0x4cd24b27c6c17493766099e86e188abfa3ac25d5e28a86e48792d20962a3486d",
|
||||||
|
"field": "age",
|
||||||
|
"from": 30,
|
||||||
|
"to": 45,
|
||||||
|
"indexSize": 16,
|
||||||
|
"rows": [
|
||||||
|
{
|
||||||
|
"pos": 5,
|
||||||
|
"i": 13,
|
||||||
|
"id": "r13",
|
||||||
|
"c": {
|
||||||
|
"age": "0x20131967249ae0130154c3dbbcbe8ab041200b4499ed270f2c9dd2c2ac3337f1",
|
||||||
|
"country": "0xffa95ca2afb61e95d628c3044b6e80746cccc11642ad35dafc6445cd905facdf",
|
||||||
|
"email": "0x2e6bca63ef9fad9e3ef55ae60405914a01577abd1caf0403109608f3f95a3700",
|
||||||
|
"note": "0x668a33b811cf8989b6ce36f7681928dd43371ea394d67df6136fb1580977121b"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "DE",
|
||||||
|
"salt": "b5ffd792267cac392d9d814c7809b198"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 31,
|
||||||
|
"salt": "314d5643f6f54376235b422614dd1562"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 13,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0xd3cbc725743f95177070e430cd03ec9f6af06bc64e84c0c84ad19e5d5562a983",
|
||||||
|
"0x85c6057fcfb4dd1d0fdfc0e4a925284def148b2ee0513c6858a29070aca4d50d",
|
||||||
|
"0xaa5a00c12fedc13a01a588cd3a41470e0fcaf2a5ee7b1dc27ffa5b4ff7a3311b",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 5,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0xc4723e9eb2ff7168890f1a366b02d3ed1452ac476e98996cd0c91634af7423ed",
|
||||||
|
"0x15febe1a672c219d5d2f9fa007af3b5a9c3e7e47a61fe89875ae1cf60ebfb2df",
|
||||||
|
"0xd62959693d950747d9c684becc5e4191521dd97b7496b0bb37326b54e6c58cb3",
|
||||||
|
"0xe07eef41b2e662b0af3e77b3c448378ecea5c476a9fa2f1da5e36d3a2bd1a010"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 7,
|
||||||
|
"i": 8,
|
||||||
|
"id": "r8",
|
||||||
|
"c": {
|
||||||
|
"age": "0xc6b4096f4947760268564e73c3afb7edf8c31f1fe8a5371c85eeb606ac22ea25",
|
||||||
|
"country": "0x9b959d0dad5df75cf7f29a408750b730b9fc41403f4fc50168cc14ce2ca437ee",
|
||||||
|
"email": "0x598b4823a385d1f34c855b8bb873241bc66ddbd0a8f6b09d92cba14534454484",
|
||||||
|
"note": "0x4bd0762227e6c5d7f6ceac6185a23fe5075a33576dcd1e4e51aa9a4b0e0a1158"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "RO",
|
||||||
|
"salt": "0a263d3e4223cc52f078c225a273e316"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 36,
|
||||||
|
"salt": "bcb34a3f54db5f21299add6f1c654670"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 8,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x7eb65d9a7f7ffa3039e627af43216d59accf7d3ca8a2951c2b0418c0199a1c9f",
|
||||||
|
"0x5290791446b6001dc5b5819d38d10ce762a0337736bbf8e90a111e8fe3c77efe",
|
||||||
|
"0xa06921f7770369ac27071f0fd2db808b66a643605278b92c06cabefffa234084",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 7,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x201009717c9f1fc80cd77e2a975390858ff4a4b76511bb7a31d36ea58bedeceb",
|
||||||
|
"0x140d04bd298186a3efce73de4e3ea60f7f0300d21f2970efffc9f918ab004475",
|
||||||
|
"0xd62959693d950747d9c684becc5e4191521dd97b7496b0bb37326b54e6c58cb3",
|
||||||
|
"0xe07eef41b2e662b0af3e77b3c448378ecea5c476a9fa2f1da5e36d3a2bd1a010"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 8,
|
||||||
|
"i": 14,
|
||||||
|
"id": "r14",
|
||||||
|
"c": {
|
||||||
|
"age": "0x2a86b9afad1aff1234aa90bdf96095d07ef5d479992a9081c21adc965a3c20c3",
|
||||||
|
"country": "0xebd5ee1cac77bb2b170c930d964032218f9f9c69284c89b213dbefb2d54b8eee",
|
||||||
|
"email": "0xb9319475dca37efe658a39f9f7c10d13dd21a32276ec911dc57a2677a4e4bb50",
|
||||||
|
"note": "0x3fdbec96439422e50f7faabf111c8c8c2690460aad638b745a6875678fd38f34"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "FR",
|
||||||
|
"salt": "15d426374424c484ffc8ae1bb736d960"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 38,
|
||||||
|
"salt": "d750eb0354fb432536e3c26e5c682210"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 14,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x12c9a4faf655bb09dbbb6a5fb3a24e44330e5d83222439ab2d2c2224c3791d84",
|
||||||
|
"0x1dd8a5c51c6218cb8ca3a57ee7683a06b1e94aaedc7252a6b296e4091c975377",
|
||||||
|
"0xaa5a00c12fedc13a01a588cd3a41470e0fcaf2a5ee7b1dc27ffa5b4ff7a3311b",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 8,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x9e4143c4b05ba68e176ae53bc5f122c1a490c3e1efeaa6bd9501110c5fb4d059",
|
||||||
|
"0xb3e51e807cccee32941e4d7009700ae40055645eb9e8bc6974ebe8ebf887a145",
|
||||||
|
"0x4b015cc323eaff67b141affbb3de0fc5e8052bf47a2f731b5605d19c23aa805a",
|
||||||
|
"0xca336a5bb1e6bf6a6302052ee7c87de5c9704132553a11e37b7e8f143c53439a"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 9,
|
||||||
|
"i": 3,
|
||||||
|
"id": "r3",
|
||||||
|
"c": {
|
||||||
|
"age": "0x13ec2a42a36e8b12ebdbd35af1d96962683a06b802e9e1f9e2e020487c691f7f",
|
||||||
|
"country": "0x1d18032f2e5acd907bffb4db2103b3d1d337388078ed9238a913c0cabecb928f",
|
||||||
|
"email": "0xe36f28b120650ba4c2597063b456d4d00847532129bd26dc8c150291265eef23",
|
||||||
|
"note": "0x086341fc0392c796d5f84f78f183deef347fa327e3d48707c460fc4d9c1f9910"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "ES",
|
||||||
|
"salt": "0ee225e77747d7afafb81d1bffdf68c0"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 41,
|
||||||
|
"salt": "9104931c19467233d902d1c967a15086"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 3,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x5083ccb306cbefaa21d75b69a47668b0cd3943865500881281d96e05429face8",
|
||||||
|
"0x6528250e72e30d47b6b47dcefaa225bcb9fc1af0d20ee827c331486083baac56",
|
||||||
|
"0xef30cdbdc0b6467d74313d8b22b2054e32a17b3a484121ccc24cb16d8ad6fec0",
|
||||||
|
"0xe1ff507974903713d6ac9451d920007303edcffa4a82190f3976ba1c0b06d932"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 9,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0xd0d85473c9adae91cb97fce47e564181ae990b38260de5efb1351e02ff9c3524",
|
||||||
|
"0xb3e51e807cccee32941e4d7009700ae40055645eb9e8bc6974ebe8ebf887a145",
|
||||||
|
"0x4b015cc323eaff67b141affbb3de0fc5e8052bf47a2f731b5605d19c23aa805a",
|
||||||
|
"0xca336a5bb1e6bf6a6302052ee7c87de5c9704132553a11e37b7e8f143c53439a"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 10,
|
||||||
|
"i": 9,
|
||||||
|
"id": "r9",
|
||||||
|
"c": {
|
||||||
|
"age": "0x1e440a3ce1d15a73c509b5b4da506157e42ac6cd8e96d486df66d049bfe8b8e6",
|
||||||
|
"country": "0xd5f75ca5ae34d41c6c6fe30f01061bec1260fd8fa9a134da20c616bd61b33428",
|
||||||
|
"email": "0x762b765d7cda44c06281ea75fea30bfc377adffe33d9df4ba065566f503ced67",
|
||||||
|
"note": "0x42b57a86fde59862104e06c5f9d7324e5edf2506e5c3874e0ae85e375ec46cdb"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "DE",
|
||||||
|
"salt": "b0371c1e4117eab6e65f46c8e7dd9b5c"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 43,
|
||||||
|
"salt": "994a5723c379b33784b813642d91bca5"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 9,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x65c032449d009130a92eb4bfc7a17fe17e0256c141a980d56ef6f7acc5ea65c1",
|
||||||
|
"0x5290791446b6001dc5b5819d38d10ce762a0337736bbf8e90a111e8fe3c77efe",
|
||||||
|
"0xa06921f7770369ac27071f0fd2db808b66a643605278b92c06cabefffa234084",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 10,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0xccb00a519667f5206d54663c1449cfe26d2a69a21b58934e639d7fa5274a610b",
|
||||||
|
"0x59b6ac5d90106bce7337c4bbb3a25828e76f9fa97e001caee65d2540dad98ef0",
|
||||||
|
"0x4b015cc323eaff67b141affbb3de0fc5e8052bf47a2f731b5605d19c23aa805a",
|
||||||
|
"0xca336a5bb1e6bf6a6302052ee7c87de5c9704132553a11e37b7e8f143c53439a"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 11,
|
||||||
|
"i": 15,
|
||||||
|
"id": "r15",
|
||||||
|
"c": {
|
||||||
|
"age": "0x3e1980c7f773e302e4f9bf175e8edec38a53da7f2e46a5e371a77d57842c02fb",
|
||||||
|
"country": "0x1919bce313ba6d86fc4bf751e1f67b0a39b699615086212681149ff62c0885cf",
|
||||||
|
"email": "0x8c8c71ef8dd79da410a4cfc25639ea6119cbdd02c031eaa3ee9d661c65ba9aea",
|
||||||
|
"note": "0x2b31e8289c6fa63c019472defa0f58b1aad47fb3ff63a99484ddf9b95d3a3bd5"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "ES",
|
||||||
|
"salt": "2e559c28fa7a80ed4f38fa8b45f2c82e"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 45,
|
||||||
|
"salt": "ddef75f62d6301533303c7876d013294"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 15,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x7bfd292a9ed546f18580c5251b801dc2756d80ab29a3c64eb0b81433a313307f",
|
||||||
|
"0x1dd8a5c51c6218cb8ca3a57ee7683a06b1e94aaedc7252a6b296e4091c975377",
|
||||||
|
"0xaa5a00c12fedc13a01a588cd3a41470e0fcaf2a5ee7b1dc27ffa5b4ff7a3311b",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 11,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x7144d8a6be6e7645cd0c8b69f028fc16b10e4f17fa86296a23c261922d75753e",
|
||||||
|
"0x59b6ac5d90106bce7337c4bbb3a25828e76f9fa97e001caee65d2540dad98ef0",
|
||||||
|
"0x4b015cc323eaff67b141affbb3de0fc5e8052bf47a2f731b5605d19c23aa805a",
|
||||||
|
"0xca336a5bb1e6bf6a6302052ee7c87de5c9704132553a11e37b7e8f143c53439a"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"before": {
|
||||||
|
"pos": 4,
|
||||||
|
"value": 29,
|
||||||
|
"i": 7,
|
||||||
|
"recordLeaf": "0xabbddf51854536b5605dc7c0630fd2fa170d2dcd9b1c5312aec6fea74c038c0d",
|
||||||
|
"indexProof": {
|
||||||
|
"index": 4,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x30a0dd012169393d0dea8791c0f24d70cc8d4c70d088f420825ec0dbf9230f67",
|
||||||
|
"0x15febe1a672c219d5d2f9fa007af3b5a9c3e7e47a61fe89875ae1cf60ebfb2df",
|
||||||
|
"0xd62959693d950747d9c684becc5e4191521dd97b7496b0bb37326b54e6c58cb3",
|
||||||
|
"0xe07eef41b2e662b0af3e77b3c448378ecea5c476a9fa2f1da5e36d3a2bd1a010"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"after": {
|
||||||
|
"pos": 12,
|
||||||
|
"value": 48,
|
||||||
|
"i": 4,
|
||||||
|
"recordLeaf": "0x423f202599ef3d02b5f3ff547235afd8e222ed7c26c61a01e4c15de7e2f4948b",
|
||||||
|
"indexProof": {
|
||||||
|
"index": 12,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x6e97bf24fed1277d34cc86719a8f63aab95067adfa7c5a6e70bde9daf8870f47",
|
||||||
|
"0x775811db8d2472f42cad2aeebbc3826f5f959e1f174501ca8ab4380ad815702a",
|
||||||
|
"0xec4bd620657cb68e435f6d2a71199370056c925b6184624a743fe49d818e9370",
|
||||||
|
"0xca336a5bb1e6bf6a6302052ee7c87de5c9704132553a11e37b7e8f143c53439a"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"commitment": {
|
||||||
|
"v": 1,
|
||||||
|
"format": "aere-verifiable-dataset-1",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 2,
|
||||||
|
"size": 16,
|
||||||
|
"logRoot": "0x7b5bc02c63e970752f38d69995e4771ef596b56a640fc9addef32d570970be68",
|
||||||
|
"createdAt": "2026-10-03T00:01:00.000Z",
|
||||||
|
"indexes": {
|
||||||
|
"age": {
|
||||||
|
"root": "0xfc641a2eadd7d876f9b4fe284dac094fb83543cf43a2c2f80e88f6d9e98114a7",
|
||||||
|
"size": 16
|
||||||
|
},
|
||||||
|
"country": {
|
||||||
|
"root": "0x5be9a95a39966382ab8d83179ae93380d723d49eff2f3b76a290a72a8ee60149",
|
||||||
|
"size": 16
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"previous": "0xcea41f8f24fd00aa268619aac5c49b184e5971648db52fb514efdf5f0686d9aa"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"dataset.completeness"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
394
conformance/vectori/dataset-answer/age-30-45.index-size.json
Normal file
394
conformance/vectori/dataset-answer/age-30-45.index-size.json
Normal file
@ -0,0 +1,394 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "dataset-answer/age-30-45.index-size",
|
||||||
|
"artifact": "dataset-answer",
|
||||||
|
"title": "the answer states another index size than the commitment",
|
||||||
|
"source": "derived from dataset-answer/age-30-45.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"dataset.commitment",
|
||||||
|
"dataset.completeness",
|
||||||
|
"dataset.field",
|
||||||
|
"dataset.form",
|
||||||
|
"dataset.inclusion",
|
||||||
|
"dataset.index",
|
||||||
|
"dataset.order",
|
||||||
|
"dataset.range"
|
||||||
|
],
|
||||||
|
"base": "dataset-answer/age-30-45.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "set",
|
||||||
|
"path": [
|
||||||
|
"answer",
|
||||||
|
"indexSize"
|
||||||
|
],
|
||||||
|
"value": 17
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"answer": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-verifiable-query-answer",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 2,
|
||||||
|
"commitmentHash": "0x4cd24b27c6c17493766099e86e188abfa3ac25d5e28a86e48792d20962a3486d",
|
||||||
|
"field": "age",
|
||||||
|
"from": 30,
|
||||||
|
"to": 45,
|
||||||
|
"indexSize": 17,
|
||||||
|
"rows": [
|
||||||
|
{
|
||||||
|
"pos": 5,
|
||||||
|
"i": 13,
|
||||||
|
"id": "r13",
|
||||||
|
"c": {
|
||||||
|
"age": "0x20131967249ae0130154c3dbbcbe8ab041200b4499ed270f2c9dd2c2ac3337f1",
|
||||||
|
"country": "0xffa95ca2afb61e95d628c3044b6e80746cccc11642ad35dafc6445cd905facdf",
|
||||||
|
"email": "0x2e6bca63ef9fad9e3ef55ae60405914a01577abd1caf0403109608f3f95a3700",
|
||||||
|
"note": "0x668a33b811cf8989b6ce36f7681928dd43371ea394d67df6136fb1580977121b"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "DE",
|
||||||
|
"salt": "b5ffd792267cac392d9d814c7809b198"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 31,
|
||||||
|
"salt": "314d5643f6f54376235b422614dd1562"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 13,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0xd3cbc725743f95177070e430cd03ec9f6af06bc64e84c0c84ad19e5d5562a983",
|
||||||
|
"0x85c6057fcfb4dd1d0fdfc0e4a925284def148b2ee0513c6858a29070aca4d50d",
|
||||||
|
"0xaa5a00c12fedc13a01a588cd3a41470e0fcaf2a5ee7b1dc27ffa5b4ff7a3311b",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 5,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0xc4723e9eb2ff7168890f1a366b02d3ed1452ac476e98996cd0c91634af7423ed",
|
||||||
|
"0x15febe1a672c219d5d2f9fa007af3b5a9c3e7e47a61fe89875ae1cf60ebfb2df",
|
||||||
|
"0xd62959693d950747d9c684becc5e4191521dd97b7496b0bb37326b54e6c58cb3",
|
||||||
|
"0xe07eef41b2e662b0af3e77b3c448378ecea5c476a9fa2f1da5e36d3a2bd1a010"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 6,
|
||||||
|
"i": 2,
|
||||||
|
"id": "r2",
|
||||||
|
"c": {
|
||||||
|
"age": "0xec15dd9b6e14956f9e3e9ea696f943972ab7601093c1c488ec18d40eb1431d42",
|
||||||
|
"country": "0x8d9e791776f47b5aeb079763edfdd40d26fc94742c8410a4f8d45e6ff1e901e6",
|
||||||
|
"email": "0xb9bfbcffff236803e9faabb11490ee1749c02a5566ae6e22380ae7dafc16322e",
|
||||||
|
"note": "0x86d1f7ae6700f8a22cb3c6a97b27d85d226beae6c4ca4c6eccd3e18b2fd85644"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "FR",
|
||||||
|
"salt": "6a20a411bddb217e3ba890baad65b87e"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 34,
|
||||||
|
"salt": "a83f62663d8735a83a784f603de20b88"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 2,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x559b8f51f7b31a6feed18feeb876141c8a19af7f49169aee7a9833b59b65eaa2",
|
||||||
|
"0x6528250e72e30d47b6b47dcefaa225bcb9fc1af0d20ee827c331486083baac56",
|
||||||
|
"0xef30cdbdc0b6467d74313d8b22b2054e32a17b3a484121ccc24cb16d8ad6fec0",
|
||||||
|
"0xe1ff507974903713d6ac9451d920007303edcffa4a82190f3976ba1c0b06d932"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 6,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0xdc9c9be2d7bc348acbd1cc004108f4af0386cec42492ae4fc3d62a9840d5f7bd",
|
||||||
|
"0x140d04bd298186a3efce73de4e3ea60f7f0300d21f2970efffc9f918ab004475",
|
||||||
|
"0xd62959693d950747d9c684becc5e4191521dd97b7496b0bb37326b54e6c58cb3",
|
||||||
|
"0xe07eef41b2e662b0af3e77b3c448378ecea5c476a9fa2f1da5e36d3a2bd1a010"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 7,
|
||||||
|
"i": 8,
|
||||||
|
"id": "r8",
|
||||||
|
"c": {
|
||||||
|
"age": "0xc6b4096f4947760268564e73c3afb7edf8c31f1fe8a5371c85eeb606ac22ea25",
|
||||||
|
"country": "0x9b959d0dad5df75cf7f29a408750b730b9fc41403f4fc50168cc14ce2ca437ee",
|
||||||
|
"email": "0x598b4823a385d1f34c855b8bb873241bc66ddbd0a8f6b09d92cba14534454484",
|
||||||
|
"note": "0x4bd0762227e6c5d7f6ceac6185a23fe5075a33576dcd1e4e51aa9a4b0e0a1158"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "RO",
|
||||||
|
"salt": "0a263d3e4223cc52f078c225a273e316"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 36,
|
||||||
|
"salt": "bcb34a3f54db5f21299add6f1c654670"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 8,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x7eb65d9a7f7ffa3039e627af43216d59accf7d3ca8a2951c2b0418c0199a1c9f",
|
||||||
|
"0x5290791446b6001dc5b5819d38d10ce762a0337736bbf8e90a111e8fe3c77efe",
|
||||||
|
"0xa06921f7770369ac27071f0fd2db808b66a643605278b92c06cabefffa234084",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 7,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x201009717c9f1fc80cd77e2a975390858ff4a4b76511bb7a31d36ea58bedeceb",
|
||||||
|
"0x140d04bd298186a3efce73de4e3ea60f7f0300d21f2970efffc9f918ab004475",
|
||||||
|
"0xd62959693d950747d9c684becc5e4191521dd97b7496b0bb37326b54e6c58cb3",
|
||||||
|
"0xe07eef41b2e662b0af3e77b3c448378ecea5c476a9fa2f1da5e36d3a2bd1a010"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 8,
|
||||||
|
"i": 14,
|
||||||
|
"id": "r14",
|
||||||
|
"c": {
|
||||||
|
"age": "0x2a86b9afad1aff1234aa90bdf96095d07ef5d479992a9081c21adc965a3c20c3",
|
||||||
|
"country": "0xebd5ee1cac77bb2b170c930d964032218f9f9c69284c89b213dbefb2d54b8eee",
|
||||||
|
"email": "0xb9319475dca37efe658a39f9f7c10d13dd21a32276ec911dc57a2677a4e4bb50",
|
||||||
|
"note": "0x3fdbec96439422e50f7faabf111c8c8c2690460aad638b745a6875678fd38f34"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "FR",
|
||||||
|
"salt": "15d426374424c484ffc8ae1bb736d960"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 38,
|
||||||
|
"salt": "d750eb0354fb432536e3c26e5c682210"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 14,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x12c9a4faf655bb09dbbb6a5fb3a24e44330e5d83222439ab2d2c2224c3791d84",
|
||||||
|
"0x1dd8a5c51c6218cb8ca3a57ee7683a06b1e94aaedc7252a6b296e4091c975377",
|
||||||
|
"0xaa5a00c12fedc13a01a588cd3a41470e0fcaf2a5ee7b1dc27ffa5b4ff7a3311b",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 8,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x9e4143c4b05ba68e176ae53bc5f122c1a490c3e1efeaa6bd9501110c5fb4d059",
|
||||||
|
"0xb3e51e807cccee32941e4d7009700ae40055645eb9e8bc6974ebe8ebf887a145",
|
||||||
|
"0x4b015cc323eaff67b141affbb3de0fc5e8052bf47a2f731b5605d19c23aa805a",
|
||||||
|
"0xca336a5bb1e6bf6a6302052ee7c87de5c9704132553a11e37b7e8f143c53439a"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 9,
|
||||||
|
"i": 3,
|
||||||
|
"id": "r3",
|
||||||
|
"c": {
|
||||||
|
"age": "0x13ec2a42a36e8b12ebdbd35af1d96962683a06b802e9e1f9e2e020487c691f7f",
|
||||||
|
"country": "0x1d18032f2e5acd907bffb4db2103b3d1d337388078ed9238a913c0cabecb928f",
|
||||||
|
"email": "0xe36f28b120650ba4c2597063b456d4d00847532129bd26dc8c150291265eef23",
|
||||||
|
"note": "0x086341fc0392c796d5f84f78f183deef347fa327e3d48707c460fc4d9c1f9910"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "ES",
|
||||||
|
"salt": "0ee225e77747d7afafb81d1bffdf68c0"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 41,
|
||||||
|
"salt": "9104931c19467233d902d1c967a15086"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 3,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x5083ccb306cbefaa21d75b69a47668b0cd3943865500881281d96e05429face8",
|
||||||
|
"0x6528250e72e30d47b6b47dcefaa225bcb9fc1af0d20ee827c331486083baac56",
|
||||||
|
"0xef30cdbdc0b6467d74313d8b22b2054e32a17b3a484121ccc24cb16d8ad6fec0",
|
||||||
|
"0xe1ff507974903713d6ac9451d920007303edcffa4a82190f3976ba1c0b06d932"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 9,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0xd0d85473c9adae91cb97fce47e564181ae990b38260de5efb1351e02ff9c3524",
|
||||||
|
"0xb3e51e807cccee32941e4d7009700ae40055645eb9e8bc6974ebe8ebf887a145",
|
||||||
|
"0x4b015cc323eaff67b141affbb3de0fc5e8052bf47a2f731b5605d19c23aa805a",
|
||||||
|
"0xca336a5bb1e6bf6a6302052ee7c87de5c9704132553a11e37b7e8f143c53439a"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 10,
|
||||||
|
"i": 9,
|
||||||
|
"id": "r9",
|
||||||
|
"c": {
|
||||||
|
"age": "0x1e440a3ce1d15a73c509b5b4da506157e42ac6cd8e96d486df66d049bfe8b8e6",
|
||||||
|
"country": "0xd5f75ca5ae34d41c6c6fe30f01061bec1260fd8fa9a134da20c616bd61b33428",
|
||||||
|
"email": "0x762b765d7cda44c06281ea75fea30bfc377adffe33d9df4ba065566f503ced67",
|
||||||
|
"note": "0x42b57a86fde59862104e06c5f9d7324e5edf2506e5c3874e0ae85e375ec46cdb"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "DE",
|
||||||
|
"salt": "b0371c1e4117eab6e65f46c8e7dd9b5c"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 43,
|
||||||
|
"salt": "994a5723c379b33784b813642d91bca5"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 9,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x65c032449d009130a92eb4bfc7a17fe17e0256c141a980d56ef6f7acc5ea65c1",
|
||||||
|
"0x5290791446b6001dc5b5819d38d10ce762a0337736bbf8e90a111e8fe3c77efe",
|
||||||
|
"0xa06921f7770369ac27071f0fd2db808b66a643605278b92c06cabefffa234084",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 10,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0xccb00a519667f5206d54663c1449cfe26d2a69a21b58934e639d7fa5274a610b",
|
||||||
|
"0x59b6ac5d90106bce7337c4bbb3a25828e76f9fa97e001caee65d2540dad98ef0",
|
||||||
|
"0x4b015cc323eaff67b141affbb3de0fc5e8052bf47a2f731b5605d19c23aa805a",
|
||||||
|
"0xca336a5bb1e6bf6a6302052ee7c87de5c9704132553a11e37b7e8f143c53439a"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 11,
|
||||||
|
"i": 15,
|
||||||
|
"id": "r15",
|
||||||
|
"c": {
|
||||||
|
"age": "0x3e1980c7f773e302e4f9bf175e8edec38a53da7f2e46a5e371a77d57842c02fb",
|
||||||
|
"country": "0x1919bce313ba6d86fc4bf751e1f67b0a39b699615086212681149ff62c0885cf",
|
||||||
|
"email": "0x8c8c71ef8dd79da410a4cfc25639ea6119cbdd02c031eaa3ee9d661c65ba9aea",
|
||||||
|
"note": "0x2b31e8289c6fa63c019472defa0f58b1aad47fb3ff63a99484ddf9b95d3a3bd5"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "ES",
|
||||||
|
"salt": "2e559c28fa7a80ed4f38fa8b45f2c82e"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 45,
|
||||||
|
"salt": "ddef75f62d6301533303c7876d013294"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 15,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x7bfd292a9ed546f18580c5251b801dc2756d80ab29a3c64eb0b81433a313307f",
|
||||||
|
"0x1dd8a5c51c6218cb8ca3a57ee7683a06b1e94aaedc7252a6b296e4091c975377",
|
||||||
|
"0xaa5a00c12fedc13a01a588cd3a41470e0fcaf2a5ee7b1dc27ffa5b4ff7a3311b",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 11,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x7144d8a6be6e7645cd0c8b69f028fc16b10e4f17fa86296a23c261922d75753e",
|
||||||
|
"0x59b6ac5d90106bce7337c4bbb3a25828e76f9fa97e001caee65d2540dad98ef0",
|
||||||
|
"0x4b015cc323eaff67b141affbb3de0fc5e8052bf47a2f731b5605d19c23aa805a",
|
||||||
|
"0xca336a5bb1e6bf6a6302052ee7c87de5c9704132553a11e37b7e8f143c53439a"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"before": {
|
||||||
|
"pos": 4,
|
||||||
|
"value": 29,
|
||||||
|
"i": 7,
|
||||||
|
"recordLeaf": "0xabbddf51854536b5605dc7c0630fd2fa170d2dcd9b1c5312aec6fea74c038c0d",
|
||||||
|
"indexProof": {
|
||||||
|
"index": 4,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x30a0dd012169393d0dea8791c0f24d70cc8d4c70d088f420825ec0dbf9230f67",
|
||||||
|
"0x15febe1a672c219d5d2f9fa007af3b5a9c3e7e47a61fe89875ae1cf60ebfb2df",
|
||||||
|
"0xd62959693d950747d9c684becc5e4191521dd97b7496b0bb37326b54e6c58cb3",
|
||||||
|
"0xe07eef41b2e662b0af3e77b3c448378ecea5c476a9fa2f1da5e36d3a2bd1a010"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"after": {
|
||||||
|
"pos": 12,
|
||||||
|
"value": 48,
|
||||||
|
"i": 4,
|
||||||
|
"recordLeaf": "0x423f202599ef3d02b5f3ff547235afd8e222ed7c26c61a01e4c15de7e2f4948b",
|
||||||
|
"indexProof": {
|
||||||
|
"index": 12,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x6e97bf24fed1277d34cc86719a8f63aab95067adfa7c5a6e70bde9daf8870f47",
|
||||||
|
"0x775811db8d2472f42cad2aeebbc3826f5f959e1f174501ca8ab4380ad815702a",
|
||||||
|
"0xec4bd620657cb68e435f6d2a71199370056c925b6184624a743fe49d818e9370",
|
||||||
|
"0xca336a5bb1e6bf6a6302052ee7c87de5c9704132553a11e37b7e8f143c53439a"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"commitment": {
|
||||||
|
"v": 1,
|
||||||
|
"format": "aere-verifiable-dataset-1",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 2,
|
||||||
|
"size": 16,
|
||||||
|
"logRoot": "0x7b5bc02c63e970752f38d69995e4771ef596b56a640fc9addef32d570970be68",
|
||||||
|
"createdAt": "2026-10-03T00:01:00.000Z",
|
||||||
|
"indexes": {
|
||||||
|
"age": {
|
||||||
|
"root": "0xfc641a2eadd7d876f9b4fe284dac094fb83543cf43a2c2f80e88f6d9e98114a7",
|
||||||
|
"size": 16
|
||||||
|
},
|
||||||
|
"country": {
|
||||||
|
"root": "0x5be9a95a39966382ab8d83179ae93380d723d49eff2f3b76a290a72a8ee60149",
|
||||||
|
"size": 16
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"previous": "0xcea41f8f24fd00aa268619aac5c49b184e5971648db52fb514efdf5f0686d9aa"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"dataset.commitment"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -0,0 +1,392 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "dataset-answer/age-30-45.index-undisclosed",
|
||||||
|
"artifact": "dataset-answer",
|
||||||
|
"title": "a row that does not disclose the queried field",
|
||||||
|
"source": "derived from dataset-answer/age-30-45.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"dataset.commitment",
|
||||||
|
"dataset.completeness",
|
||||||
|
"dataset.field",
|
||||||
|
"dataset.form",
|
||||||
|
"dataset.inclusion",
|
||||||
|
"dataset.index",
|
||||||
|
"dataset.order",
|
||||||
|
"dataset.range"
|
||||||
|
],
|
||||||
|
"base": "dataset-answer/age-30-45.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "remove",
|
||||||
|
"path": [
|
||||||
|
"answer",
|
||||||
|
"rows",
|
||||||
|
1,
|
||||||
|
"disclosed",
|
||||||
|
"age"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"answer": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-verifiable-query-answer",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 2,
|
||||||
|
"commitmentHash": "0x4cd24b27c6c17493766099e86e188abfa3ac25d5e28a86e48792d20962a3486d",
|
||||||
|
"field": "age",
|
||||||
|
"from": 30,
|
||||||
|
"to": 45,
|
||||||
|
"indexSize": 16,
|
||||||
|
"rows": [
|
||||||
|
{
|
||||||
|
"pos": 5,
|
||||||
|
"i": 13,
|
||||||
|
"id": "r13",
|
||||||
|
"c": {
|
||||||
|
"age": "0x20131967249ae0130154c3dbbcbe8ab041200b4499ed270f2c9dd2c2ac3337f1",
|
||||||
|
"country": "0xffa95ca2afb61e95d628c3044b6e80746cccc11642ad35dafc6445cd905facdf",
|
||||||
|
"email": "0x2e6bca63ef9fad9e3ef55ae60405914a01577abd1caf0403109608f3f95a3700",
|
||||||
|
"note": "0x668a33b811cf8989b6ce36f7681928dd43371ea394d67df6136fb1580977121b"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "DE",
|
||||||
|
"salt": "b5ffd792267cac392d9d814c7809b198"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 31,
|
||||||
|
"salt": "314d5643f6f54376235b422614dd1562"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 13,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0xd3cbc725743f95177070e430cd03ec9f6af06bc64e84c0c84ad19e5d5562a983",
|
||||||
|
"0x85c6057fcfb4dd1d0fdfc0e4a925284def148b2ee0513c6858a29070aca4d50d",
|
||||||
|
"0xaa5a00c12fedc13a01a588cd3a41470e0fcaf2a5ee7b1dc27ffa5b4ff7a3311b",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 5,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0xc4723e9eb2ff7168890f1a366b02d3ed1452ac476e98996cd0c91634af7423ed",
|
||||||
|
"0x15febe1a672c219d5d2f9fa007af3b5a9c3e7e47a61fe89875ae1cf60ebfb2df",
|
||||||
|
"0xd62959693d950747d9c684becc5e4191521dd97b7496b0bb37326b54e6c58cb3",
|
||||||
|
"0xe07eef41b2e662b0af3e77b3c448378ecea5c476a9fa2f1da5e36d3a2bd1a010"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 6,
|
||||||
|
"i": 2,
|
||||||
|
"id": "r2",
|
||||||
|
"c": {
|
||||||
|
"age": "0xec15dd9b6e14956f9e3e9ea696f943972ab7601093c1c488ec18d40eb1431d42",
|
||||||
|
"country": "0x8d9e791776f47b5aeb079763edfdd40d26fc94742c8410a4f8d45e6ff1e901e6",
|
||||||
|
"email": "0xb9bfbcffff236803e9faabb11490ee1749c02a5566ae6e22380ae7dafc16322e",
|
||||||
|
"note": "0x86d1f7ae6700f8a22cb3c6a97b27d85d226beae6c4ca4c6eccd3e18b2fd85644"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "FR",
|
||||||
|
"salt": "6a20a411bddb217e3ba890baad65b87e"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 2,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x559b8f51f7b31a6feed18feeb876141c8a19af7f49169aee7a9833b59b65eaa2",
|
||||||
|
"0x6528250e72e30d47b6b47dcefaa225bcb9fc1af0d20ee827c331486083baac56",
|
||||||
|
"0xef30cdbdc0b6467d74313d8b22b2054e32a17b3a484121ccc24cb16d8ad6fec0",
|
||||||
|
"0xe1ff507974903713d6ac9451d920007303edcffa4a82190f3976ba1c0b06d932"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 6,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0xdc9c9be2d7bc348acbd1cc004108f4af0386cec42492ae4fc3d62a9840d5f7bd",
|
||||||
|
"0x140d04bd298186a3efce73de4e3ea60f7f0300d21f2970efffc9f918ab004475",
|
||||||
|
"0xd62959693d950747d9c684becc5e4191521dd97b7496b0bb37326b54e6c58cb3",
|
||||||
|
"0xe07eef41b2e662b0af3e77b3c448378ecea5c476a9fa2f1da5e36d3a2bd1a010"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 7,
|
||||||
|
"i": 8,
|
||||||
|
"id": "r8",
|
||||||
|
"c": {
|
||||||
|
"age": "0xc6b4096f4947760268564e73c3afb7edf8c31f1fe8a5371c85eeb606ac22ea25",
|
||||||
|
"country": "0x9b959d0dad5df75cf7f29a408750b730b9fc41403f4fc50168cc14ce2ca437ee",
|
||||||
|
"email": "0x598b4823a385d1f34c855b8bb873241bc66ddbd0a8f6b09d92cba14534454484",
|
||||||
|
"note": "0x4bd0762227e6c5d7f6ceac6185a23fe5075a33576dcd1e4e51aa9a4b0e0a1158"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "RO",
|
||||||
|
"salt": "0a263d3e4223cc52f078c225a273e316"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 36,
|
||||||
|
"salt": "bcb34a3f54db5f21299add6f1c654670"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 8,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x7eb65d9a7f7ffa3039e627af43216d59accf7d3ca8a2951c2b0418c0199a1c9f",
|
||||||
|
"0x5290791446b6001dc5b5819d38d10ce762a0337736bbf8e90a111e8fe3c77efe",
|
||||||
|
"0xa06921f7770369ac27071f0fd2db808b66a643605278b92c06cabefffa234084",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 7,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x201009717c9f1fc80cd77e2a975390858ff4a4b76511bb7a31d36ea58bedeceb",
|
||||||
|
"0x140d04bd298186a3efce73de4e3ea60f7f0300d21f2970efffc9f918ab004475",
|
||||||
|
"0xd62959693d950747d9c684becc5e4191521dd97b7496b0bb37326b54e6c58cb3",
|
||||||
|
"0xe07eef41b2e662b0af3e77b3c448378ecea5c476a9fa2f1da5e36d3a2bd1a010"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 8,
|
||||||
|
"i": 14,
|
||||||
|
"id": "r14",
|
||||||
|
"c": {
|
||||||
|
"age": "0x2a86b9afad1aff1234aa90bdf96095d07ef5d479992a9081c21adc965a3c20c3",
|
||||||
|
"country": "0xebd5ee1cac77bb2b170c930d964032218f9f9c69284c89b213dbefb2d54b8eee",
|
||||||
|
"email": "0xb9319475dca37efe658a39f9f7c10d13dd21a32276ec911dc57a2677a4e4bb50",
|
||||||
|
"note": "0x3fdbec96439422e50f7faabf111c8c8c2690460aad638b745a6875678fd38f34"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "FR",
|
||||||
|
"salt": "15d426374424c484ffc8ae1bb736d960"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 38,
|
||||||
|
"salt": "d750eb0354fb432536e3c26e5c682210"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 14,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x12c9a4faf655bb09dbbb6a5fb3a24e44330e5d83222439ab2d2c2224c3791d84",
|
||||||
|
"0x1dd8a5c51c6218cb8ca3a57ee7683a06b1e94aaedc7252a6b296e4091c975377",
|
||||||
|
"0xaa5a00c12fedc13a01a588cd3a41470e0fcaf2a5ee7b1dc27ffa5b4ff7a3311b",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 8,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x9e4143c4b05ba68e176ae53bc5f122c1a490c3e1efeaa6bd9501110c5fb4d059",
|
||||||
|
"0xb3e51e807cccee32941e4d7009700ae40055645eb9e8bc6974ebe8ebf887a145",
|
||||||
|
"0x4b015cc323eaff67b141affbb3de0fc5e8052bf47a2f731b5605d19c23aa805a",
|
||||||
|
"0xca336a5bb1e6bf6a6302052ee7c87de5c9704132553a11e37b7e8f143c53439a"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 9,
|
||||||
|
"i": 3,
|
||||||
|
"id": "r3",
|
||||||
|
"c": {
|
||||||
|
"age": "0x13ec2a42a36e8b12ebdbd35af1d96962683a06b802e9e1f9e2e020487c691f7f",
|
||||||
|
"country": "0x1d18032f2e5acd907bffb4db2103b3d1d337388078ed9238a913c0cabecb928f",
|
||||||
|
"email": "0xe36f28b120650ba4c2597063b456d4d00847532129bd26dc8c150291265eef23",
|
||||||
|
"note": "0x086341fc0392c796d5f84f78f183deef347fa327e3d48707c460fc4d9c1f9910"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "ES",
|
||||||
|
"salt": "0ee225e77747d7afafb81d1bffdf68c0"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 41,
|
||||||
|
"salt": "9104931c19467233d902d1c967a15086"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 3,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x5083ccb306cbefaa21d75b69a47668b0cd3943865500881281d96e05429face8",
|
||||||
|
"0x6528250e72e30d47b6b47dcefaa225bcb9fc1af0d20ee827c331486083baac56",
|
||||||
|
"0xef30cdbdc0b6467d74313d8b22b2054e32a17b3a484121ccc24cb16d8ad6fec0",
|
||||||
|
"0xe1ff507974903713d6ac9451d920007303edcffa4a82190f3976ba1c0b06d932"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 9,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0xd0d85473c9adae91cb97fce47e564181ae990b38260de5efb1351e02ff9c3524",
|
||||||
|
"0xb3e51e807cccee32941e4d7009700ae40055645eb9e8bc6974ebe8ebf887a145",
|
||||||
|
"0x4b015cc323eaff67b141affbb3de0fc5e8052bf47a2f731b5605d19c23aa805a",
|
||||||
|
"0xca336a5bb1e6bf6a6302052ee7c87de5c9704132553a11e37b7e8f143c53439a"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 10,
|
||||||
|
"i": 9,
|
||||||
|
"id": "r9",
|
||||||
|
"c": {
|
||||||
|
"age": "0x1e440a3ce1d15a73c509b5b4da506157e42ac6cd8e96d486df66d049bfe8b8e6",
|
||||||
|
"country": "0xd5f75ca5ae34d41c6c6fe30f01061bec1260fd8fa9a134da20c616bd61b33428",
|
||||||
|
"email": "0x762b765d7cda44c06281ea75fea30bfc377adffe33d9df4ba065566f503ced67",
|
||||||
|
"note": "0x42b57a86fde59862104e06c5f9d7324e5edf2506e5c3874e0ae85e375ec46cdb"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "DE",
|
||||||
|
"salt": "b0371c1e4117eab6e65f46c8e7dd9b5c"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 43,
|
||||||
|
"salt": "994a5723c379b33784b813642d91bca5"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 9,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x65c032449d009130a92eb4bfc7a17fe17e0256c141a980d56ef6f7acc5ea65c1",
|
||||||
|
"0x5290791446b6001dc5b5819d38d10ce762a0337736bbf8e90a111e8fe3c77efe",
|
||||||
|
"0xa06921f7770369ac27071f0fd2db808b66a643605278b92c06cabefffa234084",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 10,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0xccb00a519667f5206d54663c1449cfe26d2a69a21b58934e639d7fa5274a610b",
|
||||||
|
"0x59b6ac5d90106bce7337c4bbb3a25828e76f9fa97e001caee65d2540dad98ef0",
|
||||||
|
"0x4b015cc323eaff67b141affbb3de0fc5e8052bf47a2f731b5605d19c23aa805a",
|
||||||
|
"0xca336a5bb1e6bf6a6302052ee7c87de5c9704132553a11e37b7e8f143c53439a"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 11,
|
||||||
|
"i": 15,
|
||||||
|
"id": "r15",
|
||||||
|
"c": {
|
||||||
|
"age": "0x3e1980c7f773e302e4f9bf175e8edec38a53da7f2e46a5e371a77d57842c02fb",
|
||||||
|
"country": "0x1919bce313ba6d86fc4bf751e1f67b0a39b699615086212681149ff62c0885cf",
|
||||||
|
"email": "0x8c8c71ef8dd79da410a4cfc25639ea6119cbdd02c031eaa3ee9d661c65ba9aea",
|
||||||
|
"note": "0x2b31e8289c6fa63c019472defa0f58b1aad47fb3ff63a99484ddf9b95d3a3bd5"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "ES",
|
||||||
|
"salt": "2e559c28fa7a80ed4f38fa8b45f2c82e"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 45,
|
||||||
|
"salt": "ddef75f62d6301533303c7876d013294"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 15,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x7bfd292a9ed546f18580c5251b801dc2756d80ab29a3c64eb0b81433a313307f",
|
||||||
|
"0x1dd8a5c51c6218cb8ca3a57ee7683a06b1e94aaedc7252a6b296e4091c975377",
|
||||||
|
"0xaa5a00c12fedc13a01a588cd3a41470e0fcaf2a5ee7b1dc27ffa5b4ff7a3311b",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 11,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x7144d8a6be6e7645cd0c8b69f028fc16b10e4f17fa86296a23c261922d75753e",
|
||||||
|
"0x59b6ac5d90106bce7337c4bbb3a25828e76f9fa97e001caee65d2540dad98ef0",
|
||||||
|
"0x4b015cc323eaff67b141affbb3de0fc5e8052bf47a2f731b5605d19c23aa805a",
|
||||||
|
"0xca336a5bb1e6bf6a6302052ee7c87de5c9704132553a11e37b7e8f143c53439a"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"before": {
|
||||||
|
"pos": 4,
|
||||||
|
"value": 29,
|
||||||
|
"i": 7,
|
||||||
|
"recordLeaf": "0xabbddf51854536b5605dc7c0630fd2fa170d2dcd9b1c5312aec6fea74c038c0d",
|
||||||
|
"indexProof": {
|
||||||
|
"index": 4,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x30a0dd012169393d0dea8791c0f24d70cc8d4c70d088f420825ec0dbf9230f67",
|
||||||
|
"0x15febe1a672c219d5d2f9fa007af3b5a9c3e7e47a61fe89875ae1cf60ebfb2df",
|
||||||
|
"0xd62959693d950747d9c684becc5e4191521dd97b7496b0bb37326b54e6c58cb3",
|
||||||
|
"0xe07eef41b2e662b0af3e77b3c448378ecea5c476a9fa2f1da5e36d3a2bd1a010"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"after": {
|
||||||
|
"pos": 12,
|
||||||
|
"value": 48,
|
||||||
|
"i": 4,
|
||||||
|
"recordLeaf": "0x423f202599ef3d02b5f3ff547235afd8e222ed7c26c61a01e4c15de7e2f4948b",
|
||||||
|
"indexProof": {
|
||||||
|
"index": 12,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x6e97bf24fed1277d34cc86719a8f63aab95067adfa7c5a6e70bde9daf8870f47",
|
||||||
|
"0x775811db8d2472f42cad2aeebbc3826f5f959e1f174501ca8ab4380ad815702a",
|
||||||
|
"0xec4bd620657cb68e435f6d2a71199370056c925b6184624a743fe49d818e9370",
|
||||||
|
"0xca336a5bb1e6bf6a6302052ee7c87de5c9704132553a11e37b7e8f143c53439a"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"commitment": {
|
||||||
|
"v": 1,
|
||||||
|
"format": "aere-verifiable-dataset-1",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 2,
|
||||||
|
"size": 16,
|
||||||
|
"logRoot": "0x7b5bc02c63e970752f38d69995e4771ef596b56a640fc9addef32d570970be68",
|
||||||
|
"createdAt": "2026-10-03T00:01:00.000Z",
|
||||||
|
"indexes": {
|
||||||
|
"age": {
|
||||||
|
"root": "0xfc641a2eadd7d876f9b4fe284dac094fb83543cf43a2c2f80e88f6d9e98114a7",
|
||||||
|
"size": 16
|
||||||
|
},
|
||||||
|
"country": {
|
||||||
|
"root": "0x5be9a95a39966382ab8d83179ae93380d723d49eff2f3b76a290a72a8ee60149",
|
||||||
|
"size": 16
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"previous": "0xcea41f8f24fd00aa268619aac5c49b184e5971648db52fb514efdf5f0686d9aa"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"dataset.index"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
398
conformance/vectori/dataset-answer/age-30-45.index.json
Normal file
398
conformance/vectori/dataset-answer/age-30-45.index.json
Normal file
@ -0,0 +1,398 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "dataset-answer/age-30-45.index",
|
||||||
|
"artifact": "dataset-answer",
|
||||||
|
"title": "one hash of a row's index proof changed",
|
||||||
|
"source": "derived from dataset-answer/age-30-45.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"dataset.commitment",
|
||||||
|
"dataset.completeness",
|
||||||
|
"dataset.field",
|
||||||
|
"dataset.form",
|
||||||
|
"dataset.inclusion",
|
||||||
|
"dataset.index",
|
||||||
|
"dataset.order",
|
||||||
|
"dataset.range"
|
||||||
|
],
|
||||||
|
"base": "dataset-answer/age-30-45.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "set",
|
||||||
|
"path": [
|
||||||
|
"answer",
|
||||||
|
"rows",
|
||||||
|
1,
|
||||||
|
"indexProof",
|
||||||
|
"path",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"value": "0xdc9c9be2d7bc348acbd1cc004108f4af0386cec42492ae4fc3d62a9840d5f7b0"
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"answer": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-verifiable-query-answer",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 2,
|
||||||
|
"commitmentHash": "0x4cd24b27c6c17493766099e86e188abfa3ac25d5e28a86e48792d20962a3486d",
|
||||||
|
"field": "age",
|
||||||
|
"from": 30,
|
||||||
|
"to": 45,
|
||||||
|
"indexSize": 16,
|
||||||
|
"rows": [
|
||||||
|
{
|
||||||
|
"pos": 5,
|
||||||
|
"i": 13,
|
||||||
|
"id": "r13",
|
||||||
|
"c": {
|
||||||
|
"age": "0x20131967249ae0130154c3dbbcbe8ab041200b4499ed270f2c9dd2c2ac3337f1",
|
||||||
|
"country": "0xffa95ca2afb61e95d628c3044b6e80746cccc11642ad35dafc6445cd905facdf",
|
||||||
|
"email": "0x2e6bca63ef9fad9e3ef55ae60405914a01577abd1caf0403109608f3f95a3700",
|
||||||
|
"note": "0x668a33b811cf8989b6ce36f7681928dd43371ea394d67df6136fb1580977121b"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "DE",
|
||||||
|
"salt": "b5ffd792267cac392d9d814c7809b198"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 31,
|
||||||
|
"salt": "314d5643f6f54376235b422614dd1562"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 13,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0xd3cbc725743f95177070e430cd03ec9f6af06bc64e84c0c84ad19e5d5562a983",
|
||||||
|
"0x85c6057fcfb4dd1d0fdfc0e4a925284def148b2ee0513c6858a29070aca4d50d",
|
||||||
|
"0xaa5a00c12fedc13a01a588cd3a41470e0fcaf2a5ee7b1dc27ffa5b4ff7a3311b",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 5,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0xc4723e9eb2ff7168890f1a366b02d3ed1452ac476e98996cd0c91634af7423ed",
|
||||||
|
"0x15febe1a672c219d5d2f9fa007af3b5a9c3e7e47a61fe89875ae1cf60ebfb2df",
|
||||||
|
"0xd62959693d950747d9c684becc5e4191521dd97b7496b0bb37326b54e6c58cb3",
|
||||||
|
"0xe07eef41b2e662b0af3e77b3c448378ecea5c476a9fa2f1da5e36d3a2bd1a010"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 6,
|
||||||
|
"i": 2,
|
||||||
|
"id": "r2",
|
||||||
|
"c": {
|
||||||
|
"age": "0xec15dd9b6e14956f9e3e9ea696f943972ab7601093c1c488ec18d40eb1431d42",
|
||||||
|
"country": "0x8d9e791776f47b5aeb079763edfdd40d26fc94742c8410a4f8d45e6ff1e901e6",
|
||||||
|
"email": "0xb9bfbcffff236803e9faabb11490ee1749c02a5566ae6e22380ae7dafc16322e",
|
||||||
|
"note": "0x86d1f7ae6700f8a22cb3c6a97b27d85d226beae6c4ca4c6eccd3e18b2fd85644"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "FR",
|
||||||
|
"salt": "6a20a411bddb217e3ba890baad65b87e"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 34,
|
||||||
|
"salt": "a83f62663d8735a83a784f603de20b88"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 2,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x559b8f51f7b31a6feed18feeb876141c8a19af7f49169aee7a9833b59b65eaa2",
|
||||||
|
"0x6528250e72e30d47b6b47dcefaa225bcb9fc1af0d20ee827c331486083baac56",
|
||||||
|
"0xef30cdbdc0b6467d74313d8b22b2054e32a17b3a484121ccc24cb16d8ad6fec0",
|
||||||
|
"0xe1ff507974903713d6ac9451d920007303edcffa4a82190f3976ba1c0b06d932"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 6,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0xdc9c9be2d7bc348acbd1cc004108f4af0386cec42492ae4fc3d62a9840d5f7b0",
|
||||||
|
"0x140d04bd298186a3efce73de4e3ea60f7f0300d21f2970efffc9f918ab004475",
|
||||||
|
"0xd62959693d950747d9c684becc5e4191521dd97b7496b0bb37326b54e6c58cb3",
|
||||||
|
"0xe07eef41b2e662b0af3e77b3c448378ecea5c476a9fa2f1da5e36d3a2bd1a010"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 7,
|
||||||
|
"i": 8,
|
||||||
|
"id": "r8",
|
||||||
|
"c": {
|
||||||
|
"age": "0xc6b4096f4947760268564e73c3afb7edf8c31f1fe8a5371c85eeb606ac22ea25",
|
||||||
|
"country": "0x9b959d0dad5df75cf7f29a408750b730b9fc41403f4fc50168cc14ce2ca437ee",
|
||||||
|
"email": "0x598b4823a385d1f34c855b8bb873241bc66ddbd0a8f6b09d92cba14534454484",
|
||||||
|
"note": "0x4bd0762227e6c5d7f6ceac6185a23fe5075a33576dcd1e4e51aa9a4b0e0a1158"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "RO",
|
||||||
|
"salt": "0a263d3e4223cc52f078c225a273e316"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 36,
|
||||||
|
"salt": "bcb34a3f54db5f21299add6f1c654670"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 8,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x7eb65d9a7f7ffa3039e627af43216d59accf7d3ca8a2951c2b0418c0199a1c9f",
|
||||||
|
"0x5290791446b6001dc5b5819d38d10ce762a0337736bbf8e90a111e8fe3c77efe",
|
||||||
|
"0xa06921f7770369ac27071f0fd2db808b66a643605278b92c06cabefffa234084",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 7,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x201009717c9f1fc80cd77e2a975390858ff4a4b76511bb7a31d36ea58bedeceb",
|
||||||
|
"0x140d04bd298186a3efce73de4e3ea60f7f0300d21f2970efffc9f918ab004475",
|
||||||
|
"0xd62959693d950747d9c684becc5e4191521dd97b7496b0bb37326b54e6c58cb3",
|
||||||
|
"0xe07eef41b2e662b0af3e77b3c448378ecea5c476a9fa2f1da5e36d3a2bd1a010"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 8,
|
||||||
|
"i": 14,
|
||||||
|
"id": "r14",
|
||||||
|
"c": {
|
||||||
|
"age": "0x2a86b9afad1aff1234aa90bdf96095d07ef5d479992a9081c21adc965a3c20c3",
|
||||||
|
"country": "0xebd5ee1cac77bb2b170c930d964032218f9f9c69284c89b213dbefb2d54b8eee",
|
||||||
|
"email": "0xb9319475dca37efe658a39f9f7c10d13dd21a32276ec911dc57a2677a4e4bb50",
|
||||||
|
"note": "0x3fdbec96439422e50f7faabf111c8c8c2690460aad638b745a6875678fd38f34"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "FR",
|
||||||
|
"salt": "15d426374424c484ffc8ae1bb736d960"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 38,
|
||||||
|
"salt": "d750eb0354fb432536e3c26e5c682210"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 14,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x12c9a4faf655bb09dbbb6a5fb3a24e44330e5d83222439ab2d2c2224c3791d84",
|
||||||
|
"0x1dd8a5c51c6218cb8ca3a57ee7683a06b1e94aaedc7252a6b296e4091c975377",
|
||||||
|
"0xaa5a00c12fedc13a01a588cd3a41470e0fcaf2a5ee7b1dc27ffa5b4ff7a3311b",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 8,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x9e4143c4b05ba68e176ae53bc5f122c1a490c3e1efeaa6bd9501110c5fb4d059",
|
||||||
|
"0xb3e51e807cccee32941e4d7009700ae40055645eb9e8bc6974ebe8ebf887a145",
|
||||||
|
"0x4b015cc323eaff67b141affbb3de0fc5e8052bf47a2f731b5605d19c23aa805a",
|
||||||
|
"0xca336a5bb1e6bf6a6302052ee7c87de5c9704132553a11e37b7e8f143c53439a"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 9,
|
||||||
|
"i": 3,
|
||||||
|
"id": "r3",
|
||||||
|
"c": {
|
||||||
|
"age": "0x13ec2a42a36e8b12ebdbd35af1d96962683a06b802e9e1f9e2e020487c691f7f",
|
||||||
|
"country": "0x1d18032f2e5acd907bffb4db2103b3d1d337388078ed9238a913c0cabecb928f",
|
||||||
|
"email": "0xe36f28b120650ba4c2597063b456d4d00847532129bd26dc8c150291265eef23",
|
||||||
|
"note": "0x086341fc0392c796d5f84f78f183deef347fa327e3d48707c460fc4d9c1f9910"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "ES",
|
||||||
|
"salt": "0ee225e77747d7afafb81d1bffdf68c0"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 41,
|
||||||
|
"salt": "9104931c19467233d902d1c967a15086"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 3,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x5083ccb306cbefaa21d75b69a47668b0cd3943865500881281d96e05429face8",
|
||||||
|
"0x6528250e72e30d47b6b47dcefaa225bcb9fc1af0d20ee827c331486083baac56",
|
||||||
|
"0xef30cdbdc0b6467d74313d8b22b2054e32a17b3a484121ccc24cb16d8ad6fec0",
|
||||||
|
"0xe1ff507974903713d6ac9451d920007303edcffa4a82190f3976ba1c0b06d932"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 9,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0xd0d85473c9adae91cb97fce47e564181ae990b38260de5efb1351e02ff9c3524",
|
||||||
|
"0xb3e51e807cccee32941e4d7009700ae40055645eb9e8bc6974ebe8ebf887a145",
|
||||||
|
"0x4b015cc323eaff67b141affbb3de0fc5e8052bf47a2f731b5605d19c23aa805a",
|
||||||
|
"0xca336a5bb1e6bf6a6302052ee7c87de5c9704132553a11e37b7e8f143c53439a"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 10,
|
||||||
|
"i": 9,
|
||||||
|
"id": "r9",
|
||||||
|
"c": {
|
||||||
|
"age": "0x1e440a3ce1d15a73c509b5b4da506157e42ac6cd8e96d486df66d049bfe8b8e6",
|
||||||
|
"country": "0xd5f75ca5ae34d41c6c6fe30f01061bec1260fd8fa9a134da20c616bd61b33428",
|
||||||
|
"email": "0x762b765d7cda44c06281ea75fea30bfc377adffe33d9df4ba065566f503ced67",
|
||||||
|
"note": "0x42b57a86fde59862104e06c5f9d7324e5edf2506e5c3874e0ae85e375ec46cdb"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "DE",
|
||||||
|
"salt": "b0371c1e4117eab6e65f46c8e7dd9b5c"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 43,
|
||||||
|
"salt": "994a5723c379b33784b813642d91bca5"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 9,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x65c032449d009130a92eb4bfc7a17fe17e0256c141a980d56ef6f7acc5ea65c1",
|
||||||
|
"0x5290791446b6001dc5b5819d38d10ce762a0337736bbf8e90a111e8fe3c77efe",
|
||||||
|
"0xa06921f7770369ac27071f0fd2db808b66a643605278b92c06cabefffa234084",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 10,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0xccb00a519667f5206d54663c1449cfe26d2a69a21b58934e639d7fa5274a610b",
|
||||||
|
"0x59b6ac5d90106bce7337c4bbb3a25828e76f9fa97e001caee65d2540dad98ef0",
|
||||||
|
"0x4b015cc323eaff67b141affbb3de0fc5e8052bf47a2f731b5605d19c23aa805a",
|
||||||
|
"0xca336a5bb1e6bf6a6302052ee7c87de5c9704132553a11e37b7e8f143c53439a"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 11,
|
||||||
|
"i": 15,
|
||||||
|
"id": "r15",
|
||||||
|
"c": {
|
||||||
|
"age": "0x3e1980c7f773e302e4f9bf175e8edec38a53da7f2e46a5e371a77d57842c02fb",
|
||||||
|
"country": "0x1919bce313ba6d86fc4bf751e1f67b0a39b699615086212681149ff62c0885cf",
|
||||||
|
"email": "0x8c8c71ef8dd79da410a4cfc25639ea6119cbdd02c031eaa3ee9d661c65ba9aea",
|
||||||
|
"note": "0x2b31e8289c6fa63c019472defa0f58b1aad47fb3ff63a99484ddf9b95d3a3bd5"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "ES",
|
||||||
|
"salt": "2e559c28fa7a80ed4f38fa8b45f2c82e"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 45,
|
||||||
|
"salt": "ddef75f62d6301533303c7876d013294"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 15,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x7bfd292a9ed546f18580c5251b801dc2756d80ab29a3c64eb0b81433a313307f",
|
||||||
|
"0x1dd8a5c51c6218cb8ca3a57ee7683a06b1e94aaedc7252a6b296e4091c975377",
|
||||||
|
"0xaa5a00c12fedc13a01a588cd3a41470e0fcaf2a5ee7b1dc27ffa5b4ff7a3311b",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 11,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x7144d8a6be6e7645cd0c8b69f028fc16b10e4f17fa86296a23c261922d75753e",
|
||||||
|
"0x59b6ac5d90106bce7337c4bbb3a25828e76f9fa97e001caee65d2540dad98ef0",
|
||||||
|
"0x4b015cc323eaff67b141affbb3de0fc5e8052bf47a2f731b5605d19c23aa805a",
|
||||||
|
"0xca336a5bb1e6bf6a6302052ee7c87de5c9704132553a11e37b7e8f143c53439a"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"before": {
|
||||||
|
"pos": 4,
|
||||||
|
"value": 29,
|
||||||
|
"i": 7,
|
||||||
|
"recordLeaf": "0xabbddf51854536b5605dc7c0630fd2fa170d2dcd9b1c5312aec6fea74c038c0d",
|
||||||
|
"indexProof": {
|
||||||
|
"index": 4,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x30a0dd012169393d0dea8791c0f24d70cc8d4c70d088f420825ec0dbf9230f67",
|
||||||
|
"0x15febe1a672c219d5d2f9fa007af3b5a9c3e7e47a61fe89875ae1cf60ebfb2df",
|
||||||
|
"0xd62959693d950747d9c684becc5e4191521dd97b7496b0bb37326b54e6c58cb3",
|
||||||
|
"0xe07eef41b2e662b0af3e77b3c448378ecea5c476a9fa2f1da5e36d3a2bd1a010"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"after": {
|
||||||
|
"pos": 12,
|
||||||
|
"value": 48,
|
||||||
|
"i": 4,
|
||||||
|
"recordLeaf": "0x423f202599ef3d02b5f3ff547235afd8e222ed7c26c61a01e4c15de7e2f4948b",
|
||||||
|
"indexProof": {
|
||||||
|
"index": 12,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x6e97bf24fed1277d34cc86719a8f63aab95067adfa7c5a6e70bde9daf8870f47",
|
||||||
|
"0x775811db8d2472f42cad2aeebbc3826f5f959e1f174501ca8ab4380ad815702a",
|
||||||
|
"0xec4bd620657cb68e435f6d2a71199370056c925b6184624a743fe49d818e9370",
|
||||||
|
"0xca336a5bb1e6bf6a6302052ee7c87de5c9704132553a11e37b7e8f143c53439a"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"commitment": {
|
||||||
|
"v": 1,
|
||||||
|
"format": "aere-verifiable-dataset-1",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 2,
|
||||||
|
"size": 16,
|
||||||
|
"logRoot": "0x7b5bc02c63e970752f38d69995e4771ef596b56a640fc9addef32d570970be68",
|
||||||
|
"createdAt": "2026-10-03T00:01:00.000Z",
|
||||||
|
"indexes": {
|
||||||
|
"age": {
|
||||||
|
"root": "0xfc641a2eadd7d876f9b4fe284dac094fb83543cf43a2c2f80e88f6d9e98114a7",
|
||||||
|
"size": 16
|
||||||
|
},
|
||||||
|
"country": {
|
||||||
|
"root": "0x5be9a95a39966382ab8d83179ae93380d723d49eff2f3b76a290a72a8ee60149",
|
||||||
|
"size": 16
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"previous": "0xcea41f8f24fd00aa268619aac5c49b184e5971648db52fb514efdf5f0686d9aa"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"dataset.index"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
394
conformance/vectori/dataset-answer/age-30-45.range.json
Normal file
394
conformance/vectori/dataset-answer/age-30-45.range.json
Normal file
@ -0,0 +1,394 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "dataset-answer/age-30-45.range",
|
||||||
|
"artifact": "dataset-answer",
|
||||||
|
"title": "the answer claims a narrower range than the rows it returns",
|
||||||
|
"source": "derived from dataset-answer/age-30-45.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"dataset.commitment",
|
||||||
|
"dataset.completeness",
|
||||||
|
"dataset.field",
|
||||||
|
"dataset.form",
|
||||||
|
"dataset.inclusion",
|
||||||
|
"dataset.index",
|
||||||
|
"dataset.order",
|
||||||
|
"dataset.range"
|
||||||
|
],
|
||||||
|
"base": "dataset-answer/age-30-45.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "set",
|
||||||
|
"path": [
|
||||||
|
"answer",
|
||||||
|
"to"
|
||||||
|
],
|
||||||
|
"value": 31
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"answer": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-verifiable-query-answer",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 2,
|
||||||
|
"commitmentHash": "0x4cd24b27c6c17493766099e86e188abfa3ac25d5e28a86e48792d20962a3486d",
|
||||||
|
"field": "age",
|
||||||
|
"from": 30,
|
||||||
|
"to": 31,
|
||||||
|
"indexSize": 16,
|
||||||
|
"rows": [
|
||||||
|
{
|
||||||
|
"pos": 5,
|
||||||
|
"i": 13,
|
||||||
|
"id": "r13",
|
||||||
|
"c": {
|
||||||
|
"age": "0x20131967249ae0130154c3dbbcbe8ab041200b4499ed270f2c9dd2c2ac3337f1",
|
||||||
|
"country": "0xffa95ca2afb61e95d628c3044b6e80746cccc11642ad35dafc6445cd905facdf",
|
||||||
|
"email": "0x2e6bca63ef9fad9e3ef55ae60405914a01577abd1caf0403109608f3f95a3700",
|
||||||
|
"note": "0x668a33b811cf8989b6ce36f7681928dd43371ea394d67df6136fb1580977121b"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "DE",
|
||||||
|
"salt": "b5ffd792267cac392d9d814c7809b198"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 31,
|
||||||
|
"salt": "314d5643f6f54376235b422614dd1562"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 13,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0xd3cbc725743f95177070e430cd03ec9f6af06bc64e84c0c84ad19e5d5562a983",
|
||||||
|
"0x85c6057fcfb4dd1d0fdfc0e4a925284def148b2ee0513c6858a29070aca4d50d",
|
||||||
|
"0xaa5a00c12fedc13a01a588cd3a41470e0fcaf2a5ee7b1dc27ffa5b4ff7a3311b",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 5,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0xc4723e9eb2ff7168890f1a366b02d3ed1452ac476e98996cd0c91634af7423ed",
|
||||||
|
"0x15febe1a672c219d5d2f9fa007af3b5a9c3e7e47a61fe89875ae1cf60ebfb2df",
|
||||||
|
"0xd62959693d950747d9c684becc5e4191521dd97b7496b0bb37326b54e6c58cb3",
|
||||||
|
"0xe07eef41b2e662b0af3e77b3c448378ecea5c476a9fa2f1da5e36d3a2bd1a010"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 6,
|
||||||
|
"i": 2,
|
||||||
|
"id": "r2",
|
||||||
|
"c": {
|
||||||
|
"age": "0xec15dd9b6e14956f9e3e9ea696f943972ab7601093c1c488ec18d40eb1431d42",
|
||||||
|
"country": "0x8d9e791776f47b5aeb079763edfdd40d26fc94742c8410a4f8d45e6ff1e901e6",
|
||||||
|
"email": "0xb9bfbcffff236803e9faabb11490ee1749c02a5566ae6e22380ae7dafc16322e",
|
||||||
|
"note": "0x86d1f7ae6700f8a22cb3c6a97b27d85d226beae6c4ca4c6eccd3e18b2fd85644"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "FR",
|
||||||
|
"salt": "6a20a411bddb217e3ba890baad65b87e"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 34,
|
||||||
|
"salt": "a83f62663d8735a83a784f603de20b88"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 2,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x559b8f51f7b31a6feed18feeb876141c8a19af7f49169aee7a9833b59b65eaa2",
|
||||||
|
"0x6528250e72e30d47b6b47dcefaa225bcb9fc1af0d20ee827c331486083baac56",
|
||||||
|
"0xef30cdbdc0b6467d74313d8b22b2054e32a17b3a484121ccc24cb16d8ad6fec0",
|
||||||
|
"0xe1ff507974903713d6ac9451d920007303edcffa4a82190f3976ba1c0b06d932"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 6,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0xdc9c9be2d7bc348acbd1cc004108f4af0386cec42492ae4fc3d62a9840d5f7bd",
|
||||||
|
"0x140d04bd298186a3efce73de4e3ea60f7f0300d21f2970efffc9f918ab004475",
|
||||||
|
"0xd62959693d950747d9c684becc5e4191521dd97b7496b0bb37326b54e6c58cb3",
|
||||||
|
"0xe07eef41b2e662b0af3e77b3c448378ecea5c476a9fa2f1da5e36d3a2bd1a010"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 7,
|
||||||
|
"i": 8,
|
||||||
|
"id": "r8",
|
||||||
|
"c": {
|
||||||
|
"age": "0xc6b4096f4947760268564e73c3afb7edf8c31f1fe8a5371c85eeb606ac22ea25",
|
||||||
|
"country": "0x9b959d0dad5df75cf7f29a408750b730b9fc41403f4fc50168cc14ce2ca437ee",
|
||||||
|
"email": "0x598b4823a385d1f34c855b8bb873241bc66ddbd0a8f6b09d92cba14534454484",
|
||||||
|
"note": "0x4bd0762227e6c5d7f6ceac6185a23fe5075a33576dcd1e4e51aa9a4b0e0a1158"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "RO",
|
||||||
|
"salt": "0a263d3e4223cc52f078c225a273e316"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 36,
|
||||||
|
"salt": "bcb34a3f54db5f21299add6f1c654670"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 8,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x7eb65d9a7f7ffa3039e627af43216d59accf7d3ca8a2951c2b0418c0199a1c9f",
|
||||||
|
"0x5290791446b6001dc5b5819d38d10ce762a0337736bbf8e90a111e8fe3c77efe",
|
||||||
|
"0xa06921f7770369ac27071f0fd2db808b66a643605278b92c06cabefffa234084",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 7,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x201009717c9f1fc80cd77e2a975390858ff4a4b76511bb7a31d36ea58bedeceb",
|
||||||
|
"0x140d04bd298186a3efce73de4e3ea60f7f0300d21f2970efffc9f918ab004475",
|
||||||
|
"0xd62959693d950747d9c684becc5e4191521dd97b7496b0bb37326b54e6c58cb3",
|
||||||
|
"0xe07eef41b2e662b0af3e77b3c448378ecea5c476a9fa2f1da5e36d3a2bd1a010"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 8,
|
||||||
|
"i": 14,
|
||||||
|
"id": "r14",
|
||||||
|
"c": {
|
||||||
|
"age": "0x2a86b9afad1aff1234aa90bdf96095d07ef5d479992a9081c21adc965a3c20c3",
|
||||||
|
"country": "0xebd5ee1cac77bb2b170c930d964032218f9f9c69284c89b213dbefb2d54b8eee",
|
||||||
|
"email": "0xb9319475dca37efe658a39f9f7c10d13dd21a32276ec911dc57a2677a4e4bb50",
|
||||||
|
"note": "0x3fdbec96439422e50f7faabf111c8c8c2690460aad638b745a6875678fd38f34"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "FR",
|
||||||
|
"salt": "15d426374424c484ffc8ae1bb736d960"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 38,
|
||||||
|
"salt": "d750eb0354fb432536e3c26e5c682210"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 14,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x12c9a4faf655bb09dbbb6a5fb3a24e44330e5d83222439ab2d2c2224c3791d84",
|
||||||
|
"0x1dd8a5c51c6218cb8ca3a57ee7683a06b1e94aaedc7252a6b296e4091c975377",
|
||||||
|
"0xaa5a00c12fedc13a01a588cd3a41470e0fcaf2a5ee7b1dc27ffa5b4ff7a3311b",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 8,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x9e4143c4b05ba68e176ae53bc5f122c1a490c3e1efeaa6bd9501110c5fb4d059",
|
||||||
|
"0xb3e51e807cccee32941e4d7009700ae40055645eb9e8bc6974ebe8ebf887a145",
|
||||||
|
"0x4b015cc323eaff67b141affbb3de0fc5e8052bf47a2f731b5605d19c23aa805a",
|
||||||
|
"0xca336a5bb1e6bf6a6302052ee7c87de5c9704132553a11e37b7e8f143c53439a"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 9,
|
||||||
|
"i": 3,
|
||||||
|
"id": "r3",
|
||||||
|
"c": {
|
||||||
|
"age": "0x13ec2a42a36e8b12ebdbd35af1d96962683a06b802e9e1f9e2e020487c691f7f",
|
||||||
|
"country": "0x1d18032f2e5acd907bffb4db2103b3d1d337388078ed9238a913c0cabecb928f",
|
||||||
|
"email": "0xe36f28b120650ba4c2597063b456d4d00847532129bd26dc8c150291265eef23",
|
||||||
|
"note": "0x086341fc0392c796d5f84f78f183deef347fa327e3d48707c460fc4d9c1f9910"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "ES",
|
||||||
|
"salt": "0ee225e77747d7afafb81d1bffdf68c0"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 41,
|
||||||
|
"salt": "9104931c19467233d902d1c967a15086"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 3,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x5083ccb306cbefaa21d75b69a47668b0cd3943865500881281d96e05429face8",
|
||||||
|
"0x6528250e72e30d47b6b47dcefaa225bcb9fc1af0d20ee827c331486083baac56",
|
||||||
|
"0xef30cdbdc0b6467d74313d8b22b2054e32a17b3a484121ccc24cb16d8ad6fec0",
|
||||||
|
"0xe1ff507974903713d6ac9451d920007303edcffa4a82190f3976ba1c0b06d932"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 9,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0xd0d85473c9adae91cb97fce47e564181ae990b38260de5efb1351e02ff9c3524",
|
||||||
|
"0xb3e51e807cccee32941e4d7009700ae40055645eb9e8bc6974ebe8ebf887a145",
|
||||||
|
"0x4b015cc323eaff67b141affbb3de0fc5e8052bf47a2f731b5605d19c23aa805a",
|
||||||
|
"0xca336a5bb1e6bf6a6302052ee7c87de5c9704132553a11e37b7e8f143c53439a"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 10,
|
||||||
|
"i": 9,
|
||||||
|
"id": "r9",
|
||||||
|
"c": {
|
||||||
|
"age": "0x1e440a3ce1d15a73c509b5b4da506157e42ac6cd8e96d486df66d049bfe8b8e6",
|
||||||
|
"country": "0xd5f75ca5ae34d41c6c6fe30f01061bec1260fd8fa9a134da20c616bd61b33428",
|
||||||
|
"email": "0x762b765d7cda44c06281ea75fea30bfc377adffe33d9df4ba065566f503ced67",
|
||||||
|
"note": "0x42b57a86fde59862104e06c5f9d7324e5edf2506e5c3874e0ae85e375ec46cdb"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "DE",
|
||||||
|
"salt": "b0371c1e4117eab6e65f46c8e7dd9b5c"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 43,
|
||||||
|
"salt": "994a5723c379b33784b813642d91bca5"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 9,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x65c032449d009130a92eb4bfc7a17fe17e0256c141a980d56ef6f7acc5ea65c1",
|
||||||
|
"0x5290791446b6001dc5b5819d38d10ce762a0337736bbf8e90a111e8fe3c77efe",
|
||||||
|
"0xa06921f7770369ac27071f0fd2db808b66a643605278b92c06cabefffa234084",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 10,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0xccb00a519667f5206d54663c1449cfe26d2a69a21b58934e639d7fa5274a610b",
|
||||||
|
"0x59b6ac5d90106bce7337c4bbb3a25828e76f9fa97e001caee65d2540dad98ef0",
|
||||||
|
"0x4b015cc323eaff67b141affbb3de0fc5e8052bf47a2f731b5605d19c23aa805a",
|
||||||
|
"0xca336a5bb1e6bf6a6302052ee7c87de5c9704132553a11e37b7e8f143c53439a"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 11,
|
||||||
|
"i": 15,
|
||||||
|
"id": "r15",
|
||||||
|
"c": {
|
||||||
|
"age": "0x3e1980c7f773e302e4f9bf175e8edec38a53da7f2e46a5e371a77d57842c02fb",
|
||||||
|
"country": "0x1919bce313ba6d86fc4bf751e1f67b0a39b699615086212681149ff62c0885cf",
|
||||||
|
"email": "0x8c8c71ef8dd79da410a4cfc25639ea6119cbdd02c031eaa3ee9d661c65ba9aea",
|
||||||
|
"note": "0x2b31e8289c6fa63c019472defa0f58b1aad47fb3ff63a99484ddf9b95d3a3bd5"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "ES",
|
||||||
|
"salt": "2e559c28fa7a80ed4f38fa8b45f2c82e"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 45,
|
||||||
|
"salt": "ddef75f62d6301533303c7876d013294"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 15,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x7bfd292a9ed546f18580c5251b801dc2756d80ab29a3c64eb0b81433a313307f",
|
||||||
|
"0x1dd8a5c51c6218cb8ca3a57ee7683a06b1e94aaedc7252a6b296e4091c975377",
|
||||||
|
"0xaa5a00c12fedc13a01a588cd3a41470e0fcaf2a5ee7b1dc27ffa5b4ff7a3311b",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 11,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x7144d8a6be6e7645cd0c8b69f028fc16b10e4f17fa86296a23c261922d75753e",
|
||||||
|
"0x59b6ac5d90106bce7337c4bbb3a25828e76f9fa97e001caee65d2540dad98ef0",
|
||||||
|
"0x4b015cc323eaff67b141affbb3de0fc5e8052bf47a2f731b5605d19c23aa805a",
|
||||||
|
"0xca336a5bb1e6bf6a6302052ee7c87de5c9704132553a11e37b7e8f143c53439a"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"before": {
|
||||||
|
"pos": 4,
|
||||||
|
"value": 29,
|
||||||
|
"i": 7,
|
||||||
|
"recordLeaf": "0xabbddf51854536b5605dc7c0630fd2fa170d2dcd9b1c5312aec6fea74c038c0d",
|
||||||
|
"indexProof": {
|
||||||
|
"index": 4,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x30a0dd012169393d0dea8791c0f24d70cc8d4c70d088f420825ec0dbf9230f67",
|
||||||
|
"0x15febe1a672c219d5d2f9fa007af3b5a9c3e7e47a61fe89875ae1cf60ebfb2df",
|
||||||
|
"0xd62959693d950747d9c684becc5e4191521dd97b7496b0bb37326b54e6c58cb3",
|
||||||
|
"0xe07eef41b2e662b0af3e77b3c448378ecea5c476a9fa2f1da5e36d3a2bd1a010"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"after": {
|
||||||
|
"pos": 12,
|
||||||
|
"value": 48,
|
||||||
|
"i": 4,
|
||||||
|
"recordLeaf": "0x423f202599ef3d02b5f3ff547235afd8e222ed7c26c61a01e4c15de7e2f4948b",
|
||||||
|
"indexProof": {
|
||||||
|
"index": 12,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x6e97bf24fed1277d34cc86719a8f63aab95067adfa7c5a6e70bde9daf8870f47",
|
||||||
|
"0x775811db8d2472f42cad2aeebbc3826f5f959e1f174501ca8ab4380ad815702a",
|
||||||
|
"0xec4bd620657cb68e435f6d2a71199370056c925b6184624a743fe49d818e9370",
|
||||||
|
"0xca336a5bb1e6bf6a6302052ee7c87de5c9704132553a11e37b7e8f143c53439a"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"commitment": {
|
||||||
|
"v": 1,
|
||||||
|
"format": "aere-verifiable-dataset-1",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 2,
|
||||||
|
"size": 16,
|
||||||
|
"logRoot": "0x7b5bc02c63e970752f38d69995e4771ef596b56a640fc9addef32d570970be68",
|
||||||
|
"createdAt": "2026-10-03T00:01:00.000Z",
|
||||||
|
"indexes": {
|
||||||
|
"age": {
|
||||||
|
"root": "0xfc641a2eadd7d876f9b4fe284dac094fb83543cf43a2c2f80e88f6d9e98114a7",
|
||||||
|
"size": 16
|
||||||
|
},
|
||||||
|
"country": {
|
||||||
|
"root": "0x5be9a95a39966382ab8d83179ae93380d723d49eff2f3b76a290a72a8ee60149",
|
||||||
|
"size": 16
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"previous": "0xcea41f8f24fd00aa268619aac5c49b184e5971648db52fb514efdf5f0686d9aa"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"dataset.range"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
385
conformance/vectori/dataset-answer/age-30-45.valid.json
Normal file
385
conformance/vectori/dataset-answer/age-30-45.valid.json
Normal file
@ -0,0 +1,385 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "dataset-answer/age-30-45.valid",
|
||||||
|
"artifact": "dataset-answer",
|
||||||
|
"title": "a range query on an indexed field: every row, and the two neighbours that prove nothing is missing",
|
||||||
|
"source": "producer (verifiable-data), random salts, generated 2026-10-03T09:33:28.671Z",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"dataset.commitment",
|
||||||
|
"dataset.completeness",
|
||||||
|
"dataset.field",
|
||||||
|
"dataset.form",
|
||||||
|
"dataset.inclusion",
|
||||||
|
"dataset.index",
|
||||||
|
"dataset.order",
|
||||||
|
"dataset.range"
|
||||||
|
],
|
||||||
|
"base": null,
|
||||||
|
"mutation": null,
|
||||||
|
"input": {
|
||||||
|
"answer": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-verifiable-query-answer",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 2,
|
||||||
|
"commitmentHash": "0x4cd24b27c6c17493766099e86e188abfa3ac25d5e28a86e48792d20962a3486d",
|
||||||
|
"field": "age",
|
||||||
|
"from": 30,
|
||||||
|
"to": 45,
|
||||||
|
"indexSize": 16,
|
||||||
|
"rows": [
|
||||||
|
{
|
||||||
|
"pos": 5,
|
||||||
|
"i": 13,
|
||||||
|
"id": "r13",
|
||||||
|
"c": {
|
||||||
|
"age": "0x20131967249ae0130154c3dbbcbe8ab041200b4499ed270f2c9dd2c2ac3337f1",
|
||||||
|
"country": "0xffa95ca2afb61e95d628c3044b6e80746cccc11642ad35dafc6445cd905facdf",
|
||||||
|
"email": "0x2e6bca63ef9fad9e3ef55ae60405914a01577abd1caf0403109608f3f95a3700",
|
||||||
|
"note": "0x668a33b811cf8989b6ce36f7681928dd43371ea394d67df6136fb1580977121b"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "DE",
|
||||||
|
"salt": "b5ffd792267cac392d9d814c7809b198"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 31,
|
||||||
|
"salt": "314d5643f6f54376235b422614dd1562"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 13,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0xd3cbc725743f95177070e430cd03ec9f6af06bc64e84c0c84ad19e5d5562a983",
|
||||||
|
"0x85c6057fcfb4dd1d0fdfc0e4a925284def148b2ee0513c6858a29070aca4d50d",
|
||||||
|
"0xaa5a00c12fedc13a01a588cd3a41470e0fcaf2a5ee7b1dc27ffa5b4ff7a3311b",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 5,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0xc4723e9eb2ff7168890f1a366b02d3ed1452ac476e98996cd0c91634af7423ed",
|
||||||
|
"0x15febe1a672c219d5d2f9fa007af3b5a9c3e7e47a61fe89875ae1cf60ebfb2df",
|
||||||
|
"0xd62959693d950747d9c684becc5e4191521dd97b7496b0bb37326b54e6c58cb3",
|
||||||
|
"0xe07eef41b2e662b0af3e77b3c448378ecea5c476a9fa2f1da5e36d3a2bd1a010"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 6,
|
||||||
|
"i": 2,
|
||||||
|
"id": "r2",
|
||||||
|
"c": {
|
||||||
|
"age": "0xec15dd9b6e14956f9e3e9ea696f943972ab7601093c1c488ec18d40eb1431d42",
|
||||||
|
"country": "0x8d9e791776f47b5aeb079763edfdd40d26fc94742c8410a4f8d45e6ff1e901e6",
|
||||||
|
"email": "0xb9bfbcffff236803e9faabb11490ee1749c02a5566ae6e22380ae7dafc16322e",
|
||||||
|
"note": "0x86d1f7ae6700f8a22cb3c6a97b27d85d226beae6c4ca4c6eccd3e18b2fd85644"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "FR",
|
||||||
|
"salt": "6a20a411bddb217e3ba890baad65b87e"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 34,
|
||||||
|
"salt": "a83f62663d8735a83a784f603de20b88"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 2,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x559b8f51f7b31a6feed18feeb876141c8a19af7f49169aee7a9833b59b65eaa2",
|
||||||
|
"0x6528250e72e30d47b6b47dcefaa225bcb9fc1af0d20ee827c331486083baac56",
|
||||||
|
"0xef30cdbdc0b6467d74313d8b22b2054e32a17b3a484121ccc24cb16d8ad6fec0",
|
||||||
|
"0xe1ff507974903713d6ac9451d920007303edcffa4a82190f3976ba1c0b06d932"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 6,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0xdc9c9be2d7bc348acbd1cc004108f4af0386cec42492ae4fc3d62a9840d5f7bd",
|
||||||
|
"0x140d04bd298186a3efce73de4e3ea60f7f0300d21f2970efffc9f918ab004475",
|
||||||
|
"0xd62959693d950747d9c684becc5e4191521dd97b7496b0bb37326b54e6c58cb3",
|
||||||
|
"0xe07eef41b2e662b0af3e77b3c448378ecea5c476a9fa2f1da5e36d3a2bd1a010"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 7,
|
||||||
|
"i": 8,
|
||||||
|
"id": "r8",
|
||||||
|
"c": {
|
||||||
|
"age": "0xc6b4096f4947760268564e73c3afb7edf8c31f1fe8a5371c85eeb606ac22ea25",
|
||||||
|
"country": "0x9b959d0dad5df75cf7f29a408750b730b9fc41403f4fc50168cc14ce2ca437ee",
|
||||||
|
"email": "0x598b4823a385d1f34c855b8bb873241bc66ddbd0a8f6b09d92cba14534454484",
|
||||||
|
"note": "0x4bd0762227e6c5d7f6ceac6185a23fe5075a33576dcd1e4e51aa9a4b0e0a1158"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "RO",
|
||||||
|
"salt": "0a263d3e4223cc52f078c225a273e316"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 36,
|
||||||
|
"salt": "bcb34a3f54db5f21299add6f1c654670"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 8,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x7eb65d9a7f7ffa3039e627af43216d59accf7d3ca8a2951c2b0418c0199a1c9f",
|
||||||
|
"0x5290791446b6001dc5b5819d38d10ce762a0337736bbf8e90a111e8fe3c77efe",
|
||||||
|
"0xa06921f7770369ac27071f0fd2db808b66a643605278b92c06cabefffa234084",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 7,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x201009717c9f1fc80cd77e2a975390858ff4a4b76511bb7a31d36ea58bedeceb",
|
||||||
|
"0x140d04bd298186a3efce73de4e3ea60f7f0300d21f2970efffc9f918ab004475",
|
||||||
|
"0xd62959693d950747d9c684becc5e4191521dd97b7496b0bb37326b54e6c58cb3",
|
||||||
|
"0xe07eef41b2e662b0af3e77b3c448378ecea5c476a9fa2f1da5e36d3a2bd1a010"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 8,
|
||||||
|
"i": 14,
|
||||||
|
"id": "r14",
|
||||||
|
"c": {
|
||||||
|
"age": "0x2a86b9afad1aff1234aa90bdf96095d07ef5d479992a9081c21adc965a3c20c3",
|
||||||
|
"country": "0xebd5ee1cac77bb2b170c930d964032218f9f9c69284c89b213dbefb2d54b8eee",
|
||||||
|
"email": "0xb9319475dca37efe658a39f9f7c10d13dd21a32276ec911dc57a2677a4e4bb50",
|
||||||
|
"note": "0x3fdbec96439422e50f7faabf111c8c8c2690460aad638b745a6875678fd38f34"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "FR",
|
||||||
|
"salt": "15d426374424c484ffc8ae1bb736d960"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 38,
|
||||||
|
"salt": "d750eb0354fb432536e3c26e5c682210"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 14,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x12c9a4faf655bb09dbbb6a5fb3a24e44330e5d83222439ab2d2c2224c3791d84",
|
||||||
|
"0x1dd8a5c51c6218cb8ca3a57ee7683a06b1e94aaedc7252a6b296e4091c975377",
|
||||||
|
"0xaa5a00c12fedc13a01a588cd3a41470e0fcaf2a5ee7b1dc27ffa5b4ff7a3311b",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 8,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x9e4143c4b05ba68e176ae53bc5f122c1a490c3e1efeaa6bd9501110c5fb4d059",
|
||||||
|
"0xb3e51e807cccee32941e4d7009700ae40055645eb9e8bc6974ebe8ebf887a145",
|
||||||
|
"0x4b015cc323eaff67b141affbb3de0fc5e8052bf47a2f731b5605d19c23aa805a",
|
||||||
|
"0xca336a5bb1e6bf6a6302052ee7c87de5c9704132553a11e37b7e8f143c53439a"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 9,
|
||||||
|
"i": 3,
|
||||||
|
"id": "r3",
|
||||||
|
"c": {
|
||||||
|
"age": "0x13ec2a42a36e8b12ebdbd35af1d96962683a06b802e9e1f9e2e020487c691f7f",
|
||||||
|
"country": "0x1d18032f2e5acd907bffb4db2103b3d1d337388078ed9238a913c0cabecb928f",
|
||||||
|
"email": "0xe36f28b120650ba4c2597063b456d4d00847532129bd26dc8c150291265eef23",
|
||||||
|
"note": "0x086341fc0392c796d5f84f78f183deef347fa327e3d48707c460fc4d9c1f9910"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "ES",
|
||||||
|
"salt": "0ee225e77747d7afafb81d1bffdf68c0"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 41,
|
||||||
|
"salt": "9104931c19467233d902d1c967a15086"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 3,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x5083ccb306cbefaa21d75b69a47668b0cd3943865500881281d96e05429face8",
|
||||||
|
"0x6528250e72e30d47b6b47dcefaa225bcb9fc1af0d20ee827c331486083baac56",
|
||||||
|
"0xef30cdbdc0b6467d74313d8b22b2054e32a17b3a484121ccc24cb16d8ad6fec0",
|
||||||
|
"0xe1ff507974903713d6ac9451d920007303edcffa4a82190f3976ba1c0b06d932"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 9,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0xd0d85473c9adae91cb97fce47e564181ae990b38260de5efb1351e02ff9c3524",
|
||||||
|
"0xb3e51e807cccee32941e4d7009700ae40055645eb9e8bc6974ebe8ebf887a145",
|
||||||
|
"0x4b015cc323eaff67b141affbb3de0fc5e8052bf47a2f731b5605d19c23aa805a",
|
||||||
|
"0xca336a5bb1e6bf6a6302052ee7c87de5c9704132553a11e37b7e8f143c53439a"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 10,
|
||||||
|
"i": 9,
|
||||||
|
"id": "r9",
|
||||||
|
"c": {
|
||||||
|
"age": "0x1e440a3ce1d15a73c509b5b4da506157e42ac6cd8e96d486df66d049bfe8b8e6",
|
||||||
|
"country": "0xd5f75ca5ae34d41c6c6fe30f01061bec1260fd8fa9a134da20c616bd61b33428",
|
||||||
|
"email": "0x762b765d7cda44c06281ea75fea30bfc377adffe33d9df4ba065566f503ced67",
|
||||||
|
"note": "0x42b57a86fde59862104e06c5f9d7324e5edf2506e5c3874e0ae85e375ec46cdb"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "DE",
|
||||||
|
"salt": "b0371c1e4117eab6e65f46c8e7dd9b5c"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 43,
|
||||||
|
"salt": "994a5723c379b33784b813642d91bca5"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 9,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x65c032449d009130a92eb4bfc7a17fe17e0256c141a980d56ef6f7acc5ea65c1",
|
||||||
|
"0x5290791446b6001dc5b5819d38d10ce762a0337736bbf8e90a111e8fe3c77efe",
|
||||||
|
"0xa06921f7770369ac27071f0fd2db808b66a643605278b92c06cabefffa234084",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 10,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0xccb00a519667f5206d54663c1449cfe26d2a69a21b58934e639d7fa5274a610b",
|
||||||
|
"0x59b6ac5d90106bce7337c4bbb3a25828e76f9fa97e001caee65d2540dad98ef0",
|
||||||
|
"0x4b015cc323eaff67b141affbb3de0fc5e8052bf47a2f731b5605d19c23aa805a",
|
||||||
|
"0xca336a5bb1e6bf6a6302052ee7c87de5c9704132553a11e37b7e8f143c53439a"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 11,
|
||||||
|
"i": 15,
|
||||||
|
"id": "r15",
|
||||||
|
"c": {
|
||||||
|
"age": "0x3e1980c7f773e302e4f9bf175e8edec38a53da7f2e46a5e371a77d57842c02fb",
|
||||||
|
"country": "0x1919bce313ba6d86fc4bf751e1f67b0a39b699615086212681149ff62c0885cf",
|
||||||
|
"email": "0x8c8c71ef8dd79da410a4cfc25639ea6119cbdd02c031eaa3ee9d661c65ba9aea",
|
||||||
|
"note": "0x2b31e8289c6fa63c019472defa0f58b1aad47fb3ff63a99484ddf9b95d3a3bd5"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "ES",
|
||||||
|
"salt": "2e559c28fa7a80ed4f38fa8b45f2c82e"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 45,
|
||||||
|
"salt": "ddef75f62d6301533303c7876d013294"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 15,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x7bfd292a9ed546f18580c5251b801dc2756d80ab29a3c64eb0b81433a313307f",
|
||||||
|
"0x1dd8a5c51c6218cb8ca3a57ee7683a06b1e94aaedc7252a6b296e4091c975377",
|
||||||
|
"0xaa5a00c12fedc13a01a588cd3a41470e0fcaf2a5ee7b1dc27ffa5b4ff7a3311b",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 11,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x7144d8a6be6e7645cd0c8b69f028fc16b10e4f17fa86296a23c261922d75753e",
|
||||||
|
"0x59b6ac5d90106bce7337c4bbb3a25828e76f9fa97e001caee65d2540dad98ef0",
|
||||||
|
"0x4b015cc323eaff67b141affbb3de0fc5e8052bf47a2f731b5605d19c23aa805a",
|
||||||
|
"0xca336a5bb1e6bf6a6302052ee7c87de5c9704132553a11e37b7e8f143c53439a"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"before": {
|
||||||
|
"pos": 4,
|
||||||
|
"value": 29,
|
||||||
|
"i": 7,
|
||||||
|
"recordLeaf": "0xabbddf51854536b5605dc7c0630fd2fa170d2dcd9b1c5312aec6fea74c038c0d",
|
||||||
|
"indexProof": {
|
||||||
|
"index": 4,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x30a0dd012169393d0dea8791c0f24d70cc8d4c70d088f420825ec0dbf9230f67",
|
||||||
|
"0x15febe1a672c219d5d2f9fa007af3b5a9c3e7e47a61fe89875ae1cf60ebfb2df",
|
||||||
|
"0xd62959693d950747d9c684becc5e4191521dd97b7496b0bb37326b54e6c58cb3",
|
||||||
|
"0xe07eef41b2e662b0af3e77b3c448378ecea5c476a9fa2f1da5e36d3a2bd1a010"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"after": {
|
||||||
|
"pos": 12,
|
||||||
|
"value": 48,
|
||||||
|
"i": 4,
|
||||||
|
"recordLeaf": "0x423f202599ef3d02b5f3ff547235afd8e222ed7c26c61a01e4c15de7e2f4948b",
|
||||||
|
"indexProof": {
|
||||||
|
"index": 12,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x6e97bf24fed1277d34cc86719a8f63aab95067adfa7c5a6e70bde9daf8870f47",
|
||||||
|
"0x775811db8d2472f42cad2aeebbc3826f5f959e1f174501ca8ab4380ad815702a",
|
||||||
|
"0xec4bd620657cb68e435f6d2a71199370056c925b6184624a743fe49d818e9370",
|
||||||
|
"0xca336a5bb1e6bf6a6302052ee7c87de5c9704132553a11e37b7e8f143c53439a"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"commitment": {
|
||||||
|
"v": 1,
|
||||||
|
"format": "aere-verifiable-dataset-1",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 2,
|
||||||
|
"size": 16,
|
||||||
|
"logRoot": "0x7b5bc02c63e970752f38d69995e4771ef596b56a640fc9addef32d570970be68",
|
||||||
|
"createdAt": "2026-10-03T00:01:00.000Z",
|
||||||
|
"indexes": {
|
||||||
|
"age": {
|
||||||
|
"root": "0xfc641a2eadd7d876f9b4fe284dac094fb83543cf43a2c2f80e88f6d9e98114a7",
|
||||||
|
"size": 16
|
||||||
|
},
|
||||||
|
"country": {
|
||||||
|
"root": "0x5be9a95a39966382ab8d83179ae93380d723d49eff2f3b76a290a72a8ee60149",
|
||||||
|
"size": 16
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"previous": "0xcea41f8f24fd00aa268619aac5c49b184e5971648db52fb514efdf5f0686d9aa"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "VALID",
|
||||||
|
"failed": [],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "PASSED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
140
conformance/vectori/dataset-answer/two-records.order.json
Normal file
140
conformance/vectori/dataset-answer/two-records.order.json
Normal file
@ -0,0 +1,140 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "dataset-answer/two-records.order",
|
||||||
|
"artifact": "dataset-answer",
|
||||||
|
"title": "the same two records from a publisher whose index is not sorted: every proof holds, the order does not",
|
||||||
|
"source": "derived from dataset-answer/two-records.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"dataset.commitment",
|
||||||
|
"dataset.completeness",
|
||||||
|
"dataset.field",
|
||||||
|
"dataset.form",
|
||||||
|
"dataset.inclusion",
|
||||||
|
"dataset.index",
|
||||||
|
"dataset.order",
|
||||||
|
"dataset.range"
|
||||||
|
],
|
||||||
|
"base": "dataset-answer/two-records.valid",
|
||||||
|
"mutation": {
|
||||||
|
"producer": "the publisher built the index in record order instead of sorted order; the index root, the commitment hash and the rows follow from that",
|
||||||
|
"changed": [
|
||||||
|
[
|
||||||
|
"commitment",
|
||||||
|
"indexes",
|
||||||
|
"k",
|
||||||
|
"root"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"answer",
|
||||||
|
"commitmentHash"
|
||||||
|
],
|
||||||
|
[
|
||||||
|
"answer",
|
||||||
|
"rows"
|
||||||
|
]
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"answer": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-verifiable-query-answer",
|
||||||
|
"name": "two-records",
|
||||||
|
"version": 1,
|
||||||
|
"commitmentHash": "0xbf2c033142e1cd6b1640d50893104e4b83f8874e9c258c1c03d51559a08eb01e",
|
||||||
|
"field": "k",
|
||||||
|
"from": "a",
|
||||||
|
"to": "b",
|
||||||
|
"indexSize": 2,
|
||||||
|
"rows": [
|
||||||
|
{
|
||||||
|
"pos": 0,
|
||||||
|
"i": 0,
|
||||||
|
"id": "x",
|
||||||
|
"c": {
|
||||||
|
"k": "0x76033da6d09086feaabc4eb02ccdb0998b8b3ffebe6dc06d7bb294e59332739a"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"k": {
|
||||||
|
"value": "b",
|
||||||
|
"salt": "00000000000000000000000000000000"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 0,
|
||||||
|
"treeSize": 2,
|
||||||
|
"path": [
|
||||||
|
"0xe56792b2e606926733363d24ea96408682b9ec24ee756ce3e4230fbd7876102d"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 0,
|
||||||
|
"treeSize": 2,
|
||||||
|
"path": [
|
||||||
|
"0xe6e81e861c206d6d78dd70ec5c986e810ba1fced13c1b1be014ee3203164c735"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 1,
|
||||||
|
"i": 1,
|
||||||
|
"id": "y",
|
||||||
|
"c": {
|
||||||
|
"k": "0xd1d31bb11fa2bd2db5cf1e6e6724ba3e8bacdc4dc39a6f0b56456c3d9c4f0209"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"k": {
|
||||||
|
"value": "a",
|
||||||
|
"salt": "11111111111111111111111111111111"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 1,
|
||||||
|
"treeSize": 2,
|
||||||
|
"path": [
|
||||||
|
"0x3797340e506f3531b126aed66af5eca599669bd2d88d12b4746015d81bc8d0dc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 1,
|
||||||
|
"treeSize": 2,
|
||||||
|
"path": [
|
||||||
|
"0x0fed8760ae373fc2218213aaad78b44ecf7bf7cc513234d280f66748b4c312fd"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"before": null,
|
||||||
|
"after": null
|
||||||
|
},
|
||||||
|
"commitment": {
|
||||||
|
"v": 1,
|
||||||
|
"format": "aere-verifiable-dataset-1",
|
||||||
|
"name": "two-records",
|
||||||
|
"version": 1,
|
||||||
|
"size": 2,
|
||||||
|
"logRoot": "0xe1f12ed2764771c41437aef83b8e85eed42d1c3f73bf318d349eb84fc3e5c0d3",
|
||||||
|
"createdAt": "2026-10-03T00:00:00.000Z",
|
||||||
|
"indexes": {
|
||||||
|
"k": {
|
||||||
|
"root": "0x61e627e4e147a0e085e099acd40e2117cdbdc05649a4a9b121d317ab223e641c",
|
||||||
|
"size": 2
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"previous": null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"dataset.order"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
120
conformance/vectori/dataset-answer/two-records.valid.json
Normal file
120
conformance/vectori/dataset-answer/two-records.valid.json
Normal file
@ -0,0 +1,120 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "dataset-answer/two-records.valid",
|
||||||
|
"artifact": "dataset-answer",
|
||||||
|
"title": "two records, the index built in sorted order",
|
||||||
|
"source": "producer formulas (verifiable-data), fixed salts",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"dataset.commitment",
|
||||||
|
"dataset.completeness",
|
||||||
|
"dataset.field",
|
||||||
|
"dataset.form",
|
||||||
|
"dataset.inclusion",
|
||||||
|
"dataset.index",
|
||||||
|
"dataset.order",
|
||||||
|
"dataset.range"
|
||||||
|
],
|
||||||
|
"base": null,
|
||||||
|
"mutation": null,
|
||||||
|
"input": {
|
||||||
|
"answer": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-verifiable-query-answer",
|
||||||
|
"name": "two-records",
|
||||||
|
"version": 1,
|
||||||
|
"commitmentHash": "0xc56abe54fe4b8cd1ec14d987fcb539407cc7aaf2dafb1b00c225c3b24e5e094e",
|
||||||
|
"field": "k",
|
||||||
|
"from": "a",
|
||||||
|
"to": "b",
|
||||||
|
"indexSize": 2,
|
||||||
|
"rows": [
|
||||||
|
{
|
||||||
|
"pos": 0,
|
||||||
|
"i": 1,
|
||||||
|
"id": "y",
|
||||||
|
"c": {
|
||||||
|
"k": "0xd1d31bb11fa2bd2db5cf1e6e6724ba3e8bacdc4dc39a6f0b56456c3d9c4f0209"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"k": {
|
||||||
|
"value": "a",
|
||||||
|
"salt": "11111111111111111111111111111111"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 1,
|
||||||
|
"treeSize": 2,
|
||||||
|
"path": [
|
||||||
|
"0x3797340e506f3531b126aed66af5eca599669bd2d88d12b4746015d81bc8d0dc"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 0,
|
||||||
|
"treeSize": 2,
|
||||||
|
"path": [
|
||||||
|
"0x0fed8760ae373fc2218213aaad78b44ecf7bf7cc513234d280f66748b4c312fd"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"pos": 1,
|
||||||
|
"i": 0,
|
||||||
|
"id": "x",
|
||||||
|
"c": {
|
||||||
|
"k": "0x76033da6d09086feaabc4eb02ccdb0998b8b3ffebe6dc06d7bb294e59332739a"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"k": {
|
||||||
|
"value": "b",
|
||||||
|
"salt": "00000000000000000000000000000000"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 0,
|
||||||
|
"treeSize": 2,
|
||||||
|
"path": [
|
||||||
|
"0xe56792b2e606926733363d24ea96408682b9ec24ee756ce3e4230fbd7876102d"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"indexProof": {
|
||||||
|
"index": 1,
|
||||||
|
"treeSize": 2,
|
||||||
|
"path": [
|
||||||
|
"0xe6e81e861c206d6d78dd70ec5c986e810ba1fced13c1b1be014ee3203164c735"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"before": null,
|
||||||
|
"after": null
|
||||||
|
},
|
||||||
|
"commitment": {
|
||||||
|
"v": 1,
|
||||||
|
"format": "aere-verifiable-dataset-1",
|
||||||
|
"name": "two-records",
|
||||||
|
"version": 1,
|
||||||
|
"size": 2,
|
||||||
|
"logRoot": "0xe1f12ed2764771c41437aef83b8e85eed42d1c3f73bf318d349eb84fc3e5c0d3",
|
||||||
|
"createdAt": "2026-10-03T00:00:00.000Z",
|
||||||
|
"indexes": {
|
||||||
|
"k": {
|
||||||
|
"root": "0xc4a9e145aa17c45492bb7a22c12a2d8a9c51c9bb1d971b0b4fc713ad4d66e77b",
|
||||||
|
"size": 2
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"previous": null
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "VALID",
|
||||||
|
"failed": [],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "PASSED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
101
conformance/vectori/dataset-consistency/v1-v2.commitment.json
Normal file
101
conformance/vectori/dataset-consistency/v1-v2.commitment.json
Normal file
@ -0,0 +1,101 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "dataset-consistency/v1-v2.commitment",
|
||||||
|
"artifact": "dataset-consistency",
|
||||||
|
"title": "the proof names another newer commitment",
|
||||||
|
"source": "derived from dataset-consistency/v1-v2.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"dataset.commitment",
|
||||||
|
"dataset.consistency"
|
||||||
|
],
|
||||||
|
"base": "dataset-consistency/v1-v2.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "set",
|
||||||
|
"path": [
|
||||||
|
"proof",
|
||||||
|
"to",
|
||||||
|
"commitmentHash"
|
||||||
|
],
|
||||||
|
"value": "0x4cd24b27c6c17493766099e86e188abfa3ac25d5e28a86e48792d20962a34860"
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"proof": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-verifiable-consistency",
|
||||||
|
"name": "conformance",
|
||||||
|
"from": {
|
||||||
|
"version": 1,
|
||||||
|
"commitmentHash": "0xcea41f8f24fd00aa268619aac5c49b184e5971648db52fb514efdf5f0686d9aa"
|
||||||
|
},
|
||||||
|
"to": {
|
||||||
|
"version": 2,
|
||||||
|
"commitmentHash": "0x4cd24b27c6c17493766099e86e188abfa3ac25d5e28a86e48792d20962a34860"
|
||||||
|
},
|
||||||
|
"proof": {
|
||||||
|
"firstSize": 12,
|
||||||
|
"secondSize": 16,
|
||||||
|
"firstRoot": "0x513d3a071b8b56ce6d9d3d90ce4df590a9442330e8d52e249293a018935d3d64",
|
||||||
|
"secondRoot": "0x7b5bc02c63e970752f38d69995e4771ef596b56a640fc9addef32d570970be68",
|
||||||
|
"path": [
|
||||||
|
"0xaa5a00c12fedc13a01a588cd3a41470e0fcaf2a5ee7b1dc27ffa5b4ff7a3311b",
|
||||||
|
"0xa06921f7770369ac27071f0fd2db808b66a643605278b92c06cabefffa234084",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"older": {
|
||||||
|
"v": 1,
|
||||||
|
"format": "aere-verifiable-dataset-1",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 1,
|
||||||
|
"size": 12,
|
||||||
|
"logRoot": "0x513d3a071b8b56ce6d9d3d90ce4df590a9442330e8d52e249293a018935d3d64",
|
||||||
|
"createdAt": "2026-10-03T00:00:00.000Z",
|
||||||
|
"indexes": {
|
||||||
|
"age": {
|
||||||
|
"root": "0x8230b920edb9caf2223720db4b6550eab36ea116664a6b33726704711e0e3b44",
|
||||||
|
"size": 12
|
||||||
|
},
|
||||||
|
"country": {
|
||||||
|
"root": "0x4eec0d2495e0fe6ce17aad46e3d38058cba5f4ff88f0a565299b37cda61efba7",
|
||||||
|
"size": 12
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"previous": null
|
||||||
|
},
|
||||||
|
"newer": {
|
||||||
|
"v": 1,
|
||||||
|
"format": "aere-verifiable-dataset-1",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 2,
|
||||||
|
"size": 16,
|
||||||
|
"logRoot": "0x7b5bc02c63e970752f38d69995e4771ef596b56a640fc9addef32d570970be68",
|
||||||
|
"createdAt": "2026-10-03T00:01:00.000Z",
|
||||||
|
"indexes": {
|
||||||
|
"age": {
|
||||||
|
"root": "0xfc641a2eadd7d876f9b4fe284dac094fb83543cf43a2c2f80e88f6d9e98114a7",
|
||||||
|
"size": 16
|
||||||
|
},
|
||||||
|
"country": {
|
||||||
|
"root": "0x5be9a95a39966382ab8d83179ae93380d723d49eff2f3b76a290a72a8ee60149",
|
||||||
|
"size": 16
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"previous": "0xcea41f8f24fd00aa268619aac5c49b184e5971648db52fb514efdf5f0686d9aa"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"dataset.commitment"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
102
conformance/vectori/dataset-consistency/v1-v2.consistency.json
Normal file
102
conformance/vectori/dataset-consistency/v1-v2.consistency.json
Normal file
@ -0,0 +1,102 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "dataset-consistency/v1-v2.consistency",
|
||||||
|
"artifact": "dataset-consistency",
|
||||||
|
"title": "one hash of the consistency path changed",
|
||||||
|
"source": "derived from dataset-consistency/v1-v2.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"dataset.commitment",
|
||||||
|
"dataset.consistency"
|
||||||
|
],
|
||||||
|
"base": "dataset-consistency/v1-v2.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "set",
|
||||||
|
"path": [
|
||||||
|
"proof",
|
||||||
|
"proof",
|
||||||
|
"path",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"value": "0xaa5a00c12fedc13a01a588cd3a41470e0fcaf2a5ee7b1dc27ffa5b4ff7a33110"
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"proof": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-verifiable-consistency",
|
||||||
|
"name": "conformance",
|
||||||
|
"from": {
|
||||||
|
"version": 1,
|
||||||
|
"commitmentHash": "0xcea41f8f24fd00aa268619aac5c49b184e5971648db52fb514efdf5f0686d9aa"
|
||||||
|
},
|
||||||
|
"to": {
|
||||||
|
"version": 2,
|
||||||
|
"commitmentHash": "0x4cd24b27c6c17493766099e86e188abfa3ac25d5e28a86e48792d20962a3486d"
|
||||||
|
},
|
||||||
|
"proof": {
|
||||||
|
"firstSize": 12,
|
||||||
|
"secondSize": 16,
|
||||||
|
"firstRoot": "0x513d3a071b8b56ce6d9d3d90ce4df590a9442330e8d52e249293a018935d3d64",
|
||||||
|
"secondRoot": "0x7b5bc02c63e970752f38d69995e4771ef596b56a640fc9addef32d570970be68",
|
||||||
|
"path": [
|
||||||
|
"0xaa5a00c12fedc13a01a588cd3a41470e0fcaf2a5ee7b1dc27ffa5b4ff7a33110",
|
||||||
|
"0xa06921f7770369ac27071f0fd2db808b66a643605278b92c06cabefffa234084",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"older": {
|
||||||
|
"v": 1,
|
||||||
|
"format": "aere-verifiable-dataset-1",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 1,
|
||||||
|
"size": 12,
|
||||||
|
"logRoot": "0x513d3a071b8b56ce6d9d3d90ce4df590a9442330e8d52e249293a018935d3d64",
|
||||||
|
"createdAt": "2026-10-03T00:00:00.000Z",
|
||||||
|
"indexes": {
|
||||||
|
"age": {
|
||||||
|
"root": "0x8230b920edb9caf2223720db4b6550eab36ea116664a6b33726704711e0e3b44",
|
||||||
|
"size": 12
|
||||||
|
},
|
||||||
|
"country": {
|
||||||
|
"root": "0x4eec0d2495e0fe6ce17aad46e3d38058cba5f4ff88f0a565299b37cda61efba7",
|
||||||
|
"size": 12
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"previous": null
|
||||||
|
},
|
||||||
|
"newer": {
|
||||||
|
"v": 1,
|
||||||
|
"format": "aere-verifiable-dataset-1",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 2,
|
||||||
|
"size": 16,
|
||||||
|
"logRoot": "0x7b5bc02c63e970752f38d69995e4771ef596b56a640fc9addef32d570970be68",
|
||||||
|
"createdAt": "2026-10-03T00:01:00.000Z",
|
||||||
|
"indexes": {
|
||||||
|
"age": {
|
||||||
|
"root": "0xfc641a2eadd7d876f9b4fe284dac094fb83543cf43a2c2f80e88f6d9e98114a7",
|
||||||
|
"size": 16
|
||||||
|
},
|
||||||
|
"country": {
|
||||||
|
"root": "0x5be9a95a39966382ab8d83179ae93380d723d49eff2f3b76a290a72a8ee60149",
|
||||||
|
"size": 16
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"previous": "0xcea41f8f24fd00aa268619aac5c49b184e5971648db52fb514efdf5f0686d9aa"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"dataset.consistency"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
91
conformance/vectori/dataset-consistency/v1-v2.valid.json
Normal file
91
conformance/vectori/dataset-consistency/v1-v2.valid.json
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "dataset-consistency/v1-v2.valid",
|
||||||
|
"artifact": "dataset-consistency",
|
||||||
|
"title": "version 1 is a prefix of version 2",
|
||||||
|
"source": "producer (verifiable-data), random salts, generated 2026-10-03T09:33:28.671Z",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"dataset.commitment",
|
||||||
|
"dataset.consistency"
|
||||||
|
],
|
||||||
|
"base": null,
|
||||||
|
"mutation": null,
|
||||||
|
"input": {
|
||||||
|
"proof": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-verifiable-consistency",
|
||||||
|
"name": "conformance",
|
||||||
|
"from": {
|
||||||
|
"version": 1,
|
||||||
|
"commitmentHash": "0xcea41f8f24fd00aa268619aac5c49b184e5971648db52fb514efdf5f0686d9aa"
|
||||||
|
},
|
||||||
|
"to": {
|
||||||
|
"version": 2,
|
||||||
|
"commitmentHash": "0x4cd24b27c6c17493766099e86e188abfa3ac25d5e28a86e48792d20962a3486d"
|
||||||
|
},
|
||||||
|
"proof": {
|
||||||
|
"firstSize": 12,
|
||||||
|
"secondSize": 16,
|
||||||
|
"firstRoot": "0x513d3a071b8b56ce6d9d3d90ce4df590a9442330e8d52e249293a018935d3d64",
|
||||||
|
"secondRoot": "0x7b5bc02c63e970752f38d69995e4771ef596b56a640fc9addef32d570970be68",
|
||||||
|
"path": [
|
||||||
|
"0xaa5a00c12fedc13a01a588cd3a41470e0fcaf2a5ee7b1dc27ffa5b4ff7a3311b",
|
||||||
|
"0xa06921f7770369ac27071f0fd2db808b66a643605278b92c06cabefffa234084",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"older": {
|
||||||
|
"v": 1,
|
||||||
|
"format": "aere-verifiable-dataset-1",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 1,
|
||||||
|
"size": 12,
|
||||||
|
"logRoot": "0x513d3a071b8b56ce6d9d3d90ce4df590a9442330e8d52e249293a018935d3d64",
|
||||||
|
"createdAt": "2026-10-03T00:00:00.000Z",
|
||||||
|
"indexes": {
|
||||||
|
"age": {
|
||||||
|
"root": "0x8230b920edb9caf2223720db4b6550eab36ea116664a6b33726704711e0e3b44",
|
||||||
|
"size": 12
|
||||||
|
},
|
||||||
|
"country": {
|
||||||
|
"root": "0x4eec0d2495e0fe6ce17aad46e3d38058cba5f4ff88f0a565299b37cda61efba7",
|
||||||
|
"size": 12
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"previous": null
|
||||||
|
},
|
||||||
|
"newer": {
|
||||||
|
"v": 1,
|
||||||
|
"format": "aere-verifiable-dataset-1",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 2,
|
||||||
|
"size": 16,
|
||||||
|
"logRoot": "0x7b5bc02c63e970752f38d69995e4771ef596b56a640fc9addef32d570970be68",
|
||||||
|
"createdAt": "2026-10-03T00:01:00.000Z",
|
||||||
|
"indexes": {
|
||||||
|
"age": {
|
||||||
|
"root": "0xfc641a2eadd7d876f9b4fe284dac094fb83543cf43a2c2f80e88f6d9e98114a7",
|
||||||
|
"size": 16
|
||||||
|
},
|
||||||
|
"country": {
|
||||||
|
"root": "0x5be9a95a39966382ab8d83179ae93380d723d49eff2f3b76a290a72a8ee60149",
|
||||||
|
"size": 16
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"previous": "0xcea41f8f24fd00aa268619aac5c49b184e5971648db52fb514efdf5f0686d9aa"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "VALID",
|
||||||
|
"failed": [],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "PASSED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
93
conformance/vectori/dataset-record/r5.commitment.json
Normal file
93
conformance/vectori/dataset-record/r5.commitment.json
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "dataset-record/r5.commitment",
|
||||||
|
"artifact": "dataset-record",
|
||||||
|
"title": "the record names another commitment",
|
||||||
|
"source": "derived from dataset-record/r5.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"dataset.commitment",
|
||||||
|
"dataset.field",
|
||||||
|
"dataset.form",
|
||||||
|
"dataset.inclusion"
|
||||||
|
],
|
||||||
|
"base": "dataset-record/r5.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "set",
|
||||||
|
"path": [
|
||||||
|
"record",
|
||||||
|
"commitmentHash"
|
||||||
|
],
|
||||||
|
"value": "0x4cd24b27c6c17493766099e86e188abfa3ac25d5e28a86e48792d20962a34860"
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"record": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-verifiable-record",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 2,
|
||||||
|
"commitmentHash": "0x4cd24b27c6c17493766099e86e188abfa3ac25d5e28a86e48792d20962a34860",
|
||||||
|
"i": 5,
|
||||||
|
"id": "r5",
|
||||||
|
"c": {
|
||||||
|
"age": "0x6dd1cb642a41c2d474dc7764232b79718e57c56a22c4db6aafbd5c9d76fb711f",
|
||||||
|
"country": "0xcb77a35d9ad17c99e38939e1462c261ad4143ec0acf3dd1257bfd5004027cc8f",
|
||||||
|
"email": "0x3d6ddf25d6991f89b1d02087e062407a2379c28c8284a3709e66d242de58dd59",
|
||||||
|
"note": "0xbfcf4fba3f6f3aad1fe3b28ab76cf7bb923006b80063dbbf29372cbd7c8a0e9e"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "DE",
|
||||||
|
"salt": "b0760847d3e4e33261605d29a686c37f"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 55,
|
||||||
|
"salt": "5056c3b0bcfd665aefce9b421efb7826"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 5,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x423f202599ef3d02b5f3ff547235afd8e222ed7c26c61a01e4c15de7e2f4948b",
|
||||||
|
"0xe31e82f61895c75f5648f82d79fcbb86486581e1b39baa636dc71eada3ba3452",
|
||||||
|
"0xb69d58d00d2681aae7d29aa7836c94b0f65e2d4847379b4ba09caec5762875ea",
|
||||||
|
"0xe1ff507974903713d6ac9451d920007303edcffa4a82190f3976ba1c0b06d932"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"commitment": {
|
||||||
|
"v": 1,
|
||||||
|
"format": "aere-verifiable-dataset-1",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 2,
|
||||||
|
"size": 16,
|
||||||
|
"logRoot": "0x7b5bc02c63e970752f38d69995e4771ef596b56a640fc9addef32d570970be68",
|
||||||
|
"createdAt": "2026-10-03T00:01:00.000Z",
|
||||||
|
"indexes": {
|
||||||
|
"age": {
|
||||||
|
"root": "0xfc641a2eadd7d876f9b4fe284dac094fb83543cf43a2c2f80e88f6d9e98114a7",
|
||||||
|
"size": 16
|
||||||
|
},
|
||||||
|
"country": {
|
||||||
|
"root": "0x5be9a95a39966382ab8d83179ae93380d723d49eff2f3b76a290a72a8ee60149",
|
||||||
|
"size": 16
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"previous": "0xcea41f8f24fd00aa268619aac5c49b184e5971648db52fb514efdf5f0686d9aa"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"dataset.commitment"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
93
conformance/vectori/dataset-record/r5.field-no-salt.json
Normal file
93
conformance/vectori/dataset-record/r5.field-no-salt.json
Normal file
@ -0,0 +1,93 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "dataset-record/r5.field-no-salt",
|
||||||
|
"artifact": "dataset-record",
|
||||||
|
"title": "a disclosed field shown without its salt",
|
||||||
|
"source": "derived from dataset-record/r5.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"dataset.commitment",
|
||||||
|
"dataset.field",
|
||||||
|
"dataset.form",
|
||||||
|
"dataset.inclusion"
|
||||||
|
],
|
||||||
|
"base": "dataset-record/r5.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "remove",
|
||||||
|
"path": [
|
||||||
|
"record",
|
||||||
|
"disclosed",
|
||||||
|
"age",
|
||||||
|
"salt"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"record": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-verifiable-record",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 2,
|
||||||
|
"commitmentHash": "0x4cd24b27c6c17493766099e86e188abfa3ac25d5e28a86e48792d20962a3486d",
|
||||||
|
"i": 5,
|
||||||
|
"id": "r5",
|
||||||
|
"c": {
|
||||||
|
"age": "0x6dd1cb642a41c2d474dc7764232b79718e57c56a22c4db6aafbd5c9d76fb711f",
|
||||||
|
"country": "0xcb77a35d9ad17c99e38939e1462c261ad4143ec0acf3dd1257bfd5004027cc8f",
|
||||||
|
"email": "0x3d6ddf25d6991f89b1d02087e062407a2379c28c8284a3709e66d242de58dd59",
|
||||||
|
"note": "0xbfcf4fba3f6f3aad1fe3b28ab76cf7bb923006b80063dbbf29372cbd7c8a0e9e"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "DE",
|
||||||
|
"salt": "b0760847d3e4e33261605d29a686c37f"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 55
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 5,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x423f202599ef3d02b5f3ff547235afd8e222ed7c26c61a01e4c15de7e2f4948b",
|
||||||
|
"0xe31e82f61895c75f5648f82d79fcbb86486581e1b39baa636dc71eada3ba3452",
|
||||||
|
"0xb69d58d00d2681aae7d29aa7836c94b0f65e2d4847379b4ba09caec5762875ea",
|
||||||
|
"0xe1ff507974903713d6ac9451d920007303edcffa4a82190f3976ba1c0b06d932"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"commitment": {
|
||||||
|
"v": 1,
|
||||||
|
"format": "aere-verifiable-dataset-1",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 2,
|
||||||
|
"size": 16,
|
||||||
|
"logRoot": "0x7b5bc02c63e970752f38d69995e4771ef596b56a640fc9addef32d570970be68",
|
||||||
|
"createdAt": "2026-10-03T00:01:00.000Z",
|
||||||
|
"indexes": {
|
||||||
|
"age": {
|
||||||
|
"root": "0xfc641a2eadd7d876f9b4fe284dac094fb83543cf43a2c2f80e88f6d9e98114a7",
|
||||||
|
"size": 16
|
||||||
|
},
|
||||||
|
"country": {
|
||||||
|
"root": "0x5be9a95a39966382ab8d83179ae93380d723d49eff2f3b76a290a72a8ee60149",
|
||||||
|
"size": 16
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"previous": "0xcea41f8f24fd00aa268619aac5c49b184e5971648db52fb514efdf5f0686d9aa"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"dataset.field"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
95
conformance/vectori/dataset-record/r5.field.json
Normal file
95
conformance/vectori/dataset-record/r5.field.json
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "dataset-record/r5.field",
|
||||||
|
"artifact": "dataset-record",
|
||||||
|
"title": "a disclosed value changed after commitment",
|
||||||
|
"source": "derived from dataset-record/r5.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"dataset.commitment",
|
||||||
|
"dataset.field",
|
||||||
|
"dataset.form",
|
||||||
|
"dataset.inclusion"
|
||||||
|
],
|
||||||
|
"base": "dataset-record/r5.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "set",
|
||||||
|
"path": [
|
||||||
|
"record",
|
||||||
|
"disclosed",
|
||||||
|
"age",
|
||||||
|
"value"
|
||||||
|
],
|
||||||
|
"value": 56
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"record": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-verifiable-record",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 2,
|
||||||
|
"commitmentHash": "0x4cd24b27c6c17493766099e86e188abfa3ac25d5e28a86e48792d20962a3486d",
|
||||||
|
"i": 5,
|
||||||
|
"id": "r5",
|
||||||
|
"c": {
|
||||||
|
"age": "0x6dd1cb642a41c2d474dc7764232b79718e57c56a22c4db6aafbd5c9d76fb711f",
|
||||||
|
"country": "0xcb77a35d9ad17c99e38939e1462c261ad4143ec0acf3dd1257bfd5004027cc8f",
|
||||||
|
"email": "0x3d6ddf25d6991f89b1d02087e062407a2379c28c8284a3709e66d242de58dd59",
|
||||||
|
"note": "0xbfcf4fba3f6f3aad1fe3b28ab76cf7bb923006b80063dbbf29372cbd7c8a0e9e"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "DE",
|
||||||
|
"salt": "b0760847d3e4e33261605d29a686c37f"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 56,
|
||||||
|
"salt": "5056c3b0bcfd665aefce9b421efb7826"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 5,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x423f202599ef3d02b5f3ff547235afd8e222ed7c26c61a01e4c15de7e2f4948b",
|
||||||
|
"0xe31e82f61895c75f5648f82d79fcbb86486581e1b39baa636dc71eada3ba3452",
|
||||||
|
"0xb69d58d00d2681aae7d29aa7836c94b0f65e2d4847379b4ba09caec5762875ea",
|
||||||
|
"0xe1ff507974903713d6ac9451d920007303edcffa4a82190f3976ba1c0b06d932"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"commitment": {
|
||||||
|
"v": 1,
|
||||||
|
"format": "aere-verifiable-dataset-1",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 2,
|
||||||
|
"size": 16,
|
||||||
|
"logRoot": "0x7b5bc02c63e970752f38d69995e4771ef596b56a640fc9addef32d570970be68",
|
||||||
|
"createdAt": "2026-10-03T00:01:00.000Z",
|
||||||
|
"indexes": {
|
||||||
|
"age": {
|
||||||
|
"root": "0xfc641a2eadd7d876f9b4fe284dac094fb83543cf43a2c2f80e88f6d9e98114a7",
|
||||||
|
"size": 16
|
||||||
|
},
|
||||||
|
"country": {
|
||||||
|
"root": "0x5be9a95a39966382ab8d83179ae93380d723d49eff2f3b76a290a72a8ee60149",
|
||||||
|
"size": 16
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"previous": "0xcea41f8f24fd00aa268619aac5c49b184e5971648db52fb514efdf5f0686d9aa"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"dataset.field"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
88
conformance/vectori/dataset-record/r5.form.json
Normal file
88
conformance/vectori/dataset-record/r5.form.json
Normal file
@ -0,0 +1,88 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "dataset-record/r5.form",
|
||||||
|
"artifact": "dataset-record",
|
||||||
|
"title": "the field commitments are not an object",
|
||||||
|
"source": "derived from dataset-record/r5.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"dataset.commitment",
|
||||||
|
"dataset.field",
|
||||||
|
"dataset.form",
|
||||||
|
"dataset.inclusion"
|
||||||
|
],
|
||||||
|
"base": "dataset-record/r5.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "set",
|
||||||
|
"path": [
|
||||||
|
"record",
|
||||||
|
"c"
|
||||||
|
],
|
||||||
|
"value": "x"
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"record": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-verifiable-record",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 2,
|
||||||
|
"commitmentHash": "0x4cd24b27c6c17493766099e86e188abfa3ac25d5e28a86e48792d20962a3486d",
|
||||||
|
"i": 5,
|
||||||
|
"id": "r5",
|
||||||
|
"c": "x",
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "DE",
|
||||||
|
"salt": "b0760847d3e4e33261605d29a686c37f"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 55,
|
||||||
|
"salt": "5056c3b0bcfd665aefce9b421efb7826"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 5,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x423f202599ef3d02b5f3ff547235afd8e222ed7c26c61a01e4c15de7e2f4948b",
|
||||||
|
"0xe31e82f61895c75f5648f82d79fcbb86486581e1b39baa636dc71eada3ba3452",
|
||||||
|
"0xb69d58d00d2681aae7d29aa7836c94b0f65e2d4847379b4ba09caec5762875ea",
|
||||||
|
"0xe1ff507974903713d6ac9451d920007303edcffa4a82190f3976ba1c0b06d932"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"commitment": {
|
||||||
|
"v": 1,
|
||||||
|
"format": "aere-verifiable-dataset-1",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 2,
|
||||||
|
"size": 16,
|
||||||
|
"logRoot": "0x7b5bc02c63e970752f38d69995e4771ef596b56a640fc9addef32d570970be68",
|
||||||
|
"createdAt": "2026-10-03T00:01:00.000Z",
|
||||||
|
"indexes": {
|
||||||
|
"age": {
|
||||||
|
"root": "0xfc641a2eadd7d876f9b4fe284dac094fb83543cf43a2c2f80e88f6d9e98114a7",
|
||||||
|
"size": 16
|
||||||
|
},
|
||||||
|
"country": {
|
||||||
|
"root": "0x5be9a95a39966382ab8d83179ae93380d723d49eff2f3b76a290a72a8ee60149",
|
||||||
|
"size": 16
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"previous": "0xcea41f8f24fd00aa268619aac5c49b184e5971648db52fb514efdf5f0686d9aa"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"dataset.form"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
95
conformance/vectori/dataset-record/r5.inclusion.json
Normal file
95
conformance/vectori/dataset-record/r5.inclusion.json
Normal file
@ -0,0 +1,95 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "dataset-record/r5.inclusion",
|
||||||
|
"artifact": "dataset-record",
|
||||||
|
"title": "one hash of the log proof changed",
|
||||||
|
"source": "derived from dataset-record/r5.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"dataset.commitment",
|
||||||
|
"dataset.field",
|
||||||
|
"dataset.form",
|
||||||
|
"dataset.inclusion"
|
||||||
|
],
|
||||||
|
"base": "dataset-record/r5.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "set",
|
||||||
|
"path": [
|
||||||
|
"record",
|
||||||
|
"logProof",
|
||||||
|
"path",
|
||||||
|
0
|
||||||
|
],
|
||||||
|
"value": "0x423f202599ef3d02b5f3ff547235afd8e222ed7c26c61a01e4c15de7e2f49480"
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"record": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-verifiable-record",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 2,
|
||||||
|
"commitmentHash": "0x4cd24b27c6c17493766099e86e188abfa3ac25d5e28a86e48792d20962a3486d",
|
||||||
|
"i": 5,
|
||||||
|
"id": "r5",
|
||||||
|
"c": {
|
||||||
|
"age": "0x6dd1cb642a41c2d474dc7764232b79718e57c56a22c4db6aafbd5c9d76fb711f",
|
||||||
|
"country": "0xcb77a35d9ad17c99e38939e1462c261ad4143ec0acf3dd1257bfd5004027cc8f",
|
||||||
|
"email": "0x3d6ddf25d6991f89b1d02087e062407a2379c28c8284a3709e66d242de58dd59",
|
||||||
|
"note": "0xbfcf4fba3f6f3aad1fe3b28ab76cf7bb923006b80063dbbf29372cbd7c8a0e9e"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "DE",
|
||||||
|
"salt": "b0760847d3e4e33261605d29a686c37f"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 55,
|
||||||
|
"salt": "5056c3b0bcfd665aefce9b421efb7826"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 5,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x423f202599ef3d02b5f3ff547235afd8e222ed7c26c61a01e4c15de7e2f49480",
|
||||||
|
"0xe31e82f61895c75f5648f82d79fcbb86486581e1b39baa636dc71eada3ba3452",
|
||||||
|
"0xb69d58d00d2681aae7d29aa7836c94b0f65e2d4847379b4ba09caec5762875ea",
|
||||||
|
"0xe1ff507974903713d6ac9451d920007303edcffa4a82190f3976ba1c0b06d932"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"commitment": {
|
||||||
|
"v": 1,
|
||||||
|
"format": "aere-verifiable-dataset-1",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 2,
|
||||||
|
"size": 16,
|
||||||
|
"logRoot": "0x7b5bc02c63e970752f38d69995e4771ef596b56a640fc9addef32d570970be68",
|
||||||
|
"createdAt": "2026-10-03T00:01:00.000Z",
|
||||||
|
"indexes": {
|
||||||
|
"age": {
|
||||||
|
"root": "0xfc641a2eadd7d876f9b4fe284dac094fb83543cf43a2c2f80e88f6d9e98114a7",
|
||||||
|
"size": 16
|
||||||
|
},
|
||||||
|
"country": {
|
||||||
|
"root": "0x5be9a95a39966382ab8d83179ae93380d723d49eff2f3b76a290a72a8ee60149",
|
||||||
|
"size": 16
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"previous": "0xcea41f8f24fd00aa268619aac5c49b184e5971648db52fb514efdf5f0686d9aa"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"dataset.inclusion"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
84
conformance/vectori/dataset-record/r5.valid.json
Normal file
84
conformance/vectori/dataset-record/r5.valid.json
Normal file
@ -0,0 +1,84 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "dataset-record/r5.valid",
|
||||||
|
"artifact": "dataset-record",
|
||||||
|
"title": "one record against the commitment of version 2, two fields disclosed",
|
||||||
|
"source": "producer (verifiable-data), random salts, generated 2026-10-03T09:33:28.671Z",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"dataset.commitment",
|
||||||
|
"dataset.field",
|
||||||
|
"dataset.form",
|
||||||
|
"dataset.inclusion"
|
||||||
|
],
|
||||||
|
"base": null,
|
||||||
|
"mutation": null,
|
||||||
|
"input": {
|
||||||
|
"record": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-verifiable-record",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 2,
|
||||||
|
"commitmentHash": "0x4cd24b27c6c17493766099e86e188abfa3ac25d5e28a86e48792d20962a3486d",
|
||||||
|
"i": 5,
|
||||||
|
"id": "r5",
|
||||||
|
"c": {
|
||||||
|
"age": "0x6dd1cb642a41c2d474dc7764232b79718e57c56a22c4db6aafbd5c9d76fb711f",
|
||||||
|
"country": "0xcb77a35d9ad17c99e38939e1462c261ad4143ec0acf3dd1257bfd5004027cc8f",
|
||||||
|
"email": "0x3d6ddf25d6991f89b1d02087e062407a2379c28c8284a3709e66d242de58dd59",
|
||||||
|
"note": "0xbfcf4fba3f6f3aad1fe3b28ab76cf7bb923006b80063dbbf29372cbd7c8a0e9e"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "DE",
|
||||||
|
"salt": "b0760847d3e4e33261605d29a686c37f"
|
||||||
|
},
|
||||||
|
"age": {
|
||||||
|
"value": 55,
|
||||||
|
"salt": "5056c3b0bcfd665aefce9b421efb7826"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 5,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x423f202599ef3d02b5f3ff547235afd8e222ed7c26c61a01e4c15de7e2f4948b",
|
||||||
|
"0xe31e82f61895c75f5648f82d79fcbb86486581e1b39baa636dc71eada3ba3452",
|
||||||
|
"0xb69d58d00d2681aae7d29aa7836c94b0f65e2d4847379b4ba09caec5762875ea",
|
||||||
|
"0xe1ff507974903713d6ac9451d920007303edcffa4a82190f3976ba1c0b06d932"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"commitment": {
|
||||||
|
"v": 1,
|
||||||
|
"format": "aere-verifiable-dataset-1",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 2,
|
||||||
|
"size": 16,
|
||||||
|
"logRoot": "0x7b5bc02c63e970752f38d69995e4771ef596b56a640fc9addef32d570970be68",
|
||||||
|
"createdAt": "2026-10-03T00:01:00.000Z",
|
||||||
|
"indexes": {
|
||||||
|
"age": {
|
||||||
|
"root": "0xfc641a2eadd7d876f9b4fe284dac094fb83543cf43a2c2f80e88f6d9e98114a7",
|
||||||
|
"size": 16
|
||||||
|
},
|
||||||
|
"country": {
|
||||||
|
"root": "0x5be9a95a39966382ab8d83179ae93380d723d49eff2f3b76a290a72a8ee60149",
|
||||||
|
"size": 16
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"previous": "0xcea41f8f24fd00aa268619aac5c49b184e5971648db52fb514efdf5f0686d9aa"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "VALID",
|
||||||
|
"failed": [],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "PASSED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
155
conformance/vectori/dataset-sample/four-of-sixteen.sample.json
Normal file
155
conformance/vectori/dataset-sample/four-of-sixteen.sample.json
Normal file
@ -0,0 +1,155 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "dataset-sample/four-of-sixteen.sample",
|
||||||
|
"artifact": "dataset-sample",
|
||||||
|
"title": "the publisher does not serve one of the sampled records",
|
||||||
|
"source": "derived from dataset-sample/four-of-sixteen.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"dataset.commitment",
|
||||||
|
"dataset.field",
|
||||||
|
"dataset.form",
|
||||||
|
"dataset.inclusion",
|
||||||
|
"dataset.sample"
|
||||||
|
],
|
||||||
|
"base": "dataset-sample/four-of-sixteen.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "remove",
|
||||||
|
"path": [
|
||||||
|
"served",
|
||||||
|
"3"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"commitment": {
|
||||||
|
"v": 1,
|
||||||
|
"format": "aere-verifiable-dataset-1",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 2,
|
||||||
|
"size": 16,
|
||||||
|
"logRoot": "0x7b5bc02c63e970752f38d69995e4771ef596b56a640fc9addef32d570970be68",
|
||||||
|
"createdAt": "2026-10-03T00:01:00.000Z",
|
||||||
|
"indexes": {
|
||||||
|
"age": {
|
||||||
|
"root": "0xfc641a2eadd7d876f9b4fe284dac094fb83543cf43a2c2f80e88f6d9e98114a7",
|
||||||
|
"size": 16
|
||||||
|
},
|
||||||
|
"country": {
|
||||||
|
"root": "0x5be9a95a39966382ab8d83179ae93380d723d49eff2f3b76a290a72a8ee60149",
|
||||||
|
"size": 16
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"previous": "0xcea41f8f24fd00aa268619aac5c49b184e5971648db52fb514efdf5f0686d9aa"
|
||||||
|
},
|
||||||
|
"k": 4,
|
||||||
|
"seed": "conformance-sample",
|
||||||
|
"served": {
|
||||||
|
"7": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-verifiable-record",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 2,
|
||||||
|
"commitmentHash": "0x4cd24b27c6c17493766099e86e188abfa3ac25d5e28a86e48792d20962a3486d",
|
||||||
|
"i": 7,
|
||||||
|
"id": "r7",
|
||||||
|
"c": {
|
||||||
|
"age": "0xa1a74e2ac07bab6c41c2556b844aae64857449195ceac53645c629516238b344",
|
||||||
|
"country": "0xcc9aab9315438cb08ca38170956cb46c872df70d01652b24c09f8863300e6196",
|
||||||
|
"email": "0xa90cedaf1e40181e97badd77834f7ad7941cc0d185884b625f260b6843f21aae",
|
||||||
|
"note": "0xcdc993d68c62518d20dddb06072d1f2d576c80a87f33cafdbdfb64d73e78ef51"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "ES",
|
||||||
|
"salt": "985bd39a58f95e5356f853a164382b93"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 7,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x1834d4378c03e4b8303175bcb26d1d8004e2228abcb445a35a1add3901ed7af0",
|
||||||
|
"0xba1730442baeb4246d80e34e1200df5dfecce1c52067e73850f131a1193eefc1",
|
||||||
|
"0xb69d58d00d2681aae7d29aa7836c94b0f65e2d4847379b4ba09caec5762875ea",
|
||||||
|
"0xe1ff507974903713d6ac9451d920007303edcffa4a82190f3976ba1c0b06d932"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"12": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-verifiable-record",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 2,
|
||||||
|
"commitmentHash": "0x4cd24b27c6c17493766099e86e188abfa3ac25d5e28a86e48792d20962a3486d",
|
||||||
|
"i": 12,
|
||||||
|
"id": "r12",
|
||||||
|
"c": {
|
||||||
|
"age": "0x090dd84053907e69b2d2a99757f1a0e248d270d57fa8f442d20f9ecefef019c8",
|
||||||
|
"country": "0xa383f5cce4bec2b3d87ba7689f05af77bb0060b247c69ccd2cf64231592cd33a",
|
||||||
|
"email": "0x72559f17dfc692e8f3a8ceaa63727e94860120fe26e40bd5e81bccc7d0a836e4",
|
||||||
|
"note": "0x89a3d01a0711b2bc1697ec4cb82ca0dc4bcd5bc17bb7b10f22623f579833df54"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "RO",
|
||||||
|
"salt": "2acf87c71b169c498b2cbd745469589a"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 12,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0xc383e9a1e188c33996ec8ed77bb82230a72a4f52facef6bb31482535a09c30e0",
|
||||||
|
"0x85c6057fcfb4dd1d0fdfc0e4a925284def148b2ee0513c6858a29070aca4d50d",
|
||||||
|
"0xaa5a00c12fedc13a01a588cd3a41470e0fcaf2a5ee7b1dc27ffa5b4ff7a3311b",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"14": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-verifiable-record",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 2,
|
||||||
|
"commitmentHash": "0x4cd24b27c6c17493766099e86e188abfa3ac25d5e28a86e48792d20962a3486d",
|
||||||
|
"i": 14,
|
||||||
|
"id": "r14",
|
||||||
|
"c": {
|
||||||
|
"age": "0x2a86b9afad1aff1234aa90bdf96095d07ef5d479992a9081c21adc965a3c20c3",
|
||||||
|
"country": "0xebd5ee1cac77bb2b170c930d964032218f9f9c69284c89b213dbefb2d54b8eee",
|
||||||
|
"email": "0xb9319475dca37efe658a39f9f7c10d13dd21a32276ec911dc57a2677a4e4bb50",
|
||||||
|
"note": "0x3fdbec96439422e50f7faabf111c8c8c2690460aad638b745a6875678fd38f34"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "FR",
|
||||||
|
"salt": "15d426374424c484ffc8ae1bb736d960"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 14,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x12c9a4faf655bb09dbbb6a5fb3a24e44330e5d83222439ab2d2c2224c3791d84",
|
||||||
|
"0x1dd8a5c51c6218cb8ca3a57ee7683a06b1e94aaedc7252a6b296e4091c975377",
|
||||||
|
"0xaa5a00c12fedc13a01a588cd3a41470e0fcaf2a5ee7b1dc27ffa5b4ff7a3311b",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"dataset.sample"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
178
conformance/vectori/dataset-sample/four-of-sixteen.valid.json
Normal file
178
conformance/vectori/dataset-sample/four-of-sixteen.valid.json
Normal file
@ -0,0 +1,178 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "dataset-sample/four-of-sixteen.valid",
|
||||||
|
"artifact": "dataset-sample",
|
||||||
|
"title": "four positions drawn from a seed, each served and verified",
|
||||||
|
"source": "producer (verifiable-data), random salts, generated 2026-10-03T09:33:28.671Z",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"dataset.commitment",
|
||||||
|
"dataset.field",
|
||||||
|
"dataset.form",
|
||||||
|
"dataset.inclusion",
|
||||||
|
"dataset.sample"
|
||||||
|
],
|
||||||
|
"base": null,
|
||||||
|
"mutation": null,
|
||||||
|
"input": {
|
||||||
|
"commitment": {
|
||||||
|
"v": 1,
|
||||||
|
"format": "aere-verifiable-dataset-1",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 2,
|
||||||
|
"size": 16,
|
||||||
|
"logRoot": "0x7b5bc02c63e970752f38d69995e4771ef596b56a640fc9addef32d570970be68",
|
||||||
|
"createdAt": "2026-10-03T00:01:00.000Z",
|
||||||
|
"indexes": {
|
||||||
|
"age": {
|
||||||
|
"root": "0xfc641a2eadd7d876f9b4fe284dac094fb83543cf43a2c2f80e88f6d9e98114a7",
|
||||||
|
"size": 16
|
||||||
|
},
|
||||||
|
"country": {
|
||||||
|
"root": "0x5be9a95a39966382ab8d83179ae93380d723d49eff2f3b76a290a72a8ee60149",
|
||||||
|
"size": 16
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"previous": "0xcea41f8f24fd00aa268619aac5c49b184e5971648db52fb514efdf5f0686d9aa"
|
||||||
|
},
|
||||||
|
"k": 4,
|
||||||
|
"seed": "conformance-sample",
|
||||||
|
"served": {
|
||||||
|
"3": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-verifiable-record",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 2,
|
||||||
|
"commitmentHash": "0x4cd24b27c6c17493766099e86e188abfa3ac25d5e28a86e48792d20962a3486d",
|
||||||
|
"i": 3,
|
||||||
|
"id": "r3",
|
||||||
|
"c": {
|
||||||
|
"age": "0x13ec2a42a36e8b12ebdbd35af1d96962683a06b802e9e1f9e2e020487c691f7f",
|
||||||
|
"country": "0x1d18032f2e5acd907bffb4db2103b3d1d337388078ed9238a913c0cabecb928f",
|
||||||
|
"email": "0xe36f28b120650ba4c2597063b456d4d00847532129bd26dc8c150291265eef23",
|
||||||
|
"note": "0x086341fc0392c796d5f84f78f183deef347fa327e3d48707c460fc4d9c1f9910"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "ES",
|
||||||
|
"salt": "0ee225e77747d7afafb81d1bffdf68c0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 3,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x5083ccb306cbefaa21d75b69a47668b0cd3943865500881281d96e05429face8",
|
||||||
|
"0x6528250e72e30d47b6b47dcefaa225bcb9fc1af0d20ee827c331486083baac56",
|
||||||
|
"0xef30cdbdc0b6467d74313d8b22b2054e32a17b3a484121ccc24cb16d8ad6fec0",
|
||||||
|
"0xe1ff507974903713d6ac9451d920007303edcffa4a82190f3976ba1c0b06d932"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"7": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-verifiable-record",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 2,
|
||||||
|
"commitmentHash": "0x4cd24b27c6c17493766099e86e188abfa3ac25d5e28a86e48792d20962a3486d",
|
||||||
|
"i": 7,
|
||||||
|
"id": "r7",
|
||||||
|
"c": {
|
||||||
|
"age": "0xa1a74e2ac07bab6c41c2556b844aae64857449195ceac53645c629516238b344",
|
||||||
|
"country": "0xcc9aab9315438cb08ca38170956cb46c872df70d01652b24c09f8863300e6196",
|
||||||
|
"email": "0xa90cedaf1e40181e97badd77834f7ad7941cc0d185884b625f260b6843f21aae",
|
||||||
|
"note": "0xcdc993d68c62518d20dddb06072d1f2d576c80a87f33cafdbdfb64d73e78ef51"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "ES",
|
||||||
|
"salt": "985bd39a58f95e5356f853a164382b93"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 7,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x1834d4378c03e4b8303175bcb26d1d8004e2228abcb445a35a1add3901ed7af0",
|
||||||
|
"0xba1730442baeb4246d80e34e1200df5dfecce1c52067e73850f131a1193eefc1",
|
||||||
|
"0xb69d58d00d2681aae7d29aa7836c94b0f65e2d4847379b4ba09caec5762875ea",
|
||||||
|
"0xe1ff507974903713d6ac9451d920007303edcffa4a82190f3976ba1c0b06d932"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"12": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-verifiable-record",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 2,
|
||||||
|
"commitmentHash": "0x4cd24b27c6c17493766099e86e188abfa3ac25d5e28a86e48792d20962a3486d",
|
||||||
|
"i": 12,
|
||||||
|
"id": "r12",
|
||||||
|
"c": {
|
||||||
|
"age": "0x090dd84053907e69b2d2a99757f1a0e248d270d57fa8f442d20f9ecefef019c8",
|
||||||
|
"country": "0xa383f5cce4bec2b3d87ba7689f05af77bb0060b247c69ccd2cf64231592cd33a",
|
||||||
|
"email": "0x72559f17dfc692e8f3a8ceaa63727e94860120fe26e40bd5e81bccc7d0a836e4",
|
||||||
|
"note": "0x89a3d01a0711b2bc1697ec4cb82ca0dc4bcd5bc17bb7b10f22623f579833df54"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "RO",
|
||||||
|
"salt": "2acf87c71b169c498b2cbd745469589a"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 12,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0xc383e9a1e188c33996ec8ed77bb82230a72a4f52facef6bb31482535a09c30e0",
|
||||||
|
"0x85c6057fcfb4dd1d0fdfc0e4a925284def148b2ee0513c6858a29070aca4d50d",
|
||||||
|
"0xaa5a00c12fedc13a01a588cd3a41470e0fcaf2a5ee7b1dc27ffa5b4ff7a3311b",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"14": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-verifiable-record",
|
||||||
|
"name": "conformance",
|
||||||
|
"version": 2,
|
||||||
|
"commitmentHash": "0x4cd24b27c6c17493766099e86e188abfa3ac25d5e28a86e48792d20962a3486d",
|
||||||
|
"i": 14,
|
||||||
|
"id": "r14",
|
||||||
|
"c": {
|
||||||
|
"age": "0x2a86b9afad1aff1234aa90bdf96095d07ef5d479992a9081c21adc965a3c20c3",
|
||||||
|
"country": "0xebd5ee1cac77bb2b170c930d964032218f9f9c69284c89b213dbefb2d54b8eee",
|
||||||
|
"email": "0xb9319475dca37efe658a39f9f7c10d13dd21a32276ec911dc57a2677a4e4bb50",
|
||||||
|
"note": "0x3fdbec96439422e50f7faabf111c8c8c2690460aad638b745a6875678fd38f34"
|
||||||
|
},
|
||||||
|
"disclosed": {
|
||||||
|
"country": {
|
||||||
|
"value": "FR",
|
||||||
|
"salt": "15d426374424c484ffc8ae1bb736d960"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"logProof": {
|
||||||
|
"index": 14,
|
||||||
|
"treeSize": 16,
|
||||||
|
"path": [
|
||||||
|
"0x12c9a4faf655bb09dbbb6a5fb3a24e44330e5d83222439ab2d2c2224c3791d84",
|
||||||
|
"0x1dd8a5c51c6218cb8ca3a57ee7683a06b1e94aaedc7252a6b296e4091c975377",
|
||||||
|
"0xaa5a00c12fedc13a01a588cd3a41470e0fcaf2a5ee7b1dc27ffa5b4ff7a3311b",
|
||||||
|
"0x130f443c7aa19dcb7d32586835a4260e4f181c1a36a43083e0e15d6aa4a41ecc"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "VALID",
|
||||||
|
"failed": [],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "PASSED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
50
conformance/vectori/envelope/agent-decision.form.json
Normal file
50
conformance/vectori/envelope/agent-decision.form.json
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/agent-decision.form",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "agent-decision: the statementHash is 63 hex digits",
|
||||||
|
"source": "derived from envelope/agent-decision.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": "envelope/agent-decision.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "set",
|
||||||
|
"path": [
|
||||||
|
"envelope",
|
||||||
|
"statementHash"
|
||||||
|
],
|
||||||
|
"value": "0x80e2d43344c4b23aea1700f9230d5162a7a8768036e5ed4cd5303856fcd5632"
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-agent-decision-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-agent-decision",
|
||||||
|
"policyHash": "0xc7d983a9886a0899bd6f3f09fde526514b0075f8f6abe77a1886405d86048c27",
|
||||||
|
"actionHash": "0x4ed27941710465e1431097592d2426f029306343d7e1172aa581b56b2fcf7cd4",
|
||||||
|
"allowed": true,
|
||||||
|
"reason": "under the limit",
|
||||||
|
"createdAt": "2026-09-26T00:00:00Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0x80e2d43344c4b23aea1700f9230d5162a7a8768036e5ed4cd5303856fcd5632"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"envelope.form"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
51
conformance/vectori/envelope/agent-decision.integrity.json
Normal file
51
conformance/vectori/envelope/agent-decision.integrity.json
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/agent-decision.integrity",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "agent-decision: statement.policyHash changed after hashing",
|
||||||
|
"source": "derived from envelope/agent-decision.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": "envelope/agent-decision.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "set",
|
||||||
|
"path": [
|
||||||
|
"envelope",
|
||||||
|
"statement",
|
||||||
|
"policyHash"
|
||||||
|
],
|
||||||
|
"value": "0xc7d983a9886a0899bd6f3f09fde526514b0075f8f6abe77a1886405d86048c270"
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-agent-decision-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-agent-decision",
|
||||||
|
"policyHash": "0xc7d983a9886a0899bd6f3f09fde526514b0075f8f6abe77a1886405d86048c270",
|
||||||
|
"actionHash": "0x4ed27941710465e1431097592d2426f029306343d7e1172aa581b56b2fcf7cd4",
|
||||||
|
"allowed": true,
|
||||||
|
"reason": "under the limit",
|
||||||
|
"createdAt": "2026-09-26T00:00:00Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0x80e2d43344c4b23aea1700f9230d5162a7a8768036e5ed4cd5303856fcd5632a"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
41
conformance/vectori/envelope/agent-decision.valid.json
Normal file
41
conformance/vectori/envelope/agent-decision.valid.json
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/agent-decision.valid",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "the agent-decision envelope from its producer",
|
||||||
|
"source": "producer on fixed inputs",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": null,
|
||||||
|
"mutation": null,
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-agent-decision-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-agent-decision",
|
||||||
|
"policyHash": "0xc7d983a9886a0899bd6f3f09fde526514b0075f8f6abe77a1886405d86048c27",
|
||||||
|
"actionHash": "0x4ed27941710465e1431097592d2426f029306343d7e1172aa581b56b2fcf7cd4",
|
||||||
|
"allowed": true,
|
||||||
|
"reason": "under the limit",
|
||||||
|
"createdAt": "2026-09-26T00:00:00Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0x80e2d43344c4b23aea1700f9230d5162a7a8768036e5ed4cd5303856fcd5632a"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "VALID",
|
||||||
|
"failed": [],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "PASSED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
59
conformance/vectori/envelope/ai.form.json
Normal file
59
conformance/vectori/envelope/ai.form.json
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/ai.form",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "ai: the statementHash is 63 hex digits",
|
||||||
|
"source": "derived from envelope/ai.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": "envelope/ai.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "set",
|
||||||
|
"path": [
|
||||||
|
"envelope",
|
||||||
|
"statementHash"
|
||||||
|
],
|
||||||
|
"value": "0x496ba1813fe9923be9817a66dc413482103c0eee5166d55e3b8df3fc3a1c60c"
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-ai-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-ai",
|
||||||
|
"model": {
|
||||||
|
"name": "example-model",
|
||||||
|
"version": "1.0",
|
||||||
|
"weightsSha256": null
|
||||||
|
},
|
||||||
|
"promptHash": "0xbae9264d6d972b80f4fe23b4a22b599a1585c7faa7473232694978240159f3fe",
|
||||||
|
"inputHash": null,
|
||||||
|
"outputHash": "0x761b7ad8ad439b2855fcbb611331c646ef0870b0631247bba3f3025cb6df5a53",
|
||||||
|
"tools": [
|
||||||
|
"search"
|
||||||
|
],
|
||||||
|
"agentId": "agent-7",
|
||||||
|
"requesterHash": null,
|
||||||
|
"createdAt": "2026-09-26T00:00:00Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0x496ba1813fe9923be9817a66dc413482103c0eee5166d55e3b8df3fc3a1c60c"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"envelope.form"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
60
conformance/vectori/envelope/ai.integrity.json
Normal file
60
conformance/vectori/envelope/ai.integrity.json
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/ai.integrity",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "ai: statement.promptHash changed after hashing",
|
||||||
|
"source": "derived from envelope/ai.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": "envelope/ai.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "set",
|
||||||
|
"path": [
|
||||||
|
"envelope",
|
||||||
|
"statement",
|
||||||
|
"promptHash"
|
||||||
|
],
|
||||||
|
"value": "0xbae9264d6d972b80f4fe23b4a22b599a1585c7faa7473232694978240159f3fe0"
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-ai-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-ai",
|
||||||
|
"model": {
|
||||||
|
"name": "example-model",
|
||||||
|
"version": "1.0",
|
||||||
|
"weightsSha256": null
|
||||||
|
},
|
||||||
|
"promptHash": "0xbae9264d6d972b80f4fe23b4a22b599a1585c7faa7473232694978240159f3fe0",
|
||||||
|
"inputHash": null,
|
||||||
|
"outputHash": "0x761b7ad8ad439b2855fcbb611331c646ef0870b0631247bba3f3025cb6df5a53",
|
||||||
|
"tools": [
|
||||||
|
"search"
|
||||||
|
],
|
||||||
|
"agentId": "agent-7",
|
||||||
|
"requesterHash": null,
|
||||||
|
"createdAt": "2026-09-26T00:00:00Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0x496ba1813fe9923be9817a66dc413482103c0eee5166d55e3b8df3fc3a1c60cd"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
50
conformance/vectori/envelope/ai.valid.json
Normal file
50
conformance/vectori/envelope/ai.valid.json
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/ai.valid",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "the ai envelope from its producer",
|
||||||
|
"source": "producer on fixed inputs",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": null,
|
||||||
|
"mutation": null,
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-ai-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-ai",
|
||||||
|
"model": {
|
||||||
|
"name": "example-model",
|
||||||
|
"version": "1.0",
|
||||||
|
"weightsSha256": null
|
||||||
|
},
|
||||||
|
"promptHash": "0xbae9264d6d972b80f4fe23b4a22b599a1585c7faa7473232694978240159f3fe",
|
||||||
|
"inputHash": null,
|
||||||
|
"outputHash": "0x761b7ad8ad439b2855fcbb611331c646ef0870b0631247bba3f3025cb6df5a53",
|
||||||
|
"tools": [
|
||||||
|
"search"
|
||||||
|
],
|
||||||
|
"agentId": "agent-7",
|
||||||
|
"requesterHash": null,
|
||||||
|
"createdAt": "2026-09-26T00:00:00Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0x496ba1813fe9923be9817a66dc413482103c0eee5166d55e3b8df3fc3a1c60cd"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "VALID",
|
||||||
|
"failed": [],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "PASSED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
51
conformance/vectori/envelope/authorization.form.json
Normal file
51
conformance/vectori/envelope/authorization.form.json
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/authorization.form",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "authorization: the statementHash is 63 hex digits",
|
||||||
|
"source": "derived from envelope/authorization.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": "envelope/authorization.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "set",
|
||||||
|
"path": [
|
||||||
|
"envelope",
|
||||||
|
"statementHash"
|
||||||
|
],
|
||||||
|
"value": "0xad70cb9db980eb04d739c7687fec8d3a3675c35105b3d3837c2012c81cd9d52"
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-authorization-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-authorization",
|
||||||
|
"policyHash": "0xf062025b73d9324b189fcec2b5c88338aa6fa9fb7877700681b2049b57e6aedd",
|
||||||
|
"grantor": "org-x",
|
||||||
|
"grantee": "agent-7",
|
||||||
|
"scope": "payments:send<=100",
|
||||||
|
"expiresAt": "2026-12-31T00:00:00Z",
|
||||||
|
"createdAt": "2026-09-26T00:00:00Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0xad70cb9db980eb04d739c7687fec8d3a3675c35105b3d3837c2012c81cd9d52"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"envelope.form"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
52
conformance/vectori/envelope/authorization.integrity.json
Normal file
52
conformance/vectori/envelope/authorization.integrity.json
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/authorization.integrity",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "authorization: statement.policyHash changed after hashing",
|
||||||
|
"source": "derived from envelope/authorization.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": "envelope/authorization.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "set",
|
||||||
|
"path": [
|
||||||
|
"envelope",
|
||||||
|
"statement",
|
||||||
|
"policyHash"
|
||||||
|
],
|
||||||
|
"value": "0xf062025b73d9324b189fcec2b5c88338aa6fa9fb7877700681b2049b57e6aedd0"
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-authorization-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-authorization",
|
||||||
|
"policyHash": "0xf062025b73d9324b189fcec2b5c88338aa6fa9fb7877700681b2049b57e6aedd0",
|
||||||
|
"grantor": "org-x",
|
||||||
|
"grantee": "agent-7",
|
||||||
|
"scope": "payments:send<=100",
|
||||||
|
"expiresAt": "2026-12-31T00:00:00Z",
|
||||||
|
"createdAt": "2026-09-26T00:00:00Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0xad70cb9db980eb04d739c7687fec8d3a3675c35105b3d3837c2012c81cd9d521"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
42
conformance/vectori/envelope/authorization.valid.json
Normal file
42
conformance/vectori/envelope/authorization.valid.json
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/authorization.valid",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "the authorization envelope from its producer",
|
||||||
|
"source": "producer on fixed inputs",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": null,
|
||||||
|
"mutation": null,
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-authorization-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-authorization",
|
||||||
|
"policyHash": "0xf062025b73d9324b189fcec2b5c88338aa6fa9fb7877700681b2049b57e6aedd",
|
||||||
|
"grantor": "org-x",
|
||||||
|
"grantee": "agent-7",
|
||||||
|
"scope": "payments:send<=100",
|
||||||
|
"expiresAt": "2026-12-31T00:00:00Z",
|
||||||
|
"createdAt": "2026-09-26T00:00:00Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0xad70cb9db980eb04d739c7687fec8d3a3675c35105b3d3837c2012c81cd9d521"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "VALID",
|
||||||
|
"failed": [],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "PASSED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
51
conformance/vectori/envelope/block.form.json
Normal file
51
conformance/vectori/envelope/block.form.json
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/block.form",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "block: the statementHash is 63 hex digits",
|
||||||
|
"source": "derived from envelope/block.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": "envelope/block.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "set",
|
||||||
|
"path": [
|
||||||
|
"envelope",
|
||||||
|
"statementHash"
|
||||||
|
],
|
||||||
|
"value": "0xa18b21e49b38ab96633111d562f95738042a0ea63906164b022c075a3c5971a"
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-block-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-block",
|
||||||
|
"stateTransitionProof": null,
|
||||||
|
"blockHash": "0xabababababababababababababababababababababababababababababababab",
|
||||||
|
"stateRoot": "0xcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd",
|
||||||
|
"anchorHeight": 20255488,
|
||||||
|
"certificateDigest": "0xefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefef",
|
||||||
|
"createdAt": "2026-09-26T00:00:00Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0xa18b21e49b38ab96633111d562f95738042a0ea63906164b022c075a3c5971a"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"envelope.form"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
52
conformance/vectori/envelope/block.integrity.json
Normal file
52
conformance/vectori/envelope/block.integrity.json
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/block.integrity",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "block: statement.blockHash changed after hashing",
|
||||||
|
"source": "derived from envelope/block.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": "envelope/block.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "set",
|
||||||
|
"path": [
|
||||||
|
"envelope",
|
||||||
|
"statement",
|
||||||
|
"blockHash"
|
||||||
|
],
|
||||||
|
"value": "0xabababababababababababababababababababababababababababababababab0"
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-block-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-block",
|
||||||
|
"stateTransitionProof": null,
|
||||||
|
"blockHash": "0xabababababababababababababababababababababababababababababababab0",
|
||||||
|
"stateRoot": "0xcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd",
|
||||||
|
"anchorHeight": 20255488,
|
||||||
|
"certificateDigest": "0xefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefef",
|
||||||
|
"createdAt": "2026-09-26T00:00:00Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0xa18b21e49b38ab96633111d562f95738042a0ea63906164b022c075a3c5971ad"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
42
conformance/vectori/envelope/block.valid.json
Normal file
42
conformance/vectori/envelope/block.valid.json
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/block.valid",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "the block envelope from its producer",
|
||||||
|
"source": "producer on fixed inputs",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": null,
|
||||||
|
"mutation": null,
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-block-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-block",
|
||||||
|
"stateTransitionProof": null,
|
||||||
|
"blockHash": "0xabababababababababababababababababababababababababababababababab",
|
||||||
|
"stateRoot": "0xcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcdcd",
|
||||||
|
"anchorHeight": 20255488,
|
||||||
|
"certificateDigest": "0xefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefefef",
|
||||||
|
"createdAt": "2026-09-26T00:00:00Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0xa18b21e49b38ab96633111d562f95738042a0ea63906164b022c075a3c5971ad"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "VALID",
|
||||||
|
"failed": [],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "PASSED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
50
conformance/vectori/envelope/compliance.form.json
Normal file
50
conformance/vectori/envelope/compliance.form.json
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/compliance.form",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "compliance: the statementHash is 63 hex digits",
|
||||||
|
"source": "derived from envelope/compliance.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": "envelope/compliance.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "set",
|
||||||
|
"path": [
|
||||||
|
"envelope",
|
||||||
|
"statementHash"
|
||||||
|
],
|
||||||
|
"value": "0xbac39cebdd87825b034b4b25d5e44478b62d9623db62e5110e88e523187c6e3"
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-compliance-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-compliance",
|
||||||
|
"evidenceHash": "0x20e95ada67c778758b26bd6425863f9a53bb666a98e3fe060eec15866e87cc12",
|
||||||
|
"subject": "org-x",
|
||||||
|
"policy": "pq-ready",
|
||||||
|
"result": "pass",
|
||||||
|
"createdAt": "2026-09-26T00:00:00Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0xbac39cebdd87825b034b4b25d5e44478b62d9623db62e5110e88e523187c6e3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"envelope.form"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
51
conformance/vectori/envelope/compliance.integrity.json
Normal file
51
conformance/vectori/envelope/compliance.integrity.json
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/compliance.integrity",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "compliance: statement.evidenceHash changed after hashing",
|
||||||
|
"source": "derived from envelope/compliance.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": "envelope/compliance.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "set",
|
||||||
|
"path": [
|
||||||
|
"envelope",
|
||||||
|
"statement",
|
||||||
|
"evidenceHash"
|
||||||
|
],
|
||||||
|
"value": "0x20e95ada67c778758b26bd6425863f9a53bb666a98e3fe060eec15866e87cc120"
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-compliance-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-compliance",
|
||||||
|
"evidenceHash": "0x20e95ada67c778758b26bd6425863f9a53bb666a98e3fe060eec15866e87cc120",
|
||||||
|
"subject": "org-x",
|
||||||
|
"policy": "pq-ready",
|
||||||
|
"result": "pass",
|
||||||
|
"createdAt": "2026-09-26T00:00:00Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0xbac39cebdd87825b034b4b25d5e44478b62d9623db62e5110e88e523187c6e32"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
41
conformance/vectori/envelope/compliance.valid.json
Normal file
41
conformance/vectori/envelope/compliance.valid.json
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/compliance.valid",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "the compliance envelope from its producer",
|
||||||
|
"source": "producer on fixed inputs",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": null,
|
||||||
|
"mutation": null,
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-compliance-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-compliance",
|
||||||
|
"evidenceHash": "0x20e95ada67c778758b26bd6425863f9a53bb666a98e3fe060eec15866e87cc12",
|
||||||
|
"subject": "org-x",
|
||||||
|
"policy": "pq-ready",
|
||||||
|
"result": "pass",
|
||||||
|
"createdAt": "2026-09-26T00:00:00Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0xbac39cebdd87825b034b4b25d5e44478b62d9623db62e5110e88e523187c6e32"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "VALID",
|
||||||
|
"failed": [],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "PASSED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
48
conformance/vectori/envelope/data.form.json
Normal file
48
conformance/vectori/envelope/data.form.json
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/data.form",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "data: the statementHash is 63 hex digits",
|
||||||
|
"source": "derived from envelope/data.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": "envelope/data.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "set",
|
||||||
|
"path": [
|
||||||
|
"envelope",
|
||||||
|
"statementHash"
|
||||||
|
],
|
||||||
|
"value": "0x2acbef682084c42c3f8a7bc9fa4370257ff83994ffa92c36e44c556b44d5c8b"
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-data-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-data",
|
||||||
|
"sha256": "0x205830ca5b23bbe39ab510cfddc1dff2d9842e38b5fa7b7c48cd4ca7e44f92a1",
|
||||||
|
"name": "report.csv",
|
||||||
|
"createdAt": "2026-09-26T00:00:00Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0x2acbef682084c42c3f8a7bc9fa4370257ff83994ffa92c36e44c556b44d5c8b"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"envelope.form"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
49
conformance/vectori/envelope/data.integrity.json
Normal file
49
conformance/vectori/envelope/data.integrity.json
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/data.integrity",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "data: statement.sha256 changed after hashing",
|
||||||
|
"source": "derived from envelope/data.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": "envelope/data.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "set",
|
||||||
|
"path": [
|
||||||
|
"envelope",
|
||||||
|
"statement",
|
||||||
|
"sha256"
|
||||||
|
],
|
||||||
|
"value": "0x205830ca5b23bbe39ab510cfddc1dff2d9842e38b5fa7b7c48cd4ca7e44f92a10"
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-data-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-data",
|
||||||
|
"sha256": "0x205830ca5b23bbe39ab510cfddc1dff2d9842e38b5fa7b7c48cd4ca7e44f92a10",
|
||||||
|
"name": "report.csv",
|
||||||
|
"createdAt": "2026-09-26T00:00:00Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0x2acbef682084c42c3f8a7bc9fa4370257ff83994ffa92c36e44c556b44d5c8b2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
39
conformance/vectori/envelope/data.valid.json
Normal file
39
conformance/vectori/envelope/data.valid.json
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/data.valid",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "the data envelope from its producer",
|
||||||
|
"source": "producer on fixed inputs",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": null,
|
||||||
|
"mutation": null,
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-data-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-data",
|
||||||
|
"sha256": "0x205830ca5b23bbe39ab510cfddc1dff2d9842e38b5fa7b7c48cd4ca7e44f92a1",
|
||||||
|
"name": "report.csv",
|
||||||
|
"createdAt": "2026-09-26T00:00:00Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0x2acbef682084c42c3f8a7bc9fa4370257ff83994ffa92c36e44c556b44d5c8b2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "VALID",
|
||||||
|
"failed": [],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "PASSED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
50
conformance/vectori/envelope/device.form.json
Normal file
50
conformance/vectori/envelope/device.form.json
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/device.form",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "device: the statementHash is 63 hex digits",
|
||||||
|
"source": "derived from envelope/device.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": "envelope/device.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "set",
|
||||||
|
"path": [
|
||||||
|
"envelope",
|
||||||
|
"statementHash"
|
||||||
|
],
|
||||||
|
"value": "0x440956f2ba441931fd5dcfbf808c3a646187bd01c144052d52a3b127dc71659"
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-device-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-device",
|
||||||
|
"attestationHash": "0xaa70e763e0eceecb3f1033c9cc44e05681d741afc05d0479269fe859d523021d",
|
||||||
|
"publicKeyHash": "0xfcab7fcc2b4cffd9bb45003bfc2e468a04ef6f77ca8200a7341f027631584d25",
|
||||||
|
"deviceId": "dev-9",
|
||||||
|
"posture": "secure-boot",
|
||||||
|
"createdAt": "2026-09-26T00:00:00Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0x440956f2ba441931fd5dcfbf808c3a646187bd01c144052d52a3b127dc71659"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"envelope.form"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
51
conformance/vectori/envelope/device.integrity.json
Normal file
51
conformance/vectori/envelope/device.integrity.json
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/device.integrity",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "device: statement.attestationHash changed after hashing",
|
||||||
|
"source": "derived from envelope/device.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": "envelope/device.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "set",
|
||||||
|
"path": [
|
||||||
|
"envelope",
|
||||||
|
"statement",
|
||||||
|
"attestationHash"
|
||||||
|
],
|
||||||
|
"value": "0xaa70e763e0eceecb3f1033c9cc44e05681d741afc05d0479269fe859d523021d0"
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-device-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-device",
|
||||||
|
"attestationHash": "0xaa70e763e0eceecb3f1033c9cc44e05681d741afc05d0479269fe859d523021d0",
|
||||||
|
"publicKeyHash": "0xfcab7fcc2b4cffd9bb45003bfc2e468a04ef6f77ca8200a7341f027631584d25",
|
||||||
|
"deviceId": "dev-9",
|
||||||
|
"posture": "secure-boot",
|
||||||
|
"createdAt": "2026-09-26T00:00:00Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0x440956f2ba441931fd5dcfbf808c3a646187bd01c144052d52a3b127dc71659c"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
41
conformance/vectori/envelope/device.valid.json
Normal file
41
conformance/vectori/envelope/device.valid.json
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/device.valid",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "the device envelope from its producer",
|
||||||
|
"source": "producer on fixed inputs",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": null,
|
||||||
|
"mutation": null,
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-device-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-device",
|
||||||
|
"attestationHash": "0xaa70e763e0eceecb3f1033c9cc44e05681d741afc05d0479269fe859d523021d",
|
||||||
|
"publicKeyHash": "0xfcab7fcc2b4cffd9bb45003bfc2e468a04ef6f77ca8200a7341f027631584d25",
|
||||||
|
"deviceId": "dev-9",
|
||||||
|
"posture": "secure-boot",
|
||||||
|
"createdAt": "2026-09-26T00:00:00Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0x440956f2ba441931fd5dcfbf808c3a646187bd01c144052d52a3b127dc71659c"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "VALID",
|
||||||
|
"failed": [],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "PASSED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
51
conformance/vectori/envelope/execution.form.json
Normal file
51
conformance/vectori/envelope/execution.form.json
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/execution.form",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "execution: the statementHash is 63 hex digits",
|
||||||
|
"source": "derived from envelope/execution.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": "envelope/execution.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "set",
|
||||||
|
"path": [
|
||||||
|
"envelope",
|
||||||
|
"statementHash"
|
||||||
|
],
|
||||||
|
"value": "0x06a106c24b5fd8cfc7ed0cee3dc6401c720c394566ad3d7ca899f9640414fc8"
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-execution-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-execution",
|
||||||
|
"inputHash": "0x582967534d0f909d196b97f9e6921342777aea87b46fa52df165389db1fb8ccf",
|
||||||
|
"outputHash": "0x762069bc07a6e1b5df123a5ae7bd91c10daa04694fbaa17fba0cd6a8dcce8f22",
|
||||||
|
"programSha256": null,
|
||||||
|
"program": "aere-node",
|
||||||
|
"exitCode": 0,
|
||||||
|
"createdAt": "2026-09-26T00:00:00Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0x06a106c24b5fd8cfc7ed0cee3dc6401c720c394566ad3d7ca899f9640414fc8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"envelope.form"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
52
conformance/vectori/envelope/execution.integrity.json
Normal file
52
conformance/vectori/envelope/execution.integrity.json
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/execution.integrity",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "execution: statement.inputHash changed after hashing",
|
||||||
|
"source": "derived from envelope/execution.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": "envelope/execution.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "set",
|
||||||
|
"path": [
|
||||||
|
"envelope",
|
||||||
|
"statement",
|
||||||
|
"inputHash"
|
||||||
|
],
|
||||||
|
"value": "0x582967534d0f909d196b97f9e6921342777aea87b46fa52df165389db1fb8ccf0"
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-execution-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-execution",
|
||||||
|
"inputHash": "0x582967534d0f909d196b97f9e6921342777aea87b46fa52df165389db1fb8ccf0",
|
||||||
|
"outputHash": "0x762069bc07a6e1b5df123a5ae7bd91c10daa04694fbaa17fba0cd6a8dcce8f22",
|
||||||
|
"programSha256": null,
|
||||||
|
"program": "aere-node",
|
||||||
|
"exitCode": 0,
|
||||||
|
"createdAt": "2026-09-26T00:00:00Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0x06a106c24b5fd8cfc7ed0cee3dc6401c720c394566ad3d7ca899f9640414fc8e"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
42
conformance/vectori/envelope/execution.valid.json
Normal file
42
conformance/vectori/envelope/execution.valid.json
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/execution.valid",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "the execution envelope from its producer",
|
||||||
|
"source": "producer on fixed inputs",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": null,
|
||||||
|
"mutation": null,
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-execution-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-execution",
|
||||||
|
"inputHash": "0x582967534d0f909d196b97f9e6921342777aea87b46fa52df165389db1fb8ccf",
|
||||||
|
"outputHash": "0x762069bc07a6e1b5df123a5ae7bd91c10daa04694fbaa17fba0cd6a8dcce8f22",
|
||||||
|
"programSha256": null,
|
||||||
|
"program": "aere-node",
|
||||||
|
"exitCode": 0,
|
||||||
|
"createdAt": "2026-09-26T00:00:00Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0x06a106c24b5fd8cfc7ed0cee3dc6401c720c394566ad3d7ca899f9640414fc8e"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "VALID",
|
||||||
|
"failed": [],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "PASSED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
57
conformance/vectori/envelope/fresh-28001.finality.json
Normal file
57
conformance/vectori/envelope/fresh-28001.finality.json
Normal file
@ -0,0 +1,57 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/fresh-28001.finality",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "the same envelope claims a notarization the chain does not hold",
|
||||||
|
"source": "derived from envelope/fresh-28001.valid",
|
||||||
|
"requires": [
|
||||||
|
"rpc-28001"
|
||||||
|
],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.finality",
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": "envelope/fresh-28001.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "add",
|
||||||
|
"path": [
|
||||||
|
"envelope",
|
||||||
|
"notarization"
|
||||||
|
],
|
||||||
|
"value": {
|
||||||
|
"chainId": 28001
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-data-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-data",
|
||||||
|
"sha256": "0xb77944195dabe43e90c675cc0cdf281a63bc642859b32f9779cd359d79d5d699",
|
||||||
|
"name": "conformance-fresh",
|
||||||
|
"createdAt": "2026-10-03T09:33:28.671Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0x542f165753e134e1969f43a50c88cf726db62358e5e1a5341c22570c1181377e",
|
||||||
|
"notarization": {
|
||||||
|
"chainId": 28001
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"chain": 28001
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"envelope.finality"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "PASSED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "FAILED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
43
conformance/vectori/envelope/fresh-28001.valid.json
Normal file
43
conformance/vectori/envelope/fresh-28001.valid.json
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/fresh-28001.valid",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "an envelope nobody notarized, claiming nothing",
|
||||||
|
"source": "producer, random content",
|
||||||
|
"requires": [
|
||||||
|
"rpc-28001"
|
||||||
|
],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.finality",
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": null,
|
||||||
|
"mutation": null,
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-data-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-data",
|
||||||
|
"sha256": "0xb77944195dabe43e90c675cc0cdf281a63bc642859b32f9779cd359d79d5d699",
|
||||||
|
"name": "conformance-fresh",
|
||||||
|
"createdAt": "2026-10-03T09:33:28.671Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0x542f165753e134e1969f43a50c88cf726db62358e5e1a5341c22570c1181377e"
|
||||||
|
},
|
||||||
|
"chain": 28001
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "VALID",
|
||||||
|
"failed": [],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "PASSED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
50
conformance/vectori/envelope/identity.form.json
Normal file
50
conformance/vectori/envelope/identity.form.json
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/identity.form",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "identity: the statementHash is 63 hex digits",
|
||||||
|
"source": "derived from envelope/identity.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": "envelope/identity.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "set",
|
||||||
|
"path": [
|
||||||
|
"envelope",
|
||||||
|
"statementHash"
|
||||||
|
],
|
||||||
|
"value": "0x9c609bdaa3f6e7c0b926c2071a18026a6073e92c4344ea537f3ffabcd3a921b"
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-identity-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-identity",
|
||||||
|
"publicKeyHash": "0xfcab7fcc2b4cffd9bb45003bfc2e468a04ef6f77ca8200a7341f027631584d25",
|
||||||
|
"subjectHash": null,
|
||||||
|
"method": "ml-dsa-65",
|
||||||
|
"subjectId": "agent-1",
|
||||||
|
"createdAt": "2026-09-26T00:00:00Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0x9c609bdaa3f6e7c0b926c2071a18026a6073e92c4344ea537f3ffabcd3a921b"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"envelope.form"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
51
conformance/vectori/envelope/identity.integrity.json
Normal file
51
conformance/vectori/envelope/identity.integrity.json
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/identity.integrity",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "identity: statement.publicKeyHash changed after hashing",
|
||||||
|
"source": "derived from envelope/identity.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": "envelope/identity.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "set",
|
||||||
|
"path": [
|
||||||
|
"envelope",
|
||||||
|
"statement",
|
||||||
|
"publicKeyHash"
|
||||||
|
],
|
||||||
|
"value": "0xfcab7fcc2b4cffd9bb45003bfc2e468a04ef6f77ca8200a7341f027631584d250"
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-identity-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-identity",
|
||||||
|
"publicKeyHash": "0xfcab7fcc2b4cffd9bb45003bfc2e468a04ef6f77ca8200a7341f027631584d250",
|
||||||
|
"subjectHash": null,
|
||||||
|
"method": "ml-dsa-65",
|
||||||
|
"subjectId": "agent-1",
|
||||||
|
"createdAt": "2026-09-26T00:00:00Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0x9c609bdaa3f6e7c0b926c2071a18026a6073e92c4344ea537f3ffabcd3a921b9"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
41
conformance/vectori/envelope/identity.valid.json
Normal file
41
conformance/vectori/envelope/identity.valid.json
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/identity.valid",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "the identity envelope from its producer",
|
||||||
|
"source": "producer on fixed inputs",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": null,
|
||||||
|
"mutation": null,
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-identity-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-identity",
|
||||||
|
"publicKeyHash": "0xfcab7fcc2b4cffd9bb45003bfc2e468a04ef6f77ca8200a7341f027631584d25",
|
||||||
|
"subjectHash": null,
|
||||||
|
"method": "ml-dsa-65",
|
||||||
|
"subjectId": "agent-1",
|
||||||
|
"createdAt": "2026-09-26T00:00:00Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0x9c609bdaa3f6e7c0b926c2071a18026a6073e92c4344ea537f3ffabcd3a921b9"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "VALID",
|
||||||
|
"failed": [],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "PASSED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
49
conformance/vectori/envelope/location.form.json
Normal file
49
conformance/vectori/envelope/location.form.json
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/location.form",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "location: the statementHash is 63 hex digits",
|
||||||
|
"source": "derived from envelope/location.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": "envelope/location.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "set",
|
||||||
|
"path": [
|
||||||
|
"envelope",
|
||||||
|
"statementHash"
|
||||||
|
],
|
||||||
|
"value": "0x88d2213cf649be8237cc64cff901e2ad8051473d4aab76ca02a7206dee83ad6"
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-location-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-location",
|
||||||
|
"evidenceHash": "0x20e95ada67c778758b26bd6425863f9a53bb666a98e3fe060eec15866e87cc12",
|
||||||
|
"subject": "srv-eu",
|
||||||
|
"region": "eu-central",
|
||||||
|
"createdAt": "2026-09-26T00:00:00Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0x88d2213cf649be8237cc64cff901e2ad8051473d4aab76ca02a7206dee83ad6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"envelope.form"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
50
conformance/vectori/envelope/location.integrity.json
Normal file
50
conformance/vectori/envelope/location.integrity.json
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/location.integrity",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "location: statement.evidenceHash changed after hashing",
|
||||||
|
"source": "derived from envelope/location.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": "envelope/location.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "set",
|
||||||
|
"path": [
|
||||||
|
"envelope",
|
||||||
|
"statement",
|
||||||
|
"evidenceHash"
|
||||||
|
],
|
||||||
|
"value": "0x20e95ada67c778758b26bd6425863f9a53bb666a98e3fe060eec15866e87cc120"
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-location-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-location",
|
||||||
|
"evidenceHash": "0x20e95ada67c778758b26bd6425863f9a53bb666a98e3fe060eec15866e87cc120",
|
||||||
|
"subject": "srv-eu",
|
||||||
|
"region": "eu-central",
|
||||||
|
"createdAt": "2026-09-26T00:00:00Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0x88d2213cf649be8237cc64cff901e2ad8051473d4aab76ca02a7206dee83ad6c"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
40
conformance/vectori/envelope/location.valid.json
Normal file
40
conformance/vectori/envelope/location.valid.json
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/location.valid",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "the location envelope from its producer",
|
||||||
|
"source": "producer on fixed inputs",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": null,
|
||||||
|
"mutation": null,
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-location-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-location",
|
||||||
|
"evidenceHash": "0x20e95ada67c778758b26bd6425863f9a53bb666a98e3fe060eec15866e87cc12",
|
||||||
|
"subject": "srv-eu",
|
||||||
|
"region": "eu-central",
|
||||||
|
"createdAt": "2026-09-26T00:00:00Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0x88d2213cf649be8237cc64cff901e2ad8051473d4aab76ca02a7206dee83ad6c"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "VALID",
|
||||||
|
"failed": [],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "PASSED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
50
conformance/vectori/envelope/notarized-28001.valid.json
Normal file
50
conformance/vectori/envelope/notarized-28001.valid.json
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/notarized-28001.valid",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "a dataset commitment notarized on testnet 28001, read back under a verified post-quantum anchor",
|
||||||
|
"source": "recorded (verifiable-data, 2026-10-02)",
|
||||||
|
"requires": [
|
||||||
|
"rpc-28001"
|
||||||
|
],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.finality",
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": null,
|
||||||
|
"mutation": null,
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-data-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-data",
|
||||||
|
"sha256": "0xea7441856ff78c64bc549b763816a76fbe40b049c024843427d42761981741cb",
|
||||||
|
"name": "proba@2",
|
||||||
|
"createdAt": "2026-10-02T08:01:00.000Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0xeb177d94c7bfa1de42c35a7096b454bda04c9456dad0ca6e5922f78b92192260",
|
||||||
|
"notarization": {
|
||||||
|
"chainId": 28001,
|
||||||
|
"notary": "0x70099E62735500AA2F85B60C518551a57B202d54",
|
||||||
|
"firstSeen": 1790929167,
|
||||||
|
"txHash": "0x39938e8ef28f62f60ad3d5f6a205d248e499fe1eda0e1e1851b1c43cc8f08c62",
|
||||||
|
"block": 4400052
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"chain": 28001
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "VALID",
|
||||||
|
"failed": [],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "PASSED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "PASSED",
|
||||||
|
"finality": "PASSED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
47
conformance/vectori/envelope/notarized-claim.partial.json
Normal file
47
conformance/vectori/envelope/notarized-claim.partial.json
Normal file
@ -0,0 +1,47 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/notarized-claim.partial",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "the same envelope judged offline: the notarization it claims is not checked, so it is not VALID",
|
||||||
|
"source": "recorded (verifiable-data, 2026-10-02)",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": null,
|
||||||
|
"mutation": null,
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-data-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-data",
|
||||||
|
"sha256": "0xea7441856ff78c64bc549b763816a76fbe40b049c024843427d42761981741cb",
|
||||||
|
"name": "proba@2",
|
||||||
|
"createdAt": "2026-10-02T08:01:00.000Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0xeb177d94c7bfa1de42c35a7096b454bda04c9456dad0ca6e5922f78b92192260",
|
||||||
|
"notarization": {
|
||||||
|
"chainId": 28001,
|
||||||
|
"notary": "0x70099E62735500AA2F85B60C518551a57B202d54",
|
||||||
|
"firstSeen": 1790929167,
|
||||||
|
"txHash": "0x39938e8ef28f62f60ad3d5f6a205d248e499fe1eda0e1e1851b1c43cc8f08c62",
|
||||||
|
"block": 4400052
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"chain": 28001
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "PARTIAL",
|
||||||
|
"failed": [],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "PASSED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
49
conformance/vectori/envelope/ownership.form.json
Normal file
49
conformance/vectori/envelope/ownership.form.json
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/ownership.form",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "ownership: the statementHash is 63 hex digits",
|
||||||
|
"source": "derived from envelope/ownership.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": "envelope/ownership.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "set",
|
||||||
|
"path": [
|
||||||
|
"envelope",
|
||||||
|
"statementHash"
|
||||||
|
],
|
||||||
|
"value": "0xd41b5b8eb450e3af02fd575a695258f66469c6e36e628cad9aebd724a38248b"
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-ownership-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-ownership",
|
||||||
|
"assetHash": "0x68eef920516b0af8f874dccb72bcffc6f25cdfad43fcb78417fc1feb6efcd698",
|
||||||
|
"owner": "0xowner",
|
||||||
|
"assetId": "nft-7",
|
||||||
|
"createdAt": "2026-09-26T00:00:00Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0xd41b5b8eb450e3af02fd575a695258f66469c6e36e628cad9aebd724a38248b"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"envelope.form"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
50
conformance/vectori/envelope/ownership.integrity.json
Normal file
50
conformance/vectori/envelope/ownership.integrity.json
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/ownership.integrity",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "ownership: statement.assetHash changed after hashing",
|
||||||
|
"source": "derived from envelope/ownership.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": "envelope/ownership.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "set",
|
||||||
|
"path": [
|
||||||
|
"envelope",
|
||||||
|
"statement",
|
||||||
|
"assetHash"
|
||||||
|
],
|
||||||
|
"value": "0x68eef920516b0af8f874dccb72bcffc6f25cdfad43fcb78417fc1feb6efcd6980"
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-ownership-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-ownership",
|
||||||
|
"assetHash": "0x68eef920516b0af8f874dccb72bcffc6f25cdfad43fcb78417fc1feb6efcd6980",
|
||||||
|
"owner": "0xowner",
|
||||||
|
"assetId": "nft-7",
|
||||||
|
"createdAt": "2026-09-26T00:00:00Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0xd41b5b8eb450e3af02fd575a695258f66469c6e36e628cad9aebd724a38248bd"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
40
conformance/vectori/envelope/ownership.valid.json
Normal file
40
conformance/vectori/envelope/ownership.valid.json
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/ownership.valid",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "the ownership envelope from its producer",
|
||||||
|
"source": "producer on fixed inputs",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": null,
|
||||||
|
"mutation": null,
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-ownership-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-ownership",
|
||||||
|
"assetHash": "0x68eef920516b0af8f874dccb72bcffc6f25cdfad43fcb78417fc1feb6efcd698",
|
||||||
|
"owner": "0xowner",
|
||||||
|
"assetId": "nft-7",
|
||||||
|
"createdAt": "2026-09-26T00:00:00Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0xd41b5b8eb450e3af02fd575a695258f66469c6e36e628cad9aebd724a38248bd"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "VALID",
|
||||||
|
"failed": [],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "PASSED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
51
conformance/vectori/envelope/payment.form.json
Normal file
51
conformance/vectori/envelope/payment.form.json
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/payment.form",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "payment: the statementHash is 63 hex digits",
|
||||||
|
"source": "derived from envelope/payment.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": "envelope/payment.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "set",
|
||||||
|
"path": [
|
||||||
|
"envelope",
|
||||||
|
"statementHash"
|
||||||
|
],
|
||||||
|
"value": "0x0e937d67740e2314dfa003848dc46600bf6086d3449097f5eb222665c75a4e3"
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-payment-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-payment",
|
||||||
|
"txHash": "0x536939ed0e78c5b5d2ee7e26767bbad66290547f9fa1fc6602a1aa95cc61b959",
|
||||||
|
"from": "0xa",
|
||||||
|
"to": "0xb",
|
||||||
|
"amount": "100",
|
||||||
|
"asset": "AERE",
|
||||||
|
"createdAt": "2026-09-26T00:00:00Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0x0e937d67740e2314dfa003848dc46600bf6086d3449097f5eb222665c75a4e3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"envelope.form"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
52
conformance/vectori/envelope/payment.integrity.json
Normal file
52
conformance/vectori/envelope/payment.integrity.json
Normal file
@ -0,0 +1,52 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/payment.integrity",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "payment: statement.txHash changed after hashing",
|
||||||
|
"source": "derived from envelope/payment.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": "envelope/payment.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "set",
|
||||||
|
"path": [
|
||||||
|
"envelope",
|
||||||
|
"statement",
|
||||||
|
"txHash"
|
||||||
|
],
|
||||||
|
"value": "0x536939ed0e78c5b5d2ee7e26767bbad66290547f9fa1fc6602a1aa95cc61b9590"
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-payment-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-payment",
|
||||||
|
"txHash": "0x536939ed0e78c5b5d2ee7e26767bbad66290547f9fa1fc6602a1aa95cc61b9590",
|
||||||
|
"from": "0xa",
|
||||||
|
"to": "0xb",
|
||||||
|
"amount": "100",
|
||||||
|
"asset": "AERE",
|
||||||
|
"createdAt": "2026-09-26T00:00:00Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0x0e937d67740e2314dfa003848dc46600bf6086d3449097f5eb222665c75a4e32"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
42
conformance/vectori/envelope/payment.valid.json
Normal file
42
conformance/vectori/envelope/payment.valid.json
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/payment.valid",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "the payment envelope from its producer",
|
||||||
|
"source": "producer on fixed inputs",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": null,
|
||||||
|
"mutation": null,
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-payment-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-payment",
|
||||||
|
"txHash": "0x536939ed0e78c5b5d2ee7e26767bbad66290547f9fa1fc6602a1aa95cc61b959",
|
||||||
|
"from": "0xa",
|
||||||
|
"to": "0xb",
|
||||||
|
"amount": "100",
|
||||||
|
"asset": "AERE",
|
||||||
|
"createdAt": "2026-09-26T00:00:00Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0x0e937d67740e2314dfa003848dc46600bf6086d3449097f5eb222665c75a4e32"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "VALID",
|
||||||
|
"failed": [],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "PASSED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
53
conformance/vectori/envelope/provenance.form.json
Normal file
53
conformance/vectori/envelope/provenance.form.json
Normal file
@ -0,0 +1,53 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/provenance.form",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "provenance: the statementHash is 63 hex digits",
|
||||||
|
"source": "derived from envelope/provenance.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": "envelope/provenance.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "set",
|
||||||
|
"path": [
|
||||||
|
"envelope",
|
||||||
|
"statementHash"
|
||||||
|
],
|
||||||
|
"value": "0x87b2a679d9e8af836c911f87ca8050c9c826c30b011da63ed87cf82146c048c"
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-provenance-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-provenance",
|
||||||
|
"subjectHash": "0x7fbd7ef36fdd97293aa5b3bcd597146101d3ea9a12b271ed0c88bdca25b63d12",
|
||||||
|
"processHash": "0x3053677e4333a96b20ed76c662bca07fb2e1ce059479170139209356787da09c",
|
||||||
|
"parents": [
|
||||||
|
"0x7624c3381360e030f4172f54c925584354cf3595e793f59311c7ac33a582984f",
|
||||||
|
"0xce1d96bce7b6086cd30375a4523daab06e55630c8405d304eaa5a96d0c6d0545"
|
||||||
|
],
|
||||||
|
"actor": "build-bot",
|
||||||
|
"createdAt": "2026-09-26T00:00:00Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0x87b2a679d9e8af836c911f87ca8050c9c826c30b011da63ed87cf82146c048c"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"envelope.form"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
54
conformance/vectori/envelope/provenance.integrity.json
Normal file
54
conformance/vectori/envelope/provenance.integrity.json
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/provenance.integrity",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "provenance: statement.subjectHash changed after hashing",
|
||||||
|
"source": "derived from envelope/provenance.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": "envelope/provenance.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "set",
|
||||||
|
"path": [
|
||||||
|
"envelope",
|
||||||
|
"statement",
|
||||||
|
"subjectHash"
|
||||||
|
],
|
||||||
|
"value": "0x7fbd7ef36fdd97293aa5b3bcd597146101d3ea9a12b271ed0c88bdca25b63d120"
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-provenance-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-provenance",
|
||||||
|
"subjectHash": "0x7fbd7ef36fdd97293aa5b3bcd597146101d3ea9a12b271ed0c88bdca25b63d120",
|
||||||
|
"processHash": "0x3053677e4333a96b20ed76c662bca07fb2e1ce059479170139209356787da09c",
|
||||||
|
"parents": [
|
||||||
|
"0x7624c3381360e030f4172f54c925584354cf3595e793f59311c7ac33a582984f",
|
||||||
|
"0xce1d96bce7b6086cd30375a4523daab06e55630c8405d304eaa5a96d0c6d0545"
|
||||||
|
],
|
||||||
|
"actor": "build-bot",
|
||||||
|
"createdAt": "2026-09-26T00:00:00Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0x87b2a679d9e8af836c911f87ca8050c9c826c30b011da63ed87cf82146c048c3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
44
conformance/vectori/envelope/provenance.valid.json
Normal file
44
conformance/vectori/envelope/provenance.valid.json
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/provenance.valid",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "the provenance envelope from its producer",
|
||||||
|
"source": "producer on fixed inputs",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": null,
|
||||||
|
"mutation": null,
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-provenance-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-provenance",
|
||||||
|
"subjectHash": "0x7fbd7ef36fdd97293aa5b3bcd597146101d3ea9a12b271ed0c88bdca25b63d12",
|
||||||
|
"processHash": "0x3053677e4333a96b20ed76c662bca07fb2e1ce059479170139209356787da09c",
|
||||||
|
"parents": [
|
||||||
|
"0x7624c3381360e030f4172f54c925584354cf3595e793f59311c7ac33a582984f",
|
||||||
|
"0xce1d96bce7b6086cd30375a4523daab06e55630c8405d304eaa5a96d0c6d0545"
|
||||||
|
],
|
||||||
|
"actor": "build-bot",
|
||||||
|
"createdAt": "2026-09-26T00:00:00Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0x87b2a679d9e8af836c911f87ca8050c9c826c30b011da63ed87cf82146c048c3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "VALID",
|
||||||
|
"failed": [],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "PASSED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
50
conformance/vectori/envelope/runtime.form.json
Normal file
50
conformance/vectori/envelope/runtime.form.json
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/runtime.form",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "runtime: the statementHash is 63 hex digits",
|
||||||
|
"source": "derived from envelope/runtime.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": "envelope/runtime.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "set",
|
||||||
|
"path": [
|
||||||
|
"envelope",
|
||||||
|
"statementHash"
|
||||||
|
],
|
||||||
|
"value": "0xdcbb527e5475efc0d5ecf518cd19d4ceb3546324d3f59310ffa9f787bbf96c6"
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-runtime-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-runtime",
|
||||||
|
"artifactSha256": "0xc73f954a0dcd410afe8d2117ec8a4bef49cf677c60045a5f21acfa2a756ff7d5",
|
||||||
|
"attestedSha256": "0xc73f954a0dcd410afe8d2117ec8a4bef49cf677c60045a5f21acfa2a756ff7d5",
|
||||||
|
"host": "h1",
|
||||||
|
"matches": true,
|
||||||
|
"createdAt": "2026-09-26T00:00:00Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0xdcbb527e5475efc0d5ecf518cd19d4ceb3546324d3f59310ffa9f787bbf96c6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"envelope.form"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
51
conformance/vectori/envelope/runtime.integrity.json
Normal file
51
conformance/vectori/envelope/runtime.integrity.json
Normal file
@ -0,0 +1,51 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/runtime.integrity",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "runtime: statement.artifactSha256 changed after hashing",
|
||||||
|
"source": "derived from envelope/runtime.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": "envelope/runtime.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "set",
|
||||||
|
"path": [
|
||||||
|
"envelope",
|
||||||
|
"statement",
|
||||||
|
"artifactSha256"
|
||||||
|
],
|
||||||
|
"value": "0xc73f954a0dcd410afe8d2117ec8a4bef49cf677c60045a5f21acfa2a756ff7d50"
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-runtime-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-runtime",
|
||||||
|
"artifactSha256": "0xc73f954a0dcd410afe8d2117ec8a4bef49cf677c60045a5f21acfa2a756ff7d50",
|
||||||
|
"attestedSha256": "0xc73f954a0dcd410afe8d2117ec8a4bef49cf677c60045a5f21acfa2a756ff7d5",
|
||||||
|
"host": "h1",
|
||||||
|
"matches": true,
|
||||||
|
"createdAt": "2026-09-26T00:00:00Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0xdcbb527e5475efc0d5ecf518cd19d4ceb3546324d3f59310ffa9f787bbf96c63"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
41
conformance/vectori/envelope/runtime.valid.json
Normal file
41
conformance/vectori/envelope/runtime.valid.json
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/runtime.valid",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "the runtime envelope from its producer",
|
||||||
|
"source": "producer on fixed inputs",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": null,
|
||||||
|
"mutation": null,
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-runtime-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-runtime",
|
||||||
|
"artifactSha256": "0xc73f954a0dcd410afe8d2117ec8a4bef49cf677c60045a5f21acfa2a756ff7d5",
|
||||||
|
"attestedSha256": "0xc73f954a0dcd410afe8d2117ec8a4bef49cf677c60045a5f21acfa2a756ff7d5",
|
||||||
|
"host": "h1",
|
||||||
|
"matches": true,
|
||||||
|
"createdAt": "2026-09-26T00:00:00Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0xdcbb527e5475efc0d5ecf518cd19d4ceb3546324d3f59310ffa9f787bbf96c63"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "VALID",
|
||||||
|
"failed": [],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "PASSED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
54
conformance/vectori/envelope/settlement.form.json
Normal file
54
conformance/vectori/envelope/settlement.form.json
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/settlement.form",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "settlement: the statementHash is 63 hex digits",
|
||||||
|
"source": "derived from envelope/settlement.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": "envelope/settlement.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "set",
|
||||||
|
"path": [
|
||||||
|
"envelope",
|
||||||
|
"statementHash"
|
||||||
|
],
|
||||||
|
"value": "0x19d9b1141c923ed4faf8304daffd5639e813c3b70248ffefc5b8a5e6373d26c"
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-settlement-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-settlement",
|
||||||
|
"instructionHash": "0xd5ee7e3afb8ac427fe87d3f7acd285363550bff09ff9f617ecc303488b21be61",
|
||||||
|
"txHash": "0x1212121212121212121212121212121212121212121212121212121212121212",
|
||||||
|
"blockHash": "0x3434343434343434343434343434343434343434343434343434343434343434",
|
||||||
|
"chainId": 2800,
|
||||||
|
"from": "0xa",
|
||||||
|
"to": "0xb",
|
||||||
|
"amount": "100",
|
||||||
|
"asset": "AERE",
|
||||||
|
"createdAt": "2026-09-26T00:00:00Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0x19d9b1141c923ed4faf8304daffd5639e813c3b70248ffefc5b8a5e6373d26c"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"envelope.form"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
55
conformance/vectori/envelope/settlement.integrity.json
Normal file
55
conformance/vectori/envelope/settlement.integrity.json
Normal file
@ -0,0 +1,55 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/settlement.integrity",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "settlement: statement.instructionHash changed after hashing",
|
||||||
|
"source": "derived from envelope/settlement.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": "envelope/settlement.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "set",
|
||||||
|
"path": [
|
||||||
|
"envelope",
|
||||||
|
"statement",
|
||||||
|
"instructionHash"
|
||||||
|
],
|
||||||
|
"value": "0xd5ee7e3afb8ac427fe87d3f7acd285363550bff09ff9f617ecc303488b21be610"
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-settlement-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-settlement",
|
||||||
|
"instructionHash": "0xd5ee7e3afb8ac427fe87d3f7acd285363550bff09ff9f617ecc303488b21be610",
|
||||||
|
"txHash": "0x1212121212121212121212121212121212121212121212121212121212121212",
|
||||||
|
"blockHash": "0x3434343434343434343434343434343434343434343434343434343434343434",
|
||||||
|
"chainId": 2800,
|
||||||
|
"from": "0xa",
|
||||||
|
"to": "0xb",
|
||||||
|
"amount": "100",
|
||||||
|
"asset": "AERE",
|
||||||
|
"createdAt": "2026-09-26T00:00:00Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0x19d9b1141c923ed4faf8304daffd5639e813c3b70248ffefc5b8a5e6373d26cf"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
45
conformance/vectori/envelope/settlement.valid.json
Normal file
45
conformance/vectori/envelope/settlement.valid.json
Normal file
@ -0,0 +1,45 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/settlement.valid",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "the settlement envelope from its producer",
|
||||||
|
"source": "producer on fixed inputs",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": null,
|
||||||
|
"mutation": null,
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-settlement-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-settlement",
|
||||||
|
"instructionHash": "0xd5ee7e3afb8ac427fe87d3f7acd285363550bff09ff9f617ecc303488b21be61",
|
||||||
|
"txHash": "0x1212121212121212121212121212121212121212121212121212121212121212",
|
||||||
|
"blockHash": "0x3434343434343434343434343434343434343434343434343434343434343434",
|
||||||
|
"chainId": 2800,
|
||||||
|
"from": "0xa",
|
||||||
|
"to": "0xb",
|
||||||
|
"amount": "100",
|
||||||
|
"asset": "AERE",
|
||||||
|
"createdAt": "2026-09-26T00:00:00Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0x19d9b1141c923ed4faf8304daffd5639e813c3b70248ffefc5b8a5e6373d26cf"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "VALID",
|
||||||
|
"failed": [],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "PASSED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
56
conformance/vectori/envelope/signed-head.signature.json
Normal file
56
conformance/vectori/envelope/signed-head.signature.json
Normal file
@ -0,0 +1,56 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/signed-head.signature",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "the signature has one character changed",
|
||||||
|
"source": "derived from envelope/signed-head.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity",
|
||||||
|
"envelope.signature"
|
||||||
|
],
|
||||||
|
"base": "envelope/signed-head.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "set",
|
||||||
|
"path": [
|
||||||
|
"envelope",
|
||||||
|
"signature",
|
||||||
|
"signature"
|
||||||
|
],
|
||||||
|
"value": "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"
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-audit-tree-head-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-audit-tree-head",
|
||||||
|
"host": "conformance",
|
||||||
|
"treeSize": 3,
|
||||||
|
"rootHash": "0xfeabb16d0b795805345b053ff7b77d732ca566303b0dace87992b667674b1bd3",
|
||||||
|
"createdAt": "2026-10-03T09:33:28.671Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0xe661da6bb6f98b38d5b891debb4b72111b90852f133bed0f6dc22cb3f9ae6c41",
|
||||||
|
"signature": {
|
||||||
|
"scheme": "ml-dsa-65",
|
||||||
|
"publicKey": "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",
|
||||||
|
"signature": "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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"envelope.signature"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "PASSED",
|
||||||
|
"authenticity": "FAILED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
46
conformance/vectori/envelope/signed-head.valid.json
Normal file
46
conformance/vectori/envelope/signed-head.valid.json
Normal file
@ -0,0 +1,46 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/signed-head.valid",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "a tree head signed with ML-DSA-65",
|
||||||
|
"source": "producer (verify-layer tree head), key made and discarded at generation",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity",
|
||||||
|
"envelope.signature"
|
||||||
|
],
|
||||||
|
"base": null,
|
||||||
|
"mutation": null,
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-audit-tree-head-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-audit-tree-head",
|
||||||
|
"host": "conformance",
|
||||||
|
"treeSize": 3,
|
||||||
|
"rootHash": "0xfeabb16d0b795805345b053ff7b77d732ca566303b0dace87992b667674b1bd3",
|
||||||
|
"createdAt": "2026-10-03T09:33:28.671Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0xe661da6bb6f98b38d5b891debb4b72111b90852f133bed0f6dc22cb3f9ae6c41",
|
||||||
|
"signature": {
|
||||||
|
"scheme": "ml-dsa-65",
|
||||||
|
"publicKey": "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",
|
||||||
|
"signature": "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"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "VALID",
|
||||||
|
"failed": [],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "PASSED",
|
||||||
|
"authenticity": "PASSED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
49
conformance/vectori/envelope/time.form.json
Normal file
49
conformance/vectori/envelope/time.form.json
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/time.form",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "time: the statementHash is 63 hex digits",
|
||||||
|
"source": "derived from envelope/time.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": "envelope/time.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "set",
|
||||||
|
"path": [
|
||||||
|
"envelope",
|
||||||
|
"statementHash"
|
||||||
|
],
|
||||||
|
"value": "0xbd803c1eae1875ac755df34e94e9cb20e30c12fe3c02b0c7c4cfe677040ecd3"
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-time-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-time",
|
||||||
|
"subjectHash": "0xe12e3d24bc08d052711daa489e746297af597599f2726d945c1d6309427b9394",
|
||||||
|
"source": "aere-anchor",
|
||||||
|
"at": "2026-09-26T00:00:00Z",
|
||||||
|
"createdAt": "2026-09-26T00:00:00Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0xbd803c1eae1875ac755df34e94e9cb20e30c12fe3c02b0c7c4cfe677040ecd3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"envelope.form"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
50
conformance/vectori/envelope/time.integrity.json
Normal file
50
conformance/vectori/envelope/time.integrity.json
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/time.integrity",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "time: statement.subjectHash changed after hashing",
|
||||||
|
"source": "derived from envelope/time.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": "envelope/time.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "set",
|
||||||
|
"path": [
|
||||||
|
"envelope",
|
||||||
|
"statement",
|
||||||
|
"subjectHash"
|
||||||
|
],
|
||||||
|
"value": "0xe12e3d24bc08d052711daa489e746297af597599f2726d945c1d6309427b93940"
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-time-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-time",
|
||||||
|
"subjectHash": "0xe12e3d24bc08d052711daa489e746297af597599f2726d945c1d6309427b93940",
|
||||||
|
"source": "aere-anchor",
|
||||||
|
"at": "2026-09-26T00:00:00Z",
|
||||||
|
"createdAt": "2026-09-26T00:00:00Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0xbd803c1eae1875ac755df34e94e9cb20e30c12fe3c02b0c7c4cfe677040ecd31"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
40
conformance/vectori/envelope/time.valid.json
Normal file
40
conformance/vectori/envelope/time.valid.json
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "envelope/time.valid",
|
||||||
|
"artifact": "envelope",
|
||||||
|
"title": "the time envelope from its producer",
|
||||||
|
"source": "producer on fixed inputs",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity"
|
||||||
|
],
|
||||||
|
"base": null,
|
||||||
|
"mutation": null,
|
||||||
|
"input": {
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-time-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-time",
|
||||||
|
"subjectHash": "0xe12e3d24bc08d052711daa489e746297af597599f2726d945c1d6309427b9394",
|
||||||
|
"source": "aere-anchor",
|
||||||
|
"at": "2026-09-26T00:00:00Z",
|
||||||
|
"createdAt": "2026-09-26T00:00:00Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0xbd803c1eae1875ac755df34e94e9cb20e30c12fe3c02b0c7c4cfe677040ecd31"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "VALID",
|
||||||
|
"failed": [],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "PASSED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
156
conformance/vectori/market-timeline/s1-paid-28001.valid.json
Normal file
156
conformance/vectori/market-timeline/s1-paid-28001.valid.json
Normal file
@ -0,0 +1,156 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "market-timeline/s1-paid-28001.valid",
|
||||||
|
"artifact": "market-timeline",
|
||||||
|
"title": "the same timeline judged with the chain: the execution envelope is under a verified post-quantum anchor",
|
||||||
|
"source": "recorded (market-settlement, 2026-10-02), scenario S1",
|
||||||
|
"requires": [
|
||||||
|
"rpc-28001"
|
||||||
|
],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.finality",
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity",
|
||||||
|
"market.arbiter",
|
||||||
|
"market.complete",
|
||||||
|
"market.deadline",
|
||||||
|
"market.form",
|
||||||
|
"market.payout",
|
||||||
|
"market.posting",
|
||||||
|
"market.proof",
|
||||||
|
"market.replay",
|
||||||
|
"market.result",
|
||||||
|
"market.window"
|
||||||
|
],
|
||||||
|
"base": null,
|
||||||
|
"mutation": null,
|
||||||
|
"input": {
|
||||||
|
"chainId": 28001,
|
||||||
|
"market": "0x4145d6f639436d840957F2D4B9f2e73f34F56B5D",
|
||||||
|
"jobId": "5",
|
||||||
|
"constants": {
|
||||||
|
"arbiter": "0x5521aC7371Afdbf6BE986B46Da4116fb256d9e58",
|
||||||
|
"governance": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"arbitrationTimeout": 1209600,
|
||||||
|
"zkVerifier": "0x70099E62735500AA2F85B60C518551a57B202d54",
|
||||||
|
"pinnedProofSelector": "0x4388a21c"
|
||||||
|
},
|
||||||
|
"job": {
|
||||||
|
"requester": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"provider": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"token": "0x0000000000000000000000000000000000000000",
|
||||||
|
"reward": "0",
|
||||||
|
"providerBond": "0",
|
||||||
|
"specHash": "0xf2a0d3e03521234fd6be921e346817e6f77e20db038ff5325318a2a5a47cfd25",
|
||||||
|
"resultHash": "0xeba5b6ff363f15d358926ab16bc4c7c8c979ec2d217868134810488304dde0be",
|
||||||
|
"zkProgramVKey": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
||||||
|
"mode": 0,
|
||||||
|
"status": 5,
|
||||||
|
"pqcSettlement": false,
|
||||||
|
"offchainResult": false,
|
||||||
|
"deadline": 1790960218,
|
||||||
|
"challengeWindow": 90,
|
||||||
|
"submittedAt": 1790959639,
|
||||||
|
"disputedAt": 0
|
||||||
|
},
|
||||||
|
"events": [
|
||||||
|
{
|
||||||
|
"name": "JobPosted",
|
||||||
|
"args": {
|
||||||
|
"id": "5",
|
||||||
|
"requester": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"token": "0x0000000000000000000000000000000000000000",
|
||||||
|
"reward": "10000000000000000",
|
||||||
|
"mode": "0",
|
||||||
|
"specHash": "0xf2a0d3e03521234fd6be921e346817e6f77e20db038ff5325318a2a5a47cfd25",
|
||||||
|
"deadline": "1790960218",
|
||||||
|
"pqcSettlement": false
|
||||||
|
},
|
||||||
|
"blockNumber": 4446103,
|
||||||
|
"blockHash": "0xfc22d0155293bef0b5349507a2a45495de7d3baa37b1f9e5e482585d93ecdc3e",
|
||||||
|
"timestamp": 1790959620,
|
||||||
|
"txHash": "0x5178c7b523d9ad5516f5e649f50bc98c44aacd6c4564403ac6b7528a9e63791e",
|
||||||
|
"from": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"logIndex": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "JobClaimed",
|
||||||
|
"args": {
|
||||||
|
"id": "5",
|
||||||
|
"provider": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"providerBond": "4000000000000000"
|
||||||
|
},
|
||||||
|
"blockNumber": 4446113,
|
||||||
|
"blockHash": "0xd59b44a60e225a952c0ef940a62f6ebe7325dc4d75627161c329aa6f48bc9ce4",
|
||||||
|
"timestamp": 1790959626,
|
||||||
|
"txHash": "0xf46a947200113d014c3e8b0282267feb2882f0d8895ae4b13a72f1db20fa7ee3",
|
||||||
|
"from": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"logIndex": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ResultSubmitted",
|
||||||
|
"args": {
|
||||||
|
"id": "5",
|
||||||
|
"resultHash": "0xeba5b6ff363f15d358926ab16bc4c7c8c979ec2d217868134810488304dde0be",
|
||||||
|
"result": "0x7b22646967657374223a22307864346139306165303264396364623232353863373239633532636166613662613263623164306539323532326135313739313733383362366535386131323535222c226974657273223a32303030302c2273656564223a22307862666366386461653665366631303562346537656164383938613466646230333139373435646562336433383034326533383135643735383035653130363064222c227461736b223a226b656363616b2d636861696e227d"
|
||||||
|
},
|
||||||
|
"blockNumber": 4446136,
|
||||||
|
"blockHash": "0x7cedaf1f5da474b94c41fd0925f181459ff642fa449843886d94226daaf2650f",
|
||||||
|
"timestamp": 1790959639,
|
||||||
|
"txHash": "0xea128ff1992e39f6690ebfbfbd9896ff27bcea0db4b0070c32062d2de599d446",
|
||||||
|
"from": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"logIndex": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "JobPaid",
|
||||||
|
"args": {
|
||||||
|
"id": "5",
|
||||||
|
"provider": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"token": "0x0000000000000000000000000000000000000000",
|
||||||
|
"reward": "10000000000000000",
|
||||||
|
"bondReturned": "4000000000000000"
|
||||||
|
},
|
||||||
|
"blockNumber": 4446295,
|
||||||
|
"blockHash": "0x736c818d1833f0c88ccda5ec5101d392fd842af32a6b152018a085c7a75a7c5c",
|
||||||
|
"timestamp": 1790959733,
|
||||||
|
"txHash": "0x5e4bfedda879e4e016b7f4434f75da4a8af63ccc4cce285d714b9e56e453e65f",
|
||||||
|
"from": "0x5521aC7371Afdbf6BE986B46Da4116fb256d9e58",
|
||||||
|
"logIndex": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"result": "0x7b22646967657374223a22307864346139306165303264396364623232353863373239633532636166613662613263623164306539323532326135313739313733383362366535386131323535222c226974657273223a32303030302c2273656564223a22307862666366386461653665366631303562346537656164383938613466646230333139373435646562336433383034326533383135643735383035653130363064222c227461736b223a226b656363616b2d636861696e227d",
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-execution-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-execution",
|
||||||
|
"inputHash": "0xf2a0d3e03521234fd6be921e346817e6f77e20db038ff5325318a2a5a47cfd25",
|
||||||
|
"outputHash": "0xeba5b6ff363f15d358926ab16bc4c7c8c979ec2d217868134810488304dde0be",
|
||||||
|
"programSha256": "0x1824b9e133c368fab195cb2f33e35bee78abdb4de7b03f0c377ac5af951eb9e0",
|
||||||
|
"program": "keccak-chain",
|
||||||
|
"exitCode": 0,
|
||||||
|
"createdAt": "2026-10-02T16:47:11.789Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0xfffa43d50b6222a17f915d528f0f636b16882f736f357b8418d30dfec2f88200",
|
||||||
|
"notarization": {
|
||||||
|
"chainId": 28001,
|
||||||
|
"notary": "0x70099E62735500AA2F85B60C518551a57B202d54",
|
||||||
|
"firstSeen": 1790959633,
|
||||||
|
"txHash": "0x86f094ae0ba1030b97060792344eda1b6018367dbf14088c6c2de1e5a4e2fc6e",
|
||||||
|
"block": 4446125
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "VALID",
|
||||||
|
"failed": [],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "PASSED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "PASSED",
|
||||||
|
"finality": "PASSED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
153
conformance/vectori/market-timeline/s1-paid-claim.partial.json
Normal file
153
conformance/vectori/market-timeline/s1-paid-claim.partial.json
Normal file
@ -0,0 +1,153 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "market-timeline/s1-paid-claim.partial",
|
||||||
|
"artifact": "market-timeline",
|
||||||
|
"title": "accepted and paid; its execution envelope claims a notarization that an offline run does not check",
|
||||||
|
"source": "recorded (market-settlement, 2026-10-02), scenario S1",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity",
|
||||||
|
"market.arbiter",
|
||||||
|
"market.complete",
|
||||||
|
"market.deadline",
|
||||||
|
"market.form",
|
||||||
|
"market.payout",
|
||||||
|
"market.posting",
|
||||||
|
"market.proof",
|
||||||
|
"market.replay",
|
||||||
|
"market.result",
|
||||||
|
"market.window"
|
||||||
|
],
|
||||||
|
"base": null,
|
||||||
|
"mutation": null,
|
||||||
|
"input": {
|
||||||
|
"chainId": 28001,
|
||||||
|
"market": "0x4145d6f639436d840957F2D4B9f2e73f34F56B5D",
|
||||||
|
"jobId": "5",
|
||||||
|
"constants": {
|
||||||
|
"arbiter": "0x5521aC7371Afdbf6BE986B46Da4116fb256d9e58",
|
||||||
|
"governance": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"arbitrationTimeout": 1209600,
|
||||||
|
"zkVerifier": "0x70099E62735500AA2F85B60C518551a57B202d54",
|
||||||
|
"pinnedProofSelector": "0x4388a21c"
|
||||||
|
},
|
||||||
|
"job": {
|
||||||
|
"requester": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"provider": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"token": "0x0000000000000000000000000000000000000000",
|
||||||
|
"reward": "0",
|
||||||
|
"providerBond": "0",
|
||||||
|
"specHash": "0xf2a0d3e03521234fd6be921e346817e6f77e20db038ff5325318a2a5a47cfd25",
|
||||||
|
"resultHash": "0xeba5b6ff363f15d358926ab16bc4c7c8c979ec2d217868134810488304dde0be",
|
||||||
|
"zkProgramVKey": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
||||||
|
"mode": 0,
|
||||||
|
"status": 5,
|
||||||
|
"pqcSettlement": false,
|
||||||
|
"offchainResult": false,
|
||||||
|
"deadline": 1790960218,
|
||||||
|
"challengeWindow": 90,
|
||||||
|
"submittedAt": 1790959639,
|
||||||
|
"disputedAt": 0
|
||||||
|
},
|
||||||
|
"events": [
|
||||||
|
{
|
||||||
|
"name": "JobPosted",
|
||||||
|
"args": {
|
||||||
|
"id": "5",
|
||||||
|
"requester": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"token": "0x0000000000000000000000000000000000000000",
|
||||||
|
"reward": "10000000000000000",
|
||||||
|
"mode": "0",
|
||||||
|
"specHash": "0xf2a0d3e03521234fd6be921e346817e6f77e20db038ff5325318a2a5a47cfd25",
|
||||||
|
"deadline": "1790960218",
|
||||||
|
"pqcSettlement": false
|
||||||
|
},
|
||||||
|
"blockNumber": 4446103,
|
||||||
|
"blockHash": "0xfc22d0155293bef0b5349507a2a45495de7d3baa37b1f9e5e482585d93ecdc3e",
|
||||||
|
"timestamp": 1790959620,
|
||||||
|
"txHash": "0x5178c7b523d9ad5516f5e649f50bc98c44aacd6c4564403ac6b7528a9e63791e",
|
||||||
|
"from": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"logIndex": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "JobClaimed",
|
||||||
|
"args": {
|
||||||
|
"id": "5",
|
||||||
|
"provider": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"providerBond": "4000000000000000"
|
||||||
|
},
|
||||||
|
"blockNumber": 4446113,
|
||||||
|
"blockHash": "0xd59b44a60e225a952c0ef940a62f6ebe7325dc4d75627161c329aa6f48bc9ce4",
|
||||||
|
"timestamp": 1790959626,
|
||||||
|
"txHash": "0xf46a947200113d014c3e8b0282267feb2882f0d8895ae4b13a72f1db20fa7ee3",
|
||||||
|
"from": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"logIndex": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ResultSubmitted",
|
||||||
|
"args": {
|
||||||
|
"id": "5",
|
||||||
|
"resultHash": "0xeba5b6ff363f15d358926ab16bc4c7c8c979ec2d217868134810488304dde0be",
|
||||||
|
"result": "0x7b22646967657374223a22307864346139306165303264396364623232353863373239633532636166613662613263623164306539323532326135313739313733383362366535386131323535222c226974657273223a32303030302c2273656564223a22307862666366386461653665366631303562346537656164383938613466646230333139373435646562336433383034326533383135643735383035653130363064222c227461736b223a226b656363616b2d636861696e227d"
|
||||||
|
},
|
||||||
|
"blockNumber": 4446136,
|
||||||
|
"blockHash": "0x7cedaf1f5da474b94c41fd0925f181459ff642fa449843886d94226daaf2650f",
|
||||||
|
"timestamp": 1790959639,
|
||||||
|
"txHash": "0xea128ff1992e39f6690ebfbfbd9896ff27bcea0db4b0070c32062d2de599d446",
|
||||||
|
"from": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"logIndex": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "JobPaid",
|
||||||
|
"args": {
|
||||||
|
"id": "5",
|
||||||
|
"provider": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"token": "0x0000000000000000000000000000000000000000",
|
||||||
|
"reward": "10000000000000000",
|
||||||
|
"bondReturned": "4000000000000000"
|
||||||
|
},
|
||||||
|
"blockNumber": 4446295,
|
||||||
|
"blockHash": "0x736c818d1833f0c88ccda5ec5101d392fd842af32a6b152018a085c7a75a7c5c",
|
||||||
|
"timestamp": 1790959733,
|
||||||
|
"txHash": "0x5e4bfedda879e4e016b7f4434f75da4a8af63ccc4cce285d714b9e56e453e65f",
|
||||||
|
"from": "0x5521aC7371Afdbf6BE986B46Da4116fb256d9e58",
|
||||||
|
"logIndex": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"result": "0x7b22646967657374223a22307864346139306165303264396364623232353863373239633532636166613662613263623164306539323532326135313739313733383362366535386131323535222c226974657273223a32303030302c2273656564223a22307862666366386461653665366631303562346537656164383938613466646230333139373435646562336433383034326533383135643735383035653130363064222c227461736b223a226b656363616b2d636861696e227d",
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-execution-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-execution",
|
||||||
|
"inputHash": "0xf2a0d3e03521234fd6be921e346817e6f77e20db038ff5325318a2a5a47cfd25",
|
||||||
|
"outputHash": "0xeba5b6ff363f15d358926ab16bc4c7c8c979ec2d217868134810488304dde0be",
|
||||||
|
"programSha256": "0x1824b9e133c368fab195cb2f33e35bee78abdb4de7b03f0c377ac5af951eb9e0",
|
||||||
|
"program": "keccak-chain",
|
||||||
|
"exitCode": 0,
|
||||||
|
"createdAt": "2026-10-02T16:47:11.789Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0xfffa43d50b6222a17f915d528f0f636b16882f736f357b8418d30dfec2f88200",
|
||||||
|
"notarization": {
|
||||||
|
"chainId": 28001,
|
||||||
|
"notary": "0x70099E62735500AA2F85B60C518551a57B202d54",
|
||||||
|
"firstSeen": 1790959633,
|
||||||
|
"txHash": "0x86f094ae0ba1030b97060792344eda1b6018367dbf14088c6c2de1e5a4e2fc6e",
|
||||||
|
"block": 4446125
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "PARTIAL",
|
||||||
|
"failed": [],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "PASSED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
147
conformance/vectori/market-timeline/s1.complete-submission.json
Normal file
147
conformance/vectori/market-timeline/s1.complete-submission.json
Normal file
@ -0,0 +1,147 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "market-timeline/s1.complete-submission",
|
||||||
|
"artifact": "market-timeline",
|
||||||
|
"title": "the submission withheld from the timeline (the job state has a submission time)",
|
||||||
|
"source": "derived from market-timeline/s1-paid-claim.partial",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity",
|
||||||
|
"market.arbiter",
|
||||||
|
"market.complete",
|
||||||
|
"market.deadline",
|
||||||
|
"market.form",
|
||||||
|
"market.payout",
|
||||||
|
"market.posting",
|
||||||
|
"market.proof",
|
||||||
|
"market.replay",
|
||||||
|
"market.result",
|
||||||
|
"market.window"
|
||||||
|
],
|
||||||
|
"base": "market-timeline/s1-paid-claim.partial",
|
||||||
|
"mutation": {
|
||||||
|
"op": "remove",
|
||||||
|
"path": [
|
||||||
|
"events",
|
||||||
|
2
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"chainId": 28001,
|
||||||
|
"market": "0x4145d6f639436d840957F2D4B9f2e73f34F56B5D",
|
||||||
|
"jobId": "5",
|
||||||
|
"constants": {
|
||||||
|
"arbiter": "0x5521aC7371Afdbf6BE986B46Da4116fb256d9e58",
|
||||||
|
"governance": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"arbitrationTimeout": 1209600,
|
||||||
|
"zkVerifier": "0x70099E62735500AA2F85B60C518551a57B202d54",
|
||||||
|
"pinnedProofSelector": "0x4388a21c"
|
||||||
|
},
|
||||||
|
"job": {
|
||||||
|
"requester": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"provider": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"token": "0x0000000000000000000000000000000000000000",
|
||||||
|
"reward": "0",
|
||||||
|
"providerBond": "0",
|
||||||
|
"specHash": "0xf2a0d3e03521234fd6be921e346817e6f77e20db038ff5325318a2a5a47cfd25",
|
||||||
|
"resultHash": "0xeba5b6ff363f15d358926ab16bc4c7c8c979ec2d217868134810488304dde0be",
|
||||||
|
"zkProgramVKey": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
||||||
|
"mode": 0,
|
||||||
|
"status": 5,
|
||||||
|
"pqcSettlement": false,
|
||||||
|
"offchainResult": false,
|
||||||
|
"deadline": 1790960218,
|
||||||
|
"challengeWindow": 90,
|
||||||
|
"submittedAt": 1790959639,
|
||||||
|
"disputedAt": 0
|
||||||
|
},
|
||||||
|
"events": [
|
||||||
|
{
|
||||||
|
"name": "JobPosted",
|
||||||
|
"args": {
|
||||||
|
"id": "5",
|
||||||
|
"requester": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"token": "0x0000000000000000000000000000000000000000",
|
||||||
|
"reward": "10000000000000000",
|
||||||
|
"mode": "0",
|
||||||
|
"specHash": "0xf2a0d3e03521234fd6be921e346817e6f77e20db038ff5325318a2a5a47cfd25",
|
||||||
|
"deadline": "1790960218",
|
||||||
|
"pqcSettlement": false
|
||||||
|
},
|
||||||
|
"blockNumber": 4446103,
|
||||||
|
"blockHash": "0xfc22d0155293bef0b5349507a2a45495de7d3baa37b1f9e5e482585d93ecdc3e",
|
||||||
|
"timestamp": 1790959620,
|
||||||
|
"txHash": "0x5178c7b523d9ad5516f5e649f50bc98c44aacd6c4564403ac6b7528a9e63791e",
|
||||||
|
"from": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"logIndex": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "JobClaimed",
|
||||||
|
"args": {
|
||||||
|
"id": "5",
|
||||||
|
"provider": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"providerBond": "4000000000000000"
|
||||||
|
},
|
||||||
|
"blockNumber": 4446113,
|
||||||
|
"blockHash": "0xd59b44a60e225a952c0ef940a62f6ebe7325dc4d75627161c329aa6f48bc9ce4",
|
||||||
|
"timestamp": 1790959626,
|
||||||
|
"txHash": "0xf46a947200113d014c3e8b0282267feb2882f0d8895ae4b13a72f1db20fa7ee3",
|
||||||
|
"from": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"logIndex": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "JobPaid",
|
||||||
|
"args": {
|
||||||
|
"id": "5",
|
||||||
|
"provider": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"token": "0x0000000000000000000000000000000000000000",
|
||||||
|
"reward": "10000000000000000",
|
||||||
|
"bondReturned": "4000000000000000"
|
||||||
|
},
|
||||||
|
"blockNumber": 4446295,
|
||||||
|
"blockHash": "0x736c818d1833f0c88ccda5ec5101d392fd842af32a6b152018a085c7a75a7c5c",
|
||||||
|
"timestamp": 1790959733,
|
||||||
|
"txHash": "0x5e4bfedda879e4e016b7f4434f75da4a8af63ccc4cce285d714b9e56e453e65f",
|
||||||
|
"from": "0x5521aC7371Afdbf6BE986B46Da4116fb256d9e58",
|
||||||
|
"logIndex": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"result": "0x7b22646967657374223a22307864346139306165303264396364623232353863373239633532636166613662613263623164306539323532326135313739313733383362366535386131323535222c226974657273223a32303030302c2273656564223a22307862666366386461653665366631303562346537656164383938613466646230333139373435646562336433383034326533383135643735383035653130363064222c227461736b223a226b656363616b2d636861696e227d",
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-execution-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-execution",
|
||||||
|
"inputHash": "0xf2a0d3e03521234fd6be921e346817e6f77e20db038ff5325318a2a5a47cfd25",
|
||||||
|
"outputHash": "0xeba5b6ff363f15d358926ab16bc4c7c8c979ec2d217868134810488304dde0be",
|
||||||
|
"programSha256": "0x1824b9e133c368fab195cb2f33e35bee78abdb4de7b03f0c377ac5af951eb9e0",
|
||||||
|
"program": "keccak-chain",
|
||||||
|
"exitCode": 0,
|
||||||
|
"createdAt": "2026-10-02T16:47:11.789Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0xfffa43d50b6222a17f915d528f0f636b16882f736f357b8418d30dfec2f88200",
|
||||||
|
"notarization": {
|
||||||
|
"chainId": 28001,
|
||||||
|
"notary": "0x70099E62735500AA2F85B60C518551a57B202d54",
|
||||||
|
"firstSeen": 1790959633,
|
||||||
|
"txHash": "0x86f094ae0ba1030b97060792344eda1b6018367dbf14088c6c2de1e5a4e2fc6e",
|
||||||
|
"block": 4446125
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"market.complete"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
163
conformance/vectori/market-timeline/s1.deadline.json
Normal file
163
conformance/vectori/market-timeline/s1.deadline.json
Normal file
@ -0,0 +1,163 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "market-timeline/s1.deadline",
|
||||||
|
"artifact": "market-timeline",
|
||||||
|
"title": "the job was claimed after its deadline",
|
||||||
|
"source": "derived from market-timeline/s1-paid-claim.partial",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity",
|
||||||
|
"market.arbiter",
|
||||||
|
"market.complete",
|
||||||
|
"market.deadline",
|
||||||
|
"market.form",
|
||||||
|
"market.payout",
|
||||||
|
"market.posting",
|
||||||
|
"market.proof",
|
||||||
|
"market.replay",
|
||||||
|
"market.result",
|
||||||
|
"market.window"
|
||||||
|
],
|
||||||
|
"base": "market-timeline/s1-paid-claim.partial",
|
||||||
|
"mutation": {
|
||||||
|
"op": "set",
|
||||||
|
"path": [
|
||||||
|
"events",
|
||||||
|
1,
|
||||||
|
"timestamp"
|
||||||
|
],
|
||||||
|
"value": 1790960219
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"chainId": 28001,
|
||||||
|
"market": "0x4145d6f639436d840957F2D4B9f2e73f34F56B5D",
|
||||||
|
"jobId": "5",
|
||||||
|
"constants": {
|
||||||
|
"arbiter": "0x5521aC7371Afdbf6BE986B46Da4116fb256d9e58",
|
||||||
|
"governance": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"arbitrationTimeout": 1209600,
|
||||||
|
"zkVerifier": "0x70099E62735500AA2F85B60C518551a57B202d54",
|
||||||
|
"pinnedProofSelector": "0x4388a21c"
|
||||||
|
},
|
||||||
|
"job": {
|
||||||
|
"requester": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"provider": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"token": "0x0000000000000000000000000000000000000000",
|
||||||
|
"reward": "0",
|
||||||
|
"providerBond": "0",
|
||||||
|
"specHash": "0xf2a0d3e03521234fd6be921e346817e6f77e20db038ff5325318a2a5a47cfd25",
|
||||||
|
"resultHash": "0xeba5b6ff363f15d358926ab16bc4c7c8c979ec2d217868134810488304dde0be",
|
||||||
|
"zkProgramVKey": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
||||||
|
"mode": 0,
|
||||||
|
"status": 5,
|
||||||
|
"pqcSettlement": false,
|
||||||
|
"offchainResult": false,
|
||||||
|
"deadline": 1790960218,
|
||||||
|
"challengeWindow": 90,
|
||||||
|
"submittedAt": 1790959639,
|
||||||
|
"disputedAt": 0
|
||||||
|
},
|
||||||
|
"events": [
|
||||||
|
{
|
||||||
|
"name": "JobPosted",
|
||||||
|
"args": {
|
||||||
|
"id": "5",
|
||||||
|
"requester": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"token": "0x0000000000000000000000000000000000000000",
|
||||||
|
"reward": "10000000000000000",
|
||||||
|
"mode": "0",
|
||||||
|
"specHash": "0xf2a0d3e03521234fd6be921e346817e6f77e20db038ff5325318a2a5a47cfd25",
|
||||||
|
"deadline": "1790960218",
|
||||||
|
"pqcSettlement": false
|
||||||
|
},
|
||||||
|
"blockNumber": 4446103,
|
||||||
|
"blockHash": "0xfc22d0155293bef0b5349507a2a45495de7d3baa37b1f9e5e482585d93ecdc3e",
|
||||||
|
"timestamp": 1790959620,
|
||||||
|
"txHash": "0x5178c7b523d9ad5516f5e649f50bc98c44aacd6c4564403ac6b7528a9e63791e",
|
||||||
|
"from": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"logIndex": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "JobClaimed",
|
||||||
|
"args": {
|
||||||
|
"id": "5",
|
||||||
|
"provider": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"providerBond": "4000000000000000"
|
||||||
|
},
|
||||||
|
"blockNumber": 4446113,
|
||||||
|
"blockHash": "0xd59b44a60e225a952c0ef940a62f6ebe7325dc4d75627161c329aa6f48bc9ce4",
|
||||||
|
"timestamp": 1790960219,
|
||||||
|
"txHash": "0xf46a947200113d014c3e8b0282267feb2882f0d8895ae4b13a72f1db20fa7ee3",
|
||||||
|
"from": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"logIndex": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ResultSubmitted",
|
||||||
|
"args": {
|
||||||
|
"id": "5",
|
||||||
|
"resultHash": "0xeba5b6ff363f15d358926ab16bc4c7c8c979ec2d217868134810488304dde0be",
|
||||||
|
"result": "0x7b22646967657374223a22307864346139306165303264396364623232353863373239633532636166613662613263623164306539323532326135313739313733383362366535386131323535222c226974657273223a32303030302c2273656564223a22307862666366386461653665366631303562346537656164383938613466646230333139373435646562336433383034326533383135643735383035653130363064222c227461736b223a226b656363616b2d636861696e227d"
|
||||||
|
},
|
||||||
|
"blockNumber": 4446136,
|
||||||
|
"blockHash": "0x7cedaf1f5da474b94c41fd0925f181459ff642fa449843886d94226daaf2650f",
|
||||||
|
"timestamp": 1790959639,
|
||||||
|
"txHash": "0xea128ff1992e39f6690ebfbfbd9896ff27bcea0db4b0070c32062d2de599d446",
|
||||||
|
"from": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"logIndex": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "JobPaid",
|
||||||
|
"args": {
|
||||||
|
"id": "5",
|
||||||
|
"provider": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"token": "0x0000000000000000000000000000000000000000",
|
||||||
|
"reward": "10000000000000000",
|
||||||
|
"bondReturned": "4000000000000000"
|
||||||
|
},
|
||||||
|
"blockNumber": 4446295,
|
||||||
|
"blockHash": "0x736c818d1833f0c88ccda5ec5101d392fd842af32a6b152018a085c7a75a7c5c",
|
||||||
|
"timestamp": 1790959733,
|
||||||
|
"txHash": "0x5e4bfedda879e4e016b7f4434f75da4a8af63ccc4cce285d714b9e56e453e65f",
|
||||||
|
"from": "0x5521aC7371Afdbf6BE986B46Da4116fb256d9e58",
|
||||||
|
"logIndex": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"result": "0x7b22646967657374223a22307864346139306165303264396364623232353863373239633532636166613662613263623164306539323532326135313739313733383362366535386131323535222c226974657273223a32303030302c2273656564223a22307862666366386461653665366631303562346537656164383938613466646230333139373435646562336433383034326533383135643735383035653130363064222c227461736b223a226b656363616b2d636861696e227d",
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-execution-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-execution",
|
||||||
|
"inputHash": "0xf2a0d3e03521234fd6be921e346817e6f77e20db038ff5325318a2a5a47cfd25",
|
||||||
|
"outputHash": "0xeba5b6ff363f15d358926ab16bc4c7c8c979ec2d217868134810488304dde0be",
|
||||||
|
"programSha256": "0x1824b9e133c368fab195cb2f33e35bee78abdb4de7b03f0c377ac5af951eb9e0",
|
||||||
|
"program": "keccak-chain",
|
||||||
|
"exitCode": 0,
|
||||||
|
"createdAt": "2026-10-02T16:47:11.789Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0xfffa43d50b6222a17f915d528f0f636b16882f736f357b8418d30dfec2f88200",
|
||||||
|
"notarization": {
|
||||||
|
"chainId": 28001,
|
||||||
|
"notary": "0x70099E62735500AA2F85B60C518551a57B202d54",
|
||||||
|
"firstSeen": 1790959633,
|
||||||
|
"txHash": "0x86f094ae0ba1030b97060792344eda1b6018367dbf14088c6c2de1e5a4e2fc6e",
|
||||||
|
"block": 4446125
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"market.deadline"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
163
conformance/vectori/market-timeline/s1.proof-late.json
Normal file
163
conformance/vectori/market-timeline/s1.proof-late.json
Normal file
@ -0,0 +1,163 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "market-timeline/s1.proof-late",
|
||||||
|
"artifact": "market-timeline",
|
||||||
|
"title": "the execution envelope was notarized only after the challenge window closed",
|
||||||
|
"source": "derived from market-timeline/s1-paid-claim.partial",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity",
|
||||||
|
"market.arbiter",
|
||||||
|
"market.complete",
|
||||||
|
"market.deadline",
|
||||||
|
"market.form",
|
||||||
|
"market.payout",
|
||||||
|
"market.posting",
|
||||||
|
"market.proof",
|
||||||
|
"market.replay",
|
||||||
|
"market.result",
|
||||||
|
"market.window"
|
||||||
|
],
|
||||||
|
"base": "market-timeline/s1-paid-claim.partial",
|
||||||
|
"mutation": {
|
||||||
|
"op": "set",
|
||||||
|
"path": [
|
||||||
|
"envelope",
|
||||||
|
"notarization",
|
||||||
|
"firstSeen"
|
||||||
|
],
|
||||||
|
"value": 1790959730
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"chainId": 28001,
|
||||||
|
"market": "0x4145d6f639436d840957F2D4B9f2e73f34F56B5D",
|
||||||
|
"jobId": "5",
|
||||||
|
"constants": {
|
||||||
|
"arbiter": "0x5521aC7371Afdbf6BE986B46Da4116fb256d9e58",
|
||||||
|
"governance": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"arbitrationTimeout": 1209600,
|
||||||
|
"zkVerifier": "0x70099E62735500AA2F85B60C518551a57B202d54",
|
||||||
|
"pinnedProofSelector": "0x4388a21c"
|
||||||
|
},
|
||||||
|
"job": {
|
||||||
|
"requester": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"provider": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"token": "0x0000000000000000000000000000000000000000",
|
||||||
|
"reward": "0",
|
||||||
|
"providerBond": "0",
|
||||||
|
"specHash": "0xf2a0d3e03521234fd6be921e346817e6f77e20db038ff5325318a2a5a47cfd25",
|
||||||
|
"resultHash": "0xeba5b6ff363f15d358926ab16bc4c7c8c979ec2d217868134810488304dde0be",
|
||||||
|
"zkProgramVKey": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
||||||
|
"mode": 0,
|
||||||
|
"status": 5,
|
||||||
|
"pqcSettlement": false,
|
||||||
|
"offchainResult": false,
|
||||||
|
"deadline": 1790960218,
|
||||||
|
"challengeWindow": 90,
|
||||||
|
"submittedAt": 1790959639,
|
||||||
|
"disputedAt": 0
|
||||||
|
},
|
||||||
|
"events": [
|
||||||
|
{
|
||||||
|
"name": "JobPosted",
|
||||||
|
"args": {
|
||||||
|
"id": "5",
|
||||||
|
"requester": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"token": "0x0000000000000000000000000000000000000000",
|
||||||
|
"reward": "10000000000000000",
|
||||||
|
"mode": "0",
|
||||||
|
"specHash": "0xf2a0d3e03521234fd6be921e346817e6f77e20db038ff5325318a2a5a47cfd25",
|
||||||
|
"deadline": "1790960218",
|
||||||
|
"pqcSettlement": false
|
||||||
|
},
|
||||||
|
"blockNumber": 4446103,
|
||||||
|
"blockHash": "0xfc22d0155293bef0b5349507a2a45495de7d3baa37b1f9e5e482585d93ecdc3e",
|
||||||
|
"timestamp": 1790959620,
|
||||||
|
"txHash": "0x5178c7b523d9ad5516f5e649f50bc98c44aacd6c4564403ac6b7528a9e63791e",
|
||||||
|
"from": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"logIndex": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "JobClaimed",
|
||||||
|
"args": {
|
||||||
|
"id": "5",
|
||||||
|
"provider": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"providerBond": "4000000000000000"
|
||||||
|
},
|
||||||
|
"blockNumber": 4446113,
|
||||||
|
"blockHash": "0xd59b44a60e225a952c0ef940a62f6ebe7325dc4d75627161c329aa6f48bc9ce4",
|
||||||
|
"timestamp": 1790959626,
|
||||||
|
"txHash": "0xf46a947200113d014c3e8b0282267feb2882f0d8895ae4b13a72f1db20fa7ee3",
|
||||||
|
"from": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"logIndex": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ResultSubmitted",
|
||||||
|
"args": {
|
||||||
|
"id": "5",
|
||||||
|
"resultHash": "0xeba5b6ff363f15d358926ab16bc4c7c8c979ec2d217868134810488304dde0be",
|
||||||
|
"result": "0x7b22646967657374223a22307864346139306165303264396364623232353863373239633532636166613662613263623164306539323532326135313739313733383362366535386131323535222c226974657273223a32303030302c2273656564223a22307862666366386461653665366631303562346537656164383938613466646230333139373435646562336433383034326533383135643735383035653130363064222c227461736b223a226b656363616b2d636861696e227d"
|
||||||
|
},
|
||||||
|
"blockNumber": 4446136,
|
||||||
|
"blockHash": "0x7cedaf1f5da474b94c41fd0925f181459ff642fa449843886d94226daaf2650f",
|
||||||
|
"timestamp": 1790959639,
|
||||||
|
"txHash": "0xea128ff1992e39f6690ebfbfbd9896ff27bcea0db4b0070c32062d2de599d446",
|
||||||
|
"from": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"logIndex": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "JobPaid",
|
||||||
|
"args": {
|
||||||
|
"id": "5",
|
||||||
|
"provider": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"token": "0x0000000000000000000000000000000000000000",
|
||||||
|
"reward": "10000000000000000",
|
||||||
|
"bondReturned": "4000000000000000"
|
||||||
|
},
|
||||||
|
"blockNumber": 4446295,
|
||||||
|
"blockHash": "0x736c818d1833f0c88ccda5ec5101d392fd842af32a6b152018a085c7a75a7c5c",
|
||||||
|
"timestamp": 1790959733,
|
||||||
|
"txHash": "0x5e4bfedda879e4e016b7f4434f75da4a8af63ccc4cce285d714b9e56e453e65f",
|
||||||
|
"from": "0x5521aC7371Afdbf6BE986B46Da4116fb256d9e58",
|
||||||
|
"logIndex": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"result": "0x7b22646967657374223a22307864346139306165303264396364623232353863373239633532636166613662613263623164306539323532326135313739313733383362366535386131323535222c226974657273223a32303030302c2273656564223a22307862666366386461653665366631303562346537656164383938613466646230333139373435646562336433383034326533383135643735383035653130363064222c227461736b223a226b656363616b2d636861696e227d",
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-execution-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-execution",
|
||||||
|
"inputHash": "0xf2a0d3e03521234fd6be921e346817e6f77e20db038ff5325318a2a5a47cfd25",
|
||||||
|
"outputHash": "0xeba5b6ff363f15d358926ab16bc4c7c8c979ec2d217868134810488304dde0be",
|
||||||
|
"programSha256": "0x1824b9e133c368fab195cb2f33e35bee78abdb4de7b03f0c377ac5af951eb9e0",
|
||||||
|
"program": "keccak-chain",
|
||||||
|
"exitCode": 0,
|
||||||
|
"createdAt": "2026-10-02T16:47:11.789Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0xfffa43d50b6222a17f915d528f0f636b16882f736f357b8418d30dfec2f88200",
|
||||||
|
"notarization": {
|
||||||
|
"chainId": 28001,
|
||||||
|
"notary": "0x70099E62735500AA2F85B60C518551a57B202d54",
|
||||||
|
"firstSeen": 1790959730,
|
||||||
|
"txHash": "0x86f094ae0ba1030b97060792344eda1b6018367dbf14088c6c2de1e5a4e2fc6e",
|
||||||
|
"block": 4446125
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"market.proof"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
164
conformance/vectori/market-timeline/s1.proof-other-result.json
Normal file
164
conformance/vectori/market-timeline/s1.proof-other-result.json
Normal file
@ -0,0 +1,164 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "market-timeline/s1.proof-other-result",
|
||||||
|
"artifact": "market-timeline",
|
||||||
|
"title": "the execution envelope names another result (and so no longer hashes to its statementHash)",
|
||||||
|
"source": "derived from market-timeline/s1-paid-claim.partial",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity",
|
||||||
|
"market.arbiter",
|
||||||
|
"market.complete",
|
||||||
|
"market.deadline",
|
||||||
|
"market.form",
|
||||||
|
"market.payout",
|
||||||
|
"market.posting",
|
||||||
|
"market.proof",
|
||||||
|
"market.replay",
|
||||||
|
"market.result",
|
||||||
|
"market.window"
|
||||||
|
],
|
||||||
|
"base": "market-timeline/s1-paid-claim.partial",
|
||||||
|
"mutation": {
|
||||||
|
"op": "set",
|
||||||
|
"path": [
|
||||||
|
"envelope",
|
||||||
|
"statement",
|
||||||
|
"outputHash"
|
||||||
|
],
|
||||||
|
"value": "0xcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"chainId": 28001,
|
||||||
|
"market": "0x4145d6f639436d840957F2D4B9f2e73f34F56B5D",
|
||||||
|
"jobId": "5",
|
||||||
|
"constants": {
|
||||||
|
"arbiter": "0x5521aC7371Afdbf6BE986B46Da4116fb256d9e58",
|
||||||
|
"governance": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"arbitrationTimeout": 1209600,
|
||||||
|
"zkVerifier": "0x70099E62735500AA2F85B60C518551a57B202d54",
|
||||||
|
"pinnedProofSelector": "0x4388a21c"
|
||||||
|
},
|
||||||
|
"job": {
|
||||||
|
"requester": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"provider": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"token": "0x0000000000000000000000000000000000000000",
|
||||||
|
"reward": "0",
|
||||||
|
"providerBond": "0",
|
||||||
|
"specHash": "0xf2a0d3e03521234fd6be921e346817e6f77e20db038ff5325318a2a5a47cfd25",
|
||||||
|
"resultHash": "0xeba5b6ff363f15d358926ab16bc4c7c8c979ec2d217868134810488304dde0be",
|
||||||
|
"zkProgramVKey": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
||||||
|
"mode": 0,
|
||||||
|
"status": 5,
|
||||||
|
"pqcSettlement": false,
|
||||||
|
"offchainResult": false,
|
||||||
|
"deadline": 1790960218,
|
||||||
|
"challengeWindow": 90,
|
||||||
|
"submittedAt": 1790959639,
|
||||||
|
"disputedAt": 0
|
||||||
|
},
|
||||||
|
"events": [
|
||||||
|
{
|
||||||
|
"name": "JobPosted",
|
||||||
|
"args": {
|
||||||
|
"id": "5",
|
||||||
|
"requester": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"token": "0x0000000000000000000000000000000000000000",
|
||||||
|
"reward": "10000000000000000",
|
||||||
|
"mode": "0",
|
||||||
|
"specHash": "0xf2a0d3e03521234fd6be921e346817e6f77e20db038ff5325318a2a5a47cfd25",
|
||||||
|
"deadline": "1790960218",
|
||||||
|
"pqcSettlement": false
|
||||||
|
},
|
||||||
|
"blockNumber": 4446103,
|
||||||
|
"blockHash": "0xfc22d0155293bef0b5349507a2a45495de7d3baa37b1f9e5e482585d93ecdc3e",
|
||||||
|
"timestamp": 1790959620,
|
||||||
|
"txHash": "0x5178c7b523d9ad5516f5e649f50bc98c44aacd6c4564403ac6b7528a9e63791e",
|
||||||
|
"from": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"logIndex": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "JobClaimed",
|
||||||
|
"args": {
|
||||||
|
"id": "5",
|
||||||
|
"provider": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"providerBond": "4000000000000000"
|
||||||
|
},
|
||||||
|
"blockNumber": 4446113,
|
||||||
|
"blockHash": "0xd59b44a60e225a952c0ef940a62f6ebe7325dc4d75627161c329aa6f48bc9ce4",
|
||||||
|
"timestamp": 1790959626,
|
||||||
|
"txHash": "0xf46a947200113d014c3e8b0282267feb2882f0d8895ae4b13a72f1db20fa7ee3",
|
||||||
|
"from": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"logIndex": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ResultSubmitted",
|
||||||
|
"args": {
|
||||||
|
"id": "5",
|
||||||
|
"resultHash": "0xeba5b6ff363f15d358926ab16bc4c7c8c979ec2d217868134810488304dde0be",
|
||||||
|
"result": "0x7b22646967657374223a22307864346139306165303264396364623232353863373239633532636166613662613263623164306539323532326135313739313733383362366535386131323535222c226974657273223a32303030302c2273656564223a22307862666366386461653665366631303562346537656164383938613466646230333139373435646562336433383034326533383135643735383035653130363064222c227461736b223a226b656363616b2d636861696e227d"
|
||||||
|
},
|
||||||
|
"blockNumber": 4446136,
|
||||||
|
"blockHash": "0x7cedaf1f5da474b94c41fd0925f181459ff642fa449843886d94226daaf2650f",
|
||||||
|
"timestamp": 1790959639,
|
||||||
|
"txHash": "0xea128ff1992e39f6690ebfbfbd9896ff27bcea0db4b0070c32062d2de599d446",
|
||||||
|
"from": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"logIndex": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "JobPaid",
|
||||||
|
"args": {
|
||||||
|
"id": "5",
|
||||||
|
"provider": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"token": "0x0000000000000000000000000000000000000000",
|
||||||
|
"reward": "10000000000000000",
|
||||||
|
"bondReturned": "4000000000000000"
|
||||||
|
},
|
||||||
|
"blockNumber": 4446295,
|
||||||
|
"blockHash": "0x736c818d1833f0c88ccda5ec5101d392fd842af32a6b152018a085c7a75a7c5c",
|
||||||
|
"timestamp": 1790959733,
|
||||||
|
"txHash": "0x5e4bfedda879e4e016b7f4434f75da4a8af63ccc4cce285d714b9e56e453e65f",
|
||||||
|
"from": "0x5521aC7371Afdbf6BE986B46Da4116fb256d9e58",
|
||||||
|
"logIndex": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"result": "0x7b22646967657374223a22307864346139306165303264396364623232353863373239633532636166613662613263623164306539323532326135313739313733383362366535386131323535222c226974657273223a32303030302c2273656564223a22307862666366386461653665366631303562346537656164383938613466646230333139373435646562336433383034326533383135643735383035653130363064222c227461736b223a226b656363616b2d636861696e227d",
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-execution-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-execution",
|
||||||
|
"inputHash": "0xf2a0d3e03521234fd6be921e346817e6f77e20db038ff5325318a2a5a47cfd25",
|
||||||
|
"outputHash": "0xcccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc",
|
||||||
|
"programSha256": "0x1824b9e133c368fab195cb2f33e35bee78abdb4de7b03f0c377ac5af951eb9e0",
|
||||||
|
"program": "keccak-chain",
|
||||||
|
"exitCode": 0,
|
||||||
|
"createdAt": "2026-10-02T16:47:11.789Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0xfffa43d50b6222a17f915d528f0f636b16882f736f357b8418d30dfec2f88200",
|
||||||
|
"notarization": {
|
||||||
|
"chainId": 28001,
|
||||||
|
"notary": "0x70099E62735500AA2F85B60C518551a57B202d54",
|
||||||
|
"firstSeen": 1790959633,
|
||||||
|
"txHash": "0x86f094ae0ba1030b97060792344eda1b6018367dbf14088c6c2de1e5a4e2fc6e",
|
||||||
|
"block": 4446125
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"envelope.integrity",
|
||||||
|
"market.proof"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
163
conformance/vectori/market-timeline/s1.window.json
Normal file
163
conformance/vectori/market-timeline/s1.window.json
Normal file
@ -0,0 +1,163 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "market-timeline/s1.window",
|
||||||
|
"artifact": "market-timeline",
|
||||||
|
"title": "a third party finalized inside the challenge window",
|
||||||
|
"source": "derived from market-timeline/s1-paid-claim.partial",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"envelope.form",
|
||||||
|
"envelope.integrity",
|
||||||
|
"market.arbiter",
|
||||||
|
"market.complete",
|
||||||
|
"market.deadline",
|
||||||
|
"market.form",
|
||||||
|
"market.payout",
|
||||||
|
"market.posting",
|
||||||
|
"market.proof",
|
||||||
|
"market.replay",
|
||||||
|
"market.result",
|
||||||
|
"market.window"
|
||||||
|
],
|
||||||
|
"base": "market-timeline/s1-paid-claim.partial",
|
||||||
|
"mutation": {
|
||||||
|
"op": "set",
|
||||||
|
"path": [
|
||||||
|
"events",
|
||||||
|
3,
|
||||||
|
"timestamp"
|
||||||
|
],
|
||||||
|
"value": 1790959640
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"chainId": 28001,
|
||||||
|
"market": "0x4145d6f639436d840957F2D4B9f2e73f34F56B5D",
|
||||||
|
"jobId": "5",
|
||||||
|
"constants": {
|
||||||
|
"arbiter": "0x5521aC7371Afdbf6BE986B46Da4116fb256d9e58",
|
||||||
|
"governance": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"arbitrationTimeout": 1209600,
|
||||||
|
"zkVerifier": "0x70099E62735500AA2F85B60C518551a57B202d54",
|
||||||
|
"pinnedProofSelector": "0x4388a21c"
|
||||||
|
},
|
||||||
|
"job": {
|
||||||
|
"requester": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"provider": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"token": "0x0000000000000000000000000000000000000000",
|
||||||
|
"reward": "0",
|
||||||
|
"providerBond": "0",
|
||||||
|
"specHash": "0xf2a0d3e03521234fd6be921e346817e6f77e20db038ff5325318a2a5a47cfd25",
|
||||||
|
"resultHash": "0xeba5b6ff363f15d358926ab16bc4c7c8c979ec2d217868134810488304dde0be",
|
||||||
|
"zkProgramVKey": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
||||||
|
"mode": 0,
|
||||||
|
"status": 5,
|
||||||
|
"pqcSettlement": false,
|
||||||
|
"offchainResult": false,
|
||||||
|
"deadline": 1790960218,
|
||||||
|
"challengeWindow": 90,
|
||||||
|
"submittedAt": 1790959639,
|
||||||
|
"disputedAt": 0
|
||||||
|
},
|
||||||
|
"events": [
|
||||||
|
{
|
||||||
|
"name": "JobPosted",
|
||||||
|
"args": {
|
||||||
|
"id": "5",
|
||||||
|
"requester": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"token": "0x0000000000000000000000000000000000000000",
|
||||||
|
"reward": "10000000000000000",
|
||||||
|
"mode": "0",
|
||||||
|
"specHash": "0xf2a0d3e03521234fd6be921e346817e6f77e20db038ff5325318a2a5a47cfd25",
|
||||||
|
"deadline": "1790960218",
|
||||||
|
"pqcSettlement": false
|
||||||
|
},
|
||||||
|
"blockNumber": 4446103,
|
||||||
|
"blockHash": "0xfc22d0155293bef0b5349507a2a45495de7d3baa37b1f9e5e482585d93ecdc3e",
|
||||||
|
"timestamp": 1790959620,
|
||||||
|
"txHash": "0x5178c7b523d9ad5516f5e649f50bc98c44aacd6c4564403ac6b7528a9e63791e",
|
||||||
|
"from": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"logIndex": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "JobClaimed",
|
||||||
|
"args": {
|
||||||
|
"id": "5",
|
||||||
|
"provider": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"providerBond": "4000000000000000"
|
||||||
|
},
|
||||||
|
"blockNumber": 4446113,
|
||||||
|
"blockHash": "0xd59b44a60e225a952c0ef940a62f6ebe7325dc4d75627161c329aa6f48bc9ce4",
|
||||||
|
"timestamp": 1790959626,
|
||||||
|
"txHash": "0xf46a947200113d014c3e8b0282267feb2882f0d8895ae4b13a72f1db20fa7ee3",
|
||||||
|
"from": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"logIndex": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ResultSubmitted",
|
||||||
|
"args": {
|
||||||
|
"id": "5",
|
||||||
|
"resultHash": "0xeba5b6ff363f15d358926ab16bc4c7c8c979ec2d217868134810488304dde0be",
|
||||||
|
"result": "0x7b22646967657374223a22307864346139306165303264396364623232353863373239633532636166613662613263623164306539323532326135313739313733383362366535386131323535222c226974657273223a32303030302c2273656564223a22307862666366386461653665366631303562346537656164383938613466646230333139373435646562336433383034326533383135643735383035653130363064222c227461736b223a226b656363616b2d636861696e227d"
|
||||||
|
},
|
||||||
|
"blockNumber": 4446136,
|
||||||
|
"blockHash": "0x7cedaf1f5da474b94c41fd0925f181459ff642fa449843886d94226daaf2650f",
|
||||||
|
"timestamp": 1790959639,
|
||||||
|
"txHash": "0xea128ff1992e39f6690ebfbfbd9896ff27bcea0db4b0070c32062d2de599d446",
|
||||||
|
"from": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"logIndex": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "JobPaid",
|
||||||
|
"args": {
|
||||||
|
"id": "5",
|
||||||
|
"provider": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"token": "0x0000000000000000000000000000000000000000",
|
||||||
|
"reward": "10000000000000000",
|
||||||
|
"bondReturned": "4000000000000000"
|
||||||
|
},
|
||||||
|
"blockNumber": 4446295,
|
||||||
|
"blockHash": "0x736c818d1833f0c88ccda5ec5101d392fd842af32a6b152018a085c7a75a7c5c",
|
||||||
|
"timestamp": 1790959640,
|
||||||
|
"txHash": "0x5e4bfedda879e4e016b7f4434f75da4a8af63ccc4cce285d714b9e56e453e65f",
|
||||||
|
"from": "0x5521aC7371Afdbf6BE986B46Da4116fb256d9e58",
|
||||||
|
"logIndex": 0
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"result": "0x7b22646967657374223a22307864346139306165303264396364623232353863373239633532636166613662613263623164306539323532326135313739313733383362366535386131323535222c226974657273223a32303030302c2273656564223a22307862666366386461653665366631303562346537656164383938613466646230333139373435646562336433383034326533383135643735383035653130363064222c227461736b223a226b656363616b2d636861696e227d",
|
||||||
|
"envelope": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-execution-attestation",
|
||||||
|
"statement": {
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-proof-of-execution",
|
||||||
|
"inputHash": "0xf2a0d3e03521234fd6be921e346817e6f77e20db038ff5325318a2a5a47cfd25",
|
||||||
|
"outputHash": "0xeba5b6ff363f15d358926ab16bc4c7c8c979ec2d217868134810488304dde0be",
|
||||||
|
"programSha256": "0x1824b9e133c368fab195cb2f33e35bee78abdb4de7b03f0c377ac5af951eb9e0",
|
||||||
|
"program": "keccak-chain",
|
||||||
|
"exitCode": 0,
|
||||||
|
"createdAt": "2026-10-02T16:47:11.789Z"
|
||||||
|
},
|
||||||
|
"statementHash": "0xfffa43d50b6222a17f915d528f0f636b16882f736f357b8418d30dfec2f88200",
|
||||||
|
"notarization": {
|
||||||
|
"chainId": 28001,
|
||||||
|
"notary": "0x70099E62735500AA2F85B60C518551a57B202d54",
|
||||||
|
"firstSeen": 1790959633,
|
||||||
|
"txHash": "0x86f094ae0ba1030b97060792344eda1b6018367dbf14088c6c2de1e5a4e2fc6e",
|
||||||
|
"block": 4446125
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"market.window"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
155
conformance/vectori/market-timeline/s2-slashed.valid.json
Normal file
155
conformance/vectori/market-timeline/s2-slashed.valid.json
Normal file
@ -0,0 +1,155 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "market-timeline/s2-slashed.valid",
|
||||||
|
"artifact": "market-timeline",
|
||||||
|
"title": "a dispute the challenger won: the provider slashed",
|
||||||
|
"source": "recorded (market-settlement, 2026-10-02), scenario S2",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"market.arbiter",
|
||||||
|
"market.complete",
|
||||||
|
"market.deadline",
|
||||||
|
"market.form",
|
||||||
|
"market.payout",
|
||||||
|
"market.posting",
|
||||||
|
"market.proof",
|
||||||
|
"market.replay",
|
||||||
|
"market.result",
|
||||||
|
"market.window"
|
||||||
|
],
|
||||||
|
"base": null,
|
||||||
|
"mutation": null,
|
||||||
|
"input": {
|
||||||
|
"chainId": 28001,
|
||||||
|
"market": "0x4145d6f639436d840957F2D4B9f2e73f34F56B5D",
|
||||||
|
"jobId": "6",
|
||||||
|
"constants": {
|
||||||
|
"arbiter": "0x5521aC7371Afdbf6BE986B46Da4116fb256d9e58",
|
||||||
|
"governance": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"arbitrationTimeout": 1209600,
|
||||||
|
"zkVerifier": "0x70099E62735500AA2F85B60C518551a57B202d54",
|
||||||
|
"pinnedProofSelector": "0x4388a21c"
|
||||||
|
},
|
||||||
|
"job": {
|
||||||
|
"requester": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"provider": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"token": "0x0000000000000000000000000000000000000000",
|
||||||
|
"reward": "0",
|
||||||
|
"providerBond": "0",
|
||||||
|
"specHash": "0x307e7d75c2de86416fd1df625fd5c00a12a4ff6257bea57871de8c7d47cf5a89",
|
||||||
|
"resultHash": "0x2dea74737284c05166223abbb28b3eaf367e8964a5a12bffa0ab4bd1e2b300ae",
|
||||||
|
"zkProgramVKey": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
||||||
|
"mode": 0,
|
||||||
|
"status": 7,
|
||||||
|
"pqcSettlement": false,
|
||||||
|
"offchainResult": false,
|
||||||
|
"deadline": 1790960353,
|
||||||
|
"challengeWindow": 90,
|
||||||
|
"submittedAt": 1790959767,
|
||||||
|
"disputedAt": 1790959773
|
||||||
|
},
|
||||||
|
"events": [
|
||||||
|
{
|
||||||
|
"name": "JobPosted",
|
||||||
|
"args": {
|
||||||
|
"id": "6",
|
||||||
|
"requester": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"token": "0x0000000000000000000000000000000000000000",
|
||||||
|
"reward": "10000000000000000",
|
||||||
|
"mode": "0",
|
||||||
|
"specHash": "0x307e7d75c2de86416fd1df625fd5c00a12a4ff6257bea57871de8c7d47cf5a89",
|
||||||
|
"deadline": "1790960353",
|
||||||
|
"pqcSettlement": false
|
||||||
|
},
|
||||||
|
"blockNumber": 4446332,
|
||||||
|
"blockHash": "0x373ef4cd4095e1db711ba4748c2a5bd2d78a26dd7892a98c14929aeb0b62cf1f",
|
||||||
|
"timestamp": 1790959755,
|
||||||
|
"txHash": "0xdf242547d54507d84bb9ac8d91ce24b65529d17940bd95504f5267ee74bdd92a",
|
||||||
|
"from": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"logIndex": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "JobClaimed",
|
||||||
|
"args": {
|
||||||
|
"id": "6",
|
||||||
|
"provider": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"providerBond": "4000000000000000"
|
||||||
|
},
|
||||||
|
"blockNumber": 4446342,
|
||||||
|
"blockHash": "0xa81e65065cd3c472cc571c64035031c66e975906a92e5b88acba4a6e08c9d7a1",
|
||||||
|
"timestamp": 1790959761,
|
||||||
|
"txHash": "0xfcfc913a260d29b519276a484199d372ed39aac81005166e5231025bf948d35b",
|
||||||
|
"from": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"logIndex": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ResultSubmitted",
|
||||||
|
"args": {
|
||||||
|
"id": "6",
|
||||||
|
"resultHash": "0x2dea74737284c05166223abbb28b3eaf367e8964a5a12bffa0ab4bd1e2b300ae",
|
||||||
|
"result": "0x7b22646967657374223a22307865656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565222c226974657273223a32303030302c2273656564223a22307835646532353538363237666363653664393533623161373033353866313637633962333634666339343461343566653037343161626330633062386434326365222c227461736b223a226b656363616b2d636861696e227d"
|
||||||
|
},
|
||||||
|
"blockNumber": 4446353,
|
||||||
|
"blockHash": "0xd4d23bd3f6d3883330ff25de0a81696c0e9ba473c5457b918c5aa82e55601777",
|
||||||
|
"timestamp": 1790959767,
|
||||||
|
"txHash": "0x5f921a8d67de79bfcfd4d77085fa220d5ecc4191631a7e4dc050e003e612c6c6",
|
||||||
|
"from": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"logIndex": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "JobDisputed",
|
||||||
|
"args": {
|
||||||
|
"id": "6",
|
||||||
|
"challenger": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"bond": "4000000000000000",
|
||||||
|
"recomputedResultHash": "0xb37eb93d1b69a562f94bb2de482a0a4dd3e04493d3020cb29eeef8df82c713c3"
|
||||||
|
},
|
||||||
|
"blockNumber": 4446364,
|
||||||
|
"blockHash": "0xf6a3e7e6f51312f624cbed5251b0c5abe05f9bd2b1d255ec8fe65114d408311c",
|
||||||
|
"timestamp": 1790959773,
|
||||||
|
"txHash": "0x72c54a067ebf1341a588db66f61223a28d7f6977bc60ab8eff5e59e008ddf8de",
|
||||||
|
"from": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"logIndex": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "JobSlashed",
|
||||||
|
"args": {
|
||||||
|
"id": "6",
|
||||||
|
"challenger": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"slashedProviderBond": "4000000000000000"
|
||||||
|
},
|
||||||
|
"blockNumber": 4446375,
|
||||||
|
"blockHash": "0xf5aa67bf1e48b8fc8a8ff44b794b0f9cd501f45d10b7979b7b5fdc37e9d70a9a",
|
||||||
|
"timestamp": 1790959780,
|
||||||
|
"txHash": "0x7b1916485981fef836d5f43c3d8c4528678931f78d4b3110859198c630e5e69f",
|
||||||
|
"from": "0x5521aC7371Afdbf6BE986B46Da4116fb256d9e58",
|
||||||
|
"logIndex": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "DisputeResolved",
|
||||||
|
"args": {
|
||||||
|
"id": "6",
|
||||||
|
"providerWon": false
|
||||||
|
},
|
||||||
|
"blockNumber": 4446375,
|
||||||
|
"blockHash": "0xf5aa67bf1e48b8fc8a8ff44b794b0f9cd501f45d10b7979b7b5fdc37e9d70a9a",
|
||||||
|
"timestamp": 1790959780,
|
||||||
|
"txHash": "0x7b1916485981fef836d5f43c3d8c4528678931f78d4b3110859198c630e5e69f",
|
||||||
|
"from": "0x5521aC7371Afdbf6BE986B46Da4116fb256d9e58",
|
||||||
|
"logIndex": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"result": "0x7b22646967657374223a22307865656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565222c226974657273223a32303030302c2273656564223a22307835646532353538363237666363653664393533623161373033353866313637633962333634666339343461343566653037343161626330633062386434326365222c227461736b223a226b656363616b2d636861696e227d"
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "VALID",
|
||||||
|
"failed": [],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "PASSED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
165
conformance/vectori/market-timeline/s2.arbiter.json
Normal file
165
conformance/vectori/market-timeline/s2.arbiter.json
Normal file
@ -0,0 +1,165 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "market-timeline/s2.arbiter",
|
||||||
|
"artifact": "market-timeline",
|
||||||
|
"title": "the dispute was resolved by an address that is not the arbiter",
|
||||||
|
"source": "derived from market-timeline/s2-slashed.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"market.arbiter",
|
||||||
|
"market.complete",
|
||||||
|
"market.deadline",
|
||||||
|
"market.form",
|
||||||
|
"market.payout",
|
||||||
|
"market.posting",
|
||||||
|
"market.proof",
|
||||||
|
"market.replay",
|
||||||
|
"market.result",
|
||||||
|
"market.window"
|
||||||
|
],
|
||||||
|
"base": "market-timeline/s2-slashed.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "set",
|
||||||
|
"path": [
|
||||||
|
"events",
|
||||||
|
5,
|
||||||
|
"from"
|
||||||
|
],
|
||||||
|
"value": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF"
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"chainId": 28001,
|
||||||
|
"market": "0x4145d6f639436d840957F2D4B9f2e73f34F56B5D",
|
||||||
|
"jobId": "6",
|
||||||
|
"constants": {
|
||||||
|
"arbiter": "0x5521aC7371Afdbf6BE986B46Da4116fb256d9e58",
|
||||||
|
"governance": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"arbitrationTimeout": 1209600,
|
||||||
|
"zkVerifier": "0x70099E62735500AA2F85B60C518551a57B202d54",
|
||||||
|
"pinnedProofSelector": "0x4388a21c"
|
||||||
|
},
|
||||||
|
"job": {
|
||||||
|
"requester": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"provider": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"token": "0x0000000000000000000000000000000000000000",
|
||||||
|
"reward": "0",
|
||||||
|
"providerBond": "0",
|
||||||
|
"specHash": "0x307e7d75c2de86416fd1df625fd5c00a12a4ff6257bea57871de8c7d47cf5a89",
|
||||||
|
"resultHash": "0x2dea74737284c05166223abbb28b3eaf367e8964a5a12bffa0ab4bd1e2b300ae",
|
||||||
|
"zkProgramVKey": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
||||||
|
"mode": 0,
|
||||||
|
"status": 7,
|
||||||
|
"pqcSettlement": false,
|
||||||
|
"offchainResult": false,
|
||||||
|
"deadline": 1790960353,
|
||||||
|
"challengeWindow": 90,
|
||||||
|
"submittedAt": 1790959767,
|
||||||
|
"disputedAt": 1790959773
|
||||||
|
},
|
||||||
|
"events": [
|
||||||
|
{
|
||||||
|
"name": "JobPosted",
|
||||||
|
"args": {
|
||||||
|
"id": "6",
|
||||||
|
"requester": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"token": "0x0000000000000000000000000000000000000000",
|
||||||
|
"reward": "10000000000000000",
|
||||||
|
"mode": "0",
|
||||||
|
"specHash": "0x307e7d75c2de86416fd1df625fd5c00a12a4ff6257bea57871de8c7d47cf5a89",
|
||||||
|
"deadline": "1790960353",
|
||||||
|
"pqcSettlement": false
|
||||||
|
},
|
||||||
|
"blockNumber": 4446332,
|
||||||
|
"blockHash": "0x373ef4cd4095e1db711ba4748c2a5bd2d78a26dd7892a98c14929aeb0b62cf1f",
|
||||||
|
"timestamp": 1790959755,
|
||||||
|
"txHash": "0xdf242547d54507d84bb9ac8d91ce24b65529d17940bd95504f5267ee74bdd92a",
|
||||||
|
"from": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"logIndex": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "JobClaimed",
|
||||||
|
"args": {
|
||||||
|
"id": "6",
|
||||||
|
"provider": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"providerBond": "4000000000000000"
|
||||||
|
},
|
||||||
|
"blockNumber": 4446342,
|
||||||
|
"blockHash": "0xa81e65065cd3c472cc571c64035031c66e975906a92e5b88acba4a6e08c9d7a1",
|
||||||
|
"timestamp": 1790959761,
|
||||||
|
"txHash": "0xfcfc913a260d29b519276a484199d372ed39aac81005166e5231025bf948d35b",
|
||||||
|
"from": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"logIndex": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ResultSubmitted",
|
||||||
|
"args": {
|
||||||
|
"id": "6",
|
||||||
|
"resultHash": "0x2dea74737284c05166223abbb28b3eaf367e8964a5a12bffa0ab4bd1e2b300ae",
|
||||||
|
"result": "0x7b22646967657374223a22307865656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565222c226974657273223a32303030302c2273656564223a22307835646532353538363237666363653664393533623161373033353866313637633962333634666339343461343566653037343161626330633062386434326365222c227461736b223a226b656363616b2d636861696e227d"
|
||||||
|
},
|
||||||
|
"blockNumber": 4446353,
|
||||||
|
"blockHash": "0xd4d23bd3f6d3883330ff25de0a81696c0e9ba473c5457b918c5aa82e55601777",
|
||||||
|
"timestamp": 1790959767,
|
||||||
|
"txHash": "0x5f921a8d67de79bfcfd4d77085fa220d5ecc4191631a7e4dc050e003e612c6c6",
|
||||||
|
"from": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"logIndex": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "JobDisputed",
|
||||||
|
"args": {
|
||||||
|
"id": "6",
|
||||||
|
"challenger": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"bond": "4000000000000000",
|
||||||
|
"recomputedResultHash": "0xb37eb93d1b69a562f94bb2de482a0a4dd3e04493d3020cb29eeef8df82c713c3"
|
||||||
|
},
|
||||||
|
"blockNumber": 4446364,
|
||||||
|
"blockHash": "0xf6a3e7e6f51312f624cbed5251b0c5abe05f9bd2b1d255ec8fe65114d408311c",
|
||||||
|
"timestamp": 1790959773,
|
||||||
|
"txHash": "0x72c54a067ebf1341a588db66f61223a28d7f6977bc60ab8eff5e59e008ddf8de",
|
||||||
|
"from": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"logIndex": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "JobSlashed",
|
||||||
|
"args": {
|
||||||
|
"id": "6",
|
||||||
|
"challenger": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"slashedProviderBond": "4000000000000000"
|
||||||
|
},
|
||||||
|
"blockNumber": 4446375,
|
||||||
|
"blockHash": "0xf5aa67bf1e48b8fc8a8ff44b794b0f9cd501f45d10b7979b7b5fdc37e9d70a9a",
|
||||||
|
"timestamp": 1790959780,
|
||||||
|
"txHash": "0x7b1916485981fef836d5f43c3d8c4528678931f78d4b3110859198c630e5e69f",
|
||||||
|
"from": "0x5521aC7371Afdbf6BE986B46Da4116fb256d9e58",
|
||||||
|
"logIndex": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "DisputeResolved",
|
||||||
|
"args": {
|
||||||
|
"id": "6",
|
||||||
|
"providerWon": false
|
||||||
|
},
|
||||||
|
"blockNumber": 4446375,
|
||||||
|
"blockHash": "0xf5aa67bf1e48b8fc8a8ff44b794b0f9cd501f45d10b7979b7b5fdc37e9d70a9a",
|
||||||
|
"timestamp": 1790959780,
|
||||||
|
"txHash": "0x7b1916485981fef836d5f43c3d8c4528678931f78d4b3110859198c630e5e69f",
|
||||||
|
"from": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"logIndex": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"result": "0x7b22646967657374223a22307865656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565222c226974657273223a32303030302c2273656564223a22307835646532353538363237666363653664393533623161373033353866313637633962333634666339343461343566653037343161626330633062386434326365222c227461736b223a226b656363616b2d636861696e227d"
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"market.arbiter"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
165
conformance/vectori/market-timeline/s2.deadline-submitted.json
Normal file
165
conformance/vectori/market-timeline/s2.deadline-submitted.json
Normal file
@ -0,0 +1,165 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "market-timeline/s2.deadline-submitted",
|
||||||
|
"artifact": "market-timeline",
|
||||||
|
"title": "the result was submitted after the deadline",
|
||||||
|
"source": "derived from market-timeline/s2-slashed.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"market.arbiter",
|
||||||
|
"market.complete",
|
||||||
|
"market.deadline",
|
||||||
|
"market.form",
|
||||||
|
"market.payout",
|
||||||
|
"market.posting",
|
||||||
|
"market.proof",
|
||||||
|
"market.replay",
|
||||||
|
"market.result",
|
||||||
|
"market.window"
|
||||||
|
],
|
||||||
|
"base": "market-timeline/s2-slashed.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "set",
|
||||||
|
"path": [
|
||||||
|
"events",
|
||||||
|
2,
|
||||||
|
"timestamp"
|
||||||
|
],
|
||||||
|
"value": 1790960354
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"chainId": 28001,
|
||||||
|
"market": "0x4145d6f639436d840957F2D4B9f2e73f34F56B5D",
|
||||||
|
"jobId": "6",
|
||||||
|
"constants": {
|
||||||
|
"arbiter": "0x5521aC7371Afdbf6BE986B46Da4116fb256d9e58",
|
||||||
|
"governance": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"arbitrationTimeout": 1209600,
|
||||||
|
"zkVerifier": "0x70099E62735500AA2F85B60C518551a57B202d54",
|
||||||
|
"pinnedProofSelector": "0x4388a21c"
|
||||||
|
},
|
||||||
|
"job": {
|
||||||
|
"requester": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"provider": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"token": "0x0000000000000000000000000000000000000000",
|
||||||
|
"reward": "0",
|
||||||
|
"providerBond": "0",
|
||||||
|
"specHash": "0x307e7d75c2de86416fd1df625fd5c00a12a4ff6257bea57871de8c7d47cf5a89",
|
||||||
|
"resultHash": "0x2dea74737284c05166223abbb28b3eaf367e8964a5a12bffa0ab4bd1e2b300ae",
|
||||||
|
"zkProgramVKey": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
||||||
|
"mode": 0,
|
||||||
|
"status": 7,
|
||||||
|
"pqcSettlement": false,
|
||||||
|
"offchainResult": false,
|
||||||
|
"deadline": 1790960353,
|
||||||
|
"challengeWindow": 90,
|
||||||
|
"submittedAt": 1790959767,
|
||||||
|
"disputedAt": 1790959773
|
||||||
|
},
|
||||||
|
"events": [
|
||||||
|
{
|
||||||
|
"name": "JobPosted",
|
||||||
|
"args": {
|
||||||
|
"id": "6",
|
||||||
|
"requester": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"token": "0x0000000000000000000000000000000000000000",
|
||||||
|
"reward": "10000000000000000",
|
||||||
|
"mode": "0",
|
||||||
|
"specHash": "0x307e7d75c2de86416fd1df625fd5c00a12a4ff6257bea57871de8c7d47cf5a89",
|
||||||
|
"deadline": "1790960353",
|
||||||
|
"pqcSettlement": false
|
||||||
|
},
|
||||||
|
"blockNumber": 4446332,
|
||||||
|
"blockHash": "0x373ef4cd4095e1db711ba4748c2a5bd2d78a26dd7892a98c14929aeb0b62cf1f",
|
||||||
|
"timestamp": 1790959755,
|
||||||
|
"txHash": "0xdf242547d54507d84bb9ac8d91ce24b65529d17940bd95504f5267ee74bdd92a",
|
||||||
|
"from": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"logIndex": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "JobClaimed",
|
||||||
|
"args": {
|
||||||
|
"id": "6",
|
||||||
|
"provider": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"providerBond": "4000000000000000"
|
||||||
|
},
|
||||||
|
"blockNumber": 4446342,
|
||||||
|
"blockHash": "0xa81e65065cd3c472cc571c64035031c66e975906a92e5b88acba4a6e08c9d7a1",
|
||||||
|
"timestamp": 1790959761,
|
||||||
|
"txHash": "0xfcfc913a260d29b519276a484199d372ed39aac81005166e5231025bf948d35b",
|
||||||
|
"from": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"logIndex": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ResultSubmitted",
|
||||||
|
"args": {
|
||||||
|
"id": "6",
|
||||||
|
"resultHash": "0x2dea74737284c05166223abbb28b3eaf367e8964a5a12bffa0ab4bd1e2b300ae",
|
||||||
|
"result": "0x7b22646967657374223a22307865656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565222c226974657273223a32303030302c2273656564223a22307835646532353538363237666363653664393533623161373033353866313637633962333634666339343461343566653037343161626330633062386434326365222c227461736b223a226b656363616b2d636861696e227d"
|
||||||
|
},
|
||||||
|
"blockNumber": 4446353,
|
||||||
|
"blockHash": "0xd4d23bd3f6d3883330ff25de0a81696c0e9ba473c5457b918c5aa82e55601777",
|
||||||
|
"timestamp": 1790960354,
|
||||||
|
"txHash": "0x5f921a8d67de79bfcfd4d77085fa220d5ecc4191631a7e4dc050e003e612c6c6",
|
||||||
|
"from": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"logIndex": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "JobDisputed",
|
||||||
|
"args": {
|
||||||
|
"id": "6",
|
||||||
|
"challenger": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"bond": "4000000000000000",
|
||||||
|
"recomputedResultHash": "0xb37eb93d1b69a562f94bb2de482a0a4dd3e04493d3020cb29eeef8df82c713c3"
|
||||||
|
},
|
||||||
|
"blockNumber": 4446364,
|
||||||
|
"blockHash": "0xf6a3e7e6f51312f624cbed5251b0c5abe05f9bd2b1d255ec8fe65114d408311c",
|
||||||
|
"timestamp": 1790959773,
|
||||||
|
"txHash": "0x72c54a067ebf1341a588db66f61223a28d7f6977bc60ab8eff5e59e008ddf8de",
|
||||||
|
"from": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"logIndex": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "JobSlashed",
|
||||||
|
"args": {
|
||||||
|
"id": "6",
|
||||||
|
"challenger": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"slashedProviderBond": "4000000000000000"
|
||||||
|
},
|
||||||
|
"blockNumber": 4446375,
|
||||||
|
"blockHash": "0xf5aa67bf1e48b8fc8a8ff44b794b0f9cd501f45d10b7979b7b5fdc37e9d70a9a",
|
||||||
|
"timestamp": 1790959780,
|
||||||
|
"txHash": "0x7b1916485981fef836d5f43c3d8c4528678931f78d4b3110859198c630e5e69f",
|
||||||
|
"from": "0x5521aC7371Afdbf6BE986B46Da4116fb256d9e58",
|
||||||
|
"logIndex": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "DisputeResolved",
|
||||||
|
"args": {
|
||||||
|
"id": "6",
|
||||||
|
"providerWon": false
|
||||||
|
},
|
||||||
|
"blockNumber": 4446375,
|
||||||
|
"blockHash": "0xf5aa67bf1e48b8fc8a8ff44b794b0f9cd501f45d10b7979b7b5fdc37e9d70a9a",
|
||||||
|
"timestamp": 1790959780,
|
||||||
|
"txHash": "0x7b1916485981fef836d5f43c3d8c4528678931f78d4b3110859198c630e5e69f",
|
||||||
|
"from": "0x5521aC7371Afdbf6BE986B46Da4116fb256d9e58",
|
||||||
|
"logIndex": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"result": "0x7b22646967657374223a22307865656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565222c226974657273223a32303030302c2273656564223a22307835646532353538363237666363653664393533623161373033353866313637633962333634666339343461343566653037343161626330633062386434326365222c227461736b223a226b656363616b2d636861696e227d"
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"market.deadline"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
166
conformance/vectori/market-timeline/s2.payout.json
Normal file
166
conformance/vectori/market-timeline/s2.payout.json
Normal file
@ -0,0 +1,166 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "market-timeline/s2.payout",
|
||||||
|
"artifact": "market-timeline",
|
||||||
|
"title": "the slashed bond is paid to someone who is not the challenger",
|
||||||
|
"source": "derived from market-timeline/s2-slashed.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"market.arbiter",
|
||||||
|
"market.complete",
|
||||||
|
"market.deadline",
|
||||||
|
"market.form",
|
||||||
|
"market.payout",
|
||||||
|
"market.posting",
|
||||||
|
"market.proof",
|
||||||
|
"market.replay",
|
||||||
|
"market.result",
|
||||||
|
"market.window"
|
||||||
|
],
|
||||||
|
"base": "market-timeline/s2-slashed.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "set",
|
||||||
|
"path": [
|
||||||
|
"events",
|
||||||
|
4,
|
||||||
|
"args",
|
||||||
|
"challenger"
|
||||||
|
],
|
||||||
|
"value": "0xeC2261CECBB06768F6db095822b429AF5c861E2e"
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"chainId": 28001,
|
||||||
|
"market": "0x4145d6f639436d840957F2D4B9f2e73f34F56B5D",
|
||||||
|
"jobId": "6",
|
||||||
|
"constants": {
|
||||||
|
"arbiter": "0x5521aC7371Afdbf6BE986B46Da4116fb256d9e58",
|
||||||
|
"governance": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"arbitrationTimeout": 1209600,
|
||||||
|
"zkVerifier": "0x70099E62735500AA2F85B60C518551a57B202d54",
|
||||||
|
"pinnedProofSelector": "0x4388a21c"
|
||||||
|
},
|
||||||
|
"job": {
|
||||||
|
"requester": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"provider": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"token": "0x0000000000000000000000000000000000000000",
|
||||||
|
"reward": "0",
|
||||||
|
"providerBond": "0",
|
||||||
|
"specHash": "0x307e7d75c2de86416fd1df625fd5c00a12a4ff6257bea57871de8c7d47cf5a89",
|
||||||
|
"resultHash": "0x2dea74737284c05166223abbb28b3eaf367e8964a5a12bffa0ab4bd1e2b300ae",
|
||||||
|
"zkProgramVKey": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
||||||
|
"mode": 0,
|
||||||
|
"status": 7,
|
||||||
|
"pqcSettlement": false,
|
||||||
|
"offchainResult": false,
|
||||||
|
"deadline": 1790960353,
|
||||||
|
"challengeWindow": 90,
|
||||||
|
"submittedAt": 1790959767,
|
||||||
|
"disputedAt": 1790959773
|
||||||
|
},
|
||||||
|
"events": [
|
||||||
|
{
|
||||||
|
"name": "JobPosted",
|
||||||
|
"args": {
|
||||||
|
"id": "6",
|
||||||
|
"requester": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"token": "0x0000000000000000000000000000000000000000",
|
||||||
|
"reward": "10000000000000000",
|
||||||
|
"mode": "0",
|
||||||
|
"specHash": "0x307e7d75c2de86416fd1df625fd5c00a12a4ff6257bea57871de8c7d47cf5a89",
|
||||||
|
"deadline": "1790960353",
|
||||||
|
"pqcSettlement": false
|
||||||
|
},
|
||||||
|
"blockNumber": 4446332,
|
||||||
|
"blockHash": "0x373ef4cd4095e1db711ba4748c2a5bd2d78a26dd7892a98c14929aeb0b62cf1f",
|
||||||
|
"timestamp": 1790959755,
|
||||||
|
"txHash": "0xdf242547d54507d84bb9ac8d91ce24b65529d17940bd95504f5267ee74bdd92a",
|
||||||
|
"from": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"logIndex": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "JobClaimed",
|
||||||
|
"args": {
|
||||||
|
"id": "6",
|
||||||
|
"provider": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"providerBond": "4000000000000000"
|
||||||
|
},
|
||||||
|
"blockNumber": 4446342,
|
||||||
|
"blockHash": "0xa81e65065cd3c472cc571c64035031c66e975906a92e5b88acba4a6e08c9d7a1",
|
||||||
|
"timestamp": 1790959761,
|
||||||
|
"txHash": "0xfcfc913a260d29b519276a484199d372ed39aac81005166e5231025bf948d35b",
|
||||||
|
"from": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"logIndex": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ResultSubmitted",
|
||||||
|
"args": {
|
||||||
|
"id": "6",
|
||||||
|
"resultHash": "0x2dea74737284c05166223abbb28b3eaf367e8964a5a12bffa0ab4bd1e2b300ae",
|
||||||
|
"result": "0x7b22646967657374223a22307865656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565222c226974657273223a32303030302c2273656564223a22307835646532353538363237666363653664393533623161373033353866313637633962333634666339343461343566653037343161626330633062386434326365222c227461736b223a226b656363616b2d636861696e227d"
|
||||||
|
},
|
||||||
|
"blockNumber": 4446353,
|
||||||
|
"blockHash": "0xd4d23bd3f6d3883330ff25de0a81696c0e9ba473c5457b918c5aa82e55601777",
|
||||||
|
"timestamp": 1790959767,
|
||||||
|
"txHash": "0x5f921a8d67de79bfcfd4d77085fa220d5ecc4191631a7e4dc050e003e612c6c6",
|
||||||
|
"from": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"logIndex": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "JobDisputed",
|
||||||
|
"args": {
|
||||||
|
"id": "6",
|
||||||
|
"challenger": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"bond": "4000000000000000",
|
||||||
|
"recomputedResultHash": "0xb37eb93d1b69a562f94bb2de482a0a4dd3e04493d3020cb29eeef8df82c713c3"
|
||||||
|
},
|
||||||
|
"blockNumber": 4446364,
|
||||||
|
"blockHash": "0xf6a3e7e6f51312f624cbed5251b0c5abe05f9bd2b1d255ec8fe65114d408311c",
|
||||||
|
"timestamp": 1790959773,
|
||||||
|
"txHash": "0x72c54a067ebf1341a588db66f61223a28d7f6977bc60ab8eff5e59e008ddf8de",
|
||||||
|
"from": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"logIndex": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "JobSlashed",
|
||||||
|
"args": {
|
||||||
|
"id": "6",
|
||||||
|
"challenger": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"slashedProviderBond": "4000000000000000"
|
||||||
|
},
|
||||||
|
"blockNumber": 4446375,
|
||||||
|
"blockHash": "0xf5aa67bf1e48b8fc8a8ff44b794b0f9cd501f45d10b7979b7b5fdc37e9d70a9a",
|
||||||
|
"timestamp": 1790959780,
|
||||||
|
"txHash": "0x7b1916485981fef836d5f43c3d8c4528678931f78d4b3110859198c630e5e69f",
|
||||||
|
"from": "0x5521aC7371Afdbf6BE986B46Da4116fb256d9e58",
|
||||||
|
"logIndex": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "DisputeResolved",
|
||||||
|
"args": {
|
||||||
|
"id": "6",
|
||||||
|
"providerWon": false
|
||||||
|
},
|
||||||
|
"blockNumber": 4446375,
|
||||||
|
"blockHash": "0xf5aa67bf1e48b8fc8a8ff44b794b0f9cd501f45d10b7979b7b5fdc37e9d70a9a",
|
||||||
|
"timestamp": 1790959780,
|
||||||
|
"txHash": "0x7b1916485981fef836d5f43c3d8c4528678931f78d4b3110859198c630e5e69f",
|
||||||
|
"from": "0x5521aC7371Afdbf6BE986B46Da4116fb256d9e58",
|
||||||
|
"logIndex": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"result": "0x7b22646967657374223a22307865656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565222c226974657273223a32303030302c2273656564223a22307835646532353538363237666363653664393533623161373033353866313637633962333634666339343461343566653037343161626330633062386434326365222c227461736b223a226b656363616b2d636861696e227d"
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"market.payout"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
166
conformance/vectori/market-timeline/s2.posting.json
Normal file
166
conformance/vectori/market-timeline/s2.posting.json
Normal file
@ -0,0 +1,166 @@
|
|||||||
|
{
|
||||||
|
"v": 1,
|
||||||
|
"kind": "aere-conformance-vector",
|
||||||
|
"id": "market-timeline/s2.posting",
|
||||||
|
"artifact": "market-timeline",
|
||||||
|
"title": "the JobPosted event names another requester than the job",
|
||||||
|
"source": "derived from market-timeline/s2-slashed.valid",
|
||||||
|
"requires": [],
|
||||||
|
"exercises": [
|
||||||
|
"market.arbiter",
|
||||||
|
"market.complete",
|
||||||
|
"market.deadline",
|
||||||
|
"market.form",
|
||||||
|
"market.payout",
|
||||||
|
"market.posting",
|
||||||
|
"market.proof",
|
||||||
|
"market.replay",
|
||||||
|
"market.result",
|
||||||
|
"market.window"
|
||||||
|
],
|
||||||
|
"base": "market-timeline/s2-slashed.valid",
|
||||||
|
"mutation": {
|
||||||
|
"op": "set",
|
||||||
|
"path": [
|
||||||
|
"events",
|
||||||
|
0,
|
||||||
|
"args",
|
||||||
|
"requester"
|
||||||
|
],
|
||||||
|
"value": "0xeC2261CECBB06768F6db095822b429AF5c861E2e"
|
||||||
|
},
|
||||||
|
"input": {
|
||||||
|
"chainId": 28001,
|
||||||
|
"market": "0x4145d6f639436d840957F2D4B9f2e73f34F56B5D",
|
||||||
|
"jobId": "6",
|
||||||
|
"constants": {
|
||||||
|
"arbiter": "0x5521aC7371Afdbf6BE986B46Da4116fb256d9e58",
|
||||||
|
"governance": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"arbitrationTimeout": 1209600,
|
||||||
|
"zkVerifier": "0x70099E62735500AA2F85B60C518551a57B202d54",
|
||||||
|
"pinnedProofSelector": "0x4388a21c"
|
||||||
|
},
|
||||||
|
"job": {
|
||||||
|
"requester": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"provider": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"token": "0x0000000000000000000000000000000000000000",
|
||||||
|
"reward": "0",
|
||||||
|
"providerBond": "0",
|
||||||
|
"specHash": "0x307e7d75c2de86416fd1df625fd5c00a12a4ff6257bea57871de8c7d47cf5a89",
|
||||||
|
"resultHash": "0x2dea74737284c05166223abbb28b3eaf367e8964a5a12bffa0ab4bd1e2b300ae",
|
||||||
|
"zkProgramVKey": "0x0000000000000000000000000000000000000000000000000000000000000000",
|
||||||
|
"mode": 0,
|
||||||
|
"status": 7,
|
||||||
|
"pqcSettlement": false,
|
||||||
|
"offchainResult": false,
|
||||||
|
"deadline": 1790960353,
|
||||||
|
"challengeWindow": 90,
|
||||||
|
"submittedAt": 1790959767,
|
||||||
|
"disputedAt": 1790959773
|
||||||
|
},
|
||||||
|
"events": [
|
||||||
|
{
|
||||||
|
"name": "JobPosted",
|
||||||
|
"args": {
|
||||||
|
"id": "6",
|
||||||
|
"requester": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"token": "0x0000000000000000000000000000000000000000",
|
||||||
|
"reward": "10000000000000000",
|
||||||
|
"mode": "0",
|
||||||
|
"specHash": "0x307e7d75c2de86416fd1df625fd5c00a12a4ff6257bea57871de8c7d47cf5a89",
|
||||||
|
"deadline": "1790960353",
|
||||||
|
"pqcSettlement": false
|
||||||
|
},
|
||||||
|
"blockNumber": 4446332,
|
||||||
|
"blockHash": "0x373ef4cd4095e1db711ba4748c2a5bd2d78a26dd7892a98c14929aeb0b62cf1f",
|
||||||
|
"timestamp": 1790959755,
|
||||||
|
"txHash": "0xdf242547d54507d84bb9ac8d91ce24b65529d17940bd95504f5267ee74bdd92a",
|
||||||
|
"from": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"logIndex": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "JobClaimed",
|
||||||
|
"args": {
|
||||||
|
"id": "6",
|
||||||
|
"provider": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"providerBond": "4000000000000000"
|
||||||
|
},
|
||||||
|
"blockNumber": 4446342,
|
||||||
|
"blockHash": "0xa81e65065cd3c472cc571c64035031c66e975906a92e5b88acba4a6e08c9d7a1",
|
||||||
|
"timestamp": 1790959761,
|
||||||
|
"txHash": "0xfcfc913a260d29b519276a484199d372ed39aac81005166e5231025bf948d35b",
|
||||||
|
"from": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"logIndex": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "ResultSubmitted",
|
||||||
|
"args": {
|
||||||
|
"id": "6",
|
||||||
|
"resultHash": "0x2dea74737284c05166223abbb28b3eaf367e8964a5a12bffa0ab4bd1e2b300ae",
|
||||||
|
"result": "0x7b22646967657374223a22307865656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565222c226974657273223a32303030302c2273656564223a22307835646532353538363237666363653664393533623161373033353866313637633962333634666339343461343566653037343161626330633062386434326365222c227461736b223a226b656363616b2d636861696e227d"
|
||||||
|
},
|
||||||
|
"blockNumber": 4446353,
|
||||||
|
"blockHash": "0xd4d23bd3f6d3883330ff25de0a81696c0e9ba473c5457b918c5aa82e55601777",
|
||||||
|
"timestamp": 1790959767,
|
||||||
|
"txHash": "0x5f921a8d67de79bfcfd4d77085fa220d5ecc4191631a7e4dc050e003e612c6c6",
|
||||||
|
"from": "0xeC2261CECBB06768F6db095822b429AF5c861E2e",
|
||||||
|
"logIndex": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "JobDisputed",
|
||||||
|
"args": {
|
||||||
|
"id": "6",
|
||||||
|
"challenger": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"bond": "4000000000000000",
|
||||||
|
"recomputedResultHash": "0xb37eb93d1b69a562f94bb2de482a0a4dd3e04493d3020cb29eeef8df82c713c3"
|
||||||
|
},
|
||||||
|
"blockNumber": 4446364,
|
||||||
|
"blockHash": "0xf6a3e7e6f51312f624cbed5251b0c5abe05f9bd2b1d255ec8fe65114d408311c",
|
||||||
|
"timestamp": 1790959773,
|
||||||
|
"txHash": "0x72c54a067ebf1341a588db66f61223a28d7f6977bc60ab8eff5e59e008ddf8de",
|
||||||
|
"from": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"logIndex": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "JobSlashed",
|
||||||
|
"args": {
|
||||||
|
"id": "6",
|
||||||
|
"challenger": "0x86D6C68408DDb2CC0d1cf4dFd6e07d3830600fAF",
|
||||||
|
"slashedProviderBond": "4000000000000000"
|
||||||
|
},
|
||||||
|
"blockNumber": 4446375,
|
||||||
|
"blockHash": "0xf5aa67bf1e48b8fc8a8ff44b794b0f9cd501f45d10b7979b7b5fdc37e9d70a9a",
|
||||||
|
"timestamp": 1790959780,
|
||||||
|
"txHash": "0x7b1916485981fef836d5f43c3d8c4528678931f78d4b3110859198c630e5e69f",
|
||||||
|
"from": "0x5521aC7371Afdbf6BE986B46Da4116fb256d9e58",
|
||||||
|
"logIndex": 0
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "DisputeResolved",
|
||||||
|
"args": {
|
||||||
|
"id": "6",
|
||||||
|
"providerWon": false
|
||||||
|
},
|
||||||
|
"blockNumber": 4446375,
|
||||||
|
"blockHash": "0xf5aa67bf1e48b8fc8a8ff44b794b0f9cd501f45d10b7979b7b5fdc37e9d70a9a",
|
||||||
|
"timestamp": 1790959780,
|
||||||
|
"txHash": "0x7b1916485981fef836d5f43c3d8c4528678931f78d4b3110859198c630e5e69f",
|
||||||
|
"from": "0x5521aC7371Afdbf6BE986B46Da4116fb256d9e58",
|
||||||
|
"logIndex": 1
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"result": "0x7b22646967657374223a22307865656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565656565222c226974657273223a32303030302c2273656564223a22307835646532353538363237666363653664393533623161373033353866313637633962333634666339343461343566653037343161626330633062386434326365222c227461736b223a226b656363616b2d636861696e227d"
|
||||||
|
},
|
||||||
|
"expected": {
|
||||||
|
"verdict": "INVALID",
|
||||||
|
"failed": [
|
||||||
|
"market.posting"
|
||||||
|
],
|
||||||
|
"levels": {
|
||||||
|
"integrity": "FAILED",
|
||||||
|
"authenticity": "NOT_MEASURED",
|
||||||
|
"anchoring": "NOT_MEASURED",
|
||||||
|
"finality": "NOT_MEASURED"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user