Skip to content

feat(conformance): gate default-signal-set (§7.2) and call results (§8.1) - #42

Merged
CameronBrooks11 merged 1 commit into
mainfrom
feat/conformance-default-set-results-assertions
Jun 23, 2026
Merged

CameronBrooks11 merged 1 commit into
mainfrom
feat/conformance-default-set-results-assertions

Conversation

@CameronBrooks11

Copy link
Copy Markdown
Member

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_ids read on a device that declares signals returns a non-empty subset of the declared signals. Iterates every signal-declaring device; tolerates mock UNAVAILABLE.
  • test_call_declared_results_are_populated (§8.1 / T0.6) — a synchronous OK call to a function that declares results populates CallResponse.results (keyed by the declared ArgSpec.names). Iterates candidate no-required-arg functions; exempts async acceptance (operation_id set).

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:

  • §7.2 — now requires a non-empty default set for any device type declaring ≥1 signal.
  • §8.1 — now requires a synchronous successful call to populate its declared results (must not return an empty result map for a completed call).

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)

provider default-set call-results
sim ✅ PASS ✅ PASS
ezo ✅ PASS ✅ PASS
bread ⏭️ SKIP ⏭️ SKIP

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.

…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
CameronBrooks11 enabled auto-merge (squash) June 23, 2026 21:39
@github-actions

Copy link
Copy Markdown

The latest Buf updates on your PR. Results from workflow CI / lint (pull_request).

BuildFormatLintBreakingUpdated (UTC)
✅ passed✅ passed✅ passed✅ passedJun 23, 2026, 9:39 PM

@CameronBrooks11
CameronBrooks11 merged commit 2a0a82f into main Jun 23, 2026
7 checks passed
CameronBrooks11 added a commit that referenced this pull request Jun 23, 2026
Bucket C capability conventions + WaitReady key set (#39) and the gated
default-signal-set / call-results assertions + semantics clarifications (#42).
No proto changes from v1.4.0 — conformance-harness and spec only; providers
upgrade by bumping the harness pin.
@CameronBrooks11
CameronBrooks11 deleted the feat/conformance-default-set-results-assertions branch August 3, 2026 15:51
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.

1 participant