Files
Scott Arciszewski 98b01ec8ff let-fate-decide: improved 12-card spread (100+ bits of entropy) (#166)
* Expand let-fate-decide zodiac spread

* let-fate-decide: address self-review nits

- Compute ENTROPY_BITS from math.log2(math.comb(...)) so the dict cannot
  silently drift if the spread shape changes; test now verifies the formula
  and asserts the 100-bit floor.
- Remove the ambiguous draw() wrapper (list-or-dict return); callers use
  explicit draw_zodiac_spread() / draw_cards() instead.
- Extract _build_house_record() helper to bring draw_zodiac_spread() under
  the 50-line guideline.
- Require --legacy explicitly for the positional count CLI; remove the
  implicit legacy flip when a bare integer was passed.
- Generalize the rank-format test to all four minor suits.
- Document test_reviewed_cards_avoid_unsafe_shortcuts as an exact-string
  regression guard rather than a semantic check.
- SKILL.md: reframe example session as an explicit house-level fragment
  and note the draw agent's bullet output format.
- README.md: correct the deck-shuffle description (two independent decks,
  not one 78-card shuffle); compute entropy text from formulas.
- marketplace.json + plugin.json: sync description to mention the 12
  Houses spread and the 100+ bit entropy budget.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* let-fate-decide: align SKILL.md description article with sibling surfaces

PR review flagged the SKILL.md frontmatter said "Draws a 12 Houses..." while
plugin.json, marketplace.json, and agents/draw.md all say "Draws the 12
Houses...". SPREAD_NAME is a single fixed spread, so "the" is correct.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* let-fate-decide: rename entropy_bits.minor_shuffle to minor_arcana

PR review flagged inconsistent naming in the entropy_bits dict: major_arcana
(deck-named) vs minor_shuffle (operation-named). The value is also
log2(C(56,24)), an unordered selection — not log2(56!), a full shuffle — and
every prose consumer (SKILL.md, README.md, the entropy_note f-string) already
calls it "Minor Arcana selection". Rename for parallel structure.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* let-fate-decide: address PR follow-up nits

1. agents/draw.md: tighten portent template prose from "3-5 concise bullets"
   to "3 concise bullets" — the fenced template has exactly 3 placeholders,
   and a Haiku-class model will follow the template literally rather than
   the looser range. SKILL.md's example session synced to match.

2. references/INTERPRETATION_GUIDE.md: rewrite the Special Patterns section
   for the 12-house spread. The previous patterns were carried over from
   the 4-card hand and were broken in the new geometry: "Multiple Major
   Arcana" was guaranteed (12 Majors per draw), "All One Suit" was
   mathematically impossible (each Minor suit has only 14 cards vs. 24
   Minor draws), "All Reversed" dropped from 2^-4 to 2^-36, and "Court
   Card Progression in sequence" had no meaning across houses. Replaced
   with four patterns calibrated to the new baseline frequencies:
   heavy reversal count (>= 24 of 36), heavy single-suit concentration
   (>= 10 of 24 Minors), weighty Majors in critical houses (1/8/12), and
   court cards clustering in people houses (3/7/11).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* let-fate-decide: fix reversal percentile, focus/Domain drift, Step 1 heading

- Correct "Heavy Reversal Count": P(X>=24) for Binomial(36, 0.5) is ~3.26%,
  so "6th percentile" was wrong in both magnitude and direction. Reword to
  "roughly the top 3% of draws".
- Align each house focus string to its house file **Domain** line (Houses 6,
  7, 8, 9, 12 differed in content; House 8 dropped "secrets"). Both surfaces
  reach the interpreter on the default --content path.
- Add test_zodiac_focus_matches_house_domain to pin the two surfaces together.
- Fix Step 1 heading to "Read Each House and Card File" to match its body.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Co-authored-by: Dan Guido <dan@trailofbits.com>
2026-05-27 15:31:44 -04:00
..