{"algorithms":[{"algorithm_params":{"items":["<item_id>","..."]},"id":"split.v1","name":"Fair division (adjusted winner 2-party; proportional n-party)","parties":"2..=16","party_input":{"valuations":{"<item_id>":"<non-negative integer>"}},"test_vectors":[{"algorithm":"split.v1","description":"two-party, no fractional split needed: clean phase-1 assignment already equalises","expected_output":{"allocations":[{"items":[{"fraction":"1","item":"i1"}],"party":"alice","points":"6"},{"items":[{"fraction":"1","item":"i2"}],"party":"bob","points":"6"}],"method":"adjusted_winner"},"expected_output_sha256":"efb1eb8478f5c45bc59267e04f874d830f19a92a6d35311b3f19fdf26ceb25ac","input":{"items":[{"id":"i1","valuations":{"alice":6,"bob":4}},{"id":"i2","valuations":{"alice":3,"bob":6}}],"parties":["alice","bob"]},"vector_id":"split-001"},{"algorithm":"split.v1","description":"two-party, equalising fraction: valuation tie goes to the poorer party, then 7/10 of the contested item transfers","expected_output":{"allocations":[{"items":[{"fraction":"3/10","item":"item1"}],"party":"alice","points":"12/5"},{"items":[{"fraction":"7/10","item":"item1"},{"fraction":"1","item":"item2"}],"party":"bob","points":"12/5"}],"method":"adjusted_winner"},"expected_output_sha256":"2880bc01ad4e934b7328ce7b31bc6de08823a0ca623c2571bbbbf4d98a309913","input":{"items":[{"id":"item1","valuations":{"alice":8,"bob":2}},{"id":"item2","valuations":{"alice":1,"bob":1}}],"parties":["alice","bob"]},"vector_id":"split-002"},{"algorithm":"split.v1","description":"three-party proportional: everyone holds 1/3 of the single item, points are totals/3","expected_output":{"allocations":[{"items":[{"fraction":"1/3","item":"i1"}],"party":"a","points":"3"},{"items":[{"fraction":"1/3","item":"i1"}],"party":"b","points":"1"},{"items":[{"fraction":"1/3","item":"i1"}],"party":"c","points":"2"}],"method":"proportional"},"expected_output_sha256":"fd69a33c20f8880601a30f33a577bcb3e5b71e6cf4404abd6a621c87c9c6b340","input":{"items":[{"id":"i1","valuations":{"a":9,"b":3,"c":6}}],"parties":["c","a","b"]},"vector_id":"split-003"},{"algorithm":"split.v1","description":"two-party with a zero-valuation item held by the trailing party: leader sheds 1/6 of the contested item","expected_output":{"allocations":[{"items":[{"fraction":"5/6","item":"i1"}],"party":"a","points":"25/6"},{"items":[{"fraction":"1/6","item":"i1"},{"fraction":"1","item":"i2"}],"party":"b","points":"25/6"}],"method":"adjusted_winner"},"expected_output_sha256":"ab6f7ab41e5c917428555ea6b56b3f4a96551bf3f1ff7a4d09650730300f28fe","input":{"items":[{"id":"i1","valuations":{"a":5,"b":1}},{"id":"i2","valuations":{"a":0,"b":4}}],"parties":["a","b"]},"vector_id":"split-004"}]},{"algorithm_params":{"drand_round":"<integer>"},"id":"random.v1","name":"Verifiable random selection (XOR nonces + drand, lowest sha256 wins)","parties":"2..=10000","party_input":{"nonce":"<hex>"},"test_vectors":[{"algorithm":"random.v1","description":"three candidates, two nonces plus drand: XOR entropy, lowest sha256 digest wins","expected_output":{"drand_round":5150000,"draw":[{"candidate":"agent-prompt","digest":"467946232a92005423539fa57366e1e1d4f67e944fd0a21cd50193dd5221784a"},{"candidate":"agent-vision","digest":"6a1071afaf5dd341a716653b18f0f7ad9f3b0a555fecc1130ac1f0b322281a86"},{"candidate":"agent-voice","digest":"6de3270ecabf0c74982c73dc7527a4d1f1bfc18fdb86161cd066004c9de6ff02"}],"entropy":"2be5b21aca5e5f4a5c37abcf03321bc64a321c3c81b71ce8b68e1dae110fbfa2","method":"xor_sha256_lowest","winner":"agent-prompt"},"expected_output_sha256":"c7de45915d356c8f3d58b466203f6597d0f73d8f98acd6bf534988eb9b83d74b","input":{"candidates":["agent-prompt","agent-vision","agent-voice"],"drand_round":5150000,"drand_value":"c0ffee42","nonces":["a1b2c3","deadbeef"]},"vector_id":"random-001"},{"algorithm":"random.v1","description":"two candidates, single nonce: nonce order invariance and drand mixing exercised","expected_output":{"drand_round":1,"draw":[{"candidate":"first","digest":"b2196b534735dc8542abdf22d8ea93f4dfe441b46bcb64744a548a3c0a5c53f3"},{"candidate":"second","digest":"537dfc8e637595d203f4d6ffd8075f9d4a5f62fd5ece514be87b59a45d9e2dee"}],"entropy":"532e423720ec8e75f730dcb5c81b3a42a92a541c0bce3ce979bf0f0a2e2d11a0","method":"xor_sha256_lowest","winner":"second"},"expected_output_sha256":"518fdcd2171b0c6f235056b7f59fc028656d141981a139ca2476eaefd26a7f7d","input":{"candidates":["first","second"],"drand_round":1,"drand_value":"0123456789abcdef","nonces":["00ff"]},"vector_id":"random-002"}]},{"algorithm_params":{"coalition_values":{"<sorted members joined by ','>":"<non-negative integer>"}},"id":"shapley.v1","name":"Shapley value share (split the pie by marginal contribution)","parties":"2..=8","party_input":{"accept":"<true|false — any rejection VOIDs the deal naming the rejector>"},"test_vectors":[{"algorithm":"shapley.v1","description":"two-party classic: v(a)=10 v(b)=20 v(ab)=50 -> shares 20/30, exact integers","expected_output":{"method":"shapley","shares":[{"party":"a","share":"20"},{"party":"b","share":"30"}],"total":"50"},"expected_output_sha256":"893e8b44f1fccf2838eade25ab56f82e4040e202026cfbcd76bf489b4295fc41","input":{"coalition_values":{"a":10,"a,b":50,"b":20},"parties":["a","b"]},"vector_id":"shapley-001"},{"algorithm":"shapley.v1","description":"three-party majority game (v=1 iff |S|>=2): symmetric 1/3 shares, exact rationals","expected_output":{"method":"shapley","shares":[{"party":"a","share":"1/3"},{"party":"b","share":"1/3"},{"party":"c","share":"1/3"}],"total":"1"},"expected_output_sha256":"461902d5ae6f79dbaf8d11f7a605aedc49ae7dc4e9e2f5d15dac2a20aa191438","input":{"coalition_values":{"a":0,"a,b":1,"a,b,c":1,"a,c":1,"b":0,"b,c":1,"c":0},"parties":["c","a","b"]},"vector_id":"shapley-002"}]}],"commitment":"sha256:<hex of sha256(JCS(party_input) ++ salt_bytes)>","protocol":"create deal -> all parties commit (sealed mode) -> all parties reveal -> certificate issued automatically; verify at GET /v1/verify/{cert_id}"}