fix(tilt): stop card-data self-triggering on its own generated outputs - #6263
Merged
Merged
Conversation
card-data's deps include crates/engine/data/, but gen-card-data.sh promotes known-tokens.toml, oracle-subtypes.json, and mtgjson-vintage into that directory. Each promote changes a watched dep, re-firing card-data in an infinite regen loop (and rebuilding the engine repeatedly). Add the three generated tracked files to card-data's ignore list, mirroring the existing TMP_IGNORE guard; the engine resources still watch crates/engine/data/ in full, so a genuine data change still rebuilds the engine. Assisted-by: ClaudeCode:claude-opus-4.8
Contributor
|
Warning You have reached your daily quota limit. Please wait up to 24 hours and I will start processing your requests again! |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
🤖 AI text below 🤖
Summary
Tilt's
card-dataresource watchescrates/engine/data/(viaENGINE_SRCin itsdeps), butgen-card-data.shpromotes three tracked files into that directory —known-tokens.toml,oracle-subtypes.json, andmtgjson-vintage. Each promote changes a watched dep, which re-firescard-data, which regenerates and promotes again: an infinite regen loop that also rebuilds the engine on every iteration. This adds those three generated outputs tocard-data'signorelist (extending the existingTMP_IGNOREself-restart guard) so the resource no longer triggers on its own output.The
.tmp.infix the script already uses (covered byTMP_IGNORE) silences the staging writes, but the final promote writes the real tracked file, whichTMP_IGNOREcan't mask — hence the explicit output paths here.Implementation method (required)
Method: not-applicable — Tilt dev-loop watch configuration (build tooling); no engine, parser, or game-logic change.
CR references
None — no rules code touched.
Verification
Required checks ran clean, or the exact CI-owned alternative is stated below.
Gate A output below is for the current committed head.
Final review-impl below is clean for the current committed head.
Both anchors cite existing analogous code at the same seam.
scripts/check-parser-combinators.sh— Gate A PASS (no parser file in the diff; Tiltfile-only change).git ls-files crates/engine/data/→known-tokens.toml,oracle-subtypes.json,mtgjson-vintage— confirms the three ignored paths are exactly the tracked filesgen-card-data.shpromotes there (script:TOKENS_FILEL240,--write-subtypesoracle-subtypes L278,MTGJSON_VINTAGE_FILEL119).ignoreis per-resource: the engine resources (clippy,test-engine,wasm,build-native) keepdeps = ENGINE_SRCwithignore = TMP_IGNOREunchanged, so a genuinecrates/engine/data/change still rebuilds the engine.Final review-impl: not run — non-engine build-tooling change with no
/review-implengine surface. Flagged honestly rather than emitting a placeholder PASS.Gate A
Gate A PASS head=d886ee7af49a8bb48ebca5d99af49d023ea18e5b base=836ff312ae2073c99af28d286b0c4915faa8a458
Anchored on
TMP_IGNORE, the existing per-resource self-restart guard this fix extends (same failure mode: a resource's own writes re-triggering it).draft-pools, the sibling data resource already wired correctly:deps = DRAFT_CORE_SRC + ['data/mtgjson/sets/']watches its input, not its output directory.Claimed parse impact
None.