Skip to content

v0.9.0

@zensh zensh tagged this 24 Sep 11:41
Identity
- Define origins once (Section 4.4, WHATWG serialization) and reference
  it from the JWT aud, discovery service, room host, controller source,
  and delegation audiences.
- Require a nonce cache of at least twice the live-write window, closing
  the replay gap for envelopes signed ahead of the receiver's clock.
- Define discovery features as optional capabilities; clients ignore
  unknown ones.
- Require typed implementations to reproduce every event member as
  received, keeping explicit empty arrays and objects.
- Add origin, request JWT, and live-submission vectors.

Profile
- Close the profile.update payload and state its field rules.
- Replace the discovery profile resolver with { service, required }.
- Add normative Profile test vectors, including an update with explicit
  empty arrays and objects that must verify and materialize as signed.

Delegation
- Allow Agent ID audiences for relying agents.
- Relying parties verify only the latest grant record; full replay moves
  to auditors (audit_delegation_history).
- Keep one evidence policy; move independent evidence to Appendix A.
- Specify request-JWT enumeration, query URL precedence, grant
  portability, and valid_from/retired_at <= updated_at.
- Remove credential updated_at; add audience and acceptance vectors.

Discourse
- Messages are checked against the coordination head instead of being
  compare-and-swap: the head is the latest genesis, contract, or control
  record, so concurrent messages never conflict.
- open_roles applies to any visibility, defaults to [observer] in public
  rooms and [] otherwise, and must be empty in private rooms.
- Reserve the message. prefix; drop type-def version and steer target.
- Move public discovery to GET /v1/rooms, add the my_rooms endpoint,
  define the feature registry, the archive endpoint, and the manifest
  (formats.jsonl, packs); remove room_ended.
- Document equal moderator trust; condense Appendix A to an index.
- Fix pack content_digest patterns; add base-check, type-name, and
  open-role vectors.

Local connector
- Merge rooms_search into rooms_list (scope known|public) and fold
  room_leave into room_submit_event (23 tools).
- Hold drafts only when coordination moved; target steers by mentions.

SDKs (Rust, TypeScript, Python) implement all of the above and pass
every vector. Rust signed payloads now round-trip exactly:
optional collections are Options, so an explicit [] or {} signed by
another SDK keeps its hash, and principal descriptors keep extra
members. Simplified Chinese mirrors are updated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Assets 2
Loading