Skip to content

feat: add evaluation case applicability controls - #56

Merged
leoromanovsky merged 1 commit into
mainfrom
evaluation-skip-include
Oct 26, 2026
Merged

leoromanovsky merged 1 commit into
mainfrom
evaluation-skip-include

Conversation

@typotter

@typotter typotter commented Oct 23, 2026 •

Copy link
Copy Markdown
Contributor

Motivation

Rules-based corpus consumers need portable per-platform exclusions for known SDK gaps and directory-level isolation for feature-specific UFC syntax. Filtering must happen before runner setup and configuration side effects.

Changes

  • add the canonical rules-based platform identifiers directly to ci/validate-fixtures.py
  • validate _skip and _include annotations for mutual exclusion, shape, duplicates, reasons, and canonical platforms
  • define the root corpus as core and validate self-contained evaluation-suites/<suite>/ directories
  • document consumer ordering: select suites, discover/filter cases, avoid UFC loading when no cases apply, then initialize and execute
  • annotate the observed PHP gaps for disabled flags, empty flags, and missing targeting keys
  • annotate the observed Python gaps for object and array opt-out attributes
  • extend fixture and downstream workflow path coverage for feature suites

Decisions

  • _skip and _include are mutually exclusive case-level fields
  • unannotated cases apply to every canonical platform
  • feature suites are explicitly activated and never auto-enabled
  • the README defines the consumer semantics and points to the validator for the canonical platform list
  • no separate specification schema or validation-vector file is introduced
  • precomputed-assignment fixtures, schemas, validators, documentation, and workflows are unchanged

This PR is stacked on #45, which introduces the self-contained dependent-flags feature suite. Its diff remains limited to the shared suite/applicability contract, validator, core annotations, and workflow coverage. The final simplification received a clean local re-review.

Checklist

  • JSON files are valid (no syntax errors)
  • New test cases reference existing flags in config/ufc-config.json (N/A: no new corpus cases)
  • New flags have corresponding test cases in evaluation-cases/ (N/A: no new flags)
  • Expected results match the flag configuration logic (expectations are unchanged; applicability annotations were added)

Validation

  • python3 ci/validate-fixtures.py — 2 suites, 376 cases across 48 files
  • python3 -B -m unittest discover -s ci -p "test_*.py" — 17 tests passed
  • git diff --check

@typotter
typotter force-pushed the evaluation-skip-include branch from 6f28cbd to b500475 Compare October 23, 2026 16:27
@typotter typotter changed the title feat: add skip/include semantics for evaluation cases feat: add opt-in evaluation suites Oct 23, 2026
@typotter
typotter force-pushed the evaluation-skip-include branch from b500475 to 79da120 Compare October 23, 2026 16:49
@typotter typotter changed the title feat: add opt-in evaluation suites feat: add evaluation case applicability controls Oct 23, 2026
@typotter
typotter requested a balanced review from Copilot October 23, 2026 16:53

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Contract validation accepts incorrect JSON types for version and filtering controls, weakening cross-platform consistency.

1 open issue
What changed in this PR

Adds platform applicability controls and optional feature-suite isolation to the rules-based evaluation corpus, so consumers can filter cases before initialization or configuration side effects.

Changes:

  • Defines canonical platforms, case filtering, and explicit suite selection.
  • Adds validation and regression tests, plus PHP and Python exclusions for known SDK gaps.
  • Documents consumer ordering and expands workflow triggers for the new contract and suites.
File Description
README.md Documents filtering, suite selection, and runner ordering.
evaluation-platforms.json Defines the platform registry and applicability contract.
evaluation-cases/​test-case-experimentation-opt-out.json Adds PHP and Python exclusions for known gaps.
evaluation-cases/​test-case-empty-flag.json Excludes PHP empty-flag cases.
evaluation-cases/​test-case-disabled-flag.json Excludes PHP disabled-flag cases.
CONTRIBUTING.md Adds applicability and feature-suite guidance.
ci/​validate-fixtures.py Validates platform annotations and self-contained suites.
ci/​test_validate_fixtures.py Adds filter and suite validation tests.
.github/​workflows/​validate-fixtures.yml Triggers validation for contract and suite changes.
.github/​workflows/​downstream-compatibility.yml Triggers downstream checks for contract and suite changes.

Review effort: Balanced

Comment thread ci/validate-fixtures.py Resolved
@typotter
typotter force-pushed the evaluation-skip-include branch 2 times, most recently from 6b5fa4e to 5534027 Compare October 23, 2026 17:18
@typotter
typotter requested a balanced review from Copilot October 23, 2026 17:38

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

The scoped changes consistently implement the documented applicability contract, with regression coverage and no identified blocking issues.

No open issues 🎉

1 resolved since last review

Review effort: Balanced

@typotter
typotter marked this pull request as ready for review October 23, 2026 17:56
@typotter
typotter requested a review from a team as a code owner October 23, 2026 17:56
@typotter
typotter force-pushed the evaluation-skip-include branch from 5534027 to 4742773 Compare October 23, 2026 18:05
@typotter
typotter force-pushed the evaluation-skip-include branch from 4742773 to 5647542 Compare October 23, 2026 18:13
@typotter
typotter changed the base branch from main to dependent-flags-variant-key-fixtures October 23, 2026 18:14
Base automatically changed from dependent-flags-variant-key-fixtures to main October 23, 2026 18:23
Define rules-based platform filters and self-contained feature suites so consumers only run and load supported evaluation coverage.

Environment: Datadog workspace

Co-Authored-By: Codex GPT-5 <noreply@localhost>

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟢 Approval recommended

The validation logic, documented contract, fixture annotations, tests, and workflow changes are consistent, with no unresolved blocking issues.

No open issues 🎉

Review effort: Balanced

@leoromanovsky
leoromanovsky merged commit 1ae3eda into main Oct 26, 2026
11 checks passed
@leoromanovsky
leoromanovsky deleted the evaluation-skip-include branch October 26, 2026 18:17
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.

3 participants