Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 18 additions & 3 deletions .claude/workflows/deck-contribute.js
Original file line number Diff line number Diff line change
Expand Up @@ -435,10 +435,19 @@ function clusterVerifyPrompt(mechanic, cards) {
`order, fixing in-loop on failure (max ${MAX_VERIFY_RETRIES} retries per ` +
`command):\n` +
`1. cargo fmt --all\n` +
`2. ./scripts/check-parser-combinators.sh (Gate A)\n` +
`2. ./scripts/check-parser-combinators.sh "$(git merge-base upstream/main HEAD)" (Gate A) — ` +
`pass the upstream/main merge-base explicitly. The script's DEFAULT base is the stale fork ` +
`origin/main, which diffs the whole tree and false-flags pre-existing nom-combinator debt in ` +
`files this change never touched. Scoped to the correct base it only checks THIS change's lines; ` +
`treat any non-zero exit as a verification failure.\n` +
`3. If \`tilt get uiresource clippy >/dev/null 2>&1\` succeeds: ` +
`./scripts/tilt-wait.sh --timeout 240 clippy test-engine card-data ; else ` +
`cargo clippy-strict && cargo test -p engine && ./scripts/gen-card-data.sh\n` +
`./scripts/tilt-wait.sh --timeout 240 clippy test-engine test-ai wasm card-data ; else ` +
`cargo clippy-strict && cargo test -p engine && cargo test -p phase-ai && cargo wasm && ./scripts/gen-card-data.sh\n` +
` (If this change adds or removes a variant on an engine enum — Effect, TriggerMode, ` +
`StaticCondition, GameEvent, EffectKind — keep clippy WORKSPACE-wide, never narrowed to ` +
`\`-p engine\`; in the Tilt branch, wait for \`test-ai\` and \`wasm\`, and in the no-Tilt fallback ` +
`run \`cargo test -p phase-ai\` and \`cargo wasm\`: phase-ai and engine-wasm match these enums ` +
`exhaustively, so an engine-only check cannot observe a non-exhaustive-match break in those crates.)\n` +
`4. cargo coverage — confirm EACH of these cards is now supported:true gap:0; ` +
`list the ones that are in cardsSupported:\n${cards.map((c) => `- ${c}`).join('\n')}\n` +
`5. cargo semantic-audit — confirm none of these cards has findings -> ` +
Expand Down Expand Up @@ -468,6 +477,12 @@ function clusterPrPrompt(mechanic, cards, { impl, verify, partial }) {
return (
`Commit the working-tree change for the "${mechanic}" mechanic, push the ` +
`branch to your fork, and open a PR to phase-rs/phase with base main.\nRun:\n` +
`FIRST discard build-regenerated data artifacts — they are NOT part of any card fix, a ` +
`partial/local mtgjson env regenerates them DESTRUCTIVELY, and they produce large drift diffs ` +
`that conflict with main and are not CI-checked: ` +
`git checkout -- crates/engine/data/known-tokens.toml data/engine-inventory.json crates/engine/data/oracle-subtypes.json 2>/dev/null\n` +
`(pass ONLY those three explicit paths — NEVER append a bare '.' pathspec, which would discard the ENTIRE working tree including the card fix; the trailing 2>/dev/null only suppresses git's "did not match" noise).\n` +
`Confirm none are staged (\`git diff --cached --name-only | grep -cE 'known-tokens|engine-inventory|oracle-subtypes'\` must print 0) before committing. Then:\n` +
`git add -A && git commit -m ${JSON.stringify(title)} && git push -u origin HEAD\n` +
`Then: gh pr create --base main --title ${JSON.stringify(title)} --body <BODY> ` +
`(do NOT pass --label; the upstream auto-labeler handles it).\n\n` +
Expand Down
4 changes: 3 additions & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,9 @@ jobs:
rust-lint:
name: Rust lint (fmt, clippy, parser gate)
runs-on: ubuntu-latest
timeout-minutes: 15
# Clippy can consume the former 15-minute ceiling on a cold hosted cache;
# retain a bounded job while leaving room for the remaining lint gates.
timeout-minutes: 20
steps:
- uses: actions/checkout@v4
with:
Expand Down
Loading