NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
pub.dev · #4824 most downloaded on pub.dev
A pure-Dart, framework-free beads client — bd CLI + Dolt SQL services, snapshot repository, structural diff, typed graph events.
Last release 5 days ago
03 Oct 2026
Ships on a steady schedule
a new release about every 1 weeks
Nearly every release is documented
notes for 3 of 3 stable releases
Nothing withdrawn
no release was ever pulled
2 months old
22 releases · first in 2026
One column per month.
chore(release): the_grid dev wave - engine dev.15, sdk dev.10, runtim…
chore(release): the_grid dev wave - engine dev.15, sdk dev.10, runtim…
chore(release): the_grid dev wave - engine dev.14, sdk dev.9, runtime…
chore(release): the_grid dev wave - engine dev.14, sdk dev.9, runtime…
chore(release): the_grid dev wave - engine dev.13, sdk dev.8, runtime…
chore(release): the_grid dev wave - engine dev.13, sdk dev.8, runtime…
chore(release): the_grid dev wave - engine dev.12, sdk dev.7, runtime…
chore(release): the_grid dev wave - engine dev.12, sdk dev.7, runtime…
chore(release): the_grid dev wave - engine dev.11, sdk dev.6, runtime…
chore(release): the_grid dev wave - engine dev.11, sdk dev.6, runtime…
chore(release): the_grid dev wave - grid_engine 0.4.0-dev.10, grid_sd…
chore(release): the_grid dev wave - grid_engine 0.4.0-dev.10, grid_sd…
chore(release): beads_dart 0.3.0-dev.3 - station teardown no longer crashes on a late probe completion
chore(release): beads_dart 0.3.0-dev.3 - station teardown no longer crashes on a late probe completion
Co-authored-by: Claude Fable 5.1 noreply@anthropic.com
WorkingSetProbeSource._tick ignores probe completions that land after dispose (#466). The
probe is async and could straddle a close, and both of its add sites — the hash change and the
probe-dead arm — reached a closed broadcast controller, so every station teardown crashed with
Bad state: Cannot add new events after calling close and abandoned its lock. Measured on lunar:
every down on 2026-09-14 needed a SIGKILL; the first delivery under the G1 cut.Adds bd's NATIVE cross-project edge to the read surface. BdCliService.queryGraph reads the broad query as a GRAPH — bd embeds each bead's dependency R
BdCliService.queryGraph reads the broad
query as a GRAPH — bd embeds each bead's dependency ROWS in its record, and that record surface is
the only bd read that carries a cross-project external: row — joined by externalDepRows,
externalProjects, addLabels, ship, and the shared allStatusesQuery expression (#445).CliSnapshotReader surfaces those rows and REFUSES rather than publish a snapshot that cannot see
them; the refusal is reported once, on the rising edge, through a new optional onRefusal sink
(threaded as GridRuntimeFactory.buildRuntime(onReadRefusal: ...)) before it rethrows.Capability model and the BdExternalDepSurfaceUnavailable exception.Breaking: BeadTextRefused now requires the call argument (the bd argv the guard refused), so any consumer constructing it directly no longer compiles
BeadTextRefused now requires the call argument (the bd argv the guard refused), so
any consumer constructing it directly no longer compiles (#420; surfaced by release classify
on 2026-09-13 — the 0.2.1-dev.1 entry in the_grid#438 understated this and was never tagged).call: <the List<String> bd argv> at every BeadTextRefused(...) construction
site; code that only catches the exception is unaffected.BdCliService refuses a notes write that would replace the
field unless the caller passes allowNotesReplacement, and a refused guardrail surfaces as
BdGuardrailRefused with its reason and remedy (#420).release: promote the grid core to stable — beads_dart, trajectory, ex…
release: promote the grid core to stable — beads_dart, trajectory, ex…
^0.2.0-rc.N constraint resolve this automatically: a caret range admits the
release above its own prereleases, so no downstream pubspec edit is required to pick it up.release: the_grid rc wave 12 (grid_engine rc.20, grid_sdk rc.16, grid…
release: the_grid rc wave 12 (grid_engine rc.20, grid_sdk rc.16, grid…
DoltQueryService.queryTimeout (10 s) is applied to the Dolt SQL connection and its queries through mysql_client's connect timeout, so a state store that never answers no longer hangs a mint; distinct from BdCliService.pourTimeout, which bounds only the atomic bd create --graph process (tg-akc8, #329).Fixed: ProcessBdRunner decodes a child's pipes with Utf8Decoder(allowMalformed: true). Its deadline SIGKILLs a wedged bd; a pipe cut between the bytes
ProcessBdRunner decodes a child's pipes with Utf8Decoder(allowMalformed: true). Its deadline SIGKILLs a wedged bd; a pipe cut between the bytes of one multibyte character made the strict decoder throw Unfinished UTF-8 octet sequence from its close as the pipe's done event landed — before process.exitCode resolved, so the done-future errored with no listener and the error was UNCAUGHT in the zone. The resident isolate died on it ~90 s into every lunar boot on 2026-09-05 (epoch 39), right after the boot burst's 15 s bd timeouts. A torn tail is U+FFFD now and the call fails as it already did, with BdTimeoutException (tg-jbji, #326).The SQL ready port and the CLI snapshot reader carry a ready-only fallback merge, so a bead the store reports ready is never silently absent from a jo
Molecule pours (bd create --graph) run on a dedicated 60-second deadline instead of the 15-second single-row default; the exception is named, tested,
bd create --graph) run on a dedicated 60-second deadline instead of the 15-second single-row default; the exception is named, tested, and bounded, and every other bd call keeps the 15-second deadline (tg-336w, #280).DoltQueryService.close() releases the state-store proxy sockets so a resident can exit after its shutdown fixpoint (tg-46q1, #285).tg-1liv set day_one_wait_through to v1.3.0, which upstream has not released (latest is v1.2.2). The publish guard refuses a release while upstream's l
tg-1liv set day_one_wait_through to v1.3.0, which upstream has not released
(latest is v1.2.2). The publish guard refuses a release while upstream's latest
is older than the window, so the value embargoed EVERY beads_dart release, not
just one claiming 1.3 support — it blocked 0.2.0-rc.6, whose content is the
intake-safe create surface and has nothing to do with bd 1.3.
The window now names the newest bd release the package has been exercised
through. The 1.3 rehearsal is untouched: the rc fixtures and drift pins stay,
and the window moves to v1.3.0 when 1.3.0 actually ships, at which point the
gate stays open because upstream's latest equals it.
Co-authored-by: Claude Opus 5 (1M context) noreply@anthropic.com
create takes defer,
externalRef and setMetadata, and listScope reads one scope by type,
externalRef, or both, with includeClosed. Metadata rides an unconditional
follow-up update per key, because bd has no create --set-metadata on any
supported version; the create argv still carries the external reference, so a
caller's dedupe read finds the bead even if the metadata write fails.fixtures/upstream/2026-09-02-bd-1.3.0-rc.1/ (ref
v1.3.0-rc.1, SHA 9c6a69ec12350959ec8c495c74eeb02902d629b6); every delta
versus 2026-08-08-bd-main is pinned by name in
test/tool/fixture_drift_test.dart, and a removed or renamed Bead-decoded
wire key now fails that suite loudly.--set-metadata values written by bd 1.3 arrive as typed JSON scalars
(attempt=3 → 3) while pre-1.3 values stay strings, so one store carries
MIXED shapes. metadataEntryEquals/metadataScalarText normalise both, and
CliBeadProbeReader.openBeads uses them. bd's own --metadata-field filter
and the SQL leg already agreed (JSON_UNQUOTE renders a scalar as its text).BdCliService.deleteArgs pins --cascade beside --force. bd 1.3
stops cascading by default and --force alone orphans dependents; a delete
through this service is a subtree delete on every supported bd, and 1.0.5
accepts the flag.MIGRATION-FREEZE marker present, write refused) decodes to
BdMigrationFrozen, carrying the marker path bd named. A frozen store reads
as frozen, never as a crash.test/integration/sql_cli_equivalence_test.dart and
cross_workspace_probe_test.dart skip when the bd on PATH is not the
store's .beads/.local_version writer. tool/bd_compatibility/run.sh keeps
its two-argument form and now completes through the corpus-replay step on a
foreign binary.bd dep cycles --json changes shape at 1.3. beads_dart never
calls it (grep -rn "cycles" lib is empty) — no action.--brief / --brief-deps projections are NOT adopted
here; the light-snapshot memory model is tg-185's.bd update --ephemeral half-wisps written by pre-1.3
builds are NOT repaired by 1.3. A future repair sweep would be witnessed in
test/integration/wisp_snapshot_test.dart.internal/storage/sqlbuild/ready.go:17-27) is identical to the hand port in
lib/src/ready/ready_work_query.dart — pinned as a comment, no code change.delete envelope's data.deleted is a bare string without
--cascade and a list (plus deleted_count) with it. BdCliService.delete
discards the envelope, so only the argv moved.grid_runtime's StationBeadWriter writes numeric-looking
--set-metadata values (pgid/pid); its readers require a separate audit.ci(bd-compat): skip the corpus replay loudly when the bd ref carries …
ci(bd-compat): skip the corpus replay loudly when the bd ref carries …
BeadsWorkspace.discover(endpointResolver:)
takes an EndpointResolver; ProxiedServerEndpointResolver is the default
and the gc-era endpoint fossils are gone (#237).bd_compatibility.yaml records the owned bd fork's plan-local parent
cycle-check patch with a ref-specific fixture capture (#256).Breaking: guarded conditional updates ride a NEGOTIATED capability (#205). The probe is tri-state and fail-closed (an indeterminate bd keeps the guard
bd keeps the
guards); a conditional mismatch surfaces as BdGuardMismatch instead of a
generic failure, and there is no unguarded retry after a mismatch. The
pre-negotiation conditional parameters on update are gone. Migration:
depend on the negotiated path and catch BdGuardMismatch where CAS
conflicts were previously inferred from generic errors.grid_runtime 0.2.0-rc.4 requires — the
rc.3 pair was published incoherently (the runtime archive referenced
guarded-write symbols no published beads_dart carried).Guarded-write capability negotiation (BdGuardMismatch) and the notes: parameter on the update path. Consumed by grid_runtime's StationBeadWriter.
Guarded-write capability negotiation (BdGuardMismatch) and the notes:
parameter on the update path. Consumed by grid_runtime's StationBeadWriter.
NOTE: the previous version was published and the package then kept accruing source without a bump, so the hosted archive and the in-repo sources at that version differed. Local builds passed on path overrides while hosted resolves got stale code. This release re-syncs them.
The sync FLOOR (tg-zd4v): GridRuntimeFactory.build adds a PollingTickerSource on the SQL read path too (syncFloorInterval, default 45s) — the working-
GridRuntimeFactory.build adds a
PollingTickerSource on the SQL read path too (syncFloorInterval,
default 45s) — the working-set probe is edge-triggered, so a store nobody
writes to never re-captured and served a frozen frontier.GridControllerRuntime gains onDirtySourceClosed — a closed dirty-signal
source is reported once instead of silencing sync forever.Breaking: BdCliService.exportAll and exportArgs are REMOVED. bd export is refused in proxied-server mode, so every read that shelled it degraded silen
BdCliService.exportAll and exportArgs are REMOVED. bd export is
refused in proxied-server mode, so every read that shelled it degraded silently
there instead of failing. Migration: use query(expr, includeClosed: …) for a
filtered read, listScope(type:, status:) for one scope, or the new
BeadProbeReader seam for lifecycle probes.query gains includeClosed, which appends --all. An all-status
read is query('status=open OR status=in_progress OR status=blocked OR status=deferred OR status=closed', includeClosed: true).BeadProbeReader with SqlBeadProbeReader and CliBeadProbeReader
implementations (beadById, openBeads, openSuperseding).CliSnapshotReader composes a snapshot from one broad query plus one
batched dependency read instead of bd export --all. SqlSnapshotReader no
longer falls back to the CLI reader — a persistent SQL failure is loud
(transients are still absorbed by the pool's reconnect retry).Family coherence release from current mainline: probe-death recovery (WorkingSetProbeSource failure surfacing + reconnect-by-rebuild, the_grid#135) an
WorkingSetProbeSource failure surfacing + reconnect-by-rebuild, the_grid#135) and current CLI service surface.Initial release: pure-Dart, framework-free beads client — bd CLI + Dolt SQL services, snapshot repository, structural diff, typed graph events.
Your coding agent can read these notes before it upgrades. Set up the MCP server →