Skip to content

chore(card-data): re-freeze draw-replacement corpus for Bard, King of Dale (HOB set unlock)#6222

Closed
mcbradd wants to merge 1 commit into
phase-rs:mainfrom
mcbradd:podlab/corpus-freeze-bard
Closed

chore(card-data): re-freeze draw-replacement corpus for Bard, King of Dale (HOB set unlock)#6222
mcbradd wants to merge 1 commit into
phase-rs:mainfrom
mcbradd:podlab/corpus-freeze-bard

Conversation

@mcbradd

@mcbradd mcbradd commented Jul 20, 2026

Copy link
Copy Markdown
Contributor

What

Re-freezes the Plan 03 draw-replacement corpus baseline (scripts/draw-replacement-corpus.tsv) with exactly one new row:

bard, king of dale	Draw	Mandatory	none	Draw	nested-draw	IndividualDraw

One line, no parser or engine change. Regenerated with scripts/draw_replacement_census.py --corpus --write; --corpus --check passes afterward (51 rows).

Why every PR is red

The CI step "Draw replacement corpus freeze (Plan 03 / CR 121.2)" has failed on main and every PR since 2026-07-20T00:00Z. The trigger is wall-clock, not any merged commit: the card-data job caches AtomicCards.json under the ISO-week key mtgjson-atomic-$(date +%Y-W%V) (exact-match, no restore-keys — see ci.yml), so at Monday 00:00 UTC the key rolled to the new week and forced a fresh MTGJSON download that now carries The Hobbit (HOB) spoiler data, including Bard, King of Dale, whose draw-replacement row the frozen corpus had never seen.

Tonight's merges are exonerated — including #6174, which touched only the swallow-detector. Note the #4365 release-date gate did not engage: GATED_SETS is unset in CI (gating is a documented no-op when unset), and HOB's MTGJSON releaseDate is 2026-08-14 (isPartialPreview: true). The single-row failure reproduces locally with no gating configured. The gating gap is filed separately as #6221.

Failing runs:

Why the row is correct (CR 121.2, not CR 121.2a)

Bard, King of Dale (The Hobbit, HOB #144): "If you would draw a card except the first one you draw in each of your draw steps, draw two cards instead." This is an individual-draw replacement per CR 121.2 (cards are drawn one at a time): fixed substitute count, no EventContextAmount read — so it is not a CR 121.2a instruction-count modifier. Its census shape and classification are identical to the already-blessed precedent rows:

alhammarret's archive	Draw	Mandatory	none	Draw	nested-draw	IndividualDraw
teferi's ageless insight	Draw	Mandatory	none	Draw	nested-draw	IndividualDraw

Engine-emitted draw_scope and the census's independently derived scope agree (IndividualDraw) — a disagreement would have raised ClassificationError, not a diff row.

This blesses PREVIEW text

HOB is isPartialPreview: true and releases 2026-08-14, so this row freezes spoiler-season text. If Bard's Oracle text changes before release, the exact-match freeze goes red again and forces a re-review — by design, that is the gate doing its job, not a regression. Current Scryfall preview text matches the parsed row exactly.

Effect of merging

🤖 Generated with Claude Code

… Dale (HOB set unlock)

Bard, King of Dale (The Hobbit, HOB phase-rs#144) entered the card pool at
2026-07-20T00:00Z, when the card-data job's weekly MTGJSON cache key
(mtgjson-atomic-YYYY-WVV) rolled over at Monday 00:00 UTC and the fresh
AtomicCards snapshot carried the newly previewed HOB cards, adding one row
to the frozen Draw-replacement corpus. (The phase-rs#4365 release-date gate did not
engage: GATED_SETS is unset in CI and HOB's MTGJSON releaseDate is
2026-08-14; the single-row failure reproduces locally with no gating
configured.) 'If you would draw a card except the first one you draw in
each of your draw steps, draw two cards instead.' is an individual-draw
replacement per CR 121.2 (cards are drawn one at a time; fixed substitute
count, no EventContextAmount), not a CR 121.2a instruction-count modifier.
Same census shape and classification as the already-blessed Alhammarret's
Archive and Teferi's Ageless Insight rows; engine-emitted draw_scope and
census-derived scope agree (IndividualDraw). Baseline regenerated with
scripts/draw_replacement_census.py --corpus --write; no parser or engine
change.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request updates the draw replacement corpus in scripts/draw-replacement-corpus.tsv by adding an entry for 'bard, king of dale' as a mandatory draw replacement effect. There are no review comments, and I have no feedback to provide.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

@matthewevans matthewevans self-assigned this Jul 20, 2026
@matthewevans matthewevans added the test Add tests label Jul 20, 2026
@matthewevans

Copy link
Copy Markdown
Member

Not enqueued — this branch is now an obsolete duplicate.

The row itself is correct: Bard's current Oracle text is an individual-draw replacement under CR 121.2, and the CI Card data check passed on this head. However, current main already contains the identical bard, king of dale\tDraw\tMandatory\tnone\tDraw\tnested-draw\tIndividualDraw row in commit 3a5d8671.

Merging this behind branch produces the current main tree with no corpus delta, so it adds no remaining value and should not enter the merge queue. Thanks for identifying the weekly-MTGJSON corpus drift promptly.

@matthewevans matthewevans removed their assignment Jul 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

test Add tests

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants