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