{
 "source": "Access §7.3 (registration generations, quorum authorization, the two-way acceptance anchor, the CAS acceptance commit, registration equivocation) · Replication §4.1/§6/§11. Generated by scripts/gen-acceptance-vectors.mjs (deterministic seeds). Signing profile: Encounter 2.3 (Ed25519 raw over JCS, base58btc z-form). Quorum domain separation is the v constant inside the signed bytes.",
 "seeds": {
  "identity": "c03e20ca6f45fe694ee54ee152b7fca6668a5a61b2218cf6a6c1988873c09af9",
  "quorumA": "40ee3e53f9499e74c7f28283120ac4cb9d41849c43e3756d815637972e9a8c92",
  "quorumB": "20051dc6abc74d7bddd4d1465d8ae2ec2419185bf425fdb1bdaa1a2b8ce34a08",
  "k1": "e0f0a9085f1dbb0327a4dfd0c7bd130098ffd0ba1fad46417076221c75dc604c",
  "k2": "9762f1025807fe7b060ab6f845696a31a1be6d5cc9d88dd332647cbc2f439ff6",
  "k2x": "667a46c44a4f08a4b744b74c997ab6c707d36ccde409c13a7e9b43eed2e1abdd",
  "k3": "f2ae8a98d43eb6f3d30d49eaae229646d30afe1ac7c1b0f9c9822b4bcaac9b61",
  "k3n": "945c052800dd02fd696cdb698b14e1e7390f991e70f59b2ed24562e27c6a5627"
 },
 "parties": {
  "identity": "did:key:z6Mki1ZyscBEnxYKqTWKEJdiJQw3LJUKKyKaPCwhrEUye8VP",
  "quorumA": "did:key:z6MktmRKnN9ixp8r6J1PVqcUhdREbPo4C9k7sFCs4byaqako",
  "quorumB": "did:key:z6Mkgs3CAz2axZFJqR8n5zvV4yNVrvRBkNwWJYoQg1Ke96Hx",
  "k1": "did:key:z6MkorYZJzNkMLME9nTxuoTD82WDXGhjLGFa3Z4MHph7otn2",
  "k2": "did:key:z6MkfJJAaw3vQ5j8HyvZdAz9XFY6ghBidgPiaKdTESX5BHJC",
  "k2x": "did:key:z6MkrRtSBXPCnCJrk31RJmKg5vDY8NBnRNHCZMNmyisGcj5u",
  "k3": "did:key:z6Mkv73rZocwY7iwL9V7MRxtDaojuYiebu96ePKHegwPqjbn",
  "k3n": "did:key:z6MknZmbrtqj5v5Yy7Xy1o4NwCNuEL311PXGV5wGmDmRDjUw"
 },
 "registrations": {
  "gen1": {
   "v": "rltp-access-registration/0.26",
   "type": "service-registration",
   "group": "did:key:z6Mki1ZyscBEnxYKqTWKEJdiJQw3LJUKKyKaPCwhrEUye8VP",
   "genesisDigest": "uEiDwSC5ALfn9QhVIo3YoyD4eoVV4-nZZzmhlgJ1ZJxfhkA",
   "identity": "did:key:z6Mki1ZyscBEnxYKqTWKEJdiJQw3LJUKKyKaPCwhrEUye8VP",
   "service": "https://relay.example/rltp",
   "m": 1,
   "stalenessBound": "P7D",
   "terminalRetention": "P30D",
   "divergenceQuota": 64,
   "attestationKey": "z6MkorYZJzNkMLME9nTxuoTD82WDXGhjLGFa3Z4MHph7otn2",
   "registrationGeneration": 1,
   "previousRegistration": null,
   "authorizationRoot": null,
   "sig": "z2tXYjY85qwLUjrG6AWxPxWTDbueHpXUhYeiW5BCEuzhrVmj9HLkC8DtntNG9Rzxv1v24WwcyWBrWG6zMVfG2kuTm"
  },
  "gen2": {
   "v": "rltp-access-registration/0.26",
   "type": "service-registration",
   "group": "did:key:z6Mki1ZyscBEnxYKqTWKEJdiJQw3LJUKKyKaPCwhrEUye8VP",
   "genesisDigest": "uEiDwSC5ALfn9QhVIo3YoyD4eoVV4-nZZzmhlgJ1ZJxfhkA",
   "identity": "did:key:z6Mki1ZyscBEnxYKqTWKEJdiJQw3LJUKKyKaPCwhrEUye8VP",
   "service": "https://relay.example/rltp",
   "m": 1,
   "stalenessBound": "P7D",
   "terminalRetention": "P30D",
   "divergenceQuota": 64,
   "attestationKey": "z6MkfJJAaw3vQ5j8HyvZdAz9XFY6ghBidgPiaKdTESX5BHJC",
   "registrationGeneration": 2,
   "previousRegistration": "uEiDAxYv5zjK9ayPDc3Q3nWHRiDgAkzkX22vXEMZ-ydGCwA",
   "authorizationRoot": "uEiAwW-ZXgqnRdDUaXKJuxP_ISC5dwp4Miq04zJCykmiLDQ",
   "authorization": [
    {
     "signer": "did:key:z6Mkgs3CAz2axZFJqR8n5zvV4yNVrvRBkNwWJYoQg1Ke96Hx",
     "sig": "z3oLqCTY9c832NDiWjMFYrUs4d1kLj8JM7iVKb17gtSFRBoUkdm7chk9svMg1w6rSgbo6ZQzZX5ZxeXMS68Q829HA"
    },
    {
     "signer": "did:key:z6MktmRKnN9ixp8r6J1PVqcUhdREbPo4C9k7sFCs4byaqako",
     "sig": "z5GWrQUBMudR2Ck5engCGerLhmmWMMtR66dztLb2rFpyv7brmaAyKiKzzv6m4ms5hURLDbVXRySvv4SdwVgEQ7U9d"
    }
   ],
   "sig": "z2wKmxBiUeDEGe2ZsNxkW9JrQpiWa4CAKVaDxLqLQBBsebxdmPAvL5EJMw4r4T2cSG79YXiENEk3MaiaGdRwo5buq"
  },
  "gen3": {
   "v": "rltp-access-registration/0.26",
   "type": "service-registration",
   "group": "did:key:z6Mki1ZyscBEnxYKqTWKEJdiJQw3LJUKKyKaPCwhrEUye8VP",
   "genesisDigest": "uEiDwSC5ALfn9QhVIo3YoyD4eoVV4-nZZzmhlgJ1ZJxfhkA",
   "identity": "did:key:z6Mki1ZyscBEnxYKqTWKEJdiJQw3LJUKKyKaPCwhrEUye8VP",
   "service": "https://relay.example/rltp",
   "m": 1,
   "stalenessBound": "P7D",
   "terminalRetention": "P30D",
   "divergenceQuota": 64,
   "attestationKey": "z6Mkv73rZocwY7iwL9V7MRxtDaojuYiebu96ePKHegwPqjbn",
   "registrationGeneration": 3,
   "previousRegistration": "uEiAdIAFvdhKV1H_YtaTCUkiLXeqULn_LizHB93fYFE0MLA",
   "authorizationRoot": "uEiDwE22BiGNM7VqCwogRU9suHSeV2Lrd6xGjWwiW9T8BLA",
   "authorization": [
    {
     "signer": "did:key:z6Mkgs3CAz2axZFJqR8n5zvV4yNVrvRBkNwWJYoQg1Ke96Hx",
     "sig": "z4gMn35UqrQSG2oUMuiXGLD2VGAg6KygsA48z1AECbjnXVgQf71SntzjCb15Y66pqx4Z1LzPa7Re6vgtf8UUBeS9r"
    },
    {
     "signer": "did:key:z6MktmRKnN9ixp8r6J1PVqcUhdREbPo4C9k7sFCs4byaqako",
     "sig": "z4wrTY4jXxGDp3DPg3rDpMPjHGPdBy4qqJQmrvXuqUJxzmc1XzYV8kTxtB32XnEFzmzL9owzCbD9Zzb7gNBNbZBnv"
    }
   ],
   "sig": "z2wsxv9Ni71nfMni76v34LU2D6pFwouG6ev6k2U1dUJBjnjNNjWPpVvCywvd7fcA2fEvoqdD9WC166Mp6cnR5aM5n"
  },
  "gen2twin": {
   "v": "rltp-access-registration/0.26",
   "type": "service-registration",
   "group": "did:key:z6Mki1ZyscBEnxYKqTWKEJdiJQw3LJUKKyKaPCwhrEUye8VP",
   "genesisDigest": "uEiDwSC5ALfn9QhVIo3YoyD4eoVV4-nZZzmhlgJ1ZJxfhkA",
   "identity": "did:key:z6Mki1ZyscBEnxYKqTWKEJdiJQw3LJUKKyKaPCwhrEUye8VP",
   "service": "https://relay.example/rltp",
   "m": 1,
   "stalenessBound": "P9D",
   "terminalRetention": "P30D",
   "divergenceQuota": 64,
   "attestationKey": "z6MkrRtSBXPCnCJrk31RJmKg5vDY8NBnRNHCZMNmyisGcj5u",
   "registrationGeneration": 2,
   "previousRegistration": "uEiDAxYv5zjK9ayPDc3Q3nWHRiDgAkzkX22vXEMZ-ydGCwA",
   "authorizationRoot": "uEiAwW-ZXgqnRdDUaXKJuxP_ISC5dwp4Miq04zJCykmiLDQ",
   "authorization": [
    {
     "signer": "did:key:z6Mkgs3CAz2axZFJqR8n5zvV4yNVrvRBkNwWJYoQg1Ke96Hx",
     "sig": "zz3pyzgszexNsKoB53btVFHQuTtW4jJbCGQEXif5k14yVS7j1Z81BtGyx682YEUmYQES2dGg3a3zFfcSDsbGYqk2"
    },
    {
     "signer": "did:key:z6MktmRKnN9ixp8r6J1PVqcUhdREbPo4C9k7sFCs4byaqako",
     "sig": "z5t3tku4C9YFUJ6uzL9WLggi52GiqEjo9qoGGfKEFDxf7gwMdYQWoLEeo5Zj5wtC7WkewR9YGDH6w1L1pkUAjb7wd"
    }
   ],
   "sig": "z46Nq5cH6VEdbLmePEiR5XaJE4vq5ms7hXnJU64HPxo1esvpsUjS9zi7Z7gX2JFZD7K2M38rmuGKR5f7UserszMdg"
  },
  "gen3never": {
   "v": "rltp-access-registration/0.26",
   "type": "service-registration",
   "group": "did:key:z6Mki1ZyscBEnxYKqTWKEJdiJQw3LJUKKyKaPCwhrEUye8VP",
   "genesisDigest": "uEiDwSC5ALfn9QhVIo3YoyD4eoVV4-nZZzmhlgJ1ZJxfhkA",
   "identity": "did:key:z6Mki1ZyscBEnxYKqTWKEJdiJQw3LJUKKyKaPCwhrEUye8VP",
   "service": "https://relay.example/rltp",
   "m": 1,
   "stalenessBound": "P7D",
   "terminalRetention": "P30D",
   "divergenceQuota": 64,
   "attestationKey": "z6MknZmbrtqj5v5Yy7Xy1o4NwCNuEL311PXGV5wGmDmRDjUw",
   "registrationGeneration": 3,
   "previousRegistration": "uEiAdIAFvdhKV1H_YtaTCUkiLXeqULn_LizHB93fYFE0MLA",
   "authorizationRoot": "uEiA4oxAR9DjnO5tZmrB5seHB1HhQuq7C9OKGfIeRh8mvSw",
   "authorization": [
    {
     "signer": "did:key:z6Mkgs3CAz2axZFJqR8n5zvV4yNVrvRBkNwWJYoQg1Ke96Hx",
     "sig": "z3LqnCStbhCEVHnmwiH7bkNn4TygF1SQjaRXPgBq2ZBkxKftZrraQ15Vkwov5XQBtpuJgeJZ8iV7xyLmLzUBTpda6"
    },
    {
     "signer": "did:key:z6MktmRKnN9ixp8r6J1PVqcUhdREbPo4C9k7sFCs4byaqako",
     "sig": "z64YzksERPCbwKuYZ3eMPVNhRxhKVYJwRtPELBG4F7cxCHjaH4haisS4a3Rt3D3inYF3MAXp6fxNLA5LVX52AR9gY"
    }
   ],
   "sig": "zAESbRoqEV1xWJRsS9R9BAnEG2mBfegwJLWM4naBMt57kNZoGWrgnbZoyEEC14x4vu5RX9K1vVFAatzbWiCrfQUK"
  }
 },
 "selfAcceptance": {
  "v": "vector-self-acceptance",
  "accepted": "uEiAXo-GoHiIhFDzMdVAhZaFdXJtsbodJz6iqY_lTG21IVw",
  "sig": "z2PaCXsoQPMwwHwpFr4C4PzjfnNwHL98C8UGfhmdbkaBMCSWTGtQ3fVhTJgtC87Ry7cDGFuD9WxxGgGfeMShQnbCC"
 },
 "intermediate": {
  "coreDigests": {
   "gen1": "uEiDAxYv5zjK9ayPDc3Q3nWHRiDgAkzkX22vXEMZ-ydGCwA",
   "gen2": "uEiAdIAFvdhKV1H_YtaTCUkiLXeqULn_LizHB93fYFE0MLA",
   "gen3": "uEiAnR2OvGU2HIA4nbziZFRSxw3pxd1LmYYV1MqU0mbmhAA",
   "gen2twin": "uEiC7x9doGME2tR2PCkdbA856UBoFJIg8RnDbefw7VzsEhg",
   "gen3never": "uEiAXo-GoHiIhFDzMdVAhZaFdXJtsbodJz6iqY_lTG21IVw"
  }
 },
 "anchorCases": [
  {
   "name": "ancestor gen1 through chain into session-attested gen3",
   "root": "gen1",
   "sessionAttested": "gen3",
   "expect": "standing"
  },
  {
   "name": "ancestor gen2 through chain into session-attested gen3",
   "root": "gen2",
   "sessionAttested": "gen3",
   "expect": "standing"
  },
  {
   "name": "session-attested generation itself",
   "root": "gen3",
   "sessionAttested": "gen3",
   "expect": "standing"
  },
  {
   "name": "no session anchor: every bundle is invalid",
   "root": "gen3",
   "sessionAttested": null,
   "expect": "invalid-bundle"
  },
  {
   "name": "newest generation is provable only by the live session (freeze honesty)",
   "root": "gen3",
   "sessionAttested": "gen2",
   "expect": "invalid-bundle"
  },
  {
   "name": "equivocation twin is on no chain into the anchor",
   "root": "gen2twin",
   "sessionAttested": "gen3",
   "expect": "invalid-bundle",
   "equivocationWith": "gen2"
  },
  {
   "name": "validly authorized but never accepted: no successor binding, no attestation",
   "root": "gen3never",
   "sessionAttested": "gen3",
   "expect": "invalid-bundle"
  },
  {
   "name": "self-signed acceptance is void: the extra artifact changes nothing",
   "root": "gen3never",
   "sessionAttested": "gen3",
   "extraArtifact": "selfAcceptance",
   "expect": "invalid-bundle"
  }
 ],
 "casCases": [
  {
   "name": "two pre-validated candidates, first commits",
   "state": "gen1",
   "schedule": [
    [
     "precheck",
     "gen2"
    ],
    [
     "precheck",
     "gen2twin"
    ],
    [
     "commit",
     "gen2"
    ],
    [
     "commit",
     "gen2twin"
    ]
   ],
   "expect": {
    "outcomes": [
     "ok",
     "ok",
     "accepted",
     "refused-expected-old"
    ],
    "finalState": "gen2"
   }
  },
  {
   "name": "two pre-validated candidates, twin commits first (symmetric)",
   "state": "gen1",
   "schedule": [
    [
     "precheck",
     "gen2twin"
    ],
    [
     "precheck",
     "gen2"
    ],
    [
     "commit",
     "gen2twin"
    ],
    [
     "commit",
     "gen2"
    ]
   ],
   "expect": {
    "outcomes": [
     "ok",
     "ok",
     "accepted",
     "refused-expected-old"
    ],
    "finalState": "gen2twin"
   }
  },
  {
   "name": "crash before the commit advances nothing",
   "state": "gen1",
   "schedule": [
    [
     "precheck",
     "gen2"
    ],
    [
     "crash"
    ],
    [
     "recover"
    ]
   ],
   "expect": {
    "outcomes": [
     "ok",
     "crashed",
     "recovered"
    ],
    "finalState": "gen1"
   }
  },
  {
   "name": "crash after the commit reproduces the accepted state",
   "state": "gen1",
   "schedule": [
    [
     "commit",
     "gen2"
    ],
    [
     "crash"
    ],
    [
     "recover"
    ]
   ],
   "expect": {
    "outcomes": [
     "accepted",
     "crashed",
     "recovered"
    ],
    "finalState": "gen2"
   }
  },
  {
   "name": "generations never decrease: a gen-2 candidate against a gen-2 state is refused",
   "state": "gen2",
   "schedule": [
    [
     "commit",
     "gen2twin"
    ]
   ],
   "expect": {
    "outcomes": [
     "refused-expected-old"
    ],
    "finalState": "gen2"
   }
  },
  {
   "name": "a gen-3 candidate expecting gen2 commits against gen2",
   "state": "gen2",
   "schedule": [
    [
     "commit",
     "gen3"
    ]
   ],
   "expect": {
    "outcomes": [
     "accepted"
    ],
    "finalState": "gen3"
   }
  }
 ],
 "negative": [
  {
   "name": "root substitution: tampered authorizationRoot breaks every quorum signature",
   "registration": "gen2",
   "set": {
    "authorizationRoot": "uEiBR2jFt5z30TcDzQrRHRwsBN_s-4rAfDh0stxOvhu3aUw"
   },
   "mustFail": "quorum-signature"
  },
  {
   "name": "tampered previousRegistration breaks the identity signature",
   "registration": "gen2",
   "set": {
    "previousRegistration": "uEiAdIAFvdhKV1H_YtaTCUkiLXeqULn_LizHB93fYFE0MLA"
   },
   "mustFail": "identity-signature"
  },
  {
   "name": "a g+1 registration without authorization is schema-invalid",
   "registration": "gen2",
   "del": [
    "authorization"
   ],
   "mustFail": "schema"
  },
  {
   "name": "generation 1 with an authorization block is schema-invalid",
   "registration": "gen1",
   "set": {
    "authorization": []
   },
   "mustFail": "schema"
  }
 ]
}
