Skip to content

Issue #151 — MCP admin runbook and visual QA evidence

This evidence closes the documentation and runtime-QA slice of the MCP administration work. It is intentionally scoped to the already merged backend and frontend changes; it does not reimplement either service.

Review anchors

ItemValue
Reviewed main926ece00a2763a2dad706ef049094734831f9c7e
Backend PR#150, merged as dbf9154af18ed781a0d7f9929737ee20b464c14c
Frontend/BFF PR#152, merged as 926ece00a2763a2dad706ef049094734831f9c7e
RuntimeLocal Docker Compose at https://localhost:8443
Evidence issue#151

The reviewed SHA is the exact main head from which this evidence work was started. The screenshots are local-runtime evidence, not a claim about a production deployment.

Acceptance checklist

RequirementResultEvidence
English administration runbookPASSdocs/guide/mcp-administration.md
Japanese administration runbookPASSdocs/ja/guide/mcp-administration.md
Three safe client snippetsPASSCodex CLI, Claude Desktop, and VS Code snippets in both runbooks
Re-authentication and fail-closed boundaryPASSRe-auth screenshots and manual interaction review below
One-time token handlingPASSSanitized desktop/mobile screenshots below
Policy, audit, recovery, and secret boundary guidancePASSBoth runbooks and the manual findings below
Visual QA on real runtimePASS3 themes × 2 viewports, six baseline cases
Sanitized machine-readable result manifestPASSvisual-qa-results.json
Screenshot generation in CINOT ADDEDVisual capture remains a manual check

CLI and runtime checks

The runtime was rebuilt from the reviewed worktree with the MCP profile enabled. Secret contents were never included in commands, output, or this document.

text
docker compose --profile mcp up -d --build openface-mcp mcp-admin       PASS
docker compose --profile mcp build frontend gateway                     PASS
docker compose --profile mcp up -d --no-deps frontend gateway           PASS
docker compose --profile mcp ps                                         all required services healthy
GET http://mcp-admin:8001/health                                        {"status":"ok"}
focused Playwright baseline capture                                    6/6 PASS

The focused Playwright run exercised the real browser route through the gateway. Every baseline case reported status=200, overflow=0, and zero post-reauth page/console or HTTP errors. An authenticated administrator without a valid re-authentication proof receives the expected pre-reauth 428 fresh_reauthentication_required; this was recorded as the authentication boundary, not as a test failure. One-time-secret flows completed on desktop and mobile, and the temporary QA data was cleaned up afterward.

The case-by-case sanitized result and cleanup counts are recorded in visual-qa-results.json. It contains no token, digest, account credential, or other secret value.

Visual matrix

The baseline matrix checks the re-authentication surface and the authenticated administration console. Each image was opened for manual inspection after capture.

ThemeViewportRe-authenticationConsoleResult
Standard/baseDesktop 1440×1000reauthconsolePASS
Standard/baseMobile 390×844reauthconsolePASS
Solarpunk/lightDesktop 1440×1000reauthconsolePASS
Solarpunk/lightMobile 390×844reauthconsolePASS
Cyberpunk/darkDesktop 1440×1000reauthconsolePASS
Cyberpunk/darkMobile 390×844reauthconsolePASS

One-time secret evidence

These two screenshots show the one-time dialog after a local QA token was issued. The token and temporary QA identifiers were redacted before the files were saved. The screenshots prove the warning, the copy/connection/discard controls, and the responsive layout; they deliberately do not expose a credential.

ViewportSanitized dialog
Desktop 1440×1000one-time secret dialog
Mobile 390×844one-time secret dialog

Manual findings

  • The re-authentication boundary is visible before the console is used; the authenticated page is not shown to anonymous users.
  • Desktop and mobile layouts keep the headline, tabs, forms, token controls, one-time dialog, and footer inside the viewport. No horizontal overflow, clipped label, or overlapping control was observed.
  • Standard/base, solarpunk/light, and cyberpunk/dark themes retain readable contrast and recognizable selected-tab/control states.
  • The one-time dialog clearly warns that the value cannot be shown again. Copy, connection-test, and discard actions remain reachable on both tested widths.
  • The saved secret images contain only [redacted for evidence] in the token slot and [redacted QA data] in temporary account/token fields. No live credential is part of the evidence set.

Cleanup and limitations

The local QA run created temporary subjects and tokens only in the local Compose state. Cleanup verification reported four subjects disabled, zero active tokens, and all ten temporary tokens revoked or expired. Registry digests and audit records remain operational data; no token plaintext was retained in the repository or evidence images.

This is manual visual evidence against a local Compose runtime. It does not replace the backend/frontend unit and contract tests already run by PR #150 and PR #152, and visual capture is intentionally not a CI job. Re-run this matrix after a material admin UI change or before a production release.

Released under the MIT License. Third-party components retain their own licenses.