feat(conformance): gate default-signal-set (§7.2) and call results (§8.1) - #42
Merged
CameronBrooks11 merged 1 commit intoJun 23, 2026
Merged
Conversation
…8.1) Add conformance assertions so the Wave-1 Tier-0 fixes T0.2 (non-empty default signal set) and T0.6 (declared call results are populated) are gated, not just done. Closes the harness-coverage item anolis-protocol#41. - test_default_read_returns_declared_subset: an empty-signal_ids read on a device declaring signals returns a non-empty subset of the declared signals. - test_call_declared_results_are_populated: a synchronous OK call to a function declaring results populates CallResponse.results (keyed by the declared names); iterates candidates and exempts async acceptance. Codify the backing requirements in semantics.md so the harness gates a MUST, not a SHOULD: §7.2 now requires a non-empty default set for any device type declaring >=1 signal; §8.1 now requires synchronous successful calls to populate declared results. sim and ezo are gated green by both assertions. bread's conformance mock opens no session (every read/call is UNAVAILABLE) and declares no zero-required-arg result function, so both skip on bread — tracked in anolishq/anolis-provider-bread#62.
CameronBrooks11
enabled auto-merge (squash)
June 23, 2026 21:39
|
The latest Buf updates on your PR. Results from workflow CI / lint (pull_request).
|
12 tasks
CameronBrooks11
deleted the
feat/conformance-default-set-results-assertions
branch
August 3, 2026 15:51
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.
Closes the harness-coverage item #41 (part of the Wave-1 / pre-SDK runway, epic #40).
What
Adds two gated conformance assertions so the already-landed Tier-0 fixes are gated, not just done:
test_default_read_returns_declared_subset(§7.2 / T0.2) — an empty-signal_idsread on a device that declares signals returns a non-empty subset of the declared signals. Iterates every signal-declaring device; tolerates mockUNAVAILABLE.test_call_declared_results_are_populated(§8.1 / T0.6) — a synchronous OK call to a function that declares results populatesCallResponse.results(keyed by the declaredArgSpec.names). Iterates candidate no-required-arg functions; exempts async acceptance (operation_idset).Normative clarification (ships in the next release)
A conformance harness can only gate a MUST, so this PR codifies the requirements the Wave-1 fixes already implement:
These match what sim/ezo/bread already do; they make the assertions sound rather than asserting an un-backed MUST. (Flagged for explicit review — these are normative edits.)
Verification (HEAD harness vs each provider)
UNAVAILABLE) and it declares no zero-required-arg result function — so neither path is reachable. This is bread's mock, not a harness defect; tracked in Conformance mock: give the mock bus a value/result-producing backend anolis-provider-bread#62 (give the mock a value/result-producing backend).Sequencing
Providers pin the proto at v1.4.0, so these assertions activate when they bump to the next release (the v1.5.0 / Bucket-C cut) — they don't affect current provider lanes.
Review history
Adversarially reviewed by two independent agents (spec-fidelity + gate-effectiveness). The spec-fidelity BLOCK (asserting §7.2/§8 MUSTs the spec stated as SHOULD/silence) is resolved by the normative clarifications above; the read-to-read stability assertion was dropped as un-backed; the results test now iterates candidates per the gate-effectiveness nit.