Skip to content

[fray] CI skips fray tests when only iris changes, hiding cross-layer breakage #4728

@RohithKuditipudi

Description

@RohithKuditipudi

Description

.github/workflows/fray-unit-tests.yaml uses a paths-filter that only runs fray tests when files under lib/fray/**, uv.lock, or the workflow itself change. Because fray depends on iris (lib/fraylib/iris per AGENTS.md), changes to iris can break fray tests without CI noticing — on main or on the iris-only PR that caused the break.

Concrete instance: iris commit cf05d94ee (2026-04-12, "Enforce constraint/attribute case-normalization via AttributeValue") changed Constraint to store values: tuple[AttributeValue, ...] with no .value attribute. Five assertions in lib/fray/tests/test_v2_iris.py (TestConvertConstraints, TestConvertConstraintsDeviceAlternatives) started failing against the new API but went unnoticed on main for two days. The break only surfaced on PR #4725, which touched fray.

Definition of Done

  • Fray tests run in CI on any change that can affect them (at minimum: lib/iris/** in addition to the existing paths), OR
  • A justification is documented for why cross-layer breakage is acceptable to discover only on the next fray-touching PR.
  • Same review applied to other per-subproject workflows with paths-filter that skip on upstream-layer changes (zephyr, marin, levanter) if the same pattern exists.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions