Skip to content

Commit 1e680b2

Browse files
RandomOscillationsDeveshParagiri
authored andcommitted
Fix #89 persist and classify THINK vs SAY divergence
1 parent 86a6a27 commit 1e680b2

5 files changed

Lines changed: 422 additions & 97 deletions

File tree

extropy/core/models/simulation.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -357,6 +357,10 @@ class ReasoningResponse(BaseModel):
357357
position: str | None = Field(
358358
default=None, description="Classified position (filled by Pass 2)"
359359
)
360+
public_position: str | None = Field(
361+
default=None,
362+
description="Public-facing position when THINK/SAY diverges (high fidelity)",
363+
)
360364
sentiment: float | None = Field(
361365
default=None, description="Sentiment value (-1 to 1)"
362366
)

extropy/simulation/engine.py

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -926,24 +926,25 @@ def _process_reasoning_chunk(
926926
public_conviction = max(0.0, min(1.0, public_conviction))
927927

928928
public_will_share = response.will_share
929-
public_position = response.position
929+
candidate_public_position = response.public_position or response.position
930+
public_position = candidate_public_position
930931

931932
if (
932933
old_public_conviction is not None
933934
and old_public_conviction >= _FIRM_CONVICTION
934935
):
935936
if (
936937
old_public_position is not None
937-
and response.position is not None
938-
and old_public_position != response.position
938+
and candidate_public_position is not None
939+
and old_public_position != candidate_public_position
939940
):
940941
new_conviction = (
941942
public_conviction if public_conviction is not None else 0.0
942943
)
943944
if new_conviction < _MODERATE_CONVICTION:
944945
logger.info(
945946
f"[CONVICTION] Agent {agent_id}: public flip from {old_public_position} "
946-
f"to {response.position} rejected (old conviction={float_to_conviction(old_public_conviction)}, "
947+
f"to {candidate_public_position} rejected (old conviction={float_to_conviction(old_public_conviction)}, "
947948
f"new conviction={float_to_conviction(public_conviction)})"
948949
)
949950
public_position = old_public_position
@@ -2041,6 +2042,7 @@ def _export_results(self) -> None:
20412042
"population_size": len(self.agents),
20422043
"strong_model": self.config.strong,
20432044
"fast_model": self.config.fast,
2045+
"fidelity": self.config.fidelity,
20442046
"seed": self.seed,
20452047
"multi_touch_threshold": self.config.multi_touch_threshold,
20462048
"completed_at": datetime.now().isoformat(),

0 commit comments

Comments
 (0)