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
9 changes: 9 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,15 @@ See [STATUS.md](server/STATUS.md) to learn more about which features will remain
a store seeded by an older one. Existing values, including user edits to
default resources, are never overwritten. `--repopulate-defaults` remains as
a forced re-run with the same add-only semantics.
- `atomic_lib`: `atomic_lib::runtime::AtomicNode` — a named node surface over
`Db` (`open`, `get`, `query`, `apply_commit(json, IngestPolicy)`, `mutate`,
`subscribe`, `sync_with_peer`). Thin delegation, no behaviour change; the
WASM `ClientDb` is the first adapter on it. `IngestPolicy::{Hub, Peer,
Replica, LocalCache}` names the four commit-validation profiles.
`sync::engine::ingest_commit` returns the `CommitResponse` that
`ingest_commit_json` serializes; `sync::ws_apply::apply_commit_json` now
returns the `CommitResponse` instead of `()`. See
`planning/runtime-boundary-decision.md`.

## [v0.41.0-beta.2] - 2026-08-01

Expand Down
1 change: 1 addition & 0 deletions TESTING_COVERAGE.md
Original file line number Diff line number Diff line change
Expand Up @@ -121,6 +121,7 @@ Both matter because `iroh_transport` holds the router and node identity in
| **`POST /iroh-sync` request shape, both sides** | `testdata/pairing-request.json` + `pairing.test.ts` + `iroh_pairing.rs` | shared fixture binds them |
| Dart pairing-code parser, peer-sync result formatting | `flutter/test/atomic/` | pure parsers |
| Rotation does not treat a metrics-change pop as "back to gallery" | `flutter/test/canvas/rotation_pop_test.dart` | |
| `AtomicNode`: `mutate` on one node, `apply_commit(IngestPolicy::Peer)` on another, query + `DbEvent` reflect it | `lib/src/runtime/node.rs` | in-process, no transport; `LocalCache` skips signature check, `Peer` does not |

### Flow — the thin layer

Expand Down
3 changes: 3 additions & 0 deletions lib/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,9 @@ pub mod plugins;

pub mod populate;
pub mod resources;
/// The node runtime boundary (`AtomicNode`). Wraps `Db`, so it needs `db`.
#[cfg(feature = "db")]
pub mod runtime;
pub mod schema;
pub mod serialize;
pub mod store;
Expand Down
11 changes: 11 additions & 0 deletions lib/src/runtime/mod.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
//! The node runtime boundary: [`AtomicNode`] is the one surface adapters
//! (HTTP, WebSocket, Iroh, WASM, FFI, Flutter) bind to instead of wrapping
//! [`crate::Db`] themselves.
//!
//! Slice 1 (`planning/atomic-lib-runtime.md`, `planning/runtime-boundary-decision.md`)
//! is a thin wrapper: every method delegates to code that already existed, so
//! there is no behaviour change — only a named place for it.

mod node;

pub use node::{AtomicNode, IngestPolicy, NodeConfig, NodeStorage, ResourceEdit};
Loading
Loading