Files
core-api/alembic
jpmschweitzerandClaude Sonnet 5 8ec89336df feat(scribe): accept a feedback message to tower-control with no sender (T-15)
workspace D-70 ("`feedback` needs no address"): the failure channel must
not depend on the thing most likely to break. `scribe_messages.from_identity`
becomes nullable (migration 010); `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`, enforced in
ScribeService.send_message rather than the caller dependency, since the
decision needs the request body. `MessageResponse.from_identity` is now
optional so mailbox/history/find/message_id answer such a message with a
null sender. Migration 010's downgrade refuses outright while any
sender-less row exists rather than inventing one.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-10-19 23:37:46 +02:00
..

Alembic Migrations for Core-API

This directory contains database migrations managed by Alembic.

Commands:
  # Generate a new migration (after changing models)
  alembic revision --autogenerate -m "description"

  # Apply all pending migrations
  alembic upgrade head

  # Rollback last migration
  alembic downgrade -1

  # View migration history
  alembic history

  # View current revision
  alembic current

See https://alembic.sqlalchemy.org for more documentation.