Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 10 additions & 6 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -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.
Expand Down
4 changes: 2 additions & 2 deletions docs/explanation.md
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down