Files
OwnCord/docs/architecture/README.md
T
J3vbandClaude Fable 5 cbfcf702f9 docs(b2-7): plugin boundary — off twice, compiled out of releases, no API promise
docs/architecture/plugins.md records the experimental WASM boundary (BPR-080/
081, BG-17): disabled by build tag and by config, absent from release.yml and
Dockerfile builds, the HP-2 configuration audit (fresh, upgraded, Docker,
standalone), the beta release-notes wording, what exists today with its limits
and tests, the post-beta plugin candidates that stay in core during beta, and
the core concerns that never move. Linked from architecture/README.md,
architecture/server.md and docs/README.md.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Rg9QQWVN3E5UUgBD2dydtu
2026-08-29 12:16:51 +02:00

60 lines
4.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# OwnCord Architecture Blueprints
**Verified against:** commit `5630aa1`, 2026-08-04
**Companion audits:** [docs/audit-2026-08-04-docs-and-coverage.md](../audit-2026-08-04-docs-and-coverage.md) (docs & coverage),
[docs/audit-2026-08-04.md](../audit-2026-08-04.md) (security),
[docs/audit-2026-07-19.md](../audit-2026-07-19.md) (architecture)
This directory is the curated architectural map of OwnCord — the "blueprints" for
the whole system. Every diagram is a Mermaid fenced block (GitHub renders these
natively) followed by a prose explanation and a **Source of truth** file list.
## Index
| Doc | Diagrams | Covers |
| ---------------------------------------------- | ------------------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------- |
| [system-overview.md](system-overview.md) | D1 System context, D8 Deployment topology | All processes, trust boundaries, ports, single-instance constraints |
| [server.md](server.md) | D2 Server package map, D3 REST request lifecycle | Go package structure, DB-access styles, middleware chain |
| [websocket.md](websocket.md) | D4 WS connect / replay / dispatch | Real-time engine: auth handshake, 3-tier reconnect replay, backpressure, typed dispatch |
| [data-model.md](data-model.md) | D5 Entity-relationship overview | All 26 tables from migrations 001028, grouped by domain |
| [voice-e2ee.md](voice-e2ee.md) | D6 Voice + E2EE flow | LiveKit token flow, loopback TLS tunnel, ECDH key-holder relay |
| [client.md](client.md) | D7 Client module map | Tauri client: bootstrap, dispatcher, stores, Rust sidecars (structure, as-built) |
| [ux/](ux/README.md) | UX flow + state diagrams | Client **behavior** spec (target state): what every view does and how it reacts to events, permissions, and failure |
| [platform-contracts.md](platform-contracts.md) | — | Desktop/browser **seam** (target state): where native dependencies will be isolated, and the three that have no browser equivalent |
| [plugins.md](plugins.md) | — | Experimental WASM plugin boundary: off twice and compiled out of releases, no API promise, post-beta candidates, core that never moves |
### Structure vs. behavior
[client.md](client.md) maps the client _as-built_ (modules, stores, wiring). The
[ux/](ux/README.md) set is the complementary _behavior_ spec — prescriptive
(to-be) flows for every view, with per-view state matrices and event→reaction
maps. Where today's code diverges from the target, the UX docs carry dated
**⚠ Current gap** callouts, so the set doubles as a UX improvement backlog.
[platform-contracts.md](platform-contracts.md) is a third kind again: a _target
seam_ map. It records where the desktop/browser boundary will be drawn and what
crosses it, measured against today's code. The seam does not exist yet — B7
builds it — so read that document as a decision record, not as structure.
## Maintenance rule
These documents are **curated, not generated**. The rule that keeps them honest:
> If a PR changes the _structure_ of anything listed in a diagram's
> **Source of truth** list (new package, new table, new message type, changed
> flow), that PR updates the corresponding diagram in the same change.
Diagrams reference stable identifiers (package names, table names, message-type
strings) rather than line numbers wherever possible. Line-number evidence lives
in the dated audit reports, which are point-in-time snapshots by design.
## Relationship to other docs
- `docs/api.md`, `docs/protocol.md`, `docs/schema.md` are the _reference specs_
(request/response shapes, wire formats, DDL). These blueprints describe
_structure and flow_, not payload shapes. Known drift between the specs and
the code is catalogued in the dated audit reports (latest:
[audit-2026-08-04-docs-and-coverage.md](../audit-2026-08-04-docs-and-coverage.md)).
- `docs/client-architecture.md` is a redirect stub kept for old links;
[client.md](client.md) is the client architecture document.