Repository navigation
flow: the compatibility matrix, checked against the runtime in CI - #1364
Merged
Merged
Conversation
openadapt_flow/compatibility.py holds every feature (API step, pipelined read-back, self-repair, standard changes, parallel workers, multi-surface) against every run profile (default gated, durable, governed, pinned, qualified, managed), plus the API step with each other feature. Each cell works or is refused with its reason verbatim, and names the tests behind it. docs/COMPATIBILITY.md is generated from it (scripts/build_compatibility_doc.py) and linked from CAPABILITIES.md. tests/test_compatibility_matrix.py runs the API-step and read-back cells through the real replayer under each profile and fails when a cell that should work falls back, or a refusal gives another reason. The pool and self-repair cells call the refusals the CLI uses (the pool's is now cli_worklist_pool.pool_profile_refusal). Two workers each running a Regulated, durable, gated API-step item read VERIFIED. Building that probe surfaced a race in the durable authority database's first creation (fixed separately in #1363 and carried here). Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Member
Author
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.
Stacked on #1362 (then #1361, #1358, #1355). Also carries the durable-authority fix from #1363, which is against
mainand can merge first.Fifth of the small PRs that put the API step, pipelined read-back and self-repair in one production profile. This one adds the matrix.
What it is
openadapt_flow/compatibility.pyholds every feature (API step, pipelined read-back, self-repair, standard changes, parallel workers, multi-surface) against every run profile (default gated, durable, governed, pinned, qualified, managed), plus the API step combined with each other feature. Each cell either works or is refused with its reason verbatim, and names the tests behind it. I split the brief's "admitted" profile into pinned (--pin-digest) and qualified (signed production admission) because they behave differently.packages/flow/docs/COMPATIBILITY.mdis generated from that module bypython scripts/build_compatibility_doc.pyand linked fromCAPABILITIES.md. It has an at-a-glance grid, per-feature tables with the reasons, the API-step combinations, and an evidence list.How CI checks it
tests/test_compatibility_matrix.py:ast).api_folded/api, one request, anapi_requestapproval and noapi_fallback. Under qualified and managed, the probes require exactly the matrix's reason. Inside a multi-surface run, the API step must give its multi-surface reason.inline_reasonequal to the matrix's reason. The test double is aRestRecordVerifiersubclass, not a monkeypatch.cli_worklist_pool.pool_profile_refusal, used byrun; self-repair's iscli_self_repair._refusal.VERIFIED.What the matrix says today
The widest combination is Regulated, durable, governed, gated per item, on parallel workers, with the API step. Pipelined read-back runs inline there (durable), and self-repair runs through the Python API. Under a signed qualification admission, the API step and self-repair are still refused, each with its reason. Qualifying an API step's path is the next PR.
Found on the way
The first run of the workers probe failed on a real race in the durable authority database's first creation. That is fixed separately in #1363 and carried here so the probe passes.
Locally: 87 passed (matrix, capabilities map, CLI worklist pool) and 148 passed with the durable authority suites.
ruffpasses.🤖 Generated with Claude Code