ci: exercise downstream regex conformance - #23
Draft
leoromanovsky wants to merge 11 commits into
Draft
Conversation
Run focused Go and Java fixture tests against the baseline and candidate revisions. Environment: Datadog workspace
Run the candidate regex contract and base-versus-head UFC evaluation across every current tracer evaluator and libdatadog. Environment: Datadog workspace
Refresh the evidence-only stack after merging main into PR #21 and isolate the regex audit from the canonical compatibility workflow.\n\nEnvironment: Datadog workspace
Run only the candidate regex contract in the evidence-only stack and use the repository-native Python Riot command so infrastructure failures are not reported as conformance mismatches. Environment: Datadog workspace
Use the focused Python 3.13 Riot environment and make the ephemeral Actions checkout writable by ddtest's container user. Environment: Datadog workspace
Let Python's suite runner install the project dependencies after fixing checkout permissions, and install the curl development headers required to build the PHP extension. Environment: Datadog workspace
Create the cache and Riot bind-mount directories before relaxing permissions so Cython and the test environment can write them from the ddtest container. Environment: Datadog workspace
Environment: Datadog workspace
4 tasks
Environment: Datadog workspace
|
🔗 Commit SHA: aa57122 | Docs | Datadog PR Page | Give us feedback! |
Base automatically changed from
blake.thomas/FFL-2914-pr0-regex-conformance-fixture
to
main
August 14, 2026 12:53
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Important
Evidence only. This stacked draft PR is not intended for merge. Red jobs are diagnostic evidence, not merge gates for PR #21. For v2, only disagreement on an accepted case is an authoring-contract failure; native acceptance of rejected syntax is informational.
Motivation
Re-run the targeting-regex fixture from PR #21 against real, current downstream evaluator code and test whether the fixture is actually universal.
The earlier stack run was not sufficient evidence: its runner captured non-zero unit-test exits but always returned success, and the workflow explicitly declined to enforce Java, JavaScript, and .NET. Those three consumers were already failing behind green checks.
This run uses the exact PR #21 head
8e8a6c26703fbd801c8877afdd80e078c5751b30. The fixture self-validator passes, its checked-in SHA-256 is4f8ef95faec9faa3c2b0756ac61afe862e35c0646cba5375532a85335f209e8f, and it contains 75 unique v2 cases: 30 accepted and 45 rejected.Changes
Each remote evidence branch was merged with the listed default-branch tip, pinned to PR #21 head
8e8a6c2, and changed to load and validate the new regex fixture before running the repository's production regex/evaluator path.ee135c0main@29425b7loadRegex+matchesRegex, normalized pattern, Go expectations4baecdd0master@35c4350DDEvaluator.matchesRegex/normalization +java.util.regex.Pattern; accepted cases are strict and rejected cases are exercised without requiring native rejection329bbb2master@fe6a4a0FlaggingProviderevaluation; accepted cases are strict and rejected cases are exercised without requiring native rejection9de22eamain@3a825ccDataDogProviderevaluation, raw pattern, Rust rules expectationsab2e8e0master@4850645NativeEvaluator/libdatadog evaluation, raw pattern, Rust rules expectations97d2fd3master@b58e8e8FeatureFlagsEvaluator; accepted cases are strict and rejected cases are exercised without requiring native rejection14f15d28master@3ef11132c25337main@63a1381libdd_common::regex_engine::Regex, raw pattern, Rust rules expectationsAll eight listed branch-tip commits are GitHub-verified. The stack runner also checks each remote branch's gitlink against the PR #21 SHA before executing the unit test, so a stale or merely aspirational branch cannot produce a report.
Exact CI commands
go test ./openfeature -run '^TestTargetingRegexConformance$' -count=1./gradlew :products:feature-flagging:feature-flagging-api:cleanTest :products:feature-flagging:feature-flagging-api:test --tests datadog.trace.api.openfeature.DDEvaluatorTest.testRegexConformance --no-daemonnpm run test:openfeature -- --grep 'targeting regex conformance'scripts/run-tests --venv 14fc413 -- -- -vv -k targeting_regex_conformancebundle exec rspec spec/datadog/open_feature/native_evaluator_spec.rb -e 'targeting regex conformance'dotnet test tracer/test/Datadog.Trace.Tests/Datadog.Trace.Tests.csproj --framework net10.0 --no-restore --filter 'FullyQualifiedName~Datadog.Trace.Tests.FeatureFlags.FeatureFlagsEvaluatorTests.RegexConformance' --verbosity minimalmake test_c TESTS=tests/ext/ffe/regex_conformance.phpt MAX_TEST_PARALLELISM=1cargo +1.87.0 test -p libdd-ffe-test-suite --test targeting_regex_conformance evaluates_targeting_regex_conformance_fixture -- --exact --nocaptureCI evidence
Current v2 workflow run 31738632407 uses PR0 commit
8e8a6c2and the eight updated branch tips above. Attempt 2 completed successfully: all eight downstream jobs passed.Previous v1 evidence
Workflow run 31709709467, attempt 2 checked out the earlier evidence-branch tips, resolved the stacked PR base to
ab0a81f, verified those branch gitlinks, and preserved the actual unit-test exit code.0264 tests completed, 28 failedbecause each mismatch is attempted four times.53 passing,9 pending,13 failing75 passed, 706 deselected, 1 warning75 examples, 0 failuresFailed: 13, Passed: 54, Total: 67; totals are 66 common conformance cases plus the passing 75-case fixture-shape test1 passed; 0 failed; the test loops over and validates all 75 casesJava's 7 unique mismatches are Python-style named groups plus positive/negative lookahead, positive/negative lookbehind, numeric backreferences, and atomic groups.
JavaScript's 13 mismatches are the two named-group forms, POSIX alpha, Unicode letter, two leading-closing-bracket cases, byte/boundary escapes, four lookaround cases, and numeric backreferences. Nine engine-divergent cases are explicitly reported as pending instead of disappearing from the test count.
.NET's 13 mismatches are the two named-group forms, POSIX alpha, three inline-Unicode forms, boundary escape in a character class, four lookaround cases, numeric backreferences, and atomic groups.
Decisions
The v1 evidence showed that nine accepted cases across five syntax families were not evaluated consistently by every shipped SDK. Contract v2 reclassifies those cases as rejected: named capture groups, POSIX classes, Unicode property classes, combined or scoped Unicode flags, and leading-literal-
]character classes.dd-trace-jsexercises its real server provider/native ECMAScript behavior.evaluation-cases/test-case-invalid-regex-isolation.jsonand the ordinary downstream compatibility suites.The stack remains evidence-only and should stay draft.