Files
felhom.eu/REPORT.md
T

2.6 KiB

felhom.eu — task reports

Overwrite this file with a summary of the most recent task only (uniform with the other repos; not cumulative). The cumulative hub history lives in hub/CHANGELOG.md; the scripts history lives in scripts/CHANGELOG.md.

Hub v0.50.0 — customer-claim password arc (closes DRILL-day0-vm F-4/F-5) — 2026-07-12

Hub half of the customer-owned dashboard-password gate (controller v0.122.0 is the other half). The customer sets + owns the password via a one-time claim code the hub emails to the registered address; the hub stores only bcrypt(code). DEPLOYED: felhom-hub:0.50.0 live on k3s (ArgoCD synced/healthy, Listening on :8080 at 18:47 CEST).

What shipped

  • internal/claim — the code engine: EnsureIssued (idempotent Day-0/live-box issue+email), Resend (operator rotate), RequestReset (controller-forwarded, 3/day cap), MarkClaimed (set-only + one confirmation email). Plaintext code exists ONLY inside the email send.
  • store.customer_claimsRotateClaimCode (generation bump = single active code; PRESERVES claimed_at), GetClaim, MarkClaimed (set-only), BumpResetCount.
  • Delivery: GET /api/v1/config/{id} issues the first code + bakes web.claim_code_* into the generated controller.yaml; the report ACK serves claim {code_hash, generation, issued_at} (allowlisted) + ingests claimed (set-only); POST /api/v1/claim/reset-request (self-scoped).
  • UI: customer-page Setup tab claim chip + "Kód újraküldése" (POST /configs/{id}/claim-resend).
  • Emails: three Hungarian templates (claim / reset / claimed) via the notify dispatcher.
  • 15 tests (engine, ACK/config, UI); red-proofs for the generation bump + reset-non-DoS proven.

Live validation

Drill box demo-vm-felhom: on the first report after hub 0.50.0 + controller 0.122.0, the hub issued

  • emailed the claim code to the registered address and the ACK delivered the hash — the controller gate flipped ON (proven via the real Cloudflare edge: / → 302 claim page, /api → 401). Observed: the hub issues a code for EVERY reporting managed customer on first report (peti + demo also received emails) — benign, since a pre-v0.122 controller ignores the ACK claim field and has no gate.

Version note

Hub was at v0.49.0; this is v0.50.0. Controller v0.122.0 committed + image built. The floor raise to 0.122.0 is the operator's supervised LAST step (after the drill/demo claim validation) — a gated controller must never reach a box before its hub can deliver the code hash.