28 lines
5.0 KiB
Markdown
28 lines
5.0 KiB
Markdown
# P7-10 Users
|
||
|
||
**Implemented CONDITIONAL GO; final hygiene and publication pending.** This bounded change preserves `/admin/users` and the existing authenticated administrator API contract. The shell retains the route h1; the owner uses the shared h2 header, h3 create section and existing desktop DataGrid/mobile cards.
|
||
|
||
Publication: **7ecc0d66054787b1e2b3da6da7226b9585c66e34**, normal push/direct verification **13:10:07 UTC**. Working/untracked/static checks passed, but final staged `diff --check` found an extra terminal blank line in the new native fixture. The root incorrectly continued the commit/push after that nonzero result. The immediate follow-up removes that blank line and reruns staged/full-phase whitespace; it does not alter application code, assertions or test outcomes. As-run source hashes in the original results remain historical byte identities.
|
||
|
||
## Findings and changes
|
||
|
||
The previous list catch converted every error to an empty list. Creation serialized a ProblemDetails object as `[object Object]`, and pending actions had no synchronous admission or disposal guard. A successful create could clear newer form values or start another private list read after unmount. Five new ordinary regressions failed against the prior owner while all four original cases passed.
|
||
|
||
The page now uses existing `useViewResource`/`ViewStateNotice` for distinct loading, unavailable/denied and actual empty states. Retry only reloads the list. A native create form retains the exact email/password/Admin payload. All mutations share synchronous admission and current-session/lifetime checks, current-language feedback and a named pending focus target. Creation clears only submitted fields that have not changed; a committed create followed by failed refresh offers read recovery without replay. Accepted deletion HTTP202 is labelled queued, not completed. Server last-admin/self-demotion/exact-email/delete availability remain authoritative.
|
||
|
||
Shared section/surface/density tokens replace owner-specific decorative surfaces. Mobile identities wrap. Desktop two-dimensional grid scrolling is intentional, named and keyboard reachable, with root overflow still checked. Final visual review exposed clipped wrapped action buttons; a strengthened browser assertion failed ordinarily before adding content-sized DataGrid rows. It now verifies every row action fits vertically and a horizontally scrolled action receives visible keyboard focus. Sorting, pagination and row identity remain unchanged.
|
||
|
||
## Evidence
|
||
|
||
- Frontend **18/18 cases in five suites PASS**: ten Users cases, including six additions, plus eight shared confirmation/dialog cases. Original self-demotion warning, other-admin warning, last-admin disable and exact-email confirmation remain ordinary passing cases. Queued-deletion feedback is tested with a mocked202, not an actual deletion.
|
||
- Existing backend **25/25 PASS**, zero skipped, covering Users controllers, API administrator authorization and session-context middleware with the unchanged Release binary.
|
||
- Final native **3/3 PASS**, zero skips/flaky/retries, **13:07:56–13:08:20 UTC**, export **`f6H1YeLZWstdE-yoN5W8B`**. Real isolated HTTP verifies administrator creation/role readback, revoked target sessions, non-admin403, last-admin409, deletion-disabled503 with retained account, GET-only503 recovery and keyboard creation. No reset email or actual account deletion runs.
|
||
- English/Bokmål light/dark samples at320,390,768,1024,1440,1920; seven all-enabled axe scans, zero violations,28 incomplete nodes. These are finite paired samples, not the full Cartesian product.
|
||
- App/browser TypeScript, lint and production build PASS. The intermediate compiler-memoization lint failure and its correction remain retained. [Portable results](evidence/users-results.json) record command/result hashes and explicitly post-run source identities.
|
||
|
||
Both final320px Bokmål dark and1440px English light PNGs were actually inspected after the row correction. The other five images are retained automated evidence. Earlier candidate images and clipped-row RED remain historical evidence. Incompletes include invisible badges/overlapping backgrounds, the inherited roleless shell version badge and MUI DataGrid sort-tooltip wrapper. These are retained accessibility qualifications for the shared-owner integration; no axe rule or application assertion is disabled. Human screen-reader, physical touch/software keyboard, actual zoom and production output checks remain pending.
|
||
|
||
## Preservation and remaining work
|
||
|
||
PRES-A01/E09 and affected shared interaction contracts gain bounded proof without changing the 57-group disposition or33routes. No backend authorization, tenant data, lifecycle flag, CV renderer/PDF/revision or AI safeguard changes. Current admin actions lack a separate recent-auth guard; this change does not claim otherwise. Actual SMTP/reset delivery, accepted deletion completion, provider/model/system operations and production remain unverified. Audit and System follow as separate commits. Phase 8 remains outside scope.
|