Claude-Session: https://claude.ai/code/session_01NptTCFtu7dz2Ru89qHRagN
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_claims—RotateClaimCode(generation bump = single active code; PRESERVESclaimed_at),GetClaim,MarkClaimed(set-only),BumpResetCount.- Delivery:
GET /api/v1/config/{id}issues the first code + bakesweb.claim_code_*into the generated controller.yaml; the report ACK servesclaim {code_hash, generation, issued_at}(allowlisted) + ingestsclaimed(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.