Skip to content

Add server-initiated-drift-injection scenario (#57)#65

Closed
balloob wants to merge 1 commit into
mainfrom
claude/conformance-drift-injection
Closed

Add server-initiated-drift-injection scenario (#57)#65
balloob wants to merge 1 commit into
mainfrom
claude/conformance-drift-injection

Conversation

@balloob
Copy link
Copy Markdown
Collaborator

@balloob balloob commented May 27, 2026

Summary

  • Adds the server-initiated-drift-injection scenario from Sendspin/conformance#57 to the matrix
  • Introduces a required_capability field on ScenarioSpec and a matching supported_capabilities tuple on RoleSpec so scenarios can gate matrix participation on SDK-side surface area
  • Declares stream-sync-drift-correction on the aiosendspin server (which can host the harness-level timestamp skew); declares it on no client, so every client fails fast with a clear "does not expose the capability" reason — that is the conformance signal the audit asks for

Notes

  • Verification mode is capability-only until SDK-side drift correction lands in some client adapter; the test can then compare recovered audio against a tolerance derived from the spec's soft/hard correction thresholds.
  • Keeps the harness simple: no SDK-shaped code in the conformance repo. New SDK implementations opt in by adding the capability string to their RoleSpec.
  • First of eight stacked PRs covering issues #57–#64.

Test plan

  • python -m compileall src scripts
  • python -m conformance.cli run --results-dir results --from aiosendspin --to aiosendspin --timeout-seconds 25 shows the new scenario row with the expected fail-fast reason

Adds the drift-injection scenario from the audit (#57)
and a `required_capability` mechanism on `ScenarioSpec` so scenarios can
gate matrix participation on SDK-side surface area. The matching
`supported_capabilities` tuple on `RoleSpec` lets each adapter declare
which named capabilities it implements.

- `stream-sync-drift-correction` is declared on the aiosendspin server
  (it can host the harness-level timestamp skew) and on no client. All
  client cases fail fast with a clear "does not expose the capability"
  reason, which is exactly the conformance signal the audit wants
  surfaced. The verification mode is `capability-only` until SDK
  implementations land and the test can compare recovered audio
  against a tolerance derived from the spec thresholds.

This is the first of eight stacked PRs that wire the audit's
recommended scenarios into the matrix.
@balloob
Copy link
Copy Markdown
Collaborator Author

balloob commented May 27, 2026

Closing per discussion: the capability mechanism only existed to power capability-only fail-fast paths for scenarios where no SDK currently exposes the surface. Per #68 we are landing only the real end-to-end test (24-bit PCM) and dropping the scaffolding PRs. The other scenarios will be revisited when SDKs grow the necessary surface.

@balloob balloob closed this May 27, 2026
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