Server gap pass: invite-partner subcommand, CLI and drain tests, push info log (D-113, D-114)
- kvitt-server invite-partner: a partner invite by the admin as E-12 does (cancels the pending one, 72 h, link with ?from=<admin>), exit 2 household full, 3 no admin; README lines in server/ and infra/. - Tests: invite-partner, migrate (schema at SCHEMA_VERSION, idempotent), healthcheck (200, 503, nothing listening), serve SIGTERM drain (in-flight request finishes, new connections refused, exit 0; gives up after SHUTDOWN_DRAIN). - Push sender: one info line "push sent" per message with push_type, devices_sent, devices_targeted and 8-character device-id tails (SPEC §8.7 aggregates); per-device line stays at debug. - tools/contracts-check.py: stale TODO(spec) replaced by the §9.11 CS-5 citation; shapes updated for invite_kind (D-086), app_version_name (D-090) and fid (D-096), 134 checks pass. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TQd3pEP9UeN2uifbHknQ7B
This commit is contained in:
@@ -79,6 +79,7 @@ The `bootstrap` and `pair-device` subcommands (SPEC §10.4, AC-1.1, AC-1.6) arri
|
||||
C="docker compose -f infra/dev/compose.yaml --env-file infra/dev/.env.example" # or --env-file infra/dev/.env
|
||||
$C exec server kvitt-server bootstrap # first admin invite: code, link, expiry
|
||||
$C exec server kvitt-server pair-device --user <user_id> # extra device invite for an existing user
|
||||
$C exec server kvitt-server invite-partner # partner invite by the admin, as E-12 (D-113)
|
||||
$C run --rm server migrate # when the server is stopped (entrypoint is kvitt-server)
|
||||
```
|
||||
|
||||
|
||||
Reference in New Issue
Block a user