Repository navigation
fix(compliance): skip observations when controlled forcing is unavailable - #8642
Merged
Merged
Conversation
Contributor
There was a problem hiding this comment.
Ladon verdict: Approve
Approve — clean clarification to the compliance runner-output contract with a correct patch changeset.
What I checked:
- The diff adds a
force_scenario_unsupportednot_applicable sub-reason and aforced_scenario_cascaderule carving an exception out ofsole_stateful_step_exemption, so an unsupported statefulforce_*call (UNKNOWN_SCENARIO) skips dependent observations as not_applicable coverage rather than failing a conformant seller. - Breaking-class hard gate: This is a coverage-gap-not-failure clarification that relaxes grading (a previously-failing conformant seller now grades not_applicable). It does not remove/rename fields, flip optional↔required, or impose a new MUST that a conformant 3.1.0 implementation would fail. It is Normative-non-breaking/clarifying, consistent with the directly-analogous rate-limit-exhaustion precedent (also a
patchfor a coverage-gap clarification). The breaking-class gate does not fire, soreview_decision: REVIEW_REQUIREDdoes not force escalation here. - Changeset scope/type: A
patchchangeset is present and matches precedent; appropriate for a clarification to compliance assets. - Prose is internally consistent (preserves genuine failures, independent phases, any_of alternatives; dependent skips grade not_applicable, not prerequisite_failed); new detail matches step-disposition.ts/compliance-publication.test.ts; YAML indentation well-formed; dist artifacts untouched.
- gated_paths: false; high_risk: false; no no-auto-approve team match; no Critical/High/Medium findings.
One non-blocking follow-up note: downstream dependent skips are told to "cite the unsupported force step" but no canonical detail token is registered for the downstream case, so detail-filtering dashboards may see free-form prose. Not blocking.
No blocking findings; rows 1–8 do not fire; falls through to row 9 → approve.
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.
Unsupported optional controller forcing did not establish the state needed by later observations. Clarify that a stateful
force_*call returningUNKNOWN_SCENARIOskips its dependent observations as unavailable coverage, including when forcing is the sole stateful step in its phase. Otherwise a conformant seller can be failed for returning an outcome it was never forced to change.Register the existing
force_scenario_unsupporteddetail and document its exception to the general sole-stateful-step rule. Preserve independent phases,any_ofalternatives, ordinary account exemptions and genuine prerequisite failures. Skipped coverage earns no executed-step or validation credit.Refs adcontextprotocol/adcp-client#3549. The implementation and regression coverage are in SDK #3561.
Validation
Downstream detail: the SDK companion emits its existing
capability_prerequisite_unavailabledetailed reason, canonicalnot_applicable, and the originating force step indetail. A protocol-wide downstream token remains a separate dashboard follow-up.