hephaestus/crates/heph-core/tests
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
..
convergence.rs feat: multi-tenancy seam (resolve_owner) + hub-setup how-to (v1 prep) 2026-06-04 07:08:39 -07:00
export.rs heph CLI + export 2026-05-31 20:33:59 -07:00
hlc_stamping.rs heph-core: real HLC + persistent device origin (sync 8a) 2026-05-31 21:13:55 -07:00
next_ranking.rs heph-core: "what is next?" ranking (tech-spec §7) 2026-05-31 19:07:16 -07:00
query_surface.rs feat(views): filter views (§8.2) — saved agenda slices 2026-06-03 06:39:07 -07:00
recurrence.rs heph-core: recurrence (roll-forward in place) + per-task logs 2026-05-31 19:14:22 -07:00
search.rs feat(cli): heph project list (+ node.list RPC) 2026-06-02 19:50:19 -07:00
tags.rs feat(core): tags — canonical tag nodes + OR-set tagging (§4, §8.3) 2026-06-03 11:18:51 -07:00
tasks_and_links.rs feat(core): task.set_project — move-to-project with OR-set link semantics (§8.1) 2026-06-03 10:35:16 -07:00
views.rs feat(views): filter views (§8.2) — saved agenda slices 2026-06-03 06:39:07 -07:00
wikilinks.rs feat(tui): <Enter> opens the context editor; reorder views (§8.1/§8.2) 2026-06-03 14:42:08 -07:00