case: minimal-task-created

expect: accept

schema: dcp-message

note: Only required fields present.

entity_type: task

verb: created

title: A task

status: todo


case: event-only-refs

note: Event payload satisfied by refs alone.

verb: updated


case: event-only-delta

note: Event payload satisfied by delta alone.

from: todo


case: unknown-verb-tolerated

note: Unknown verb 'archived' must be tolerated (forward-compat).

verb: archived


case: unknown-status-tolerated

note: Unknown status 'on_hold' must be tolerated (forward-compat).

verb: snapshot

title: A task


case: extensions-namespaced

note: Namespaced x- extensions on envelope and entity.

entity_type: project

P

status: active


case: envelope-extra-field

expect: reject

note: Unknown top-level field violates additionalProperties:false on the envelope core.

title: A task

foo: bar


case: envelope-missing-message-id

note: message_id is required.

title: A task


case: message-type-mismatch

note: message_type must equal '<entity_type>.<verb>'.

title: A task


case: event-empty-payload

note: Event must carry at least one of entity/delta/refs.


case: bad-id-pattern

note: entity_id must match the opaque id pattern.

entity_id: Task 42


case: non-namespaced-extension

note: Extension keys must match '^x-<vendor>$'.

title: A task


case: bad-extension-key

note: Extension key must be lowercase 'x-...'.

title: A task


case: bad-dcp-version

note: dcp_version must be 'major.minor'.

title: A task


case: ref-forbidden-rel

note: rel vocabulary is closed; routing/permission verbs like 'approved_by' are forbidden (SRP guard).


case: delta-nested-object

note: delta leaf values must be scalar or null; nested objects are rejected.


case: timestamp-with-offset

note: Timestamps must be UTC with a trailing 'Z'.

title: A task


case: entity-shape-violation

note: A task snapshot missing 'title' must be rejected (conditional entity dispatch).


case: unknown-entity-type

note: entity_type is a closed enum of the eight v1 nouns.

entity_type: epic


case: message-type-no-dot

note: message_type must be '<entity>.<verb>'.

message_type: taskcreated

title: A task


case: job-requeued-same-entity

note: Job-lifecycle (x-agentsweaver): open verb 'requeued' on a stable entity_id; delta status leased->open is a retry (lease expiry or operator retry), ordered by the emitter-maintained monotonic x-agentsweaver.attempt counter.

verb: requeued

attributed_to: aw-job-broker

from: leased

to: open


case: job-mismatch-open-verb

note: message_type/body.verb mismatch on an OPEN verb (task.leased vs assigned) — the 4.1 rule applies beyond the controlled vocabulary.

verb: assigned

to: leased


case: job-lease-field-toplevel

note: Rail mechanics (fence_token) as a top-level Event field instead of inside x-<vendor> extensions — additionalProperties:false rejects.

verb: leased


case: job-extension-no-prefix

note: Extension key without the x- prefix.


case: job-delta-nested-object

note: Delta leaf must be scalar or null; nested object rejected (job-lifecycle variant of the existing rule).

state: open

state: leased