Files
OwnCord/docs
J3vbandClaude e13adaf8b1 refactor(b3-4): hub constructor options — required collaborators validated at construction (S-11) (#1470)
ws.NewHub(opts HubOptions) (*Hub, error). The dispositions came from what
each setter's own implementation said, not the plan's guesses:

- The four rejectIfRunning-guarded knobs were construction wiring
  pretending to be mutable state and became validated options with their
  setters deleted: SetLiveKit, SetLiveKitProcess, SetPluginRegistry,
  ConfigureReplay. rejectIfRunning died with its last caller. The plan
  left SetLiveKitProcess "depends on whether the supervised process can
  restart" — it cannot: the restart path relaunches the whole app, so a
  process without a client is now refused at construction.
- The genuinely runtime-mutable stay setters, each with its why:
  SetEventPersister / SetEventStore / SetPluginEventSink are atomic
  hot-swaps internal/app wires one lifecycle stage after Run (the
  persister cannot exist before the hub; the sink consumes the built
  hub's broadcaster), and SetPendingVoiceModFlags is per-user state.
- DB and Limiter are required — before this change ws.NewHub(nil, nil,
  nil) succeeded (api's LiveKit-proxy tests built exactly that hub) and
  a missing collaborator surfaced as a later panic. Services stays
  optional: nil is the degraded fixture half the ws suite builds, and
  forcing a real service layer would change which handler paths the
  frozen tests take.

internal/app.StartRuntime builds the LiveKit client/process first
(buildVoice), passes everything through HubOptions, and starts the
supervised process only once the hub holds it (OC-0019 ordering kept);
construction failure is a startHub boot error now. Test migration:
newTestHub / newTestHubDeps / newTestHubWith keep the old call shape at
~76 sites across both ws package namespaces; the eighteen former setter
sites construct with options; TestNewHub_RequiredCollaborators and
TestHub_LiveKitProcessRequiresClient pin the refusals.

server-boundaries.md gains the after-B3-4 setter table; the plan's B3-4
section gains the dated evidence block.


Claude-Session: https://claude.ai/code/session_01B8dwVLEihnGZYtH9X631F4

Co-authored-by: Claude <noreply@anthropic.com>
2026-08-31 08:47:24 +00:00
..

Documentation index

Every document in docs/ is listed here. If it is not on this page it is not current guidance.

Docs fall into four kinds, and the difference matters when you are deciding whether to trust one: guidance tells you how to do something, reference describes a contract the code actually implements, audits are dated snapshots that were true when written and were never updated, and plans record intent. Read an audit as history, not as status.

Start here

I want to… Read
Run a server quick-start.md
Deploy for real deployment.md
Contribute a change contributing.md
Understand the system architecture/
Report a bug Issues
Ask, or suggest an idea Discussions
Report a vulnerability security.md
Know who can read what trust-model.md

Guidance

Document Covers
quick-start.md Getting a server running with the fewest steps.
deployment.md Production deployment on Windows and Linux.
contributing.md Environment setup, the branch and PR model, coding standards, how to run the checks CI runs.
security.md How to report a vulnerability, and how findings are handled in public vs private.
trust-model.md Who can read what: operator-readable text and files, E2EE media, transport, at rest, what beta does not claim.
livekit-setup.md Standing up the LiveKit SFU for voice and video.
port-forwarding.md Making a server reachable from outside the LAN.
tailscale.md Remote access without port forwarding.
mcp-introspect.md Dev-only MCP server for introspecting a running instance.

Reference

These describe contracts the code implements. If one disagrees with the code, the code is right and the document is a bug.

Document Covers
api.md REST API under /api/v1.
protocol.md WebSocket protocol — frames, sequencing, reconnect.
schema.md SQLite schema and migrations.
server-configuration.md Every server configuration option.
credential-storage.md What the desktop client persists, and where.
../protocol/schema.json Generated-code source of truth, at the repository root because it is owned by neither side. Server/ws/message_types.go and Client/src/lib/protocolTypes.ts are generated from it — never hand-edit either. See ../protocol/README.md.

Architecture

architecture/README.md indexes the blueprints and carries the maintenance rule: each blueprint names its source-of-truth files, and a PR touching those updates the blueprint in the same change.

client-architecture.md is a redirect stub; the live document is architecture/client.md.

Audits — dated, not maintained

Point-in-time snapshots. They are not updated as the code moves, and they are deliberately left alone when paths change, so links from commit messages keep resolving. Anything here may be stale; the ledger and the plan index carry current status.

Audit Scope
audit-2026-08-23-repository-layout.md Repository layout and contributor experience (RL-01RL-22).
audit-2026-08-23-repository-health.md Full repository health.
audit-2026-08-19.md Repo health. States "0 open findings" — untrue since; see the ledger.
audit-test-coverage-2026-08-19.md Test audit (T-*, a separate register from the OC-* ledger).
audit-2026-08-04-docs-and-coverage.md Documentation accuracy and UI/UX test coverage.
audit-2026-08-04.md Security review.
audit-test-coverage-2026-07-25.md Test-coverage audit.
audit-2026-07-19.md Architecture and spec-conformance review.
audit-2026-04-07.md First comprehensive audit.

Plans

plans/README.md indexes every plan with a recorded state — active, partially implemented, design-only, or shipped — and is the authority over a plan's own header, which can drift.

Where status actually lives

Do not read a defect count, or a "what works" claim, out of a document on this page. Status has owners:

Concern Source of truth
Defect status .superpowers/findings-ledger.json (FINDINGS.md is rendered from it)
Security-sensitive defects Private GitHub Security Advisories
Phase order and gates plans/repo-health-roadmap-2026-08-23.md
Current measured baseline plans/b0-baseline-2026-08-25.md
Generated-code contracts CLAUDE.md, "Generated code — never hand-edit"

A CI job checks that documents on this page do not contradict the ledger's counts. Adding a count to a document means adding it to that check's allow-list in scripts/check-doc-counts.mjs.