Thanks to visit codestin.com
Credit goes to github.com

Skip to content

feat(envs): Add Sally Soprano negotiation environment - #167

Open
cstorm125 wants to merge 5 commits into
TextArena:mainfrom
cstorm125:sally_soprano
Open

cstorm125 wants to merge 5 commits into
TextArena:mainfrom
cstorm125:sally_soprano

Conversation

@cstorm125

Copy link
Copy Markdown
Contributor
  • Implement 2-player bilateral negotiation game with LLM judge evaluation
  • Add complete environment with proposal/acceptance mechanics and automatic draw
  • Include robust action parsing, invalid move handling, and round management
  • Add full test suite (18 tests) covering all game mechanics and edge cases

Link: https://www.pon.harvard.edu/shop/sally-soprano-i/

cstorm125 and others added 5 commits August 23, 2025 04:32
- Implement 2-player bilateral negotiation game with LLM judge evaluation
- Add complete environment with proposal/acceptance mechanics and automatic draw
- Include robust action parsing, invalid move handling, and round management
- Add full test suite (18 tests) covering all game mechanics and edge cases
The environment shipped without a register_with_versions entry, so
ta.make("SallySoprano-v0") — the call used in the env's own README and
examples — raised. Register it alongside the other negotiation role-plays
(3 players: two negotiators + LLM judge, max_rounds=60).
@borgr

borgr commented Aug 8, 2026

Copy link
Copy Markdown
Collaborator

Ready to merge. The blocker was that SallySoprano-v0 was never added to textarena/envs/__init__.py, so ta.make("SallySoprano-v0") raised KeyError. I synced the branch with main (conflict-free — it only adds new files) and registered it:

register_with_versions(id="SallySoprano-v0", entry_point="textarena.envs.SallySoprano.env:SallySopranoEnv", wrappers={"default": [LLMObservationWrapper], "-train": CONVERSATIONAL_WRAPPERS}, max_rounds=60)

Verified locally on 3.11: makereset (3 players) → step all succeed; the 3-player requirement in reset is respected. Env code itself was left untouched. Good to go.

@borgr

borgr commented Aug 9, 2026

Copy link
Copy Markdown
Collaborator

Thanks for this, @cstorm125. Rebased onto current main and opened #202. I also wired error_allowance through to the state (it was declared/tested but never passed), made repeated invalid moves forfeit to the opponent (they previously left the offender stuck on-turn, which could hang the game), and dropped a couple of dead reward writes. Your 18 tests pass plus deterministic checks for the no-deal draw, forfeit, and all judge verdicts. The live deal→judge path still needs a model for the judge — flagged that in the PR. Credit to you for the design; happy to land it there or here.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants