Skip to content

test(tiers): T504 Host tier guard, workflow tier comments, CONTRIBUTING tier table (gh-#777) - #800

Merged
genwave-radio merged 1 commit into
mainfrom
ci/test-tiers-439
Sep 17, 2026
Merged

genwave-radio merged 1 commit into
mainfrom
ci/test-tiers-439

Conversation

@genwave-radio

Copy link
Copy Markdown
Collaborator

PR-10 of gh-#777 · STORY-439 · T504

🧪 What changes

  • Host tier guard (SPEC F177.3): TierTraitConventionGuard.FindViolations walks the assembly by reflection and reports any test class that consumes KokoroFixture or a stack fixture (today: RequestsArtworkFlywheelFixture) without Category=Integration at class level or on every fact. Detection covers IClassFixture<>, ICollectionFixture<>, [Collection(name)] resolved to its definition, and constructor parameters. HostTierTraitConventionGuard runs it on every PR. The MediaLibrary guard is untouched and its hash is pinned.
  • One offender found: Story230's flywheel scenario needs the live compose stack, so it now carries the trait and runs nightly instead of on PRs. Its runtime-skip idiom is unchanged.
  • Workflow comments (F177.2): ci.yml and release.yml no longer say integration tests run "on-demand on a dev box"; they state the three tiers. No run: line or filter changed (F177.4).
  • CONTRIBUTING gains a "Test tiers" table naming the three filters and where each runs.
  • Story439 pins: 10 facts, no longer skipped.

✅ Proof

  • Full solution green (builder and reviewer runs): Host 3064 passed / 57 skipped, 0 failed across 9 projects.
  • dotnet test tests/GenWave.Host.Tests --filter "Category=Integration" --list-tests lists the two flywheel facts, so they moved to tier 2.
  • actionlint clean on both workflows.

🔍 Review

One round, PASS-WITH-NOTES (a CONTRIBUTING row implied release.yml runs per PR, a stale "red at plan time" header, a missing note that inherited facts are not checked). Fixed as doc edits. The root guard class is named HostTierTraitConventionGuard because a root TierTraitConventionGuard would shadow the Support type inside the Specs namespace.

…NG tier table (gh-#777)

SPEC F177. TierTraitConventionGuard (reflection, tier 1) rejects any Host test class that consumes KokoroFixture or a stack fixture (RequestsArtworkFlywheelFixture) without Category=Integration at class level or on every fact; HostTierTraitConventionGuard runs it over the assembly on every PR. Story230's flywheel scenario needs the live compose stack, so it now carries the trait and runs nightly. ci.yml/release.yml comments state the three tiers instead of "on-demand on a dev box"; CONTRIBUTING gains the tier table. Story439 pins the filter, the comments, the table and the MediaLibrary guard's hash.
@genwave-radio
genwave-radio merged commit f1a765a into main Sep 17, 2026
11 checks passed
@genwave-radio
genwave-radio deleted the ci/test-tiers-439 branch September 17, 2026 00:28
@github-actions github-actions Bot locked and limited conversation to collaborators Sep 17, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant