ak.profile.signal_message_stream.v1
ak.profile.signal_message_stream.v1
role
"client" description
"Optional client payload profile for authenticated transient Message generation previews carried inside the encrypted Signal Extension." enforcement_phases
[
"build",
"conformance"
] operation_requirements
[
{
"direction": "consume",
"operation_id": "ak.self.signal.command.send.v1",
"binding_kind": "http_json"
},
{
"direction": "consume",
"operation_id": "ak.self.signal.stream.subscribe.v1",
"binding_kind": "http_json"
},
{
"direction": "consume",
"operation_id": "ak.self.events.command.submit.v1",
"binding_kind": "http_json"
}
] required_event_kinds
[
"ak.message.create"
] rejected_event_kinds
[] required_schemas
[
"ak.schema.signal_envelope.v1",
"ak.schema.signal_message_stream.v1",
"ak.schema.event_payload.v1",
"ak.schema.message.v1"
] required_fixtures
[
"signal-message-stream-fixture.json"
] optional_extensions
[
"ak.profile.signal_peer_relay.v1"
] feature_discovery
{
"required": [
"encrypted_signal_message_stream_payload",
"message_id_retyped_from_create_event_id",
"self_healing_keyframe_state_machine"
],
"unsupported_optional": "omit live generation previews and continue receiving the final ak.message.create; never place ak.message.stream in durable Event history"
} additional_requirements
{
"encrypted_only_must": "Every ak.message.stream payload MUST be encrypted inside ak.schema.signal_envelope.v1 with signal_class=session; no plaintext branch exists.",
"authorization_must": "The recipient MUST verify ak.message.stream.send at the Signal envelope security basis and independently verify ak.message.create from its producer proof, the RealmCommit that admitted it and, for an Agent producer, its Agent signer evidence before display.",
"resource_must": "Producer and recipient enforce 16 KiB preview, 5 frames/s, 8 concurrent streams, 15-second keyframes and 10-minute lifetime within the generic 46 KiB plaintext / 64 KiB Signal envelope limits.",
"final_binding_must": "Only a direct, verified ak.message.create with a message_id matching the complete retyped EventId token, actor, device, security scope, Realm, Strand and discussion track replaces the preview."
}