• feat: authored-history-write consumer side (Worldtree #347) — v0.19.6

    vh released this 2026-07-06 09:40:42 -07:00

    Consumer side of Worldtree's #347 authored-history-write (the SillyTavern
    first-message primitive), shipped via direct in-session TDD:

    • write_authored_history (POST /sessions/{id}/history): v1 author=assistant,
      effects=none, per-session idempotency; body server-pinned (AuthoredWriteRequest
      extra=forbid) so null effects/claimed_original_at are omitted; 200 replay /
      201 fresh both return the AuthoredTurnResponse dict.
    • AuthoredHistoryUnavailable: the hide-existence 404 (feature-absent / ungranted
      / session-absent, indistinguishable by design — INV-347-1) raised DISTINCT from
      SessionApiFailed so callers branch feature-absent and never capability-probe.
    • get_session_messages (GET /sessions/{id}/messages): un-deferred as the seed
      read-back — confirms a seed renders as a normal role=assistant turn
      (model-invisible provenance).
    • --seed-first-message probe: create session -> seed -> read-back; a 404 reports
      a benign feature-absent result (exit 0), never a capability-probe.

    Contract #2 amended (2 FNs, validated OK). 19 new tests (12 wrapper + 7 cli),
    suite 601 green. Coverage-map re-converged: REST 19/41 (the #347 route + the
    messages read-back close the one gap the 2.3.0 re-vendor opened).

    Live-proof pending the session.history.write grant (requested infra-ops).

    Downloads