Skip to content

docs(skills): add walker-classification step to add-engine-variant checklist (combo-detector skill implementation update) - #4905

Merged
matthewevans merged 2 commits into
phase-rs:mainfrom
lgray:docs/add-engine-variant-walker-checklist
Jul 2, 2026
Merged

docs(skills): add walker-classification step to add-engine-variant checklist (combo-detector skill implementation update)#4905
matthewevans merged 2 commits into
phase-rs:mainfrom
lgray:docs/add-engine-variant-walker-checklist

Conversation

@lgray

@lgray lgray commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

This is split off from #4904 as requested, jargon here refers to features implemented in that PR.

🤖 AI text below 🤖

What

Adds one step to the add-engine-variant skill checklist: classify new variants/fields in the fail-closed ability-scan walker (crates/engine/src/game/ability_scan.rs), introduced by #4904.

Why

The walker's projected-resource axis is what the growing-cascade detector's soundness rests on (a silently-dropped projected-resource read = potential false combo-win). The compiler enforces classification for new variants (exhaustive matches, no wildcards) and for new fields on arms destructured without .. — but the 42 CONSERVATIVE arms deliberately keep .. (a new field can't make "reads everything" wronger), so a read-bearing field added to a CONSERVATIVE-classified variant is the one residual only contributor process can catch. This checklist step is that process: promote the arm to an explicit destructure and classify the field on every axis.

Provenance

This change originally rode in #4904 (1d9161eec) and was removed from that PR at maintainer request — instruction/skill files require separate direct maintainer handling and cannot ride contributor engine PRs (sweep hard-stop). This PR is that separate handling: docs-only, one file, no code.

Related: #4904 (the walker + detector this checklist step protects).

🤖 Generated with Claude Code

https://claude.ai/code/session_01CwQE5oyMqZ9T4BPMsih3Kj

@lgray
lgray requested a review from matthewevans as a code owner July 2, 2026 12:25

@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 SKILL.md documentation for adding an engine variant. It introduces a new step (Step 3) detailing how to classify new variants or fields on existing variants in the fail-closed ability-scan walker (crates/engine/src/game/ability_scan.rs), and increments the numbering of the subsequent steps. 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.

@lgray lgray changed the title docs(skills): add walker-classification step to add-engine-variant checklist (split from #4904) docs(skills): add walker-classification step to add-engine-variant checklist (combo-detector skill implementation update) Jul 2, 2026

@matthewevans matthewevans left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

[HIGH] This PR modifies repository agent/skill instructions, which is a sweep hard-stop.

Evidence: the diff includes .claude/skills/add-engine-variant/SKILL.md. Instruction and skill files steer future automated review/implementation behavior, so external contributor PRs cannot change them through the normal PR review loop.

Please remove the .claude/skills/add-engine-variant/SKILL.md change from this PR. If that skill update is intentional, it needs separate direct maintainer handling outside the contributor sweep.

@lgray

lgray commented Jul 2, 2026

Copy link
Copy Markdown
Contributor Author

🤖 AI text below 🤖

Extended the step-3 checklist text (a71b6f0) to cover the second compiler-exhaustive classification surface that #4904's review round added to the walker: the resolution-time choice classifier. It documents the SHIP criteria for claiming an Effect variant choice-free (resolver trace cited in the arm, no-.. destructure, pinned guard-test update) and the fail-closed MayPrompt default.

@github-actions

github-actions Bot commented Jul 2, 2026

Copy link
Copy Markdown

Parse changes introduced by this PR · 13 card(s), 18 signature(s) (baseline: main e9cb2001ec8c)

4 card(s) · static/Continuous · field conditional: unrecognizedsource entered this turn

Examples: Crew Captain, Drownyard Behemoth, Thrasta, Tempest's Roar (+1 more)

2 card(s) · trigger/AttackersDeclared · removed: AttackersDeclared (active in=battlefield, valid source=opponent, valid target=controller)

Examples: Everett K. Ross, Hapless Attaché, Trouble in Pairs

2 card(s) · trigger/YouAttack · added: YouAttack (active in=battlefield, condition=attackers declared ≥ 2, valid target=opponent)

Examples: Everett K. Ross, Hapless Attaché, Trouble in Pairs

1 card(s) · trigger/Attacks · field valid target: controller

Examples: Struggle for Project Purity

1 card(s) · trigger/Attacks · field watches: creature

Examples: Struggle for Project Purity

1 card(s) · static/Continuous · added: Continuous (affects=self or enchanted by self creature, mods=add dynamic power, add dynamic toughness)

Examples: Nighthowler

1 card(s) · static/Continuous · added: Continuous (affects=self or enchanted by self creature, mods=add dynamic power, add dynamic toughness, add dynamic power, add dynamic toughness)

Examples: Eidolon of Countless Battles

1 card(s) · static/Continuous · field mods: grant static ability

Examples: Dungeon Delver

1 card(s) · static/DoubleTriggers(RoomEntered) · added: DoubleTriggers(RoomEntered)

Examples: Hama Pashar, Ruin Seeker

1 card(s) · trigger/Drawn · added: Drawn (active in=battlefield, constraint=on your 2th draw this turn, valid target=opponent)

Examples: Trouble in Pairs

1 card(s) · ability/Pump · removed: Pump (p/t=+1/+1, target=any target)

Examples: Eidolon of Countless Battles

1 card(s) · ability/Pump · removed: Pump (p/t=+creature cards in all graveyard/+creature cards in all graveyard, target=any target)

Examples: Nighthowler

1 card(s) · trigger/SpellCast · added: SpellCast (active in=battlefield, constraint=on your 2th spell this turn, valid target=opponent)

Examples: Trouble in Pairs

1 card(s) · trigger/SpellCast · field watches: modal spell card

Examples: Riku of Many Paths

1 card(s) · ability/SwitchPT · added: SwitchPT (duration=until end of turn)

Examples: Valakut Fireboar

1 card(s) · ability/room · removed: room

Examples: Dungeon Delver

1 card(s) · ability/switch · removed: switch (duration=until end of turn)

Examples: Valakut Fireboar

1 card(s) · ability/unknown · removed: unknown

Examples: Hama Pashar, Ruin Seeker

1 card(s) had Oracle-text changes (errata/reprint) — excluded as non-parser.

@lgray

lgray commented Jul 2, 2026

Copy link
Copy Markdown
Contributor Author

@matthewevans you might need to take a look at this one with human eyes since the bot doesn't like its skills being touched!

lgray added 2 commits July 2, 2026 13:54
…ecklist

PR phase-rs#4904 (growing-cascade detector) introduced a fail-closed ability-scan
walker (crates/engine/src/game/ability_scan.rs) whose projected-resource
axis the detector's soundness rests on. New enum VARIANTS fail to compile
there (exhaustive matches, no wildcards), but a new FIELD on an existing
variant whose arm keeps a struct-rest `..` (the CONSERVATIVE arms) is
silently dropped — a fail-open that can only be caught by contributor
process, not the compiler.

This adds the classification step to the add-engine-variant checklist so
contributors adding fields to walker-classified variants promote the arm
to an explicit destructure and classify the field on every axis.

Split out of phase-rs#4904 per repository sweep policy: instruction/skill files
require separate direct maintainer handling and cannot ride contributor
engine PRs.

Assisted-by: ClaudeCode:claude-fable-5
…hecklist step

The choice-free soundness gate (phase-rs#4904) adds a second compiler-exhaustive
classification surface to ability_scan.rs. Extend step 3 with the SHIP
criteria for claiming an Effect variant choice-free: resolver trace in
the arm comment, no-`..` destructure, and the pinned guard test update.

Assisted-by: ClaudeCode:claude-fable-5
@lgray
lgray force-pushed the docs/add-engine-variant-walker-checklist branch from a71b6f0 to c9fd23a Compare July 2, 2026 18:54
@matthewevans
matthewevans merged commit 5ad9df5 into phase-rs:main Jul 2, 2026
11 checks passed
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.

2 participants