Skip to content

Spec v0.3 and mock receiver: remove HTTP Basic and 429, require ts on escalation events - #1

Merged
ciopulse merged 1 commit into
mainfrom
docs/spec-v03-corrections
Sep 22, 2026
Merged

ciopulse merged 1 commit into
mainfrom
docs/spec-v03-corrections

Conversation

@ciopulse

Copy link
Copy Markdown
Owner

Documentation corrections to spec v0.3 and the reference mock receiver. The wire contract and its version are unchanged; the forwarder's sending behaviour is untouched.

Spec (docs/send-a-copy-spec-v0.3.md)

  • Auth is X-API-Key only. HTTP Basic was cut from the endpoint scope on 28 Aug 2026 and never implemented; the forwarder has only ever sent X-API-Key.
  • 429 is no longer a documented response, because no ciopulse endpoint returns it. Senders are still told to treat any 429 as retryable with backoff.
  • Voice requires contract_version "0.2" or later. The forwarder sends voice on 0.3, which the old wording made look non-conformant.
  • A dated corrections note in the header. Status line and version footer unchanged.

Mock receiver (tools/mock-receiver/mock_ingest.py)

  • HTTP Basic removed from _authed(), the docstring and the 401 hint, so the reference can no longer certify a request the real endpoint rejects.
  • escalation_to_human now requires an ISO ts, with a field-level error naming the actor fallback that depends on it. Any other event's ts must be ISO when present; other event types still need only type.
  • Comment at STATE: the real endpoint keys idempotency on (tenant, session_id); this single-key mock cannot model that.

Also

  • README contract reference: stops listing a 429 response, matching the spec.
  • CHANGELOG [Unreleased] → Fixed.
  • Three tests: Basic auth gets a 401; an escalation event without ts, or with a non-ISO ts, gets a field-level 400; other event types still pass with only type. 54 tests pass locally.

Note: the mock is stricter by design. An escalation_to_human event without ts, accepted before, now gets a 400. The forwarder has always sent ts.

🤖 Generated with Claude Code

… escalation events

HTTP Basic was cut from the endpoint scope on 28 Aug 2026 and never
implemented; the forwarder has only ever sent X-API-Key. No ciopulse endpoint
returns 429 either. Both are removed from the documented contract, keeping the
advice to retry any 429 with backoff. Voice is documented as requiring 0.2 or
later, since the forwarder sends it on 0.3.

The mock receiver no longer accepts HTTP Basic, so it can no longer certify a
request the real endpoint would reject, and escalation_to_human events now need
an ISO ts, which the actor fallback depends on. Documentation corrections: the
wire contract and its version are unchanged.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@ciopulse
ciopulse merged commit 711d97e into main Sep 22, 2026
2 checks passed
@ciopulse
ciopulse deleted the docs/spec-v03-corrections branch September 22, 2026 04:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant