Profiles and transport bindings
Application profile
Requirement group DASP-PROFILE-001.
A profile supplies domain meaning while the core keeps the same shapes. Its immutable identity is an absolute URI plus a version string.
Every profile MUST publish:
- Supported command names and closed input schemas.
- Output schemas and completion scope for each command.
- Application update names, data schemas, and state projection rules.
- Progress names and payload schemas, if used.
- Error codes and any command preconditions.
- Execution concurrency, ordering, and cancellation behavior.
- Valid and invalid examples plus behavioral checks.
A session binds exactly one profile version. The host MUST reject an unsupported profile before session creation. A later profile version requires a new session or a future explicit migration protocol.
Application fields stay in input, outcome output, application-update payload.data, view state, and progress payload. A profile cannot redefine a receipt as completion, reset a cursor, or weaken retry identity.
A workflow profile could define job.start. A device profile could define target.set. An agent profile could define task.run. These are examples, not built-in core commands. Text, models, attachments, tools, and turns belong to profiles where needed.
The counter example defines a small illustrative profile. It is not a released standard profile.
Transport binding
Requirement group DASP-PROFILE-002.
The core specifies messages and behavior, not endpoints or connection frames. No specific HTTP, WebSocket, broker, or runtime binding is required by this draft.
Every binding MUST define:
- Endpoint selection and secure connection setup.
- Authentication and host-authority identity.
- How the client discovers and selects the exact DASP draft or release, profile, supported commands, schema identifiers, and limits.
- Structured CloudEvents framing and any transport acknowledgments.
- Request routing, request-ID scope, reply routing, and timeout behavior.
- Replay paging and, if supported, live subscriptions and race-free handoff.
- Error handling before a request can be decoded.
- Backpressure, reconnect behavior, and a durability declaration.
The selection MUST complete before application commands are admitted. Unsupported required features MUST fail selection. A host MUST NOT silently downgrade the selected profile or core version.
Binary CloudEvents encoding can be added by a future binding with a lossless mapping and shared vectors. Draft-01 examples use structured JSON only. An array of saved events inside an updates page is application data, not the CloudEvents batch event format.
A host can enforce admission limits without promising a queue. Queue policy and per-command ordering are profile behavior. The order of saved updates does not by itself mean commands executed serially.
Multiple clients
Requirement group DASP-PROFILE-003.
The core allows authorized clients to read the same session and submit profile commands. It does not define membership roles, presence, shared text editing, or conflict-free concurrent application edits.
Authorization policy remains a host concern. A collaboration profile or extension must define stronger multi-user behavior before clients rely on it. A client-provided user ID is never authority.
Release boundary
Requirement group DASP-PROFILE-004.
Draft-01 does not select the first production binding. A transport implementation and its conformance vectors are required before an independently built client can claim interoperability. This is an explicit remaining release decision.