4 releases (1 stable)

Uses new Rust 2024

2.0.0 Mar 27, 2026
2.0.0-rc.5 Dec 1, 2025
2.0.0-rc.2 Nov 19, 2025
0.4.5 Jul 11, 2024
0.3.7 Nov 22, 2023

#120 in Science


Used in oca-store

EUPL-1.2

32KB
676 lines

OCA DAG

Rust implementation of OCA DAG

oca-dag-rs — model your Overlays Capture Architecture as a versioned, traceable graph.

It lib for managing Directed Acyclic Graphs (DAGs) that represent the structure and evolution of Overlays Capture Architecture (OCA) bundles. It serves as a foundational layer for versioning, history tracking, and dependency management in systems built on the OCA model.

Features

  • DAG-based Model Management Represents OCA data (capture bases, overlays, bundles etc.) as a Directed Acyclic Graph, enabling clear and scalable relationships between versions and components.

  • Powerful Versioning System Every change to an OCA bundle—whether it's a new overlay, update, or branching—forms a new node in the DAG, supporting sophisticated version control.

  • Full History Tracking Enables tracking of the complete change history of an OCA bundle, including merges and branches/forks, akin to Git-like semantics.

  • Dependency Resolution Naturally handles dependencies between capture bases, overlays, and other OCA elements via parent-child relationships in the graph.

  • Current State Representation Maintains a clear representation of the current state of a bundle

  • Graph Construction Allows for the construction and updating of the DAG from a stream of input commands, effectively modeling the evolution of OCA bundles over time.

Use Cases

  • Versioning of OCA bundles
  • Collaborative OCA editing with conflict resolution
  • Auditing and provenance of overlays and capture bases
  • Programmatic traversal and analysis of OCA dependencies
  • oca-rs — Core implementation of the Overlays Capture Architecture
  • oca-ast — AST structures for OCA semantics

Dependencies

~26MB
~493K SLoC