Skip to content

conformance-ct: validation-semantics deltas vs the incumbent runner (deselected, --missing typos, unscheduled streams) #310

Description

@lann

Three places where the incumbent runner's hard-error validations became softer under the component-test aggregate. None is currently reachable as a false green in CI (the matrix diff backstops), but each is a latent weakening worth a guard or a recorded acceptance:

  1. deselected is a green non-executed status with no incumbent equivalent. The old vocabulary was pass/fail/skipped with census completeness; anything else was a hard problem. Deselected is not failing (component-test results/lib.rs:168-170) and is accepted silently for applicable cases (aggregate.rs:287). A results file from a filtered (--only) run aggregates without validation error provided exact cases are present-or-deselected — generated leaves are simply absent (see conformance-ct: generated rows have no per-case inventory pin — the census function rides on CI matrix count diffs #302). Detection is the committed-matrix diff only.

  2. A typo in a recipe --missing flag means "missing nothing", silently, at the runner layer. The incumbent required verbatim equality between each results file's declared missing-features and targets.toml (7110a99:conformance/runner/src/main.rs:181-197) and the guest harness rejected unknown feature names. The new envelope carries no declared-missing field; recipe flags are cross-checked behaviorally (reported status vs manifest-derived applicability, aggregate.rs:277-287 — verified strict for all current legs), and a typo IS still caught, but as tagged-case failures plus drift errors rather than a named declaration error. All current flags verified aligned with the manifests.

  3. Unscheduled streams degrade the strict applicability gate to reclassify-plus-warn. For scheduling: "none" streams, executed-inapplicable cases are silently reclassified to N/A with a warning (aggregate.rs:248-304), and warnings are non-fatal. Currently unreachable — no leg emits "none" (composed uses --suite-artifact tags scheduling since 3fde885; absent-scheduling legacy streams default strict) — but a future runner added without an inventory quietly loses the manifest cross-check. Worth a comment at the recipe site or a check that every aggregated stream is scheduled.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions