ShaneDolphin/gorapide
Project Overview
gorapide
Go library implementing Stanford Rapide's causal event architecture semantics with posets, patterns, and constraints.
True Intent (AI Assessment)
A Go library that implements Rapide's causal event-driven architecture semantics for modeling, verifying, and observing concurrent/distributed systems.
README Accuracy
Notes
Code structure, package layout, and APIs match the README's claims exactly. Zero-dependency core is verified by go.mod. Sub-modules for OTel and the studio web app are properly isolated.
gorapide is a Go implementation of the Stanford Rapide 1.0 architecture description language semantics. It models software systems as concurrent components communicating through partially ordered event sets (posets), where each event carries a causal history via Lamport timestamps and optional vector clocks. This enables reasoning about happens-before relationships, verifying architectural constraints, and observing system behavior at the architecture level rather than the code level.
The problem it addresses is that traditional tracing and logging tools capture events as flat streams or tree-shaped traces, which loses the true concurrent, causal structure of distributed systems. Rapide's poset-based model preserves independence and causal ordering explicitly, letting developers write formal patterns (sequence, join, independence, timing windows) and constraints that can be checked at runtime. This is useful for verifying that pipelines actually do what their architecture diagrams claim.
The intended users are Go developers building event-driven, concurrent, or distributed systems who want architecture-level observability and formal verification. The included ATO scanner example targets security/compliance pipelines. Users interact through a fluent builder API for constructing posets, an arch package for defining components/connections/behaviors, and optionally the Rapide Studio web UI for drag-and-drop visual design and live simulation. Output can be exported to DOT, Mermaid, JSON, or streamed live to OpenTelemetry collectors as OTLP spans.
Architecturally, the core module has zero external dependencies and centers on Event, Poset, and VectorClock types. Sub-packages layer on: pattern implements the Event Pattern Language (match, seq, join, independent, timing); constraint provides runtime checkers; arch supplies the component/connection/binding runtime with hierarchical composition; dsync implements grow-only CRDT poset merging across nodes; studio backs the visual editor with schema/recorder/replay; otelexport (separate go.mod) bridges to OpenTelemetry; and cmd/rapide-studio (separate go.mod) is a self-contained web app using Cytoscape.js and WebSockets.
The codebase appears mature and well-organized: every source file has a corresponding _test.go, sub-modules are isolated by their own go.mod files to keep the core dependency-free, and the design decisions (immutable events, non-mutating VectorClock operations, replace directives for local development) are consistent with production Go idioms. No red flags observed.
| Languages | Go, JavaScript, HTML, CSS |
| Runtime | Go 1.22+ |
| Framework | None (standard library only in core) |
| Database | None detected (in-memory posets) |
| Package Manager | Go modules |
| Key Dependencies | Core has zero external dependencies; otelexport uses go.opentelemetry.io/otel v1.43, otlptracegrpc, otlptracehttp, otel/sdk; rapide-studio uses golang.org/x/net for WebSockets and Cytoscape.js on the frontend |
| Build Tool | go build |
| Test Framework | Go standard testing package |