667ea694c2
Delegate tenant lifecycle to the tenant authority
...
CI Smoke / container-smoke (push) Waiting to run
CI Smoke / host-smoke (push) Successful in 0s
TEN-WP-0005 landed the authoritative metadata update and reversible
retirement contract, so USER-WP-0021-T01's deferred tenant operations are
now implementable without user-engine inventing lifecycle semantics.
TenantManagementPort gains read, update, retire, and reactivate. The HTTP
adapter echoes the record version as an If-Match ETag (never `*`), sends an
Idempotency-Key plus actor/reason/correlation_id, and surfaces
Idempotent-Replay. Authority failures map to redacted domain errors carrying
only the contract's stable error_code; its detail text never crosses the
boundary.
Platform operators get the matching API routes and a CSRF-protected browser
screen that reads the record before mutating it and hides the metadata form
for a retired tenant. Portal OpenAPI moves to 0.3.0 with TenantRecord,
UpdateTenant, and TenantLifecycleChange.
Full suite: 145 tests, 3 external-provider skips.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-16 01:28:02 +02:00
dc2f831c66
Record idempotent registration image
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
2026-08-10 19:54:53 +02:00
d6873b84ae
Make registration start idempotent
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
2026-08-10 19:53:39 +02:00
custodian-sync
21e2b50ed1
chore(consistency): sync task status from DB [auto]
...
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
Updated by fix-consistency on 2026-08-10:
- USER-WP-0022-T05: wait → progress
2026-08-10 19:30:48 +02:00
a94db46de0
Record registration cancellation images
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
2026-08-10 19:30:25 +02:00
d5a5fed69a
Add public registration cancellation
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
2026-08-10 19:27:41 +02:00
a8f190b7b7
Prove registration collision safety
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
2026-08-10 18:37:41 +02:00
b80de5a1f4
Rate limit public registration writes
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
2026-08-10 17:52:53 +02:00
cccca324c1
Record registration rollout gate
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
2026-08-10 17:02:54 +02:00
custodian-sync
73f9b29e73
chore(consistency): sync task status from DB [auto]
...
Updated by fix-consistency on 2026-08-10:
- USER-WP-0022-T01: progress → wait
2026-08-10 16:00:28 +02:00
0669fa7a85
Add public registration browser journey
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
2026-08-10 15:59:50 +02:00
c12bc604a8
Make public registration provisioning resumable
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 2s
2026-08-10 11:32:08 +02:00
c36a09bded
Implement verified public registration flow
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
2026-08-10 11:26:18 +02:00
custodian-sync
b7a57a50a4
chore(consistency): sync task status from DB [auto]
...
CI Smoke / host-smoke (push) Successful in 0s
CI Smoke / container-smoke (push) Successful in 1s
Updated by fix-consistency on 2026-08-09:
- USER-WP-0022-T02: progress → wait
2026-08-09 22:27:35 +02:00
custodian-sync
b7378b7623
chore(consistency): sync task status from DB [auto]
...
Updated by fix-consistency on 2026-08-09:
- USER-WP-0022-T01: progress → wait
2026-08-09 22:27:34 +02:00