Appearance
Tops-only aliasing at the Exchange (worked example)
What this page is for
This is research documentation: a concrete, hand-checkable demonstration that a tops-only view of the mat is not a sufficient state at the Poisoned-Gift Exchange. Two distinct true positions present the same tops to A yet require opposite optimal Gifts; choosing the wrong one flips a provable +1 win to a −1 loss. This is a representation exhibit (what the agent is allowed to see), distinct from the deployment exhibits on the home page (frozen line vs re-solving). It makes the front-page claim — the board snapshot alone is not a sufficient state representation — concrete.
Verified (development tree only — public psdg has no private/ directory): every value below comes from the bare reference solver (solve_exchange, solve_from_position, apply_exchange, evaluate) — not from the facing-blind action model that first surfaced the conflict. The independent re-derivation lives at private/psdg/ml/verify_exhibit.py.
The opening
Both positions are reached from the YouTube-demo opening:
- Board (tops, ascending): 2, 2, 3, 4, 5, 6
- A Red Crystal (top, facing): (2, 6)
- B Red Crystal (top, facing): (1, 2)
Each player drafts 3 dice (six dice total), then the Exchange (Poisoned Gift) resolves.
The two positions
Each die is shown as (top, facing). The two positions are indistinguishable to an agent that sees only tops: A's tops are (3, 4, 5) and B's are (2, 2, 6) in both.
| A crucible | B crucible | A tops | B tops | |
|---|---|---|---|---|
| Position 1 | (3, 1), (4, 6), (5, 3) | (2, 4), (2, 4), (6, 5) | 3, 4, 5 | 2, 2, 6 |
| Position 2 | (3, 6), (4, 1), (5, 6) | (2, 1), (2, 6), (6, 5) | 3, 4, 5 | 2, 2, 6 |
The facings differ — and facings are exactly what Phase 2 (the Tumble) scores. A tops-only agent has thrown that information away.
The conflict
Both positions are won for A (+1) under optimal play, confirmed by two independent solver routes (solve_exchange and solve_from_position). But the optimal Gift is opposite, and cross-applying the other position's optimal Gift loses the game outright:
Position 1 — A crucible (3,1),(4,6),(5,3); B crucible (2,4),(2,4),(6,5)
- Gift top-3 (facing 1) secures +1 ← optimal
- Gift top-4 (facing 5) secures −1 ← Position 2's optimal Gift; B best-responds (0,3); Phase 1 1–1, Phase 2 0–0 → loss
- Swing: +1 → −1 (regret 2)
Position 2 — A crucible (3,6),(4,1),(5,6); B crucible (2,1),(2,6),(6,5)
- Gift top-4 (facing 1) secures +1 ← optimal
- Gift top-3 (facing 1) secures −1 ← Position 1's optimal Gift; B best-responds (0,1); Phase 1 1–1, Phase 2 1–2 → loss
- Swing: +1 → −1 (regret 2)
A tops-only agent sees one observation, must commit to one Gift, and is therefore wrong on at least one of the two positions — and being wrong costs the whole game, not a margin.
Mechanism (one line): keep the dice whose facing is 6 — they turn to gold at the Tumble. Which dice those are depends on facings, which the tops-only view cannot see.
Draft paths (reconstructable from scratch)
So a skeptic can rebuild each position from the opening (A moves first; entries are (top, facing) Twists):
Position 1
- A: (5, 3)
- B: (6, 5)
- A: (4, 6)
- B: (2, 4)
- A: (3, 1)
- B: (2, 4)
Position 2
- A: (5, 6)
- B: (6, 5)
- A: (4, 1)
- B: (2, 6)
- A: (3, 6)
- B: (2, 1)
How far this generalizes
This is not a one-off curiosity of the demo board:
- Enumerated (demo board): of 14 tops-only Exchange groups, 4 have no common optimal Gift — an irreducible regret floor of 0.021 under win/loss. (public
ml/aliasing_exchange.py) - Cross-opening: the conflict appears in ≈79% of 120 random openings; the demo board is a typical-to-mild case. (public
ml/run_cross_opening.py) - Objective-invariant: the conflict footprint is identical under win/loss, score-margin, and lexicographic (win-then-margin) objectives — margin-only conflicts = 0. The failure source is representation (dropped facings), not objective coarseness. (
private/psdg/ml/run_lexicographic.py, development tree)
So the effect is rare per position but maximal where it occurs (a full win → loss), and it is general across openings rather than special to this board.
Trained-agent companion: a tabular learner actually pays this cost — a full-state learner generalises to optimal play while a tops-only learner loses across openings, at both Draft and Exchange. See Learning the wrong state.
What this is not
- Not hidden information. After setup PSDG is perfect-information; the facings are on the table. The agent simply isn't fed them when its state is a tops-only summary — aliasing, not poker-style secrecy. See FAQ — partial observability.
- Not the deployment headline. The frozen-line-vs-re-solving result (~8.5% vs ~5.7%) is a protocol claim; this is a representation claim. They are complementary, not the same argument.
- Not "tops-only agents lose." Outside the conflicting subset a tops-only Gift is fine; the point is that a sufficient state must include facings at the Exchange.
Related entry points
- Home — exact exhibits
- FAQ — is this partially observable?
- FAQ — facings are visible, why aren't they "good features"?
- PSDG for ML · PSDG for AI safety
- Learning the wrong state (the trained-agent companion to this structural exhibit)
- Blunder wins (worked example) (the deployment-side companion)
