Skip to content

feat(smartqa): verdict UI and cited evidence (CHE-1649) [squash] - #225

Draft
congvc-bot-x99[bot] wants to merge 16 commits into
mainfrom
agent/x99-codex-sol/ac21610a5784
Draft

congvc-bot-x99[bot] wants to merge 16 commits into
mainfrom
agent/x99-codex-sol/ac21610a5784

Conversation

@congvc-bot-x99

@congvc-bot-x99 congvc-bot-x99 Bot commented Oct 21, 2026 •

Copy link
Copy Markdown

Status

Current candidate: PR #225 is OPEN/draft on main at 8c7eb1e2323b981db0ed900f492d359768445a35. Branch: agent/x99-codex-sol/ac21610a5784. Base and current main: 4728e50fa4243c643262d4f6f3359474618179fe.

GitHub readback at 06:55 ICT on October 24, 2026 reports mergeable=MERGEABLE and mergeStateStatus=UNSTABLE.

The checks show:

  • QUEUED: one Python 3.12 job and one Frontend tests and production build job.
  • IN_PROGRESS: one Python 3.12 job, What's New entry, one Frontend tests and production build job, and both Build and smoke-test Python packages jobs.
  • SUCCESS: none.

QUEUED and IN_PROGRESS are not PASS. No hosted check has PASS on this head. Sol reconciles before any fresh independent different-lab review and exact-head OCR.

S1 Batch Discovery Correction — head 8c7eb1e2323b981db0ed900f492d359768445a35

POST /api/chats/results returns compact results to a visible signed-in caller. The route passes record_reads=False to _attach_results.

The helper keeps record_reads=True by default. Detail and update reads still record explicit link shares.

The regression checks the share table, scope=available, and by-link screenshot access for a non-owner. The batch read adds no run_link_shares row. The run stays out of scope=available, and the screenshot request returns 404.

Behavioral RED and GREEN

The same focused command ran before and after the fix:

UV_PROJECT_ENVIRONMENT=/tmp/multica-task-526948190/uv-env UV_CACHE_DIR=/tmp/multica-task-526948190/uv-cache PYTHONDONTWRITEBYTECODE=1 uv run --locked --group dev python -m pytest -p no:cacheprovider -q tests/unit/admin_console/test_chat_api.py::test_chat_results_batch_does_not_share_nonowner_run

RED before the production fix: exit 1. The assertion observed shares == 1, expected 0. Pytest reported 1 failed, 8 warnings in 0.60s.

GREEN after the fix: exit 0. Pytest reported 1 passed, 8 warnings in 0.65s.

Two earlier test-harness attempts were not behavioral evidence. The first used a passing fixture without an evidence URL and failed at assert screenshot_url. The next edit failed collection with a syntax error. I fixed both before the valid RED run. I did not count either attempt as RED.

Adjacent validation on CPython 3.13.12:

UV_PROJECT_ENVIRONMENT=/tmp/multica-task-526948190/uv-env UV_CACHE_DIR=/tmp/multica-task-526948190/uv-cache PYTHONDONTWRITEBYTECODE=1 uv run --locked --group dev python -m pytest -p no:cacheprovider -q tests/unit/admin_console/test_chat_api.py tests/unit/admin_console/test_chat_results_note.py tests/unit/admin_console/test_run_discovery.py

Result: 63 passed, 8 warnings in 16.34s.

UV_PROJECT_ENVIRONMENT=/tmp/multica-task-526948190/uv-env UV_CACHE_DIR=/tmp/multica-task-526948190/uv-cache uv run --locked --group dev ruff format --check apps/admin_console/routers/chats.py tests/unit/admin_console/test_chat_api.py reports 2 files already formatted.

UV_PROJECT_ENVIRONMENT=/tmp/multica-task-526948190/uv-env UV_CACHE_DIR=/tmp/multica-task-526948190/uv-cache uv run --locked --group dev ruff check apps/admin_console/routers/chats.py tests/unit/admin_console/test_chat_api.py reports All checks passed!.

git diff --check passes.

The changed files are apps/admin_console/routers/chats.py and tests/unit/admin_console/test_chat_api.py.

CHE-1649 remains in_progress, Sol-assigned. Keep the PR draft. Stop before ready or merge.

This fix resolves S1. S2 remains open/non-blocking/unwaived. Existing manual/live gates remain BLOCKED/NOT-RUN. All existing Conditions below remain in force.

Previous Status Snapshot — exact head a60a17f05948d0b829c6912f8f04af08cc89a268

Current candidate: PR #225 is OPEN/draft on main at a60a17f05948d0b829c6912f8f04af08cc89a268. Branch: agent/x99-codex-sol/ac21610a5784. Base and current main: 4728e50fa4243c643262d4f6f3359474618179fe.

GitHub readback at 05:40 ICT on October 24, 2026 reports mergeable=true and mergeStateStatus=UNSTABLE. Five hosted checks pass on this exact head: both frontend jobs, both package-smoke jobs and What's New. Both Python 3.12 jobs remain PENDING. PENDING is not PASS. Fresh independent different-lab review and exact-head OCR remain pending. Sol reconciles before dispatch.

Merge commit a60a17f05948d0b829c6912f8f04af08cc89a268 has parents b47bcc061e03f6068779b675a32051e0555cfac3 and 4728e50fa4243c643262d4f6f3359474618179fe. The ort merge completed without conflicts. Relative to b47bcc061e03f6068779b675a32051e0555cfac3, the merge changes only tests/unit/admin_console/test_host_agent_api.py (27 insertions, 13 deletions).

Focused local validation used CPython 3.13.12 and passed: UV_PROJECT_ENVIRONMENT=/tmp/multica-task-1210360155/uv-env UV_CACHE_DIR=/tmp/multica-task-1210360155/uv-cache PYTHONDONTWRITEBYTECODE=1 uv run --locked --group dev python -m pytest -p no:cacheprovider -q tests/unit/admin_console/test_host_agent_api.py::test_real_host_socket_close_enters_grace_and_expires_once → 2 passed, 8 warnings in 1.82s. A first system-Python attempt did not collect because langchain_core was unavailable. This was a collection failure, not behavioral RED. This is a pure main merge, so we claim no new behavioral RED/GREEN. Historical test-first records below remain intact.

Cleanup removed the task-owned uv environment/cache (about 1.2 GiB and 43 MiB) and pytest fixtures (804 KiB). df -B1 /mnt/ssd2 showed 67,090,866,176 bytes available before validation and 71,556,820,992 after cleanup. The apparent increase is 4,465,954,816 bytes. Shared-host activity prevents attribution of that delta to this cleanup alone.

Writing receipt: All 8 advisories are true positives in preserved historical text: 4 semicolon flags, 1 passive-voice flag and 3 synonym-rotation flags. We retain them to preserve historical evidence wording.

CHE-1649 remains in_progress, Sol-assigned. Keep the PR draft. Stop before ready or merge. QA admission and manual/live gates remain BLOCKED/NOT-RUN. Actual 200% zoom/F6, manual keyboard/screen-reader, duplicate-navigation, Keep/Change/Remove and authenticated-live-baseline gates remain open. No accessibility waiver applies. Pixel-diff automation remains NOT-RUN/deferred under the existing contract. Required comparable PNGs and manual review are not waived.

Previous Status Snapshot — exact head b47bcc061e03f6068779b675a32051e0555cfac3

Previous candidate, superseded by merge commit a60a17f05948d0b829c6912f8f04af08cc89a268: PR #225 was OPEN/draft on main at b47bcc061e03f6068779b675a32051e0555cfac3. Branch: agent/x99-codex-sol/ac21610a5784. Base and current main at that readback: cfc51c4c68cc84dec8c8d5576d79bc90622727dc.

GitHub readback at 18:03 ICT on October 23, 2026 reported mergeable=true and mergeable_state=unstable. One frontend check passed. Six checks remained PENDING: both Python 3.12 jobs, the other frontend job, both package-smoke jobs and What's New. PENDING was not PASS. Prior independent verdict and OCR evidence covered earlier heads only. That head needed a fresh independent different-lab delta review and exact-head OCR. Sol was to reconcile before dispatching the existing verifier.

CHE-1649 remained in_progress, Sol-assigned. The PR stayed draft. QA was not run, the resource was not accessed and admission was not claimed. Cheese's separate route-record reply did not include the required X99 route details. Actual 200% zoom/F6, manual keyboard/screen-reader, duplicate-navigation, Keep/Change/Remove and authenticated-live-baseline gates remained open. No accessibility waiver applied. Pixel-diff automation remained NOT-RUN/deferred under the existing contract. Required comparable PNGs and manual review were not waived.

Superseded status snapshot — exact to `eef03b723be7c9aa194a04f229fa788abb64d3c0` only

Current candidate: PR #225 is OPEN/draft on main at eef03b723be7c9aa194a04f229fa788abb64d3c0. Branch: agent/x99-codex-sol/ac21610a5784. Base: 4492602a4969e3f1189c45908b9b94dc76f5a764.

Sol refreshed GitHub at 17:07 ICT on October 23, 2026. All 7 hosted check runs report SUCCESS: both Python 3.12 jobs, both frontend jobs, both package-smoke jobs and What's New. GitHub reads CLEAN. x99-claude-opus (Anthropic, claude-opus-5-5[1m]) independently signed NO CODE BLOCKER for aa5799a2a2580f8d3d05cbe8cd0213b60e4af86c..eef03b723be7c9aa194a04f229fa788abb64d3c0 in comment 01a16832-73aa-77e5-a56b-2c447f8e7ec9. The author is x99-codex-luna-2 (OpenAI). OCR ran inside that review, delegation lane, one file; O1 is P3/non-blocking. This is not code acceptance, a ready transition or merge authority. CHE-1649 remains in_progress, Sol-assigned. Keep the PR draft. Stop before ready or merge.

Opus independently observed the optional root-API negative control RED for the intended reason: --root-api-negative-control failed at preview-path.test.mjs:138:32, 1 !== 0, with chrome-headless-shell 155.0.8059.79. The ordinary preview-path check passed at both / and /preview/pr/70/. A separate Chrome for Testing attempt stopped at Page.navigate before assertions and stays NOT-RUN, not RED. Sol reconciles these reviewer receipts; Sol does not claim a local rerun.

The candidate is not ready for Cheese. Required manual keyboard/screen-reader, actual 200% zoom/F6, duplicate-navigation, Keep/Change/Remove and authenticated-live-baseline evidence remain incomplete. Luna remains the QA executor; Sol verifies admission. Cheese/congvc owns the protected browser/auth resource, and dev team coordinates the existing owner action. Visual pixel diff remains NOT-RUN under the contract's permitted deferred automation; comparable PNGs and handwritten Keep/Change/Remove review remain required. No accessibility waiver applies. The historical evidence below retains its original revision scope and is not an exact-head local rerun claim.

Historical status at aa5799a — not the current candidate

PR #225 is OPEN/draft on main at aa5799a2a2580f8d3d05cbe8cd0213b60e4af86c, branch agent/x99-codex-sol/ac21610a5784, base 4492602a4969e3f1189c45908b9b94dc76f5a764. GitHub reads UNSTABLE and MERGEABLE. The earlier exact-head readback at 14:58 ICT on October 23, 2026 reports 1 PASS and 6 PENDING. The What's New entry passed. The other six checks were PENDING, not PASS. The later exact-head readback at 15:10 ICT on October 23, 2026 reports 3 PASS and 4 PENDING. Both Python 3.12 and both frontend checks are PENDING, not PASS. Both package checks and the What's New entry passed. CHE-1649 remains in_progress, Sol-assigned. This candidate is not code-accepted. Keep the PR draft. Stop before ready or merge.

Conditions

  • Preserve approved design/smartqa-verdicts/rev-5/C.html @ 775e7e72ce0d6058f697b814b0095f6940a28ce8.
  • Preserve F5 selected-evidence-first DOM order, all Keep controls, and one polite verdict announcement. F6 remains a requirement, not a waiver.
  • Manual accessibility gates remain open. Actual 200% zoom, manual keyboard/screen-reader checks, and duplicate-navigation review remain unverified.
  • Keep/Change/Remove review and authenticated live-baseline gates remain open. Visual pixel diff stays NOT-RUN/deferred under the existing review-pack contract, not an added ready blocker. Required before/after PNGs and manual review are not waived. No accessibility waiver applies.
  • Keep N8, N4, V1/V2, O1 and carried P3 dispositions open/non-blocking without waivers. S5 remains retrospective. Historical red command lines remain NOT-CAPTURED.
  • No runner, service, or access mutation. No Android/device work, C00 build, deployment, paid generation, Part B, or design edits.
  • Sol reconciled the prior exact-head independent different-lab delta verdict and in-review OCR for the earlier candidate only. This merge creates a new head. Fresh exact-head checks, independent delta review and OCR remain required.

Change

  • The prior preview-path correction at eef03b723be7c9aa194a04f229fa788abb64d3c0 changes only apps/showcase_ui/scripts/preview-path.test.mjs. It checks that the page-level verdict precedes the timeline at both / and /preview/pr/70/. The HTTP, scoped SSE, WebSocket, image and path-isolation checks remain unchanged. No application or design source changed in that delta.
  • The earlier resync merged main at 4492602a4969e3f1189c45908b9b94dc76f5a764 with merge commit eb71b71bd3bb29c87bb61c0ad70b24dbc0c276ee. The current resync merges main at cfc51c4c68cc84dec8c8d5576d79bc90622727dc in merge commit b47bcc061e03f6068779b675a32051e0555cfac3, whose parents are eef03b723be7c9aa194a04f229fa788abb64d3c0 and cfc51c4c68cc84dec8c8d5576d79bc90622727dc. We did not rebase or force-push. We made no conflict adaptations in the earlier resync.
  • The earlier resync used published PR ci(runners): replace Blacksmith routing (CHE-1922) [squash] #226 source commit d1ec5eee0732c240d521b92908fbb67eafd02dd8 on base 4492602a4969e3f1189c45908b9b94dc76f5a764. This resync merged the current main squash commit from PR ci(runners): replace Blacksmith routing (CHE-1922) [squash] #226 directly. The merge kept current versions and did not restore older copied files.
  • We resolved conflicts in .github/tests/test_runner_routing.py and .github/workflows/ci.yml. We kept current main versions in both files. This removes only the obsolete apt-install-count assertion and equivalent multi-line Chrome-export spelling. .github/workflows/whats-new.yml merged without conflict. Git merged tests/unit/test_workflow_runner_policy.py automatically. The final routing regression still checks owner/fork routing, frontend-only browser routing, the Chrome path and sandbox protections. No application behavior or design changed.

Evidence

Preview-path correction — head eef03b723be7c9aa194a04f229fa788abb64d3c0

  • Hosted RED at aa5799a2a2580f8d3d05cbe8cd0213b60e4af86c: both frontend jobs failed npm run test:preview-path at line 124. Actual: step-row. Expected: verdict-card. The obsolete assertion required the verdict inside the timeline.
  • Hosted GREEN at this head: both frontend jobs report SUCCESS. Job 120331947862 reports TOTAL: 2480 SUCCESS, production and Docker-input build success, and preview-path PASS for both / and /preview/pr/70/. Each path reports root API escapes=0; requests=40. Sol read the exact-head metadata and log. This is hosted evidence, not a local rerun by Sol.
  • The author's local Chrome 150 attempts before and after the edit stopped before assertions with Browser command timed out: Page.navigate. Those attempts are not behavioral RED/GREEN evidence. The hosted green used Chrome 156.
  • The optional --root-api-negative-control invocation remains NOT-RUN, not waived. A successful normal path does not prove that the injected escape still produces the intended failure.
  • All 7 exact-head hosted check runs for EEF reported SUCCESS. This does not sign the manual or authenticated-baseline gates as PASS.
  • Opus's earlier NO CODE BLOCKER in comment 01a167e5-115c-718b-89cd-24aca26ddb59 covers its named delta at aa5799a2a2580f8d3d05cbe8cd0213b60e4af86c, not the preview-path correction or current merge head. The exact-head review was pending at this earlier snapshot. The current head needs a fresh delta/OCR review.

Current main resync — head b47bcc061e03f6068779b675a32051e0555cfac3

  • Merge conflicts affected .github/tests/test_runner_routing.py (add/add) and .github/workflows/ci.yml (content). We kept current main versions in both files. Git merged the workflow-policy test automatically. .github/workflows/whats-new.yml had no conflict. OpenCV library provisioning, Chrome export and sandboxed X99 routing remain present. The merge changed no behavior, so no behavioral red/green applies.
  • python3 .github/tests/test_runner_routing.py -v — 3 tests, OK. UV_CACHE_DIR=/tmp/che-1649-pr225-followup-evidence/uv-cache uv run pytest -q tests/unit/test_workflow_runner_policy.py — 9 passed, 7 warnings.
  • UV_CACHE_DIR=/tmp/che-1649-pr225-followup-evidence/uv-cache uv run ruff format --check . — 922 files already formatted. UV_CACHE_DIR=/tmp/che-1649-pr225-followup-evidence/uv-cache uv run ruff check . — all checks passed.
  • From apps/showcase_ui/, npm test -- --watch=false --browsers=ChromeHeadlessNarrow,ChromeHeadlessWide — TOTAL: 2480 SUCCESS. npm run test:docker-build-inputs — Docker frontend copied-input build passed. npm run build -- --output-path=/tmp/che-1649-pr225-followup-evidence/eef03b72-prod-build — production bundle built successfully. npm run test:smartqa-help — 1 passed. node scripts/check-whats-new-entry.mjs cfc51c4c68cc84dec8c8d5576d79bc90622727dc b47bcc061e03f6068779b675a32051e0555cfac3 — passed. The frontend suite's pretest What's New tests reported 17 passed.
  • Local npm run test:preview-path timed out at Page.navigate before assertions (exit 1). This is not behavioral RED evidence. At 18:03 ICT, one frontend check passed and six checks remained PENDING. PENDING is not PASS.
  • Native executor readback identified X99 Codex 0.155.1 and task workspace-write. We attach exact command logs and readbacks to the CHE-1649 reconciliation comment.

Historical evidence — scoped to the revisions named below

Python format correction — head aa5799a2a2580f8d3d05cbe8cd0213b60e4af86c

  • Before formatting, the same three-file ruff format --check command failed on apps/admin_console/services/qa_results.py, tests/unit/admin_console/test_preview_routes.py, and tests/unit/admin_console/test_qa_results.py (exit 1). ruff format changed only these files. The same check passed afterward (exit 0).
  • Exact-head uv run ruff format --check . passed: 922 files already formatted (exit 0).
  • Exact-head affected tests passed: uv run pytest -q tests/unit/admin_console/test_preview_routes.py tests/unit/admin_console/test_qa_results.py — 68 passed, 8 warnings.
  • Exact-head Part A baseline passed: uv run pytest -q tests/unit/admin_console/test_chat_api.py tests/unit/admin_console/test_failure_ledger_api.py tests/unit/agents/test_flash_runner.py tests/unit/graph/test_checkpoints.py tests/unit/admin_console/test_drain.py — 213 passed, 8 warnings.
  • Exact-head frontend specs passed: CHROME_BIN=/usr/bin/google-chrome npm test -- --watch=false --browsers=ChromeHeadlessNarrow,ChromeHeadlessWide — 2,480 SUCCESS.
  • Exact-head npm run build passed. npm run test:docker-build-inputs passed and reported Docker frontend copied-input build passed. npm run test:smartqa-help passed: 1 test, 0 failures.
  • The local frontend run used Node v22.23.1. The workflow sets Node 22.22.3.

Docker-stage input correction — head aa5799a2a2580f8d3d05cbe8cd0213b60e4af86c

  • The regression reproduced at parent head 6549c2924b3444d6d0c25e8d459f470975301362. From apps/showcase_ui/, npm run test:docker-build-inputs failed with ENOENT for apps/showcase_ui/docs/smartqa-verdicts.md (exit 1).
  • On exact head aa5799a2a2580f8d3d05cbe8cd0213b60e4af86c, the same command from the same package passed. Angular generated the production bundle, and the harness reported Docker frontend copied-input build passed (exit 0).
  • On exact head aa5799a2a2580f8d3d05cbe8cd0213b60e4af86c, npm run test:smartqa-help passed: 1 test, 0 failures (exit 0).

Exact-head local git diff --check passes. At the prior 89206d6d9736806d374d5c323f56ae57cbeec32f correction, the first post-commit test invocation used the repository root. It failed because the root has no package.json. The corrected commands ran from apps/showcase_ui/ and passed. The Docker-input check runs the production Angular build using staged Docker inputs.

On prior head 89206d6d9736806d374d5c323f56ae57cbeec32f, the coordinator's exact-head snapshot at 14:07 ICT on October 23, 2026 showed 1 PASS (What's New entry) and 6 PENDING. The earlier PENDING result was not PASS. The dev team's subsequent readback at 14:32 ICT found 3 PASS and 4 FAIL. What's New entry and both package checks passed. Both Python 3.12 checks and both Frontend tests and production build checks failed. The later readback supersedes the earlier pending status.

The PR-description linter retains three synonym-rotation advisories. All are false positives. fixes describes B4 route remediation, while correction names separate passes. erase refers to sibling result data, while remove refers to UI elements. terminate refers to live polling, while stop refers to the PR gate.

Historical workflow correction and CI snapshot — head 6549c2924b3444d6d0c25e8d459f470975301362

We observed behavioral regressions red before the workflow correction and green with the same commands afterward.

RED: python3 .github/tests/test_runner_routing.py -v
Ran 3 tests; FAILED (failures=2).
GREEN, exact head: python3 .github/tests/test_runner_routing.py -v
Ran 3 tests; OK.

RED: UV_CACHE_DIR=/tmp/che-1649-pr225-followup-evidence/uv-cache uv run pytest -q tests/unit/test_workflow_runner_policy.py
3 failed, 6 passed, 7 warnings.
GREEN, exact head: UV_CACHE_DIR=/tmp/che-1649-pr225-followup-evidence/uv-cache uv run pytest -q tests/unit/test_workflow_runner_policy.py
9 passed, 7 warnings.

Exact-head local checks passed: tests/unit/test_startup_budget.py (3 passed, 7 warnings), targeted Ruff lint and format checks, scripts/check_dependency_sources.py, and git diff --check. We read back the red/green raw outputs from their task-owned logs.

I ran the single foreground gh pr checks 225 -R cheese-work/artemis --watch call on head 6549c2924b3444d6d0c25e8d459f470975301362. The call completed. This table records the push and pull-request runs separately:

Check Push Pull request Result detail
Python 3.12 FAIL (job) FAIL (job) ruff format --check . found three files to reformat: apps/admin_console/services/qa_results.py, tests/unit/admin_console/test_preview_routes.py, and tests/unit/admin_console/test_qa_results.py. The deterministic test step did not run. This correction does not classify these failures as unrelated or change those files.
Frontend tests and production build FAIL (job) FAIL (job) Build frontend from Docker stage inputs failed because apps/showcase_ui/docs/smartqa-verdicts.md was missing. The correction described in this historical snapshot did not change application files.
Build and smoke-test Python packages PASS (job) PASS (job) Both completed.
What's New entry — PASS (job) Completed.
Core / gateway PASS (core, gateway) — Both completed.

On prior head 489ee7d1b609e1607b44517b398ecfcb04716e5e, GitHub cancelled seven jobs after 24 hours waiting for runners. The jobs ran no steps. This was scheduling failure, not a test verdict. This new head executed checks. The hosted failures above remain open and unwaived.

The failures above are the historical 6549c2924b3444d6d0c25e8d459f470975301362 snapshot. They remain recorded and unwaived. They are not current-head results. Published PR #226's seven PASS checks establish source availability only, not independent acceptance of #226 or this candidate.

Historical UI review and correction record — prior heads, retained

B4/N6 correction and N7 capture refresh — head 489ee7d1b609e1607b44517b398ecfcb04716e5e

Status

PR #225 is OPEN/draft on main at 489ee7d1b609e1607b44517b398ecfcb04716e5e. GitHub reads UNSTABLE. GitHub reports seven hosted checks as QUEUED. None is PASS. CHE-1649 remains in_progress, Sol-assigned. Sol reconciles before fresh independent verification and exact-head OCR. No reviewer dispatch occurs in this correction pass. Stop before ready or merge.

Conditions

  • Preserve approved design/smartqa-verdicts/rev-5/C.html @ 775e7e72ce0d6058f697b814b0095f6940a28ce8. No design edits.
  • Preserve F5 selected-evidence-first real DOM order, all Keep controls, and one polite verdict announcement. F6 remains a requirement, not a waiver.
  • No accessibility waiver.
  • No Android/device work, C00 build, deployment, paid generation, or Part B.
  • N8, N4, and carried P3 items remain open/non-blocking, without waivers. S5 remains retrospective. Historical red command lines remain NOT-CAPTURED.

Corrections

  • B4 — RESOLVED on this candidate. Route classification and preview startup failures on a89defe043afb20a873aa8e71fc8bbe75e0d160c were PR regressions. This candidate fixes them while retaining QA authorization and per-session visibility. Preview reads only fixture data. It produces no host/device/provider effects.
  • N6 — RESOLVED on this candidate. At 1440px, the step-title index and evidence image each measure 238px. The 390px and 800px layouts and controls remain.
  • N7 — RESOLVED for capture provenance. Before (a89defe043afb20a873aa8e71fc8bbe75e0d160c) and after (489ee7d1b609e1607b44517b398ecfcb04716e5e) use the same committed runner, fixture, and viewport settings. Initial captures retain natural scroll. Focused evidence captures are separate.
  • B1, N1, N2, N3, and N5 carry forward from the prior reconciled candidate. Their earlier evidence remains in the PR history. This pass does not claim a fresh independent review.
  • The older 0b57aaa36a6a4565dfd43b2dd1cbc920167ae5ba description placed the B1 budget at the first pending result. The current rule starts the budget only after the relevant turn is terminal.
  • The prior blanket classification of route/preview failures as unrelated was incorrect. The current eight-file comparison also has three failures on both the head and a89defe. This evidence does not classify those three as unrelated.

Test Evidence

Behavioral B4 red on a89defe043afb20a873aa8e71fc8bbe75e0d160c and green on 489ee7d1b609e1607b44517b398ecfcb04716e5e used the same command:

UV_CACHE_DIR=/tmp/che-1649-pr225/.uv-cache uv run pytest -q tests/unit/admin_console/test_route_tiers.py tests/unit/admin_console/test_run_discovery.py tests/unit/admin_console/test_preview_routes.py

Red: 3 failed, 77 passed, 8 warnings, 5 errors. Green: 87 passed, 8 warnings. The CHE-1649 correction return includes the raw logs as individual attachments. The complete pack remains at the same-X99 fallback path below.

Behavioral N6 red/green used the same runner and fixture from apps/showcase_ui. Only the UI build and output label differ:

ARTEMIS_SHOWCASE_DIST=/tmp/che-1649-pr225/n7-evidence/before-dist/browser node scripts/layout-audit/screenshots.mjs /tmp/che-1649-pr225/n7-evidence/captures before --chats
ARTEMIS_SHOWCASE_DIST=/tmp/che-1649-pr225/n7-evidence/after-dist/browser node scripts/layout-audit/screenshots.mjs /tmp/che-1649-pr225/n7-evidence/captures after --chats

Red on the a89defe build: exit 1. The index measured 56.0625px and the evidence image 77.640625px, below the 200px minimum. Green on the 489ee7d build: exit 0. Both measure 238px. Raw logs are in the attached pack.

  • Exact-head frontend specs: 2480 SUCCESS.
  • Exact-head Part A baseline: 213 passed, 8 warnings.
  • Exact-head affected B4 tests: 87 passed, 8 warnings.
  • Production build passed. The help-route test passed 1 test.
  • What's New passed 17 tests. The exact-head entry check passed.
  • The eight-file set reports 3 failed, 261 passed, 9 warnings on this head.
  • The same set reports 11 failed, 246 passed, 9 warnings, 5 errors on a89defe.
  • The same three tests fail on both revisions. This evidence does not classify them as unrelated.
  • The prior reviewer-reported cold-start drain-test baseline first returned 1 failed, 210 passed, then passed twice with 211 passed, 8 warnings. This historical flake remains separately disclosed.
  • This pass makes no full unit-suite PASS claim.

Refreshed UI Review Pack

The issue correction return attaches the compact index, runtime receipt, B4/N6 logs, checksums, and selected 390/1440px initial-detail screenshots. The full review-pack-b4-n6.tar.gz archive was not attached after its upload failed. Its SHA-256 is da4eac3bcffb20b1229eb50f24fc9331365765de667d8f6e3c7ca48b6121d167. Same-X99 fallback: /tmp/che-1649-pr225/review-pack-b4-n6.tar.gz.

Capture Viewports Before revision After revision
Run history, initial 390 / 800 / 1440 before-runs-initial-*.png after-runs-initial-*.png
Run detail, initial 390 / 800 / 1440 before-run-detail-initial-*.png after-run-detail-initial-*.png
Selected evidence, focused 390 / 800 / 1440 before-run-detail-selected-evidence-focused-*.png after-run-detail-selected-evidence-focused-*.png

At the initial 390 × 844 view, scrollTop is 0. “Mong đợi” and “Thực tế” are visible. The focused capture is not substituted for the initial view. Visual pixel diff is NOT-RUN. The authenticated live baseline, actual 200% zoom/F6, manual keyboard and screen-reader checks, manual duplicate-navigation review, and Keep/Change/Remove review remain NOT-RUN. Automated geometry and the accessibility tree are not manual verification. F6 and one polite verdict announcement remain requirements.

The runtime readback records X99 Codex 0.155.1. The task ran in workspace-write. The capture runner, fixture, per-capture measurements, full exact-head check logs, and checksums are in the attached pack.

Previous correction record — head c1c6016309a686e61b40449a9d95a6eecbeb0e3c

Status

PR #225 is OPEN and draft on main, branch agent/x99-codex-sol/ac21610a5784. GitHub reads head c1c6016309a686e61b40449a9d95a6eecbeb0e3c as MERGEABLE. Seven checks are PENDING, not PASS. CHE-1649 remains in_progress and Sol-assigned. Stop before ready or merge.

Corrections

  • B1 — RESOLVED on this head. The run-view pending-result budget starts only after the relevant turn is terminal. The regression supplies 40 running/pending polls, then 4 completed/pending polls, then a final result. The final label appears, and terminal pending still has a cap. Transient-error recovery and turn scoping remain covered.
  • N1 — RESOLVED on this head. History and detail suppress the category when the backend category is null. Backend-owned labels and explicit unknown remain. Backend and UI tests cover verified Pass and explicit unknown.
  • N2 — RESOLVED on this head. The code caps history retries and pending-result polls. A failed card shows a retryable per-card error. An unavailable session does not erase successful siblings or retry the whole batch indefinitely. The endpoint retains per-session authorization and visibility checks.
  • N3 — RESOLVED on this head. The selected turn has a page-level verdict/evidence card, real step-index anchors, and individually collapsed earlier steps. The timeline, historical turns, composer, and evidence controls remain. F5 places selected failing-step evidence first in the real DOM. The review fixture uses a usable synthetic payment screenshot.
  • S5 remains RESOLVED, RETROSPECTIVE. Historical red command lines remain NOT-CAPTURED.
  • P3 findings keep their existing non-blocking dispositions. This correction grants no P3 waiver.
    • Static English strings remain.
    • No screen-reader check covers the timeline live-region behavior.
    • The help route remains absolute and serves the full internal guide.
    • Session IDs have no individual length cap, and result reads remain sequential.

Test Evidence

Focused frontend behavioral red: npm run test --ignore-scripts -- --watch=false --include=src/app/components/run-chat/run-chat.component.spec.ts --include=src/app/components/run-library/run-library.component.spec.ts — 20 failed, 298 passed. The same command turned green with 318 passed. The CHE-1649 correction return carries both raw logs.

Affected backend behavioral red: UV_CACHE_DIR=/tmp/che-1649-uv-cache uv run pytest -q tests/unit/admin_console/test_qa_results.py tests/unit/admin_console/test_chat_api.py — 3 failed, 51 passed. The same command turned green with 54 passed, 8 warnings. The CHE-1649 correction return carries both raw logs.

On the exact head, the full frontend suite passed 2,480 tests. The Part A baseline passed 213 tests with 8 warnings. Affected backend tests passed 54 tests with 8 warnings. The production build passed. The help-route test passed. What's New tests passed 17 tests, and the exact-head What's New entry check passed. The synthetic screenshot test passed.

The earlier reviewer-reported baseline first had 1 failed and 210 passed, then passed twice with 211 passed and 8 warnings.
The reviewer reported one isolated drain-test failure as a flake.
This historical disclosure does not classify B4 route/preview failures or the three repeated eight-file failures as unrelated.
The current exact-head Part A baseline passed 213 tests with 8 warnings.

Refreshed UI Review Pack

  • Design: design/smartqa-verdicts/rev-5/C.html @ 775e7e72ce0d6058f697b814b0095f6940a28ce8.
  • Sheet: docs/ux/CHE-1649.yml.
  • Preview: not available.
  • Fixture: synthetic API data. The authenticated live baseline is NOT-CAPTURED because Cloudflare Access blocked X99.
  • Visual pixel diff: NOT-RUN.
Page Width Before — 0b57aaa36a6a4565dfd43b2dd1cbc920167ae5ba After — c1c6016309a686e61b40449a9d95a6eecbeb0e3c
run-history 390 red2-runs-390.png green-runs-390.png
run-history 800 red2-runs-800.png green-runs-800.png
run-history 1440 red2-runs-1440.png green-runs-1440.png
run-detail 390 red2-run-detail-390.png green-run-detail-390.png
run-detail 800 red2-run-detail-800.png green-run-detail-800.png
run-detail 1440 red2-run-detail-1440.png green-run-detail-1440.png
selected evidence 390 red2-run-detail-selected-evidence-390.png green-run-detail-selected-evidence-390.png

The automated capture audit passed at 390, 800, and 1440 px. It found no horizontal overflow. The 390 px detail observation records Agent chưa ghi kết quả nào clipped under the navigation. This geometry observation is not a manual F6 check. The Keep/Change/Remove manual review is NOT-RUN. Actual 200% browser zoom, manual keyboard and screen-reader checks, manual duplicate-navigation review, and the authenticated live baseline remain unverified. F6 and one polite verdict announcement remain requirements, not waivers. Automated geometry and the accessibility tree do not count as manual verification.

The correction2-lint.json artifact was not found in the searched task paths. It was not reconstructed.

Historical Record

Use the previous PR description below only as historical evidence for head 0b57aaa36a6a4565dfd43b2dd1cbc920167ae5ba.

Status

Published implementation head: 0b57aaa36a6a4565dfd43b2dd1cbc920167ae5ba on branch agent/x99-codex-sol/ac21610a5784, based on main. PR #225 is OPEN and draft. CHE-1649 remains in_progress and Sol-assigned. Sol must reconcile this candidate and dispatch fresh, independent, different-lab code verification. The exact-head OCR receipt is also pending. Do not mark ready or merge.

Conditions

  • Approved design: design/smartqa-verdicts/rev-5/C.html @ 775e7e72ce0d6058f697b814b0095f6940a28ce8.
  • Admit sheet: docs/ux/CHE-1649.yml.
  • Binding F5: selected failing-step details are first in the evidence panel's real DOM, matching visual and reading order. CSS-only reorder is insufficient. No accessibility waiver applies.
  • Keep all existing controls and evidence. The sheet authorizes no removals. F6 bottom-tab overlap at actual 200% browser zoom remains unverified. Automated duplicate-destination checks pass. Manual duplicate-navigation review remains NOT-RUN. No waiver applies.
  • Use X99 only. No Android device/testcase work, C00 build, deployment, paid generation, Part B or design edits. Below 800 px, history and detail remain separate phone views.

Change

  • Add Vietnamese display_labels through the existing backend result response. Preserve catalog_key, machine values, classification and persistence semantics. Do not add a frontend label catalog.
  • Implement approved rev-5 C in the mounted /sessions/:id flow: verdict rail, evidence inspector, step index and responsive stack. The selected step remains first in real DOM order.
  • Start the pending poll cap when a turn first becomes pending. Continue live polling through transient request failures. Poll compact history results until pending resolves.
  • Remove only this candidate's unmounted RunView additions and duplicate tests. Preserve the baseline component and its existing no-result regression coverage.
  • Serve the canonical category guidance from the UI build and link to the category anchor. Add the required What's New entry without a label bypass.
  • Preserve message live updates and one explicit polite verdict announcement. Keep controls, evidence, copy actions and retry behavior.
sequenceDiagram
    participant History as RunLibraryComponent
    participant Client as RunsService
    participant Route as /api/chats/results
    participant Results as qa_results
    History->>Client: poll session IDs
    Client->>Route: POST compact result request
    Route->>Results: load result metadata
    Results-->>Route: values and display labels
    Route-->>Client: pending/final result state
    Client-->>History: update cards
    History->>History: continue until pending resolves
Loading

Evidence

  • GitHub reports PR design(smartqa-verdicts): rev-5 — C evidence inspector [squash] #220 as MERGED into main. The approved design merge SHA is 775e7e72ce0d6058f697b814b0095f6940a28ce8. PR feat(smartqa): verdict UI and cited evidence (CHE-1649) [squash] #225 uses main as its base. PR feat(smartqa): verdict UI and cited evidence (CHE-1649) [squash] #225 remains OPEN and draft at the published head above.
  • Runtime: X99 Codex 0.155.1, qualified for workspace-write under CHE-735. git diff --check passes.
  • Observed behavioral red: backend-s1-red.log failed on missing display_labels. frontend-red-final.log shows B1 (expected poll 42, observed 41), B2 (polling stopped at 3) and S6 (expected pending, observed legacy). s2-lineheight-red.log, s9-s10-red-final.log and phone-width-red-exact.log show further behavioral failures. The historical red command line is NOT-CAPTURED. It is not reconstructed. Assertions without observed behavioral red remain retrospective.
  • Frontend green: npm run test --ignore-scripts -- --watch=false — 2468 SUCCESS across ChromeHeadless 800/1440 px.
  • Backend green: the published candidate's Part A baseline — 211 passed, 8 warnings.
  • Focused S1 backend regression: 39 passed, 8 warnings after the backend added Vietnamese labels.
  • Production build: ARTEMIS_BUILD_SHA=0b57aaa36a6a4565dfd43b2dd1cbc920167ae5ba npm run build — PASS.
  • Published What's New check: node scripts/check-whats-new-entry.mjs 775e7e72ce0d6058f697b814b0095f6940a28ce8 0b57aaa36a6a4565dfd43b2dd1cbc920167ae5ba passes. npm run test:whats-new passes 17 tests. npm run test:smartqa-help passes 1 test.
  • GitHub reports 7 CI checks as QUEUED after the push. Queued checks are not PASS. CI is not UX or code approval.

Superseded evidence from the earlier PR body

  • The earlier body identified an A2d candidate at 3c9e580e3aab5441f92c01b1e487eb8d2a69615a. The correction commit above replaces it. congvc-dev merged PR design(smartqa-verdicts): rev-5 — C evidence inspector [squash] #220 at 09:18 ICT on 21 October 2026. 775e7e72ce0d6058f697b814b0095f6940a28ce8 is on origin/main.
  • At admission head 344145317857eda0f0d83bde8c07b77128cff09a, yaml.safe_load, admission structure assertions and git diff --check passed.
  • The initial RunLibraryComponent rows renders the backend result and opens the exact cited turn and step regression failed because RunsService.chat('chat-root') was never called. It printed TOTAL: 2 FAILED, 150 SUCCESS at 12:22 ICT on 21 October 2026. The same RunLibrary spec printed TOTAL: 152 SUCCESS at 12:42 ICT. The historical red command line is NOT-CAPTURED.
  • The compact-phone scroll-anchor regression printed Expected 471 to be 260 and TOTAL: 1 FAILED, 69 SUCCESS at 13:16 ICT. The same test printed TOTAL: 70 SUCCESS at 13:18 ICT.
  • The former exact-head command was ./node_modules/.bin/ng test --watch=false --browsers=ChromeHeadlessNarrow,ChromeHeadlessWide --include=src/app/components/run-chat/run-chat.component.spec.ts --include=src/app/components/run-library/run-library.component.spec.ts --include=src/app/components/run-view/run-view.component.spec.ts. It printed 656 SUCCESS at head 3c9e580e3aab5441f92c01b1e487eb8d2a69615a.
  • The former build command was ARTEMIS_BUILD_SHA=3c9e580e3aab5441f92c01b1e487eb8d2a69615a npm run build. It passed on that old head. The earlier Part A baseline printed 210 passed, 8 warnings. The current 211 passed, 8 warnings result supersedes it.
  • The former baseline command was uv sync --dev --locked && uv run pytest -q tests/unit/admin_console/test_chat_api.py tests/unit/admin_console/test_failure_ledger_api.py tests/unit/agents/test_flash_runner.py tests/unit/graph/test_checkpoints.py tests/unit/admin_console/test_drain.py.
  • The earlier CI readback at 14:20 ICT on 21 October 2026 showed 7 checks QUEUED. The new pushed head also has 7 QUEUED checks.
  • The previous UI review pack used head 3c9e580e3aab5441f92c01b1e487eb8d2a69615a. It captured only its committed head after screenshots and only the admission-head baseline before screenshots. The current pack refreshes the same run-history/detail and before/after captures. The old visual diff was NOT-RUN (CHE-1485 Layer B pending).
  • The previous pack said preview: not available. The UI change preserved the sheet's named data-testid hooks.
  • The previous brief required history/detail to remain separate below 800 px, retry in detail/chat, exact turn/step navigation and before/after captures. The previous UI receipt said actual 200% browser zoom, manual screen-reader/keyboard verification, visual diff, duplicate-navigation check and live authenticated data were NOT-RUN. The current pack records the refreshed checks and remaining limits.
  • The previous body said “OCR: skip at this draft checkpoint, as the issue suggests for UI styling/layout.” That did not satisfy pre-ready OCR. A fresh exact-head receipt remains pending.

Finding dispositions

  • B1 — RESOLVED: the pending poll budget starts at the first pending result. The long-active-to-pending regression passes.
  • B2 — RESOLVED: a transient failed poll does not terminate live polling. The regression passes.
  • B3 — RESOLVED: the required What's New entry exists. The published-head checker passes without a label bypass.
  • S1 — RESOLVED: the backend adds Vietnamese labels through additive metadata. catalog_key and machine values remain unchanged.
  • S2 — RESOLVED: the verdict label uses the approved 32 px/40 px style.
  • S3 — RESOLVED: the candidate drops only its unmounted RunView additions and duplicate tests. Baseline no-result coverage remains.
  • S4 — RESOLVED: mounted flow follows approved C's verdict rail and evidence inspector, including the responsive stack and step index.
  • S5 — RESOLVED, RETROSPECTIVE: the final test asserts the later-turn evidence.turn_id. The recorded red run failed on an earlier label assertion, so no red test reached the identity assertion.
  • S6 — RESOLVED: RunLibrary polls compact history results until a pending result resolves.
  • S7 — RESOLVED: the UI build serves the category-specific help route and anchor. The destination test passes.
  • S8 — DISPOSITION RECORDED: tests without observed behavioral red remain retrospective. Historical red command line stays NOT-CAPTURED.
  • S9 — RESOLVED: the backend supplies Vietnamese labels. The UI wording is Vietnamese. The frontend has no label catalog.
  • S10 — RESOLVED: tests assert one polite verdict announcement. Chat live-message behavior stays polite. The copy notice times out. The UI uses a shared help route. Screen-reader output remains NOT-RUN.

UI review pack — head 0b57aaa36a6a4565dfd43b2dd1cbc920167ae5ba

  • Preview: not available.
  • Design: design/smartqa-verdicts/rev-5/C.html @ 775e7e72ce0d6058f697b814b0095f6940a28ce8.
  • Sheet: docs/ux/CHE-1649.yml.
  • Visual pixel diff: NOT-RUN. Manual comparison used the approved C PNGs and the X99 captures.
  • Captures use the same synthetic API fixture. Cloudflare Access blocked X99 from the authenticated live baseline. The capture run accessed no device.
Page Width Before After
run-history 1440 run-history-1440-before.png run-history-1440-after.png
run-history 800 run-history-800-before.png run-history-800-after.png
run-history 390 run-history-390-before.png run-history-390-after.png
run-detail 1440 run-detail-1440-before.png run-detail-1440-after.png
run-detail 800 run-detail-800-before.png run-detail-800-after.png
run-detail 390 run-detail-390-before.png run-detail-390-after.png
run-detail selected evidence 390 run-detail-390-focused-before.png run-detail-390-focused-after.png
  • Captures show no horizontal overflow. At 390 × 844, selected evidence ends at y=534 and bottom navigation starts at y=788. “Mong đợi” and “Thực tế” are visible. F5 DOM order is selected-step-evidence, evidence-index, evidence-image, other-evidence-steps.
  • The refreshed X99 capture run exits 0. It reports zero document overflow at 390/800/1440 px and no duplicate navigation destinations. The focused 390 px before and after captures both measure 390 × 844.
  • At 390 × 844, selected evidence spans x=29–361 and y=150–336. The evidence panel ends at y=534. Bottom navigation starts at y=788. “Mong đợi” and “Thực tế” appear in the initial detail capture.
  • Dialog focus harness: PASS. Focus enters the dialog and returns to its trigger. Primary controls meet 44 px target assertions. A captured accessibility tree includes verdict and expected/actual labels. This is not manual screen-reader verification.
  • NOT-RUN: actual 200% browser zoom, manual screen-reader output, manual keyboard verification, live authenticated baseline and visual pixel diff. The browser zoom shortcut probe did not change viewport or DPR metrics. Manual duplicate-navigation review and F6 overlap at actual 200% remain unverified. No accessibility waiver applies.
  • Keep: run-history-navigation, run-history-controls, run-history-list, run-card-identity, run-card-actions, run-header-controls, run-header-facts, run-turn-history, run-step-timeline, run-chat-composer — present.
  • Change: run-card-verdict, run-card-result-state, run-card-evidence, run-verdict, selected-step-evidence, run-decisive-evidence-link, run-active-hint, run-blocked-actions, run-detail-content — match the sheet intent.
  • Removed: none.
  • The PR is not code-accepted. Fresh exact-head independent verification and OCR remain pending. The issue remains in_progress and Sol-assigned.

Closes CHE-1649

@congvc-bot-x99 congvc-bot-x99 Bot changed the title docs(smartqa): record verdict UI admission [squash] feat(smartqa): verdict UI and cited evidence (CHE-1649) [squash] Oct 21, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants