Skip to content

fix(llm): points-centred leading/following facts (no recommendations)#430

Merged
ejfn merged 1 commit into
mainfrom
ejfn/llm-points-diagnosis
Jun 13, 2026
Merged

fix(llm): points-centred leading/following facts (no recommendations)#430
ejfn merged 1 commit into
mainfrom
ejfn/llm-points-diagnosis

Conversation

@ejfn

@ejfn ejfn commented Jun 13, 2026

Copy link
Copy Markdown
Owner

Follow-up to #429, driven by live gemini-2.5-flash-lite games. Re-centres every leading/following fact on point yield/risk + resource cost (not trick-winning), and keeps it all facts/diagnosis — the LLM still decides.

Following

  • Concessions anchored to the 80 threshold + role-aware, so "defending" can't read as "feed the attackers".
  • A future-boss card (your Ace under a led Ace) is split from the trash, not dumped with it.
  • 3rd-seat overtake: over a safe teammate = "no gain"; over an unsafe one = "shield the N pts" (cost fact, not auto-help).
  • A 5 counts as a point card in disposal (split from higher non-points).

Leading

  • Beatable point-card leads (K/10) flagged as feeding points; non-point J/Q as tempo-only.
  • Trump high single (BJ) = wins but ≈no points + burns your top trump; low single = cheap concede; strong pairs = drain framing gated by dominance context (pairs held / trump out / pairs led).
  • Off-suit "unbeatable" → "wins unless ruffed"; duplicate single-leads collapsed.

Other

  • Void list caveat (confirmed only by an off-suit discard).
  • Neutrality pass: removed all recommendation-creep; only legality laws + the task instruction remain directive.

Verified with npm run qualitycheck (736 tests, lint + typecheck clean) and rendered-prompt review.

🤖 Generated with Claude Code

…ndations

Follow-up to #429, from live gemini-2.5-flash-lite games. Re-centres every
lead/follow fact on POINT yield/risk + resource cost (not trick-winning), keeps
it all facts/diagnosis (the LLM still decides), and fixes several mis-framings.

Following:
- Concessions anchored to the 80 threshold, role-aware, so "defending" can't be
  read as "feed the attackers" (a defender now sees "adds N pts to the attackers'
  total"; an attacker "gives the defenders N pts — lost from your 80").
- A future-boss card (e.g. your Ace under a led Ace) is listed apart from the
  trash instead of collapsed into it, so it isn't dumped.
- 3rd-seat overtake split: overtaking a SAFE teammate = "no gain"; an UNSAFE one
  = "shield the N pts from {opp}" — a cost fact, not auto-help.
- A 5 is treated as a point card in disposal (split from higher non-points).

Leading:
- Beatable point-card leads (K/10) flagged as FEEDING points; non-point J/Q as
  tempo-only.
- Trump high single (BJ) = wins but ≈no points + burns your top trump; low
  single = cheap concede; strong pairs = drain framing gated by dominance context
  (pairs held / trump still out / pairs already led).
- Off-suit "unbeatable" softened to "wins unless ruffed" (the flag is same-suit
  only); duplicate single-leads collapsed.

Other:
- Void list caveat: confirmed only by an off-suit discard, so absence ≠ proof.
- Neutrality pass: removed all recommendation-creep; only legality laws and the
  task instruction remain directive.

Tests extended to pin all of the above (736 total).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@ejfn ejfn enabled auto-merge (squash) June 13, 2026 09:40
@ejfn ejfn merged commit 93b3591 into main Jun 13, 2026
1 check passed
@ejfn ejfn deleted the ejfn/llm-points-diagnosis branch June 13, 2026 09:40
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.

1 participant