You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Summary\n- add a dogfood phase-gate test that runs all 8 MVP built-in rules together and asserts exact per-rule finding counts\n- gate CI preflight on cargo xtask pre-release so runbook/schema/rules-index checks are covered in PR CI\n\n## Local validation\n- git diff --check\n- Rust toolchain unavailable in this runtime (cargo not found); CI is the source of truth
BTreeMap appears only in the test-local fold over violations — not in any output path. All fixture data is static slices with deterministic insertion order. IndexMap is correctly used for ColorSpec::tokens matching the type definition. The run() function's sort guarantee ((rule_id, viewport, selector, dom_order)) means the into_iter().fold() receives violations in a stable order regardless of how the rules fire internally. Clean.
2. Workspace layering
dogfood_phase_gate.rs lives under crates/plumb-core/tests/ and imports exclusively from plumb_core. No cross-crate deps, no layering violation. Clean.
3. Error handling
No library code changed. clippy.toml has allow-unwrap-in-tests = true / allow-expect-in-tests = true, so the .or_default() fold and assert_eq! pattern are fine under the workspace lint config. Clean.
4. Test coverage
The dogfood gate is well-structured:
Covers exactly the 8 rules returned by register_builtin() — nothing missed, nothing invented.
assert_eq!(by_rule, expected) on a BTreeMap catches both missing rules and unexpected extra rules in one assertion.
Clean-control nodes (#controls) guard against cross-rule noise — good defensive design.
#[allow(clippy::too_many_lines)] on dogfood_snapshot() is correctly required: pedantic is set to warn workspace-wide and RUSTFLAGS: -Dwarnings promotes it to error in CI.
5. CI change — cargo xtask pre-release in preflight
sync_rules_index() is read-only (validates docs pages exist, bails if any are missing; does not write). pre_release() therefore fails fast on schema drift or undocumented rules without mutating the workspace. Correct placement in preflight — which all downstream jobs depend on — ensures these checks gate the full matrix.
Nit:.github/workflows/ci.yml:20 — the job name still reads Preflight (fmt, clippy, check, agents-md); xtask pre-release is not reflected. Not a blocker, but the name will mislead future readers.
6. Documentation
No new public items added. No docs/src/** changes. Humanizer check not required.
Punch list
.github/workflows/ci.yml:20 — job name should mention xtask pre-release (nit; won't fail CI).
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
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.
Summary\n- add a dogfood phase-gate test that runs all 8 MVP built-in rules together and asserts exact per-rule finding counts\n- gate CI preflight on
cargo xtask pre-releaseso runbook/schema/rules-index checks are covered in PR CI\n\n## Local validation\n-git diff --check\n- Rust toolchain unavailable in this runtime (cargonot found); CI is the source of truth