hephaestus/docs
Erich Blume a0b04eefda
All checks were successful
Build / validate (pull_request) Successful in 10m34s
feat: multi-tenancy seam (resolve_owner) + hub-setup how-to (v1 prep)
The cheap "seam" that keeps the single-owner hub from calcifying, ahead of
the gilbert -> indri bring-up:

- Replace the single-tenant gate `Store::authorize_owner_sub(sub) -> bool`
  with `resolve_owner(sub) -> Option<owner_id>`. The hub auth middleware now
  resolves the token's identity to the owner it may act as (Some -> allow,
  None -> 403). Behavior is identical for the single-owner hub (claim-on-first;
  strangers still 403), but the contract no longer assumes one global owner, so
  serving N owners later is additive, not a rewrite. The per-request owner is
  marked at the exact line where downstream scoping wires through.
- New how-to docs/how-to/set-up-sync-hub.md: stand up the hub and connect an
  existing device as an offline-capable spoke, the data-safe way (Path A: the
  hub adopts the device's identity rather than rewriting the device).

The decision (cheap seam now, defer full multi-tenancy + adoption rewrite) is
recorded in the Adoption + multi-tenant task's context doc. Two enabler gaps
the how-to surfaced (heph daemon hub/spoke service flags; Path-A seeding tool)
are filed as Hephaestus tasks.

Green: 228 tests, clippy -D warnings + fmt + prek clean.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-04 07:08:39 -07:00
..
changelog.d feat: multi-tenancy seam (resolve_owner) + hub-setup how-to (v1 prep) 2026-06-04 07:08:39 -07:00
explanation docs: reframe tech-spec as historical; heph self-hosts its roadmap 2026-06-03 20:19:35 -07:00
how-to feat: multi-tenancy seam (resolve_owner) + hub-setup how-to (v1 prep) 2026-06-04 07:08:39 -07:00
reference infra: extract heph.nvim into its own forge repo 2026-06-03 22:42:39 -07:00
tutorials
index.md
quartz.config.ts
quartz.layout.ts