Skip to content

fix(parser): preserve Team constants in Color slots - #307

Merged
Teakowa merged 1 commit into
mainfrom
codex/workshop-rs-306
Sep 26, 2026
Merged

Teakowa merged 1 commit into
mainfrom
codex/workshop-rs-306

Conversation

@e54-bot

@e54-bot e54-bot commented Sep 26, 2026

Copy link
Copy Markdown
Contributor

Refs #306

Changes

  • Resolve bare Team 1 / Team 2 as Team identities in Color-typed slots when that member also exists in the Color catalog. Explicit Color(Team 2) remains a Color identity.
  • Let canonical validation accept those shared Team/Color member identities, while rejecting Team members absent from Color.
  • Cover en-US and zh-CN parse/emit round-trips and compare Team(/Hero(/Button(/Color( wrapper counts on the pinned OverPy-generated real-project fixtures.
  • Document the domain-preservation rule.

Validation

  • cargo fmt --all --check
  • cargo clippy --workspace --all-targets -- -D warnings
  • cargo test --workspace --all-targets — passed; 3 performance benchmarks ignored by the suite
  • cargo run -p workshop-rs --bin workshop-catalog-gen -- check — passed (528 entries, 52 enum domains, 15 locales)
  • git diff --check

Runtime evidence still needed

The Issue also asks whether a && b && c && d and nested And(And(And(a, b), c), d) have the same element cost in the Overwatch client. That comparison was not measured because this host has no Overwatch client installed or running. The parser/emission acceptance criteria pass; this runtime measurement remains open.

@Teakowa
Teakowa merged commit abc726d into main Sep 26, 2026
5 checks passed
@Teakowa
Teakowa deleted the codex/workshop-rs-306 branch September 26, 2026 15:27
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