#532: licence install confirmation band + stale-label, seat-meter and audit fixes (v0.6.192) #542

Merged
Cordy merged 8 commits from fix-532 into main 2026-09-14 03:15:16 +00:00
Owner

The "flimsy" install (#532), fixed at all four layers found in triage:

  • Confirmation where the admin looks: green band under the key field — "Key installed." / "Key replaced." (tracked via key presence before the PUT) — auto-hides after 6 s, carried into the admin shell by ensureLicInShell, i18n ×4. Failed installs now use the error banner (#172 pattern) instead of the quiet status line.
  • Seat meter refreshes on install: admLicMeter() was called after remove but not after install — the meter kept the old key's numbers until a page reload.
  • Stale plan label (TDD red): SetKey kept the old key's check-in label while Status() serves label before org — the plan row named the OLD plan until the next monthly check-in. SetKey now clears it.
  • Audited install (TDD compile-red): PUT /api/v1/license routes through the Handler and appends a license-install audit event, matching license-remove (#438); verb registered in the append-only vocabulary — caught by the #433 guard test, which is exactly what it is for.

Full suite green, fence + node gates pass. CHANGELOG v0.6.192.

The "flimsy" install (#532), fixed at all four layers found in triage: - **Confirmation where the admin looks:** green band under the key field — "Key installed." / "Key replaced." (tracked via key presence before the PUT) — auto-hides after 6 s, carried into the admin shell by `ensureLicInShell`, i18n ×4. Failed installs now use the error banner (#172 pattern) instead of the quiet status line. - **Seat meter refreshes on install:** `admLicMeter()` was called after remove but not after install — the meter kept the old key's numbers until a page reload. - **Stale plan label (TDD red):** `SetKey` kept the old key's check-in label while `Status()` serves label before org — the plan row named the OLD plan until the next monthly check-in. `SetKey` now clears it. - **Audited install (TDD compile-red):** PUT `/api/v1/license` routes through the Handler and appends a `license-install` audit event, matching `license-remove` (#438); verb registered in the append-only vocabulary — caught by the #433 guard test, which is exactly what it is for. Full suite green, fence + node gates pass. CHANGELOG v0.6.192.
Witnessed failing on the runner: SetKey keeps the old check-in label
(Status serves label before org, so the plan row names the old plan
until the next check-in), and h.licenseSet with the audit event does
not exist yet (compile-red, house precedent from #428).
feat(#532): licence install confirmation + stale-label and meter fixes
All checks were successful
ci / test-and-build (pull_request) Successful in 52s
d7567e6a77
- green confirmation band (Key installed. / Key replaced.) inside the
  licence card, carried into the admin shell; auto-hides; i18n x4
- admLicMeter() refreshes after install (was remove-only), and a
  failed install uses the error banner (#172 pattern)
- SetKey drops the old check-in label so the plan row cannot name the
  old plan until the next check-in
- PUT /api/v1/license is audited as license-install, matching #438;
  verb registered in the append-only audit vocabulary (#433 guard)

CHANGELOG v0.6.192.
Cordy scheduled this pull request to auto merge when all checks succeed 2026-09-14 03:14:16 +00:00
Cordy merged commit 864468856a into main 2026-09-14 03:15:16 +00:00
Cordy deleted branch fix-532 2026-09-14 03:15:17 +00:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: Cordy/Cairn#542
No description provided.