generated from eblume/project-template
|
All checks were successful
Build / validate (pull_request) Successful in 10m34s
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> |
||
|---|---|---|
| .. | ||
| +clippy-prek-hook.infra.md | ||
| +fix-clippy-single-match.bugfix.md | ||
| +project-design.doc.md | ||
| +template-setup.infra.md | ||
| +v1-spec-second-pass.doc.md | ||
| .gitkeep | ||
| extract-heph-nvim.infra.md | ||
| pre-v1-cleanup.infra.md | ||
| v1-hub-prep.doc.md | ||
| v1-hub-prep.infra.md | ||
| v1-inbox-view.feature.md | ||
| v1-list-project.feature.md | ||
| v1-prek-cargo-fmt.infra.md | ||
| v1-prototype.doc.md | ||
| v1-prototype.feature.md | ||
| v1-prototype.infra.md | ||
| v1-quickadd.feature.md | ||
| v1-selfhost-roadmap.doc.md | ||
| v1-tui-move-picker.feature.md | ||
| v1-tui-undo-panels.feature.md | ||