@dynamicalsystems/idl-conformance 0.7.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/assets/vectors/dsg.core.identity-binding_1/accept/binding-workspace-account.json +7 -0
  2. package/assets/vectors/dsg.core.identity-binding_1/reject/binding-extra-field.json +8 -0
  3. package/assets/vectors/dsg.core.refusal_1/accept/refusal-identity-unbound.json +7 -0
  4. package/assets/vectors/dsg.core.refusal_1/reject/refusal-extra-field.json +8 -0
  5. package/assets/vectors/dsg.core.refusal_1/reject/refusal-unknown-code.json +8 -0
  6. package/assets/vectors/dsg.kernel.standing-order-activation_1/accept/accept-activation.json +9 -0
  7. package/assets/vectors/dsg.kernel.standing-order-activation_1/reject/reject-activation.json +9 -0
  8. package/assets/vectors/dsg.run.decision_1/accept/decision-approved.json +7 -0
  9. package/assets/vectors/dsg.run.decision_1/reject/decision-extra-field.json +8 -0
  10. package/assets/vectors/dsg.run.decision_1/reject/decision-unknown-outcome.json +8 -0
  11. package/assets/vectors/dsg.run.event_1/digest/streamSeal-arrival-order.json +9 -0
  12. package/assets/vectors/dsg.run.event_1/digest/streamSeal-canonical-stream.json +9 -0
  13. package/assets/vectors/dsg.run.event_1/digest/streamSeal-float-utf8-stream.json +9 -0
  14. package/assets/vectors/dsg.run.event_1/digest/streamSeal-gapped-stream.json +9 -0
  15. package/assets/vectors/dsg.run.event_1/digest/streamSeal-payload-key-order.json +9 -0
  16. package/assets/vectors/dsg.run.request_1/accept/request-minimal-valid.json +7 -0
  17. package/assets/vectors/dsg.run.request_1/reject/request-extra-field.json +8 -0
  18. package/assets/vectors/dsg.run.request_1/reject/request-wrong-profile.json +8 -0
  19. package/assets/vectors/dsg.run.run-summary_1/accept/summary-waiting-on-decider.json +7 -0
  20. package/assets/vectors/dsg.run.run-summary_1/reject/summary-extra-field.json +8 -0
  21. package/checklist.json +7 -1
  22. package/dist/cli.cjs +1 -1
  23. package/dist/cli.mjs +1 -1
  24. package/dist/index.cjs +1 -1
  25. package/dist/index.d.cts +2 -2
  26. package/dist/index.d.cts.map +1 -1
  27. package/dist/index.d.mts +2 -2
  28. package/dist/index.d.mts.map +1 -1
  29. package/dist/index.mjs +1 -1
  30. package/dist/{reference-adapter-CaAo2iIH.mjs → reference-adapter-BdIIA9rz.mjs} +37 -2
  31. package/dist/reference-adapter-BdIIA9rz.mjs.map +1 -0
  32. package/dist/{reference-adapter-DWurDAI9.cjs → reference-adapter-DabyUOZw.cjs} +35 -0
  33. package/package.json +17 -18
  34. package/src/adapter.ts +2 -2
  35. package/src/reference-adapter.ts +3 -1
  36. package/src/stream-digest.ts +31 -0
  37. package/dist/reference-adapter-CaAo2iIH.mjs.map +0 -1
@@ -0,0 +1,7 @@
1
+ {
2
+ "profile": "dsg.core.identity-binding/1",
3
+ "shape": "binding",
4
+ "name": "workspace-account",
5
+ "verdict": "accept",
6
+ "bytes": "eyJwcm9maWxlIjoiZHNnLmNvcmUuaWRlbnRpdHktYmluZGluZy8xIiwicHJpbmNpcGFsIjoib3JuOmRzZy5jb3JlLmtlcm5lbC5hY3Rvcjp6YXJnaGFtIiwiaXNzdWVyIjoiaHR0cHM6Ly9hY2NvdW50cy5nb29nbGUuY29tIiwic3ViamVjdCI6InphcmdoYW1AZHluYW1pY2Fsc3lzdGVtc2dyb3VwLmNvbSIsImRlY2lkZXIiOiJvcm46ZHNnLmNvcmUua2VybmVsLmFjdG9yOnNheWVyIiwiYm91bmRBdCI6IjIwMjYtMDktMDdUMTg6MDA6MDBaIiwic2lnbmF0dXJlIjoiYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEifQ=="
7
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "profile": "dsg.core.identity-binding/1",
3
+ "shape": "binding",
4
+ "name": "extra-field",
5
+ "verdict": "reject",
6
+ "bytes": "eyJwcm9maWxlIjoiZHNnLmNvcmUuaWRlbnRpdHktYmluZGluZy8xIiwicHJpbmNpcGFsIjoib3JuOmRzZy5jb3JlLmtlcm5lbC5hY3Rvcjp6YXJnaGFtIiwiaXNzdWVyIjoiaHR0cHM6Ly9hY2NvdW50cy5nb29nbGUuY29tIiwic3ViamVjdCI6InphcmdoYW1AZHluYW1pY2Fsc3lzdGVtc2dyb3VwLmNvbSIsImRlY2lkZXIiOiJvcm46ZHNnLmNvcmUua2VybmVsLmFjdG9yOnNheWVyIiwiYm91bmRBdCI6IjIwMjYtMDktMDdUMTg6MDA6MDBaIiwic2lnbmF0dXJlIjoiYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEiLCJiZXNpZGUiOnRydWV9",
7
+ "rule": "an extra field is a different protocol"
8
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "profile": "dsg.core.refusal/1",
3
+ "shape": "refusal",
4
+ "name": "identity-unbound",
5
+ "verdict": "accept",
6
+ "bytes": "eyJwcm9maWxlIjoiZHNnLmNvcmUucmVmdXNhbC8xIiwiY29kZSI6ImlkZW50aXR5X3VuYm91bmQiLCJzZW50ZW5jZSI6IlNheWVyIGhhcyBub3QgYm91bmQgdGhpcyBhY2NvdW50IHRvIGEgcGVyc29uIHlldC4gQXNrIGhpbSB0byBydW4ga2VybmVsIHByaW5jaXBhbCBiaW5kLiJ9"
7
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "profile": "dsg.core.refusal/1",
3
+ "shape": "refusal",
4
+ "name": "extra-field",
5
+ "verdict": "reject",
6
+ "bytes": "eyJwcm9maWxlIjoiZHNnLmNvcmUucmVmdXNhbC8xIiwiY29kZSI6ImlkZW50aXR5X3VuYm91bmQiLCJzZW50ZW5jZSI6IlNheWVyIGhhcyBub3QgYm91bmQgdGhpcyBhY2NvdW50IHRvIGEgcGVyc29uIHlldC4gQXNrIGhpbSB0byBydW4ga2VybmVsIHByaW5jaXBhbCBiaW5kLiIsImJlc2lkZSI6dHJ1ZX0=",
7
+ "rule": "an extra field is a different protocol"
8
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "profile": "dsg.core.refusal/1",
3
+ "shape": "refusal",
4
+ "name": "unknown-code",
5
+ "verdict": "reject",
6
+ "bytes": "eyJwcm9maWxlIjoiZHNnLmNvcmUucmVmdXNhbC8xIiwiY29kZSI6InRyeV9hZ2FpbiIsInNlbnRlbmNlIjoiU2F5ZXIgaGFzIG5vdCBib3VuZCB0aGlzIGFjY291bnQgdG8gYSBwZXJzb24geWV0LiBBc2sgaGltIHRvIHJ1biBrZXJuZWwgcHJpbmNpcGFsIGJpbmQuIn0=",
7
+ "rule": "refusal codes are a closed union"
8
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "profile": "dsg.kernel.standing-order-activation/1",
3
+ "shape": "activation",
4
+ "name": "activation-accept",
5
+ "verdict": "accept",
6
+ "obligation": "semantic",
7
+ "bytes": "eyJwcm9maWxlIjoiZHNnLmtlcm5lbC5zdGFuZGluZy1vcmRlci1hY3RpdmF0aW9uLzEiLCJhY3RpdmF0aW9uSWQiOiJvcm46ZHNnLmNvcmUua2VybmVsLnN0YW5kaW5nLW9yZGVyOmFjdGl2YXRpb24tMSIsImV4cGVjdGVkUHJldmlvdXNBY3RpdmF0aW9uIjpudWxsLCJsYXciOnsib3JuIjoib3JuOmRzZy5jb3JlLmtlcm5lbC5hcnRpZmFjdDpsYXciLCJzaGEyNTYiOiJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiIn0sImVucm9sbG1lbnQiOnsib3JuIjoib3JuOmRzZy5jb3JlLmtlcm5lbC5hcnRpZmFjdDplbnJvbGxtZW50Iiwic2hhMjU2IjoiY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjYyJ9LCJpbnRlbnQiOnsib3JuIjoib3JuOmRzZy5jb3JlLmtlcm5lbC5hcnRpZmFjdDppbnRlbnQiLCJzaGEyNTYiOiJkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkIn0sInJvb3RzIjp7Im9ybiI6Im9ybjpkc2cuY29yZS5rZXJuZWwuYXJ0aWZhY3Q6cm9vdHMiLCJzaGEyNTYiOiJlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlIn0sInJldm9jYXRpb24iOnsib3JuIjoib3JuOmRzZy5jb3JlLmtlcm5lbC5hcnRpZmFjdDpyZXZvY2F0aW9uIiwic2hhMjU2IjoiZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZiJ9LCJhY3RvciI6Im9ybjpkc2cuY29yZS5rZXJuZWwuYWN0b3I6a2VybmVsLWFwaSIsIm1vZGUiOiJodW1hbi1hdXRob3JpdHkiLCJhY3RpdmF0ZWRBdCI6IjIwMjYtMDktMDhUMjA6MDA6MDBaIn0=",
8
+ "rule": "signed descriptor binds a prior activation head and exact artifact references"
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "profile": "dsg.kernel.standing-order-activation/1",
3
+ "shape": "activation",
4
+ "name": "activation-reject",
5
+ "verdict": "reject",
6
+ "obligation": "semantic",
7
+ "bytes": "eyJwcm9maWxlIjoiZHNnLmtlcm5lbC5zdGFuZGluZy1vcmRlci1hY3RpdmF0aW9uLzEiLCJhY3RpdmF0aW9uSWQiOiJvcm46ZHNnLmNvcmUua2VybmVsLnN0YW5kaW5nLW9yZGVyOmFjdGl2YXRpb24tMSIsImV4cGVjdGVkUHJldmlvdXNBY3RpdmF0aW9uIjpudWxsLCJsYXciOnsib3JuIjoib3JuOmRzZy5jb3JlLmtlcm5lbC5hcnRpZmFjdDpsYXciLCJzaGEyNTYiOiJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiIn0sImVucm9sbG1lbnQiOnsib3JuIjoib3JuOmRzZy5jb3JlLmtlcm5lbC5hcnRpZmFjdDplbnJvbGxtZW50Iiwic2hhMjU2IjoiY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjYyJ9LCJpbnRlbnQiOnsib3JuIjoib3JuOmRzZy5jb3JlLmtlcm5lbC5hcnRpZmFjdDppbnRlbnQiLCJzaGEyNTYiOiJkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkZGRkIn0sInJvb3RzIjp7Im9ybiI6Im9ybjpkc2cuY29yZS5rZXJuZWwuYXJ0aWZhY3Q6cm9vdHMiLCJzaGEyNTYiOiJlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlZWVlIn0sInJldm9jYXRpb24iOnsib3JuIjoib3JuOmRzZy5jb3JlLmtlcm5lbC5hcnRpZmFjdDpyZXZvY2F0aW9uIiwic2hhMjU2IjoiZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZiJ9LCJhY3RvciI6Im9ybjpkc2cuY29yZS5rZXJuZWwuYWN0b3I6a2VybmVsLWFwaSIsIm1vZGUiOiJvcGVyYXRvciIsImFjdGl2YXRlZEF0IjoiMjAyNi0wOS0wOFQyMDowMDowMFoifQ==",
8
+ "rule": "closed mode union refuses an unsupported authority mode"
9
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "profile": "dsg.run.decision/1",
3
+ "shape": "decision",
4
+ "name": "approved",
5
+ "verdict": "accept",
6
+ "bytes": "eyJwcm9maWxlIjoiZHNnLnJ1bi5kZWNpc2lvbi8xIiwicnVuSWQiOiJydW4tMSIsInJlcXVlc3REaWdlc3QiOiJhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhIiwiZGVjaXNpb24iOiJhcHByb3ZlZCIsImNhdXNlIjpudWxsLCJkZWNpZGVkQXQiOiIyMDI2LTA5LTA3VDE4OjAwOjAwWiIsImRlY2lkZXIiOiJvcm46ZHNnLmNvcmUua2VybmVsLmFjdG9yOnNheWVyIiwic2lnbmF0dXJlIjoic2lnIn0="
7
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "profile": "dsg.run.decision/1",
3
+ "shape": "decision",
4
+ "name": "extra-field",
5
+ "verdict": "reject",
6
+ "bytes": "eyJwcm9maWxlIjoiZHNnLnJ1bi5kZWNpc2lvbi8xIiwicnVuSWQiOiJydW4tMSIsInJlcXVlc3REaWdlc3QiOiJhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhIiwiZGVjaXNpb24iOiJhcHByb3ZlZCIsImNhdXNlIjpudWxsLCJkZWNpZGVkQXQiOiIyMDI2LTA5LTA3VDE4OjAwOjAwWiIsImRlY2lkZXIiOiJvcm46ZHNnLmNvcmUua2VybmVsLmFjdG9yOnNheWVyIiwic2lnbmF0dXJlIjoic2lnIiwiYmVzaWRlIjp0cnVlfQ==",
7
+ "rule": "an extra field is a different protocol"
8
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "profile": "dsg.run.decision/1",
3
+ "shape": "decision",
4
+ "name": "unknown-outcome",
5
+ "verdict": "reject",
6
+ "bytes": "eyJwcm9maWxlIjoiZHNnLnJ1bi5kZWNpc2lvbi8xIiwicnVuSWQiOiJydW4tMSIsInJlcXVlc3REaWdlc3QiOiJhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhIiwiZGVjaXNpb24iOiJtYXliZSIsImNhdXNlIjpudWxsLCJkZWNpZGVkQXQiOiIyMDI2LTA5LTA3VDE4OjAwOjAwWiIsImRlY2lkZXIiOiJvcm46ZHNnLmNvcmUua2VybmVsLmFjdG9yOnNheWVyIiwic2lnbmF0dXJlIjoic2lnIn0=",
7
+ "rule": "decision is approved or refused"
8
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "profile": "dsg.run.event/1",
3
+ "shape": "streamSeal",
4
+ "name": "arrival-order",
5
+ "verdict": "accept",
6
+ "rule": "Arrival order is not stream order. The same events delivered newest first seal to the same digest; an implementation that hashes in arrival order fails here.",
7
+ "bytes": "RFNHRVYgeyJhdCI6IjIwMjYtMDktMDdUMTU6MDA6MDBaIiwiY2F0YWxvZ1NoYTI1NiI6ImYzNjE0MTM4YjU3ZDQ3OWEzZWJmY2I0ZmI0M2NjOTY1MTFhNTExODJkMzVhZWZjMWJhZjIwY2RjMWVmODY4ODciLCJraW5kIjoiZmluaXNoZWQiLCJvcGVyYXRpb24iOiJsb2NhbCIsInBheWxvYWQiOnsic3RhdHVzIjoic3VjY2VlZGVkIiwic3VtbWFyeSI6Im9uZSBibG9jayJ9LCJwcm9maWxlIjoiZHNnLnJ1bi5ldmVudC8xIiwic2VxdWVuY2UiOjN9CkRTR0VWIHsiYXQiOiIyMDI2LTA5LTA3VDE1OjAwOjAwWiIsImNhdGFsb2dTaGEyNTYiOiJmMzYxNDEzOGI1N2Q0NzlhM2ViZmNiNGZiNDNjYzk2NTExYTUxMTgyZDM1YWVmYzFiYWYyMGNkYzFlZjg2ODg3Iiwia2luZCI6ImJsb2NrLmNvbXBsZXRlZCIsIm9wZXJhdGlvbiI6ImxvY2FsIiwicGF5bG9hZCI6eyJibG9jayI6MSwiaGVhZCI6ImFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWIiLCJsYWJlbCI6ImNhZsOpIiwidGVtcGVyYXR1cmUiOjFlLTA3fSwicHJvZmlsZSI6ImRzZy5ydW4uZXZlbnQvMSIsInNlcXVlbmNlIjoyfQpEU0dFViB7ImF0IjoiMjAyNi0wOS0wN1QxNTowMDowMFoiLCJjYXRhbG9nU2hhMjU2IjoiZjM2MTQxMzhiNTdkNDc5YTNlYmZjYjRmYjQzY2M5NjUxMWE1MTE4MmQzNWFlZmMxYmFmMjBjZGMxZWY4Njg4NyIsImtpbmQiOiJzdGFydGVkIiwib3BlcmF0aW9uIjoibG9jYWwiLCJwYXlsb2FkIjp7ImFyZ3VtZW50c19zaGEyNTYiOm51bGwsInNlZWQiOjcsInZlcnNpb24iOiIxLjAuMCJ9LCJwcm9maWxlIjoiZHNnLnJ1bi5ldmVudC8xIiwic2VxdWVuY2UiOjF9",
8
+ "sha256": "8b875eb3e335a8fdb0d3f0ff9a5ed33eb6d7ef247f93c9ec44394df1410a93b2"
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "profile": "dsg.run.event/1",
3
+ "shape": "streamSeal",
4
+ "name": "canonical-stream",
5
+ "verdict": "accept",
6
+ "rule": "The seal is sha256 over RFC 8785 event bytes in sequence order joined by LF. Bytes and digest come from the published Python producer and the plane's own canonicalizer; an adapter must reproduce the digest, never assert it.",
7
+ "bytes": "RFNHRVYgeyJhdCI6IjIwMjYtMDktMDdUMTU6MDA6MDBaIiwiY2F0YWxvZ1NoYTI1NiI6ImYzNjE0MTM4YjU3ZDQ3OWEzZWJmY2I0ZmI0M2NjOTY1MTFhNTExODJkMzVhZWZjMWJhZjIwY2RjMWVmODY4ODciLCJraW5kIjoic3RhcnRlZCIsIm9wZXJhdGlvbiI6ImxvY2FsIiwicGF5bG9hZCI6eyJhcmd1bWVudHNfc2hhMjU2IjpudWxsLCJzZWVkIjo3LCJ2ZXJzaW9uIjoiMS4wLjAifSwicHJvZmlsZSI6ImRzZy5ydW4uZXZlbnQvMSIsInNlcXVlbmNlIjoxfQpEU0dFViB7ImF0IjoiMjAyNi0wOS0wN1QxNTowMDowMFoiLCJjYXRhbG9nU2hhMjU2IjoiZjM2MTQxMzhiNTdkNDc5YTNlYmZjYjRmYjQzY2M5NjUxMWE1MTE4MmQzNWFlZmMxYmFmMjBjZGMxZWY4Njg4NyIsImtpbmQiOiJibG9jay5jb21wbGV0ZWQiLCJvcGVyYXRpb24iOiJsb2NhbCIsInBheWxvYWQiOnsiYmxvY2siOjEsImhlYWQiOiJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiIiwibGFiZWwiOiJjYWbDqSIsInRlbXBlcmF0dXJlIjoxZS0wN30sInByb2ZpbGUiOiJkc2cucnVuLmV2ZW50LzEiLCJzZXF1ZW5jZSI6Mn0KRFNHRVYgeyJhdCI6IjIwMjYtMDktMDdUMTU6MDA6MDBaIiwiY2F0YWxvZ1NoYTI1NiI6ImYzNjE0MTM4YjU3ZDQ3OWEzZWJmY2I0ZmI0M2NjOTY1MTFhNTExODJkMzVhZWZjMWJhZjIwY2RjMWVmODY4ODciLCJraW5kIjoiZmluaXNoZWQiLCJvcGVyYXRpb24iOiJsb2NhbCIsInBheWxvYWQiOnsic3RhdHVzIjoic3VjY2VlZGVkIiwic3VtbWFyeSI6Im9uZSBibG9jayJ9LCJwcm9maWxlIjoiZHNnLnJ1bi5ldmVudC8xIiwic2VxdWVuY2UiOjN9",
8
+ "sha256": "8b875eb3e335a8fdb0d3f0ff9a5ed33eb6d7ef247f93c9ec44394df1410a93b2"
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "profile": "dsg.run.event/1",
3
+ "shape": "streamSeal",
4
+ "name": "float-utf8-stream",
5
+ "verdict": "accept",
6
+ "rule": "Hash RFC 8785 event bytes in sequence order, separated by LF, without prefix or final LF. Expected digest produced by dsg-run-events 0.1.1, not the reference adapter.",
7
+ "bytes": "RFNHRVYgeyJzZXF1ZW5jZSI6MSwicHJvZmlsZSI6ImRzZy5ydW4uZXZlbnQvMSIsInBheWxvYWQiOnsidmVyc2lvbiI6IjEuMC4wIiwic2VlZCI6NywiYXJndW1lbnRzX3NoYTI1NiI6bnVsbH0sIm9wZXJhdGlvbiI6ImxvY2FsIiwia2luZCI6InN0YXJ0ZWQiLCJjYXRhbG9nU2hhMjU2IjoiZjM2MTQxMzhiNTdkNDc5YTNlYmZjYjRmYjQzY2M5NjUxMWE1MTE4MmQzNWFlZmMxYmFmMjBjZGMxZWY4Njg4NyIsImF0IjoiMjAyNi0wOS0wN1QxNTowMDowMFoifQpEU0dFViB7InNlcXVlbmNlIjoyLCJwcm9maWxlIjoiZHNnLnJ1bi5ldmVudC8xIiwicGF5bG9hZCI6eyJ0ZW1wZXJhdHVyZSI6MWUtMDcsImxhYmVsIjoiY2Fmw6kiLCJoZWFkIjoiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYiIsImJsb2NrIjoxfSwib3BlcmF0aW9uIjoibG9jYWwiLCJraW5kIjoiYmxvY2suY29tcGxldGVkIiwiY2F0YWxvZ1NoYTI1NiI6ImYzNjE0MTM4YjU3ZDQ3OWEzZWJmY2I0ZmI0M2NjOTY1MTFhNTExODJkMzVhZWZjMWJhZjIwY2RjMWVmODY4ODciLCJhdCI6IjIwMjYtMDktMDdUMTU6MDA6MDBaIn0KRFNHRVYgeyJzZXF1ZW5jZSI6MywicHJvZmlsZSI6ImRzZy5ydW4uZXZlbnQvMSIsInBheWxvYWQiOnsic3VtbWFyeSI6Im9uZSBibG9jayIsInN0YXR1cyI6InN1Y2NlZWRlZCJ9LCJvcGVyYXRpb24iOiJsb2NhbCIsImtpbmQiOiJmaW5pc2hlZCIsImNhdGFsb2dTaGEyNTYiOiJmMzYxNDEzOGI1N2Q0NzlhM2ViZmNiNGZiNDNjYzk2NTExYTUxMTgyZDM1YWVmYzFiYWYyMGNkYzFlZjg2ODg3IiwiYXQiOiIyMDI2LTA5LTA3VDE1OjAwOjAwWiJ9Cg==",
8
+ "sha256": "8b875eb3e335a8fdb0d3f0ff9a5ed33eb6d7ef247f93c9ec44394df1410a93b2"
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "profile": "dsg.run.event/1",
3
+ "shape": "streamSeal",
4
+ "name": "gapped-stream",
5
+ "verdict": "accept",
6
+ "rule": "Hash RFC 8785 event bytes in sequence order, separated by LF, without prefix or final LF. Expected digest produced by dsg-run-events 0.1.1, not the reference adapter.",
7
+ "bytes": "RFNHRVYgeyJzZXF1ZW5jZSI6MSwicHJvZmlsZSI6ImRzZy5ydW4uZXZlbnQvMSIsInBheWxvYWQiOnsidmVyc2lvbiI6IjEuMC4wIiwic2VlZCI6NywiYXJndW1lbnRzX3NoYTI1NiI6bnVsbH0sIm9wZXJhdGlvbiI6ImxvY2FsIiwia2luZCI6InN0YXJ0ZWQiLCJjYXRhbG9nU2hhMjU2IjoiZjM2MTQxMzhiNTdkNDc5YTNlYmZjYjRmYjQzY2M5NjUxMWE1MTE4MmQzNWFlZmMxYmFmMjBjZGMxZWY4Njg4NyIsImF0IjoiMjAyNi0wOS0wN1QxNTowMDowMFoifQpEU0dFViB7InNlcXVlbmNlIjo1LCJwcm9maWxlIjoiZHNnLnJ1bi5ldmVudC8xIiwicGF5bG9hZCI6eyJzdW1tYXJ5IjoiY2Fmw6kgMWUtNyIsInN0YXR1cyI6InRydW5jYXRlZCJ9LCJvcGVyYXRpb24iOiJsb2NhbCIsImtpbmQiOiJmaW5pc2hlZCIsImNhdGFsb2dTaGEyNTYiOiJmMzYxNDEzOGI1N2Q0NzlhM2ViZmNiNGZiNDNjYzk2NTExYTUxMTgyZDM1YWVmYzFiYWYyMGNkYzFlZjg2ODg3IiwiYXQiOiIyMDI2LTA5LTA3VDE1OjAwOjAwWiJ9Cg==",
8
+ "sha256": "ae0e54146f288e88479105d33823d420234337271937ff3601a7c524d3fbca94"
9
+ }
@@ -0,0 +1,9 @@
1
+ {
2
+ "profile": "dsg.run.event/1",
3
+ "shape": "streamSeal",
4
+ "name": "payload-key-order",
5
+ "verdict": "accept",
6
+ "rule": "Key order is a transport's accident. The same events with every envelope and payload key reversed seal to the same digest; an implementation that hashes received bytes instead of canonical bytes fails here.",
7
+ "bytes": "RFNHRVYgeyJzZXF1ZW5jZSI6MSwicHJvZmlsZSI6ImRzZy5ydW4uZXZlbnQvMSIsInBheWxvYWQiOnsidmVyc2lvbiI6IjEuMC4wIiwic2VlZCI6NywiYXJndW1lbnRzX3NoYTI1NiI6bnVsbH0sIm9wZXJhdGlvbiI6ImxvY2FsIiwia2luZCI6InN0YXJ0ZWQiLCJjYXRhbG9nU2hhMjU2IjoiZjM2MTQxMzhiNTdkNDc5YTNlYmZjYjRmYjQzY2M5NjUxMWE1MTE4MmQzNWFlZmMxYmFmMjBjZGMxZWY4Njg4NyIsImF0IjoiMjAyNi0wOS0wN1QxNTowMDowMFoifQpEU0dFViB7InNlcXVlbmNlIjoyLCJwcm9maWxlIjoiZHNnLnJ1bi5ldmVudC8xIiwicGF5bG9hZCI6eyJ0ZW1wZXJhdHVyZSI6MWUtMDcsImxhYmVsIjoiY2Fmw6kiLCJoZWFkIjoiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYmFiYWJhYiIsImJsb2NrIjoxfSwib3BlcmF0aW9uIjoibG9jYWwiLCJraW5kIjoiYmxvY2suY29tcGxldGVkIiwiY2F0YWxvZ1NoYTI1NiI6ImYzNjE0MTM4YjU3ZDQ3OWEzZWJmY2I0ZmI0M2NjOTY1MTFhNTExODJkMzVhZWZjMWJhZjIwY2RjMWVmODY4ODciLCJhdCI6IjIwMjYtMDktMDdUMTU6MDA6MDBaIn0KRFNHRVYgeyJzZXF1ZW5jZSI6MywicHJvZmlsZSI6ImRzZy5ydW4uZXZlbnQvMSIsInBheWxvYWQiOnsic3VtbWFyeSI6Im9uZSBibG9jayIsInN0YXR1cyI6InN1Y2NlZWRlZCJ9LCJvcGVyYXRpb24iOiJsb2NhbCIsImtpbmQiOiJmaW5pc2hlZCIsImNhdGFsb2dTaGEyNTYiOiJmMzYxNDEzOGI1N2Q0NzlhM2ViZmNiNGZiNDNjYzk2NTExYTUxMTgyZDM1YWVmYzFiYWYyMGNkYzFlZjg2ODg3IiwiYXQiOiIyMDI2LTA5LTA3VDE1OjAwOjAwWiJ9",
8
+ "sha256": "8b875eb3e335a8fdb0d3f0ff9a5ed33eb6d7ef247f93c9ec44394df1410a93b2"
9
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "profile": "dsg.run.request/1",
3
+ "shape": "request",
4
+ "name": "minimal-valid",
5
+ "verdict": "accept",
6
+ "bytes": "eyJwcm9maWxlIjoiZHNnLnJ1bi5yZXF1ZXN0LzEiLCJleHBlcmltZW50Ijp7ImRpZ2VzdCI6ImFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEiLCJ0aXRsZSI6ImJvdW5kZWQgcHJvb2YiLCJ3b3JrbG9hZENsYXNzIjoidGNwbS1zaW11bGF0aW9uIn0sIndvcmtsb2FkIjp7Im9ybiI6Im9ybjpkc2cuaW5mcmEubW9kdWxlLnJlbGVhc2U6dGNwbS1zaW11bGF0aW9uLzEiLCJzaGEyNTYiOiJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiIn0sImlucHV0cyI6W3sib3JuIjoib3JuOmRzZy5jb3JlLmtlcm5lbC5kb2N1bWVudDpleHBlcmltZW50LzEiLCJzaGEyNTYiOiJhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhIn0seyJvcm4iOiJvcm46ZHNnLmNvcmUua2VybmVsLmRvY3VtZW50OmNhdGFsb2cvMSIsInNoYTI1NiI6ImNjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2MifV0sImNlaWxpbmdzIjp7Im1heFJ1blNlY29uZHMiOjYwMCwibWF4R3B1U2Vjb25kcyI6NjAwLCJtYXhQYXJhbGxlbGlzbSI6MSwiY29zdEJvdW5kTWljcm9Vc2QiOjF9LCJwdXJwb3NlIjoiYm91bmRlZCBwcm9vZiBvZiBvbmUgYWdlbnQtZHJpdmVuIGNlbGwiLCJ3aW5kb3ciOiJhbnl0aW1lIn0="
7
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "profile": "dsg.run.request/1",
3
+ "shape": "request",
4
+ "name": "extra-field",
5
+ "verdict": "reject",
6
+ "bytes": "eyJwcm9maWxlIjoiZHNnLnJ1bi5yZXF1ZXN0LzEiLCJleHBlcmltZW50Ijp7ImRpZ2VzdCI6ImFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEiLCJ0aXRsZSI6ImJvdW5kZWQgcHJvb2YiLCJ3b3JrbG9hZENsYXNzIjoidGNwbS1zaW11bGF0aW9uIn0sIndvcmtsb2FkIjp7Im9ybiI6Im9ybjpkc2cuaW5mcmEubW9kdWxlLnJlbGVhc2U6dGNwbS1zaW11bGF0aW9uLzEiLCJzaGEyNTYiOiJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiIn0sImlucHV0cyI6W3sib3JuIjoib3JuOmRzZy5jb3JlLmtlcm5lbC5kb2N1bWVudDpleHBlcmltZW50LzEiLCJzaGEyNTYiOiJhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhIn0seyJvcm4iOiJvcm46ZHNnLmNvcmUua2VybmVsLmRvY3VtZW50OmNhdGFsb2cvMSIsInNoYTI1NiI6ImNjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2MifV0sImNlaWxpbmdzIjp7Im1heFJ1blNlY29uZHMiOjYwMCwibWF4R3B1U2Vjb25kcyI6NjAwLCJtYXhQYXJhbGxlbGlzbSI6MSwiY29zdEJvdW5kTWljcm9Vc2QiOjF9LCJwdXJwb3NlIjoiYm91bmRlZCBwcm9vZiBvZiBvbmUgYWdlbnQtZHJpdmVuIGNlbGwiLCJ3aW5kb3ciOiJhbnl0aW1lIiwiYmVzaWRlIjp0cnVlfQ==",
7
+ "rule": "an extra field is a different protocol"
8
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "profile": "dsg.run.request/1",
3
+ "shape": "request",
4
+ "name": "wrong-profile",
5
+ "verdict": "reject",
6
+ "bytes": "eyJwcm9maWxlIjoiZHNnLnJ1bi5yZXF1ZXN0LzIiLCJleHBlcmltZW50Ijp7ImRpZ2VzdCI6ImFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEiLCJ0aXRsZSI6ImJvdW5kZWQgcHJvb2YiLCJ3b3JrbG9hZENsYXNzIjoidGNwbS1zaW11bGF0aW9uIn0sIndvcmtsb2FkIjp7Im9ybiI6Im9ybjpkc2cuaW5mcmEubW9kdWxlLnJlbGVhc2U6dGNwbS1zaW11bGF0aW9uLzEiLCJzaGEyNTYiOiJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiIn0sImlucHV0cyI6W3sib3JuIjoib3JuOmRzZy5jb3JlLmtlcm5lbC5kb2N1bWVudDpleHBlcmltZW50LzEiLCJzaGEyNTYiOiJhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhIn0seyJvcm4iOiJvcm46ZHNnLmNvcmUua2VybmVsLmRvY3VtZW50OmNhdGFsb2cvMSIsInNoYTI1NiI6ImNjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2NjY2MifV0sImNlaWxpbmdzIjp7Im1heFJ1blNlY29uZHMiOjYwMCwibWF4R3B1U2Vjb25kcyI6NjAwLCJtYXhQYXJhbGxlbGlzbSI6MSwiY29zdEJvdW5kTWljcm9Vc2QiOjF9LCJwdXJwb3NlIjoiYm91bmRlZCBwcm9vZiBvZiBvbmUgYWdlbnQtZHJpdmVuIGNlbGwiLCJ3aW5kb3ciOiJhbnl0aW1lIn0=",
7
+ "rule": "profile literal is frozen at /1"
8
+ }
@@ -0,0 +1,7 @@
1
+ {
2
+ "profile": "dsg.run.run-summary/1",
3
+ "shape": "summary",
4
+ "name": "waiting-on-decider",
5
+ "verdict": "accept",
6
+ "bytes": "eyJwcm9maWxlIjoiZHNnLnJ1bi5ydW4tc3VtbWFyeS8xIiwicnVuSWQiOiJydW4tMSIsImV4cGVyaW1lbnREaWdlc3QiOiJhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhIiwicmVxdWVzdGVyIjp7InByaW5jaXBhbCI6Im9ybjpkc2cuY29yZS5rZXJuZWwuYWN0b3I6emFyZ2hhbSIsImRpc3BsYXlOYW1lIjoiWmFyZ2hhbSIsInNvdXJjZSI6Imdvb2dsZS13b3Jrc3BhY2UifSwiZGVjaXNpb24iOm51bGwsIndhaXRpbmdPbiI6ImRlY2lkZXIifQ=="
7
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "profile": "dsg.run.run-summary/1",
3
+ "shape": "summary",
4
+ "name": "extra-field",
5
+ "verdict": "reject",
6
+ "bytes": "eyJwcm9maWxlIjoiZHNnLnJ1bi5ydW4tc3VtbWFyeS8xIiwicnVuSWQiOiJydW4tMSIsImV4cGVyaW1lbnREaWdlc3QiOiJhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhIiwicmVxdWVzdGVyIjp7InByaW5jaXBhbCI6Im9ybjpkc2cuY29yZS5rZXJuZWwuYWN0b3I6emFyZ2hhbSIsImRpc3BsYXlOYW1lIjoiWmFyZ2hhbSIsInNvdXJjZSI6Imdvb2dsZS13b3Jrc3BhY2UifSwiZGVjaXNpb24iOm51bGwsIndhaXRpbmdPbiI6ImRlY2lkZXIiLCJiZXNpZGUiOnRydWV9",
7
+ "rule": "an extra field is a different protocol"
8
+ }
package/checklist.json CHANGED
@@ -8,6 +8,12 @@
8
8
  "dsg.kernel.bootstrap/1": 9,
9
9
  "dsg.kernel.ordinary-authority/1": 8,
10
10
  "dsg.infra.adoption-fact/1": 7,
11
- "dsg.run.event/1": 12
11
+ "dsg.run.event/1": 17,
12
+ "dsg.run.request/1": 3,
13
+ "dsg.run.decision/1": 3,
14
+ "dsg.run.run-summary/1": 2,
15
+ "dsg.core.refusal/1": 3,
16
+ "dsg.core.identity-binding/1": 2,
17
+ "dsg.kernel.standing-order-activation/1": 2
12
18
  }
13
19
  }
package/dist/cli.cjs CHANGED
@@ -1,4 +1,4 @@
1
- const require_reference_adapter = require("./reference-adapter-DWurDAI9.cjs");
1
+ const require_reference_adapter = require("./reference-adapter-DabyUOZw.cjs");
2
2
  let node_fs = require("node:fs");
3
3
  let node_path = require("node:path");
4
4
  let node_url = require("node:url");
package/dist/cli.mjs CHANGED
@@ -1,4 +1,4 @@
1
- import { n as runVectors, t as referenceAdapter } from "./reference-adapter-CaAo2iIH.mjs";
1
+ import { n as runVectors, t as referenceAdapter } from "./reference-adapter-BdIIA9rz.mjs";
2
2
  import { readFileSync } from "node:fs";
3
3
  import { dirname, join } from "node:path";
4
4
  import { fileURLToPath } from "node:url";
package/dist/index.cjs CHANGED
@@ -1,4 +1,4 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_reference_adapter = require("./reference-adapter-DWurDAI9.cjs");
2
+ const require_reference_adapter = require("./reference-adapter-DabyUOZw.cjs");
3
3
  exports.referenceAdapter = require_reference_adapter.referenceAdapter;
4
4
  exports.runVectors = require_reference_adapter.runVectors;
package/dist/index.d.cts CHANGED
@@ -18,9 +18,9 @@ type Vector = {
18
18
  readonly rule?: string;
19
19
  readonly bytes: string;
20
20
  /** Digest vectors only: the expected sha256 of the canonical form of the
21
- * document in `bytes`. The vector bytes are deliberately NON-canonical
21
+ * document in `bytes`, or the ordered event stream for digest.streamSeal. Source is NON-canonical
22
22
  * (different key order, whitespace), so agreement proves the consumer's
23
- * own canonicalize-and-digest path, not a byte copy. */
23
+ * own canonicalize-and-digest path, not a byte copy. Stream bytes include DSGEV prefixes. */
24
24
  readonly sha256?: string;
25
25
  /** What agreeing on this vector obliges. "shape" (default): the boundary
26
26
  * parser's structural verdict. "semantic": a validator beyond shape
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.cts","names":[],"sources":["../src/adapter.ts","../src/runner.ts","../src/reference-adapter.ts"],"mappings":";KAIY;WACG;WAAmB;;WACnB;WAAoB;;KAEvB,UAAU,SAAS,gBAAgB,OAAO,eAAe;;;;KAKzD;WACD;WACA;WACA;WACA;WACA;WACA;;;;;WAKA;;;;;;WAMA;;;;KC1BC;WACD;WACA;WACA;WACA;;KAGC;WACD;WACA;WACA,mBAAmB;;KAGzB;WAAuB,UAAU,SAAS;;;;;iBAK/B,WAAW,SAAS,SAAS,mBAAmB,WAAW,YAAY;;;iBCZvE,oBAAoB"}
1
+ {"version":3,"file":"index.d.cts","names":[],"sources":["../src/adapter.ts","../src/runner.ts","../src/reference-adapter.ts"],"mappings":";KAIY;WACG;WAAmB;;WACnB;WAAoB;;KAEvB,UAAU,SAAS,gBAAgB,OAAO,eAAe;;;;KAKzD;WACD;WACA;WACA;WACA;WACA;WACA;;;;;WAKA;;;;;;WAMA;;;;KC1BC;WACD;WACA;WACA;WACA;;KAGC;WACD;WACA;WACA,mBAAmB;;KAGzB;WAAuB,UAAU,SAAS;;;;;iBAK/B,WAAW,SAAS,SAAS,mBAAmB,WAAW,YAAY;;;iBCXvE,oBAAoB"}
package/dist/index.d.mts CHANGED
@@ -18,9 +18,9 @@ type Vector = {
18
18
  readonly rule?: string;
19
19
  readonly bytes: string;
20
20
  /** Digest vectors only: the expected sha256 of the canonical form of the
21
- * document in `bytes`. The vector bytes are deliberately NON-canonical
21
+ * document in `bytes`, or the ordered event stream for digest.streamSeal. Source is NON-canonical
22
22
  * (different key order, whitespace), so agreement proves the consumer's
23
- * own canonicalize-and-digest path, not a byte copy. */
23
+ * own canonicalize-and-digest path, not a byte copy. Stream bytes include DSGEV prefixes. */
24
24
  readonly sha256?: string;
25
25
  /** What agreeing on this vector obliges. "shape" (default): the boundary
26
26
  * parser's structural verdict. "semantic": a validator beyond shape
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.mts","names":[],"sources":["../src/adapter.ts","../src/runner.ts","../src/reference-adapter.ts"],"mappings":";KAIY;WACG;WAAmB;;WACnB;WAAoB;;KAEvB,UAAU,SAAS,gBAAgB,OAAO,eAAe;;;;KAKzD;WACD;WACA;WACA;WACA;WACA;WACA;;;;;WAKA;;;;;;WAMA;;;;KC1BC;WACD;WACA;WACA;WACA;;KAGC;WACD;WACA;WACA,mBAAmB;;KAGzB;WAAuB,UAAU,SAAS;;;;;iBAK/B,WAAW,SAAS,SAAS,mBAAmB,WAAW,YAAY;;;iBCZvE,oBAAoB"}
1
+ {"version":3,"file":"index.d.mts","names":[],"sources":["../src/adapter.ts","../src/runner.ts","../src/reference-adapter.ts"],"mappings":";KAIY;WACG;WAAmB;;WACnB;WAAoB;;KAEvB,UAAU,SAAS,gBAAgB,OAAO,eAAe;;;;KAKzD;WACD;WACA;WACA;WACA;WACA;WACA;;;;;WAKA;;;;;;WAMA;;;;KC1BC;WACD;WACA;WACA;WACA;;KAGC;WACD;WACA;WACA,mBAAmB;;KAGzB;WAAuB,UAAU,SAAS;;;;;iBAK/B,WAAW,SAAS,SAAS,mBAAmB,WAAW,YAAY;;;iBCXvE,oBAAoB"}
package/dist/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- import { n as runVectors, t as referenceAdapter } from "./reference-adapter-CaAo2iIH.mjs";
1
+ import { n as runVectors, t as referenceAdapter } from "./reference-adapter-BdIIA9rz.mjs";
2
2
  export { referenceAdapter, runVectors };
@@ -2,7 +2,7 @@ import { readFileSync, readdirSync } from "node:fs";
2
2
  import { join } from "node:path";
3
3
  import { createHash } from "node:crypto";
4
4
  import { jcsStringify } from "@dynamicalsystems/orn-schemas";
5
- import { PROFILES } from "@dynamicalsystems/idl";
5
+ import { EVENT_LINE_PREFIX, EVENT_PROFILE, EventSchema, PROFILES } from "@dynamicalsystems/idl";
6
6
  //#region src/runner.ts
7
7
  /** Runs every vector under `assetsDir` through the adapter. The checklist
8
8
  * is the coverage floor: a profile listed there with fewer vectors on disk
@@ -1396,6 +1396,40 @@ function Errors(...args) {
1396
1396
  return new ValueErrorIterator(args.length === 3 ? Visit(args[0], args[1], "", args[2]) : Visit(args[0], [], "", args[1]));
1397
1397
  }
1398
1398
  //#endregion
1399
+ //#region src/stream-digest.ts
1400
+ /** Reference digest over source event lines, not over a precomputed seal document. */
1401
+ function streamDigest(bytes) {
1402
+ try {
1403
+ const events = /* @__PURE__ */ new Map();
1404
+ const text = new TextDecoder("utf-8", { fatal: true }).decode(bytes);
1405
+ for (const line of text.split("\n")) {
1406
+ if (!line.startsWith(EVENT_LINE_PREFIX)) continue;
1407
+ const event = JSON.parse(line.slice(EVENT_LINE_PREFIX.length));
1408
+ if (!Check(EventSchema, event)) return {
1409
+ ok: false,
1410
+ reason: "invalid event"
1411
+ };
1412
+ const canonical = jcsStringify(event);
1413
+ const previous = events.get(event.sequence);
1414
+ if (previous !== void 0 && previous !== canonical) return {
1415
+ ok: false,
1416
+ reason: "conflicting event sequence"
1417
+ };
1418
+ events.set(event.sequence, canonical);
1419
+ }
1420
+ const stream = [...events].sort(([a], [b]) => a - b).map(([, line]) => line).join("\n");
1421
+ return {
1422
+ ok: true,
1423
+ digest: createHash("sha256").update(stream).digest("hex")
1424
+ };
1425
+ } catch (error) {
1426
+ return {
1427
+ ok: false,
1428
+ reason: String(error)
1429
+ };
1430
+ }
1431
+ }
1432
+ //#endregion
1399
1433
  //#region src/reference-adapter.ts
1400
1434
  function referenceAdapter() {
1401
1435
  const adapter = {};
@@ -1433,9 +1467,10 @@ function referenceAdapter() {
1433
1467
  };
1434
1468
  };
1435
1469
  }
1470
+ adapter[`${EVENT_PROFILE}#digest.streamSeal`] = streamDigest;
1436
1471
  return adapter;
1437
1472
  }
1438
1473
  //#endregion
1439
1474
  export { runVectors as n, referenceAdapter as t };
1440
1475
 
1441
- //# sourceMappingURL=reference-adapter-CaAo2iIH.mjs.map
1476
+ //# sourceMappingURL=reference-adapter-BdIIA9rz.mjs.map