parley_decide
Resolve conflicting party preferences by enforcing red lines, rejecting violating options, and using max-min to pick an acceptable outcome or report deadlock.
Instructions
Reach a decision among parties with conflicting interests. Give the options and each party's red lines (hard constraints, checked in code) and soft preferences. An option that crosses any party's red line is rejected outright; among the options acceptable to everyone the max-min rule picks the one whose least-satisfied party is best off, tie-broken by total score. No option acceptable to all parties yields an honest status 'deadlock' with decision null, never a forced choice. Returns JSON: status ('agreed'|'deadlock'), decision (the winning option object or null), transcript (every option with each party's masked verdict), and transcript_sha256 (the receipt hash; keep it to verify the transcript later with parley_verify_receipt). HONESTY NOTE: in this mode you, the caller, hold every party's spec and pass them all in one call, so there is no privacy between parties or from you. What still holds: red lines reject an option deterministically (a violating option cannot win), the max-min rule picks among options feasible for everyone, and the returned transcript is tamper-evident via transcript_sha256, provided the hash is kept by someone other than whoever might edit the transcript (it is unsigned and this server does not store it). For private sheets run one process per owner: examples/run_env.py.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| rule | No | Selection rule. Only 'egalitarian' (max-min) exists. | egalitarian |
| spec | Yes | A DecisionSpec: the shared options plus every party's position, the same JSON as examples/demo/recipe_*.json. Extra keys are ignored. |