Skip to content

agricogla: add self-contained symbolic-planner Coworld player#73

Open
devin-ai-integration[bot] wants to merge 1 commit into
mainfrom
devin/1781918424-agricogla-symbolic-planner
Open

agricogla: add self-contained symbolic-planner Coworld player#73
devin-ai-integration[bot] wants to merge 1 commit into
mainfrom
devin/1781918424-agricogla-symbolic-planner

Conversation

@devin-ai-integration

Copy link
Copy Markdown
Contributor

Summary

Adds players/agricogla/symbolic-planner/ — a self-contained fork of the in-tree planner player from metta/packages/cogweb/games/agricogla, so the agricogla planner lives in this repo as a canonical, uploadable player and can compete on the league as its own player, independent of the metta source.

The point of the fork is dependency isolation: the metta player imports @cogweb/* workspace packages, which don't exist here. This leaf instead carries its own verbatim copy of the game engine (src/engine/) and planner (src/planner/) plus a minimal cogweb.player.v1 websocket runtime (src/runtime/player-runtime.ts), so it builds and runs entirely from this directory with no metta checkout.

What the policy does (unchanged from the source): deterministic, no-LLM. For each legal move it determinizes hidden state and rolls the game out to round 14 under a baseline continuation, then argmaxes terminal score margin (one-step policy improvement). The determinization is what keeps it from crashing on the host's redacted view — opponent hands + the undealt deck arrive as the "hidden" sentinel, and a naive rollout that reads them throws unknown card: hidden.

Packaging conforms to docs/coworld-player-packaging.md: build.sh sources tools/players_build/build_lib.sh and sets the player metadata, so it produces the linux/amd64 image, the player[] snippet on stdout, and dist/coplayer_manifest.json.

players/agricogla/symbolic-planner/build.sh
# -> players-agricogla-symbolic-planner:dev  + player[] snippet + coplayer_manifest.json

Verification

  • npm run typecheck — clean.
  • npm run smoke (smoke.ts) — full 4-player, 14-round episode with the planner piloting seat 0 over redacted views (exact host masking), no crash; planner wins/ties.
  • build.sh — builds the linux/amd64 image and emits both manifest artifacts.

Notes

  • node_modules/, dist/, and package-lock.json are git-ignored; the image bundles everything via esbuild so the runtime layer is just planner-player.js.
  • Derived from the in-tree player added in Metta-AI/metta#16417.

Link to Devin session: https://app.devin.ai/sessions/f7ff86c598a747539827d0f4e34ea79f
Requested by: @aaln

Fork of packages/cogweb/games/agricogla's planner player into a standalone
players-repo leaf with no @cogweb/* dependency. Carries its own copy of the
game engine + planner (belief model, determinized rollout, argmax) and a
minimal cogweb.player.v1 websocket runtime. Conforms to the player packaging
contract via tools/players_build/build_lib.sh.

Verified: npm run typecheck clean; smoke.ts plays a full 14-round 4-player
episode over redacted views with the planner piloting seat 0, no crash;
build.sh produces the linux/amd64 image + player[] snippet + coplayer_manifest.

Co-Authored-By: Devin AI <158243242+devin-ai-integration[bot]@users.noreply.github.com>
@devin-ai-integration

Copy link
Copy Markdown
Contributor Author

🤖 Devin AI Engineer

I'll be helping with this pull request! Here's what you should know:

✅ I will automatically:

  • Address comments on this PR. Add '(aside)' to your comment to have me ignore it.
  • Look at CI failures and help fix them

Note: I can only respond to comments from users who have write access to this repository.

⚙️ Control Options:

  • Disable automatic comment, CI, and merge conflict monitoring

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.

0 participants