From 443b9b818c8329a75be9aefcfb448778507a90cc Mon Sep 17 00:00:00 2001 From: wassname <1103714+wassname@users.noreply.github.com> Date: Thu, 17 Sep 2026 10:49:54 +0800 Subject: [PATCH] Hash direct-choice rescue schema identity Co-Authored-By: PI[gpt-5.6-terra] <288921227+claudypoo@users.noreply.github.com> --- .../20260917_direct_choice/gemini37_direct_choice_manifest.md | 2 +- slop/research/wvs/20260917_direct_choice/preflight_smoke.log | 4 ++-- src/moralmaps/read_direct_choice.py | 3 ++- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/slop/research/wvs/20260917_direct_choice/gemini37_direct_choice_manifest.md b/slop/research/wvs/20260917_direct_choice/gemini37_direct_choice_manifest.md index 3ed7e3b..92c349f 100644 --- a/slop/research/wvs/20260917_direct_choice/gemini37_direct_choice_manifest.md +++ b/slop/research/wvs/20260917_direct_choice/gemini37_direct_choice_manifest.md @@ -6,7 +6,7 @@ This preregistered pilot tests a construct difference. It is not a WVS map panel - model: `google/gemini-3.7-flash` - saved-catalog created UTC: 2026-08-13 -- protocol ID: `433768e674cf0ed8ca4b1677637c1140dbca7910c289da06dbc83124df6f8fb7` +- protocol ID: `27d582b1b35459521d1225c783d029e68cea55c857fb99f2f35364b249ed8656` - cache: `slop/research/wvs/20260917_direct_choice/gemini37_direct_choice_cache.json` - append-only request ledger: `slop/research/wvs/20260917_direct_choice/gemini37_direct_choice_requests.jsonl` - temperature: 1.0; max tokens: 1024; concurrency: 1; timeout: 90.0s diff --git a/slop/research/wvs/20260917_direct_choice/preflight_smoke.log b/slop/research/wvs/20260917_direct_choice/preflight_smoke.log index 96bb27e..c642128 100644 --- a/slop/research/wvs/20260917_direct_choice/preflight_smoke.log +++ b/slop/research/wvs/20260917_direct_choice/preflight_smoke.log @@ -1,3 +1,3 @@ smoke: 4 items x 12 canonical x 12 reversed = 96 requests -smoke: distinct direct-choice protocol 433768e674cf0ed8ca4b1677637c1140dbca7910c289da06dbc83124df6f8fb7 -planner/parser smoke: 96 requests, 12 canonical + 12 reversed per item; strict one-key parser +smoke: distinct direct-choice protocol 27d582b1b35459521d1225c783d029e68cea55c857fb99f2f35364b249ed8656 +identity smoke: hashes exact per-item schemas and rescue instructions diff --git a/src/moralmaps/read_direct_choice.py b/src/moralmaps/read_direct_choice.py index 3c02711..ceda906 100644 --- a/src/moralmaps/read_direct_choice.py +++ b/src/moralmaps/read_direct_choice.py @@ -94,7 +94,8 @@ def direct_choice_protocol_identity(model: str, items: list[dict], *, samples_pe "reasoning": reasoning, "structured_output": structured_output, "prompt_instruction": "Think briefly about which ONE answer best reflects your own view. Do not analyze the survey design. Answer immediately.", - "rescue_instruction": _force_choice(10), + "response_schemas": {item["id"]: _choice_schema(item["n"]) for item in items}, + "rescue_instructions": {item["id"]: _force_choice(item["n"]) for item in items}, "requests": plan, } encoded = json.dumps(protocol, sort_keys=True, separators=(",", ":"), ensure_ascii=True).encode()