Skip to content

chore: remove mtgish importer - #7556

Merged
matthewevans merged 1 commit into
mainfrom
ship/remove-mtgish-importer
Aug 19, 2026
Merged

chore: remove mtgish importer#7556
matthewevans merged 1 commit into
mainfrom
ship/remove-mtgish-importer

Conversation

@matthewevans

@matthewevans matthewevans commented Aug 19, 2026

Copy link
Copy Markdown
Member

Summary by CodeRabbit

  • Documentation

    • Updated contributor guidance, workflows, and technical references to reflect current data sources and supported processes.
    • Clarified planning, verification, and engine behavior documentation.
  • Maintenance

    • Retired legacy card-data import, comparison, reporting, and diagnostic tooling.
    • Removed obsolete fixtures and related verification utilities.
  • Testing

    • Expanded continuous integration coverage to include the remaining card-data import tests.
    • Updated regression-test documentation and workspace scanning guidance.

@matthewevans
matthewevans enabled auto-merge August 19, 2026 20:30
@coderabbitai

coderabbitai Bot commented Aug 19, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: e50ac0d6-24a3-4f11-9e17-e245f5adea52

📥 Commits

Reviewing files that changed from the base of the PR and between 41b8174 and 4048c81.

⛔ Files ignored due to path filters (2)
  • Cargo.lock is excluded by !**/*.lock
  • client/public/changelog.json is excluded by !client/public/changelog*.json
📒 Files selected for processing (90)
  • .claude/skills/add-engine-variant/SKILL.md
  • .claude/skills/bug-triage/SKILL.md
  • .claude/skills/engine-implementer/SKILL.md
  • .claude/skills/engine-planner/SKILL.md
  • .claude/wf/msh-wave3-plan.md
  • .claude/wf/msh-wave4-plan.md
  • .claude/wf/msh-wave6-plan.md
  • .claude/wf/powerup-plan.md
  • .claude/wf/teamwork-conditional-plan.md
  • .claude/wf/teamwork-plan.md
  • .claude/wf/token-storm-scaling-gate-plan-r2.md
  • .claude/wf/xgate-depth-plan.md
  • .coderabbit.yaml
  • .github/workflows/ci.yml
  • .gitignore
  • CONTRIBUTING.md
  • crates/engine/src/game/quantity.rs
  • crates/engine/src/game/token_presets.rs
  • crates/engine/src/types/ability.rs
  • crates/engine/src/types/identifiers.rs
  • crates/engine/src/types/keywords.rs
  • crates/engine/tests/integration/issue_4966_waterbenders_ascension.rs
  • crates/engine/tests/integration/reflexive_if_rider.rs
  • crates/engine/tests/integration/s01_excess_damage_followup.rs
  • crates/mtgish-import/CLAUDE.md
  • crates/mtgish-import/Cargo.toml
  • crates/mtgish-import/src/bin/convert.rs
  • crates/mtgish-import/src/bin/debug_deser.rs
  • crates/mtgish-import/src/bin/mtgish-clean-diff.rs
  • crates/mtgish-import/src/bin/mtgish-diff.rs
  • crates/mtgish-import/src/bin/mtgish-gap-axis.rs
  • crates/mtgish-import/src/convert/action.rs
  • crates/mtgish-import/src/convert/cast_effect.rs
  • crates/mtgish-import/src/convert/companion.rs
  • crates/mtgish-import/src/convert/condition.rs
  • crates/mtgish-import/src/convert/cost.rs
  • crates/mtgish-import/src/convert/deferred.rs
  • crates/mtgish-import/src/convert/filter.rs
  • crates/mtgish-import/src/convert/keyword.rs
  • crates/mtgish-import/src/convert/mana.rs
  • crates/mtgish-import/src/convert/mod.rs
  • crates/mtgish-import/src/convert/player_effect.rs
  • crates/mtgish-import/src/convert/quantity.rs
  • crates/mtgish-import/src/convert/replacement.rs
  • crates/mtgish-import/src/convert/result.rs
  • crates/mtgish-import/src/convert/saga.rs
  • crates/mtgish-import/src/convert/static_effect.rs
  • crates/mtgish-import/src/convert/token.rs
  • crates/mtgish-import/src/convert/trigger.rs
  • crates/mtgish-import/src/diff/canonical.rs
  • crates/mtgish-import/src/diff/classify.rs
  • crates/mtgish-import/src/diff/mod.rs
  • crates/mtgish-import/src/diff/ordering.rs
  • crates/mtgish-import/src/lib.rs
  • crates/mtgish-import/src/provenance.rs
  • crates/mtgish-import/src/report.rs
  • crates/mtgish-import/src/schema/mod.rs
  • crates/mtgish-import/src/schema/types.rs
  • crates/mtgish-import/tests/build_fixtures.rs
  • crates/mtgish-import/tests/discover_candidates.rs
  • crates/mtgish-import/tests/golden/structural/aura_grants_flying_and_pump/expected.json
  • crates/mtgish-import/tests/golden/structural/aura_grants_flying_and_pump/input.json
  • crates/mtgish-import/tests/golden/structural/bestow_x_with_x_counters/expected.json
  • crates/mtgish-import/tests/golden/structural/bestow_x_with_x_counters/input.json
  • crates/mtgish-import/tests/golden/structural/equipment_equip_cost/expected.json
  • crates/mtgish-import/tests/golden/structural/equipment_equip_cost/input.json
  • crates/mtgish-import/tests/golden/structural/etb_and_ltb_lifegain/expected.json
  • crates/mtgish-import/tests/golden/structural/etb_and_ltb_lifegain/input.json
  • crates/mtgish-import/tests/golden/structural/etb_replacement_plus_trigger/expected.json
  • crates/mtgish-import/tests/golden/structural/etb_replacement_plus_trigger/input.json
  • crates/mtgish-import/tests/golden/structural/etb_tapped/expected.json
  • crates/mtgish-import/tests/golden/structural/etb_tapped/input.json
  • crates/mtgish-import/tests/golden/structural/etb_with_counters/expected.json
  • crates/mtgish-import/tests/golden/structural/etb_with_counters/input.json
  • crates/mtgish-import/tests/golden/structural/etb_with_counters_and_trigger/expected.json
  • crates/mtgish-import/tests/golden/structural/etb_with_counters_and_trigger/input.json
  • crates/mtgish-import/tests/golden/structural/madness_alternative_cost/expected.json
  • crates/mtgish-import/tests/golden/structural/madness_alternative_cost/input.json
  • crates/mtgish-import/tests/golden/structural/multi_keyword_protection/expected.json
  • crates/mtgish-import/tests/golden/structural/multi_keyword_protection/input.json
  • crates/mtgish-import/tests/golden/structural/vanilla_etb_trigger/expected.json
  • crates/mtgish-import/tests/golden/structural/vanilla_etb_trigger/input.json
  • crates/mtgish-import/tests/golden_structural.rs
  • crates/mtgish-import/tests/manifest_coverage.rs
  • data/mtgish-cards.json
  • docs/AI-CONTRIBUTOR.md
  • scripts/check-engine-authorities.sh
  • scripts/draw-replacement-producers.txt
  • scripts/draw_replacement_census.py
  • scripts/pr_review_tests.py
💤 Files with no reviewable changes (63)
  • crates/mtgish-import/tests/golden/structural/multi_keyword_protection/expected.json
  • crates/mtgish-import/CLAUDE.md
  • .gitignore
  • crates/mtgish-import/tests/golden/structural/multi_keyword_protection/input.json
  • CONTRIBUTING.md
  • crates/mtgish-import/tests/golden/structural/madness_alternative_cost/expected.json
  • crates/mtgish-import/tests/golden/structural/etb_with_counters_and_trigger/expected.json
  • crates/mtgish-import/src/bin/mtgish-clean-diff.rs
  • crates/mtgish-import/tests/golden/structural/etb_tapped/input.json
  • crates/mtgish-import/tests/golden/structural/equipment_equip_cost/expected.json
  • crates/mtgish-import/src/provenance.rs
  • crates/mtgish-import/src/bin/mtgish-diff.rs
  • crates/mtgish-import/tests/discover_candidates.rs
  • crates/mtgish-import/tests/golden/structural/aura_grants_flying_and_pump/input.json
  • crates/mtgish-import/tests/golden/structural/etb_with_counters/expected.json
  • crates/mtgish-import/tests/build_fixtures.rs
  • crates/mtgish-import/tests/golden_structural.rs
  • crates/mtgish-import/src/lib.rs
  • crates/mtgish-import/src/schema/mod.rs
  • crates/mtgish-import/tests/golden/structural/etb_tapped/expected.json
  • crates/mtgish-import/Cargo.toml
  • crates/mtgish-import/src/convert/cast_effect.rs
  • crates/mtgish-import/src/report.rs
  • crates/mtgish-import/tests/golden/structural/etb_with_counters_and_trigger/input.json
  • crates/mtgish-import/src/diff/mod.rs
  • crates/mtgish-import/tests/golden/structural/etb_and_ltb_lifegain/expected.json
  • crates/mtgish-import/tests/golden/structural/etb_replacement_plus_trigger/expected.json
  • scripts/pr_review_tests.py
  • crates/mtgish-import/tests/golden/structural/equipment_equip_cost/input.json
  • crates/mtgish-import/tests/golden/structural/aura_grants_flying_and_pump/expected.json
  • crates/mtgish-import/src/bin/debug_deser.rs
  • crates/mtgish-import/src/diff/ordering.rs
  • crates/mtgish-import/src/convert/trigger.rs
  • crates/mtgish-import/src/diff/canonical.rs
  • crates/mtgish-import/src/convert/companion.rs
  • crates/mtgish-import/tests/golden/structural/vanilla_etb_trigger/expected.json
  • crates/mtgish-import/src/convert/quantity.rs
  • crates/mtgish-import/src/bin/convert.rs
  • crates/mtgish-import/src/convert/player_effect.rs
  • crates/mtgish-import/tests/manifest_coverage.rs
  • crates/mtgish-import/src/bin/mtgish-gap-axis.rs
  • crates/mtgish-import/tests/golden/structural/etb_replacement_plus_trigger/input.json
  • crates/mtgish-import/src/convert/result.rs
  • crates/mtgish-import/src/convert/cost.rs
  • .coderabbit.yaml
  • crates/mtgish-import/src/convert/mana.rs
  • docs/AI-CONTRIBUTOR.md
  • crates/mtgish-import/src/convert/saga.rs
  • crates/mtgish-import/src/diff/classify.rs
  • crates/mtgish-import/tests/golden/structural/bestow_x_with_x_counters/input.json
  • crates/mtgish-import/src/convert/deferred.rs
  • crates/mtgish-import/src/convert/static_effect.rs
  • crates/mtgish-import/src/convert/token.rs
  • crates/mtgish-import/tests/golden/structural/etb_with_counters/input.json
  • .claude/skills/engine-implementer/SKILL.md
  • crates/mtgish-import/tests/golden/structural/bestow_x_with_x_counters/expected.json
  • .claude/wf/msh-wave6-plan.md
  • .claude/skills/engine-planner/SKILL.md
  • crates/mtgish-import/tests/golden/structural/vanilla_etb_trigger/input.json
  • crates/mtgish-import/src/convert/keyword.rs
  • crates/mtgish-import/src/convert/filter.rs
  • crates/mtgish-import/tests/golden/structural/madness_alternative_cost/input.json
  • crates/mtgish-import/tests/golden/structural/etb_and_ltb_lifegain/input.json

Included review availability: Your plan provides up to 2 included reviews per hour; 1 remains after this review.


📝 Walkthrough

Walkthrough

The dormant mtgish-import crate and its converter, diff, reporting, provenance, schema, and fixture code were deleted. Workspace checks and review filters now include the affected paths. Documentation and planning references were generalized or removed.

Changes

MTGISH importer removal

Layer / File(s) Summary
Remove importer implementation and fixtures
crates/mtgish-import/**, crates/mtgish-import/tests/**
The importer crate, conversion modules, diagnostic tools, diff utilities, provenance/reporting code, schema declarations, and structural fixtures were deleted.
Update workspace wiring and validation
.coderabbit.yaml, .github/workflows/ci.yml, .gitignore, scripts/*, crates/mtgish-import/tests/*
Review filters and ignore rules no longer exclude the removed paths. CI now runs mtgish-import tests, and census and architecture-test references were updated.
Remove dormant-path references
.claude/**, CONTRIBUTING.md, crates/engine/**, docs/AI-CONTRIBUTOR.md
Planning guidance, contributor rules, engine documentation, and test comments no longer describe mtgish-import as dormant or excluded.

Estimated code review effort: 4 (Complex) | ~45 minutes

Merge Risk: ⚪ Minimal · up to 4048c

The PR removes the mtgish importer and its associated data and tests; no actionable merge-blocking risk remains beyond normal checks and review.

Possibly related PRs

Suggested reviewers: lgray

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly and concisely describes the main change: removing the mtgish importer and its related tooling.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch ship/remove-mtgish-importer

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@matthewevans
matthewevans added this pull request to the merge queue Aug 19, 2026
@github-actions

Copy link
Copy Markdown

Generated for head 4048c81cf606ad482ef0c98038f82ffbd34680d4.

Parse changes introduced by this PR

✓ No card-parse changes detected.

@github-merge-queue
github-merge-queue Bot removed this pull request from the merge queue due to failed status checks Aug 19, 2026
@matthewevans
matthewevans merged commit c96735f into main Aug 19, 2026
16 checks passed
@matthewevans
matthewevans deleted the ship/remove-mtgish-importer branch August 19, 2026 23:30
traemyn pushed a commit to traemyn/phase that referenced this pull request Aug 21, 2026
…rs#7588)

`chore: remove mtgish importer (phase-rs#7556)` deleted `crates/mtgish-import`, whose
`serde_with = "3"` was the sole consumer of a 22-package subtree (schemars,
darling, chrono, bs58, hex, windows-*, and a second indexmap). The regenerated
root lockfile was never committed, so `cargo metadata --locked` fails on main
and any cargo invocation rewrites Cargo.lock in place.

That is what breaks Nightly Release. `cargo release --execute` refuses to run
against a dirty tree:

    error: uncommitted changes detected, please resolve before release:
             Cargo.lock (Status(WT_MODIFIED))

Nightly last succeeded 2026-08-19 09:47Z, hours before phase-rs#7556 merged that
evening, and has failed every night since.

Pure pruning, no version changes: 22 [[package]] blocks removed, and every
addition is an `"indexmap"` dependency line losing its version qualifier now
that a single indexmap version remains. Verified by regenerating in a clean
worktree at origin/main -- byte-identical result, and `cargo metadata --locked`
passes afterwards.

CI did not catch this because `--locked` is used only for the Tauri manifest
(ci.yml:680,687), never for the root workspace.

Claude-Session: https://claude.ai/code/session_01DJgbxMGnPi6MFfGUe15Y3P

Co-authored-by: matthewevans <matthewevans@users.noreply.github.com>
lgray pushed a commit to lgray/phase that referenced this pull request Aug 21, 2026
`--locked` on the existing workspace clippy invocation costs no extra CI time --
that step already resolves the whole workspace -- and turns silent lockfile drift
into a fast, explicit failure.

Without it, removing a crate leaves its dependency subtree stranded in
Cargo.lock, every later cargo invocation rewrites the file in place, and CI stays
green because no root-workspace command passed `--locked`. Nightly Release is
where it surfaces, because `cargo release --execute` aborts on a dirty tree:

    error: uncommitted changes detected, please resolve before release:
             Cargo.lock (Status(WT_MODIFIED))

That is exactly how phase-rs#7556 (remove mtgish importer) broke three consecutive
nightlies before phase-rs#7588 resynced the lock. `--locked` was already used for the
Tauri manifest; this extends the same guarantee to the root workspace.

Verified both directions against origin/main in an isolated worktree: with the
pre-phase-rs#7588 lockfile the guarded command exits 101 in under two seconds on
"cannot update the lock file ... because --locked was passed", before compiling
anything; with the current lockfile it clears resolution and proceeds to compile
normally.

Claude-Session: https://claude.ai/code/session_01DJgbxMGnPi6MFfGUe15Y3P

Co-authored-by: matthewevans <matthewevans@users.noreply.github.com>
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