Update vision to align with manifesto inheritance model
All checks were successful
CI / build (push) Successful in 16s

Restructure vision.md to properly extend the organization manifesto:
- Add personas that extend org personas (Flowmade Developers, Go Teams)
- Add jobs table tracing product jobs to org jobs
- Add product principles extending org principles
- Connect event sourcing to manifesto's "comprehensive activity records" belief
- Add resource consciousness alignment (ARM64, modest hardware)
- Expand non-goals with explicit manifesto references
- Add architecture section showing pattern alignment

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-01-10 15:14:37 +01:00
parent 7d3acd89ed
commit 51916621ea

104
vision.md
View File

@@ -1,14 +1,43 @@
# Aether Vision # Vision
Distributed actor system with event sourcing for Go, powered by NATS. This product vision builds on the [organization manifesto](https://git.flowmade.one/flowmade-one/architecture/src/branch/main/manifesto.md).
## Organization Context ## Who This Product Serves
This repo is part of Flowmade. See [organization manifesto](https://git.flowmade.one/flowmade-one/architecture/src/branch/main/manifesto.md) for who we are and what we believe. ### Flowmade Developers
## What This Is The team building Flowmade's platform. They need reliable, auditable infrastructure for distributed systems without reinventing clustering and event sourcing.
Aether is an open-source infrastructure library for building distributed, event-sourced systems in Go. It provides: *Extends: Agencies & Consultancies (from manifesto) - we are our own first customer.*
### Go Teams Building Event-Sourced Systems
Teams implementing event sourcing and CQRS patterns who want clear primitives that compose well, not a heavyweight framework.
*Extends: Organizations (from manifesto) - they need maintainable, evolvable infrastructure.*
## What They're Trying to Achieve
These trace back to organization-level jobs:
| Product Job | Enables Org Job |
|-------------|-----------------|
| "Build distributed systems without reinventing clustering" | "Delivering solutions faster with maintained quality" |
| "Store events as source of truth with full history" | "Adapting solutions as needs evolve" (replay, rebuild, audit) |
| "Scale horizontally without complexity" | "Reducing developer dependency" (infrastructure handles it) |
| "Isolate concerns with namespaces" | "Software aligned with actual workflows" (logical boundaries) |
## The Problem
Building distributed, event-sourced systems in Go requires assembling many pieces: event storage, pub/sub, clustering, leader election. Existing solutions are either:
- **Too heavy** - Full frameworks with opinions about your domain
- **Too light** - Just pub/sub, you build everything else
- **Not NATS-native** - Bolted-on integrations that don't leverage JetStream properly
## The Solution
Aether provides clear primitives that compose well:
- **Event sourcing primitives** - Event, EventStore interface, snapshots - **Event sourcing primitives** - Event, EventStore interface, snapshots
- **Event stores** - In-memory (testing) and JetStream (production) - **Event stores** - In-memory (testing) and JetStream (production)
@@ -16,22 +45,59 @@ Aether is an open-source infrastructure library for building distributed, event-
- **Cluster management** - Node discovery, leader election, shard distribution - **Cluster management** - Node discovery, leader election, shard distribution
- **Namespace isolation** - Logical boundaries for multi-scope deployments - **Namespace isolation** - Logical boundaries for multi-scope deployments
## Who This Serves Built for JetStream from the ground up, not bolted on.
- **Go developers** building distributed systems ## Product Principles
- **Teams** implementing event sourcing and CQRS patterns
- **Projects** needing actor-based concurrency with event persistence
## Goals These extend the organization's guiding principles:
1. **Simple event sourcing** - Clear primitives that compose well ### Primitives Over Frameworks
2. **NATS-native** - Built for JetStream, not bolted on
3. **Horizontal scaling** - Consistent hashing, shard migration, leader election Provide composable building blocks, not an opinionated framework. Let users build what they need.
4. **Namespace isolation** - Logical boundaries without infrastructure overhead
*Extends: "Design amplification for individual capability"*
### NATS-Native
Built for JetStream from the start. Leverage NATS capabilities fully rather than abstracting them away.
*Extends: "Sensible defaults with available alternatives"*
### Resource Conscious
Efficient on modest hardware. NATS is lightweight; Aether should be too. ARM64 friendly.
*Extends: "Software performs adequately on standard-capability hardware" and "ARM64 optimization"*
### Events as Complete History
Events are the source of truth. State is derived. This directly implements the manifesto belief that "systems should maintain comprehensive activity records, not merely current snapshots."
*Extends: "Systematize information rather than merely documenting it"*
## Non-Goals ## Non-Goals
- Opinionated multi-tenancy (product layer concern) These extend the organization's non-goals:
- Domain-specific abstractions (use the primitives)
- GraphQL/REST API generation (build on top) - **Opinionated multi-tenancy.** Product layer concern - Aether provides namespace primitives, not tenant management.
- UI components (see iris) - **Domain-specific abstractions.** Use the primitives to build your domain model.
- **GraphQL/REST API generation.** Build on top of Aether, not inside it.
- **UI components.** See iris for UI concerns.
- **Replacing human judgment.** Aether automates infrastructure, not decisions.
## Architecture
This project follows organization architecture patterns.
### Alignment
- **Event Sourcing**: Core to this library - events as source of truth
- **Auditability**: Full event history, immutable records, replayable state
- **Loose Coupling**: Event bus for communication, namespaces for isolation
- **Domain Language**: Event types reflect business concepts
### Intentional Divergences
| Area | Standard Pattern | What We Do Instead | Why |
|------|------------------|-------------------|-----|
| Domain modeling | DDD aggregates | Generic Actor abstraction | Library provides primitives, not domain opinions |