From 2e825d90800e59c8c4be50739ac204794cf78a9c Mon Sep 17 00:00:00 2001 From: Jeroen Schweitzer Date: Mon, 19 Oct 2026 23:38:04 +0200 Subject: [PATCH] =?UTF-8?q?docs(changelog):=20record=20T-15=20=E2=80=94=20?= =?UTF-8?q?a=20feedback=20message=20to=20tower-control=20may=20have=20no?= =?UTF-8?q?=20sender?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Sonnet 5 --- CHANGELOG.md | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 407d188..72891dd 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +### Added + +- **A `feedback` message to `tower-control` may have no sender** (`scribe_messages.from_identity` + nullable, migration 010, core-api T-15 / workspace D-70) — the failure channel must not depend + on the thing most likely to break. `POST /scribe/messages` accepts a missing + `X-Office-Identity` for exactly one shape: an office caller, `to` is `["tower-control"]` alone, + and `tags` contains `feedback`; stored with `from_identity` null and `from_consumer` the + caller's consumer. Every other send without an identity is still 400 `identity_required`, and + a `user`-kind caller gains nothing from the exemption. `MessageResponse.from_identity` is now + optional, so `mailbox`, `history`, `find` and the `message_id` lookup all answer such a message + with a null sender. + ## [1.14.0] - 2026-10-19 ### Added