open-standards/wai/live-conformance/coperformance/README.md
Transaction Science 0977db7a64 wai.live.coperformance: registry, SPEC §5, CHANGELOG, corpus README and the CI step
The capability and its ten magics in the reference registry, and the
export regenerated (registry/capabilities.json, vocab/v2.ttl and
REGISTRY.md's table); SPEC §5's paragraph and record list; the corpus's
README with its provenance; the live-conformance index; the sidecar
exclusion's reason for live-conformance; and a step in the independent
verifiers job that runs the module's unit tests, tests/co_performance.rs
and co_performance_verify.py, with the extension in the workflow's paths.

Co-Authored-By: Claude Opus 5.5 <[email protected]>
2026-10-21 15:31:04 -04:00

75 lines
5.4 KiB
Markdown

# live-conformance/coperformance — co-performance in rooms
The corpus of [`extensions/co-performance.md`](../../extensions/co-performance.md) §11: rooms
in which people and an AI participant perform together and an audience joins in. Each room is
a room (its `WRD1` descriptor, `WRG1` grants, key-log head or none, and each principal's `WEV1`
chain, in which the extension's statements ride as `meta` payloads), its `WPP1` co-performance
policies, the media objects the relay forwarded, and the symbolic payloads of some of them; and
what a verifier states of it.
**Co-performance equivalence.** For each room, a conforming co-performance verifier given its
`descriptor`, `grants`, `key_log`, `chains`, `policies`, `objects` (each its `principal`,
`track`, `group`, `object`, `digest`, `arrival` and `due`) and `payloads` (§9.1) reaches the
outcome the room states (§9.3):
- `refuse`: the `reason` and where, `at`: `["room", …]` with the room verifier's own place
(live-rooms §9.1), `["policy", i]`, `["grant", i]`, `["record", c, i]` for record `i` of
chain `c`, or `["object", i]`;
- `accept` or `gap` (with the `gaps`, each `principal`, `first` and `last`): the `room` id; the
`policy_digests`; the `intents`, each its `digest`, `principal`, `form`, `at`, `outcome`
(`kept`, `diverged` or `missed`) and what `played` (an object's `track`, `group` and `object`,
an `event` by digest, or `null`); each participant's `fidelity` (`announced`, `kept`,
`diverged`, `missed`); the `schedules`, each its `digest`, `mode`, `from` and `turns` (each
`segment`, `index`, `start`, `end`, scheduled `holder` and `role`); the `handovers`, each its
`digest`, `at`, `to`, and the `schedule`, `segment` and `turn` it passes; the `floor` of each
object, in the order given: `open`, `in_turn` or `out_of_turn`, the governing `mode`, whether
it was `late`, its `lateness` in µs and the flags of the `marks` naming it; and the `windows`,
each its `digest`, `rule`, `close`, `eligible` inputs, `commit`, `picks` and `credits` (each
`step`, `party`, `ref`, `count`), with the plurality's `tally` and the reactions' `scores`.
A verifier that reaches another outcome, reason, place, outcome of an intent, turn, floor, pick
or credit does not conform.
**Provenance.** Generated here: `wai_co_performance_vectors gen` writes `vectors.json` from
rooms authored in code as scripts of steps, from fixed seeds. Each principal's key is SHA-256 of
a fixed label and the principal's index; every time is a constant (the rooms' `t0` is
2026-10-21T00:00:00Z); every text is written for the corpus in English; each object's content,
the AI participant's model and the draw's seed are SHA-256 of fixed labels, and the symbolic
payloads are notes and a camera move written here; every origin is an `.example` name (RFC
2606); and Ed25519 signing is deterministic (RFC 8032), so the file is the same bytes on every
machine. A refused room is the script of a good one with one step, one policy, one attribute or
one object changed. The generator asserts that each room reaches the outcome it was written to
have, and that the corpus gives every reason of §10, before it writes. No recorded data.
## Layout
- `vectors.json`: `principals` (the keys, by name, informative), `model` (the AI participant's
model digest, informative) and `vectors`.
The rooms:
- `jam`: a director with the direct power, a performer and an AI participant whose grants carry
latency budgets. A schedule from 4 s trades four-bar phrases (two bars of four beats at 120
beats a minute, so 4 s a turn) between the performer and the AI participant as
call-and-response pairs, and marks; a second, from 20 s, gives three-second turns and refuses.
The AI participant announces an object, notes, a text line, a camera move, a second object it
then plays differently, and a text line it never says: four kept, one diverged, one missed;
the performer one object, kept. The AI participant's late object and its object in the
performer's turn are marked by the clock; the director hands the end of the performer's second
call to the AI participant, whose object then is in turn; the clock's fidelity statement
states both participants' counts.
- `audience`: a host with the direct and moderate powers, and four members whose grants carry
`audience_input` 2. A plurality vote over three options, one member changing its vote and one
voting after the close; a window selected by reactions over prompts and a sketch, one prompt
denied by the host and left out, one reaction retracted, one prompt sent after the close; and
a seeded draw over movement samples and a sketch. Each window committed, selected and credited.
- `audience_gap`: the audience room with one member's prompt not delivered: the gap, and what
the verifier states from what it holds.
- One refused room for each reason of §10, each a control of one defect, among them
`fidelity_counts_a_divergence_kept` (an intent that played something else counted kept),
`turn_violated` (an object out of turn under refuse, forwarded), `selection_counts_a_late_input`
(an input sent after its window closed, selected), `selection_does_not_recompute` (picks the
committed inputs do not give), `selected_input_uncredited` (a pick with no credit) and
`late_unflagged` (a late object with no mark); policies that do not read, whose signature
fails, or of another room; and an input by a principal the room never admitted, which the
room verifier refuses.