Source Map

Loro Extended

Source:

  • Repository: https://github.com/schoolAI/loro-extended
  • Studied commit: e6f1ebbe011c05e4ec452789f4488b0d337c9791
  • Local checkout used during study: /tmp/loro-extended-study
  • Main packages inspected: packages/change, packages/repo, packages/lens

Package versions at the studied commit:

Package Version Why it matters
@loro-extended/change 6.0.0-beta.0 Typed schema/ref/change layer over Loro. This is the closest match to CVL engine needs.
@loro-extended/repo 6.0.0-beta.0 Local-first sync/document lifecycle framework. Useful as architecture input, not a direct replacement for Careervector persistence.
@loro-extended/lens 1.0.0-beta.0 Filtered worldview documents. Interesting later for sandboxed AI/preview workflows.

High-Value Files

Re-read these first:

  • README.md: project framing and package map.
  • TECHNICAL.md: API consistency, typed ref architecture, diff overlays, mergeable flattened storage.
  • packages/change/README.md: user-facing change API and placeholders.
  • packages/change/TECHNICAL.md: internals, materialization, mergeable storage limitations.
  • packages/change/src/shape.ts: schema model.
  • packages/change/src/typed-doc.ts: typed document wrapper, metadata, flattened reconstruction.
  • packages/change/src/typed-refs/base.ts: facade plus internals pattern.
  • packages/change/src/typed-refs/map-based-ref-internals.ts: shared struct/record logic.
  • packages/change/src/typed-refs/utils.ts: child container creation and mergeable/root-container logic.
  • packages/change/src/path-selector.ts: typed selector type model.
  • packages/change/src/path-builder.ts: runtime selector builder.
  • packages/change/src/path-subscription.ts: JSONPath vs global-subscription fallback.
  • packages/change/src/diff-overlay.ts: before/after overlay entry point.
  • packages/change/src/replay-diff.ts: replaying diffs as local ops.
  • packages/change/src/mergeable-flattened.test.ts: behavior tests for root path containers.
  • packages/change/src/nested-container-materialization.test.ts: nested identity failure mode and fix.
  • docs/repo-architecture.md: repo/synchronizer architecture.
  • docs/discovery-and-sync-architecture.md: pull-based discovery and sync.
  • docs/permissions.md: sync-time permission predicates.
  • docs/bidirectional-lens.md: lens worldview model and mergeable constraints.

Concepts To Keep

  • Typed schema layer above raw CRDT containers.
  • Public facade plus symbol-hidden internals.
  • Batched change() boundary for invariant-heavy edits.
  • Method-based writes instead of assignment.
  • Placeholders as read overlays, not persisted defaults.
  • Deterministic root-container naming for nested logical paths.
  • ID-keyed records plus explicit order lists over deeply nested lists of containers.
  • Semantic/path selector subscriptions.
  • Transition reports from before/after diffs.
  • Pure synchronizer/worker core with command execution around side effects.

Concepts To Avoid For Now

  • Replacing Careervector REST/Yjs sub-doc persistence with Loro Extended repo.
  • Exposing raw Loro/Yjs refs to Svelte or MCP.
  • Modeling canonical CVL as nested CRDT container lists.
  • Treating placeholders as proof of valid quarry state.
  • Committing to Loro only because this wrapper is elegant.
Source: wiki/content/studies/CRDT/source-map.md