From 2a3556e00b14975aaa58ff9c639b5a5462aea40c Mon Sep 17 00:00:00 2001 From: Thomas Kosiewski Date: Fri, 28 Aug 2026 00:24:32 +0000 Subject: [PATCH] docs: reflect shipped burst strategy and accepted ADR statuses README's concurrency section still claimed four strategies with burst staged; all five ship since #57. The ADR index in explanation.md still showed 0012 as staged and 0015 as Proposed; both are Accepted and implemented. Force/steerability preemption remains the sole rejected/reserved concept per ADR 0015. --- README.md | 16 ++++++++++------ docs/explanation.md | 4 ++-- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/README.md b/README.md index f5f611f..b7109ec 100644 --- a/README.md +++ b/README.md @@ -518,7 +518,7 @@ chat.RuntimeOptions{ } ``` -The runtime implements four of the upstream-aligned strategies (ADR 0012): +The runtime implements all five upstream-aligned strategies (ADR 0012): - `ConcurrencyDrop` (default): a lock conflict is acknowledged and dropped. - `ConcurrencyQueue`: the newest follow-up waits for the in-flight handler; @@ -529,11 +529,15 @@ The runtime implements four of the upstream-aligned strategies (ADR 0012): sharing a state are serialized by the thread lock, not coalesced. - `ConcurrencyConcurrent`: no thread lock at all; every event dispatches in its own execution, bounded by `MaxConcurrent`. - -The remaining ADR 0012 surface — the `burst` strategy and the -force/steerability (`onLockConflict`) preemption hook — is staged behind the -deferred-dispatch admission and fenced-coordination design work; the names -stay reserved. +- `ConcurrencyBurst`: routed events for a scope collect for a `BurstWindow`, + then dispatch as one batch under a single lock hold, each member in join + order with its own `DetachTimeout` budget. Requires deferred dispatch. + Like queue supersession and debounce coalescing, batching is per runtime + instance. + +The one remaining ADR 0012 concept — the force/steerability +(`onLockConflict`) preemption hook — is rejected for v0.x per ADR 0015; the +names stay reserved behind that ADR's formal-design bar. `LockScope` chooses what the lock guards: per thread (default) or per channel (`LockScopeChannel`) for platforms whose model needs channel-wide ordering. diff --git a/docs/explanation.md b/docs/explanation.md index c89839f..155275f 100644 --- a/docs/explanation.md +++ b/docs/explanation.md @@ -37,10 +37,10 @@ design deliberately diverges from Vercel Chat SDK. | [0009](adr/0009-message-history.md) | Message history stays application-owned; optional storage-free `HistoryReader` | Accepted | | [0010](adr/0010-observability.md) | Optional `Observer` seam; no OpenTelemetry in core | Accepted | | [0011](adr/0011-resumable-streaming.md) | Resumable streaming deferred from core, not foreclosed | Proposed | -| [0012](adr/0012-concurrency-strategy.md) | Concurrency strategy expansion (`drop`/`queue`/`debounce`/`concurrent` + lock scope implemented; `burst` and force/steerability staged) | Accepted (staged) | +| [0012](adr/0012-concurrency-strategy.md) | Concurrency strategy expansion (`drop`/`queue`/`debounce`/`concurrent`/`burst` + lock scope implemented; force/steerability names reserved) | Accepted | | [0013](adr/0013-linear-generic-comments.md) | Linear generic issue/comment participation | Accepted | | [0014](adr/0014-nats-state-adapter.md) | NATS JetStream state adapter | Accepted | -| [0015](adr/0015-runtime-coordination.md) | Deferred-dispatch admission bound; cross-instance coalescing rejected for now | Proposed | +| [0015](adr/0015-runtime-coordination.md) | Deferred-dispatch admission bound; cross-instance coalescing rejected for now | Accepted | ## The Short Version