# QA2 desktop postdeployment visual inspection — revision 2

Reviewed the deployed A/B desktop captures at 1440 × 1000. Revision 2 adds targeted captures for the previously obstructed calendar composition and the loaded dashboard/blog top shells. Across the covered states the interface is visually consistent and generally well laid out. These observations describe appearance only; behavioral test results remain separate.

## Deployment and inventory

| Item | Evidence |
|---|---|
| A | https://calendar-stage-20260923.cfd-staging.com/panel/ · Worker version 3efe3760-cd64-4d1e-86a0-bfce234a73a9 |
| B | https://kertujitok-proposal-b-20260927.clientsflowdigital.workers.dev/panel/ · Worker version 0ef9032e-f19d-4245-9f11-da146540d6ae |
| Shared deployed source | e4ae0aea693866642f283f3fe29d48aaaa4bf315 · SHA-256 53dd9da21072aaf6e62291c0baffccd5c0b936f9fefb0146c74b90944b521aea |
| Capture sets | 435 primary PNGs, 5 supplemental PNGs, 80 behavioral/PDF PNGs, and 5 revision-2 PNGs, 525 screenshot files total |
| Visual inventory | All 525 filenames were accounted for. 447 distinct SHA-256 image byte sequences were visually reviewed, one representative per exact-byte group; 78 filenames repeat an already reviewed image. Revision 2 adds four unique image contents because the two blog PNGs are exact-byte duplicates. No perceptual deduplication was used. |
| Capture gaps closed | The supplemental set covers B October overview and October 1/2. Revision 2 adds A sidebar plus background planner after the natural toast timeout, plus loaded dashboard and blog top shells on A and B. |
| Inventory records | [Primary manifest](manifest.json) · [supplement manifest](supplement/supplement-manifest.json) · [behavioral image index](behavioral-screenshots.json) · [aggregate exact-byte map](exact-image-duplicates-revision2.json) · [revision-2 capture manifest](revision2/final-gap-manifest.json) |

## Visual coverage

The table links representative actual screenshots for each covered state; the manifests linked above enumerate the complete file inventory and capture metadata. PASS applies to the appearance in the screenshots linked for that row, not to every underlying interaction.

| Page / viewport / state | Section / segment | Screenshot filename link | Visual observation | Result |
|---|---|---|---|---|
| A + B, 1440 × 1000, initial shell and drawer states | Shell, navigation, open drawer, keyboard focus, Escape close | [A initial shell](A_panel-shell_001_initial-shell-before-scroll.png) · [A focus](A_panel-shell_031_drawer-keyboard-focus.png) · [B initial shell](B_panel-shell_221_initial-shell-before-scroll.png) · [B focus](B_panel-shell_251_drawer-keyboard-focus.png) | Navigation and drawer controls are legible, focus is visible, and Escape returns to the closed state. No shell overlap observed. | PASS |
| A + B, lead list and open new-lead sidebar | New-lead cards, scroll segments, origin sidebar and source history | [A cards](A_new-leads_003_loaded-lead-overlap-1.png) · [A sidebar/history](A_new-lead-sidebar_033_top-loaded.png) · [B cards](B_new-leads_224_loaded-lead-overlap-2.png) · [B sidebar/history](B_new-lead-sidebar_253_top-loaded.png) | Repeated cards and the loaded customer fields remain aligned through the captured scroll segments. The long source-history content wraps and scrolls inside its panel. | PASS |
| A + B, September/October boundary and overlapping dates | Calendar month and week, September 30 through October 2 | [A month overlap](A_calendar-month_048_overlap-2026-10-02.png) · [A week](A_calendar-week_049_week-sep30-oct2.png) · [B September overlap](B_calendar-month_266_overlap-2026-09-30.png) · [B October overview](supplement/B_calendar-october_month-october-2026.png) · [B October 1](supplement/B_calendar-october_day-2026-10-01.png) · [B October 2](supplement/B_calendar-october_day-2026-10-02.png) | Month/week headers and day cards are readable. The B October gap from the initial run is covered by targeted supplemental captures. Overlapping event cards remain separately legible in the inspected views. | PASS |
| A + B, planner states | Empty search, no match, selected contact/reminder, work slider and weekend correction | [A empty/no-match](A_planner_053_empty-search.png) · [A selected/work](A_planner_055_selected-contact-reminder.png) · [B empty/no-match](B_planner_272_no-match.png) · [B work/weekend](B_planner_274_work-slider-weekend-correction.png) | Planner fields and actions fit the dialog. The selected contact, reminder/work options, slider and corrected weekday date are visible without clipping. | PASS |
| A, planner with loaded calendar sidebar after natural toast timeout | Planner dialog and background calendar with sidebar open | [Fresh A sidebar + planner](revision2/A_calendar_sidebar-planner_after-natural-toast-clear.png) | With the normal toast timer elapsed, the planner and loaded Demo Anna sidebar are simultaneously visible, with their fields and main actions aligned. The calendar starts below the planner and the sidebar continues vertically beyond the viewport; this frame does not assess covered calendar content or the full lower sidebar. No toast overlays the captured region. | PASS for captured composition |
| A + B, calendar sidebar open and scrolled | Sidebar top, middle/footer, expanded source history | [A sidebar top](A_calendar-sidebar_057_top-loaded.png) · [A history end](A_calendar-sidebar_104_source-history-42.png) · [B sidebar top](B_calendar-sidebar_275_top-loaded.png) · [B history end](B_calendar-sidebar_316_source-history-36.png) | Long sidebar content is reachable by scrolling; text wraps in the source/history region and the fixed panel controls remain usable in the captures. | PASS |
| A + B, pipeline board and search states | All status columns, horizontal segments, multiline/empty notes, no match, background local status edit | [A all columns](A_pipeline_105_all-status-columns.png) · [A search states](A_pipeline-search_108_long-multiline-note.png) · [A local edit](A_pipeline_123_local-status-edit-sidebar-open.png) · [B all columns](B_pipeline_317_all-status-columns.png) · [B search states](B_pipeline-search_320_long-multiline-note.png) · [B local edit](B_pipeline_335_local-status-edit-sidebar-open.png) | Stage cards remain aligned. The board is horizontally navigable; long and multiline note text fits its card, and the no-match state is readable. No overlap observed. | PASS |
| A + B, pipeline customer sidebar | Sidebar top/bottom and expanded source history | [A sidebar](A_pipeline-sidebar_112_top-loaded.png) · [A history](A_pipeline-sidebar_122_source-history-5.png) · [B sidebar](B_pipeline-sidebar_324_top-loaded.png) · [B history](B_pipeline-sidebar_334_source-history-5.png) | Contact fields and source history are contained in the scrolling sidebar; no visible control collision. | PASS |
| A + B, archive | Archive list, customer sidebar/history, visible restore control | [A archive](A_archive_124_initial.png) · [A restore control](A_archive_137_restore-control-visible.png) · [B archive](B_archive_336_initial.png) · [B restore control](B_archive_349_restore-control-visible.png) | Archive rows and the restore control are visible and readable. The restore action itself was not activated in this read-only visual pass. | PASS |
| A + B, lead creation form | Initial form and lower overlapping scroll segments | [A form](A_lead-form_138_initial.png) · [A lower segment](A_lead-form_140_overlapping-2.png) · [B form](B_lead-form_350_initial.png) · [B lower segment](B_lead-form_352_overlapping-2.png) | Form labels, fields and action area remain aligned across the captured segments. | PASS |
| A + B, dashboard and blog initial top shell | Loaded dashboard KPI/chart area and blog list shell | [A initial dashboard](A_dashboard_141_initial-top-shell.png) · [A loaded dashboard](revision2/A_dashboard_loaded-top.png) · [A initial blog](A_blog_142_initial-top-shell.png) · [A loaded blog](revision2/A_blog_loaded-top.png) · [B initial dashboard](B_dashboard_353_initial-top-shell.png) · [B loaded dashboard](revision2/B_dashboard_loaded-top.png) · [B initial blog](B_blog_354_initial-top-shell.png) · [B loaded blog](revision2/B_blog_loaded-top.png) | The new captures wait for loaded terminal states. Both dashboards render eight KPI cards, funnel/charts and data-availability labels; both show CRM/Leadek as active and Google Ads, Analytics and Search Console as “kapcsolás alatt.” Both blog shells render two aligned entries with draft/published status and action buttons. A shows 65 total leads and B 64; these values are recorded as rendered, not treated as a visual parity defect. Review is limited to the assigned top-shell view, not a full dashboard analytics/blog audit. | PASS for captured top shells |
| A + B, proposals list | Initial list, no-match search and actual matched row | [A list](A_proposal-list_143_initial.png) · [A no match](A_proposal-list_160_search-no-match.png) · [A matched row](A_proposal-list_161_actual-matched-row.png) · [B list](B_proposal-list_355_initial.png) · [B no match](B_proposal-list_375_search-no-match.png) · [B matched row](B_proposal-list_376_actual-matched-row.png) | List rows, amount and status columns align; both the explanatory empty state and a real matched row are legible. | PASS |
| A + B, proposal editor and sheet | Editor, Standard preview, horizontally scrolled sheet/settlement columns, hover/focus/pin/Escape, settlement details and history | [A editor](A_proposal-editor_162_summary-sheet-standard-pdf-loaded.png) · [A rightmost columns](A_proposal-sheet_169_rightmost-settlement.png) · [A focus/Escape](A_proposal-editor_175_focus.png) · [B editor](B_proposal-editor_377_summary-sheet-standard-pdf-loaded.png) · [B rightmost columns](B_proposal-sheet_384_rightmost-settlement.png) · [B focus/Escape](B_proposal-editor_390_focus.png) | Table headers and rows stay aligned while scrolling across columns. Preview and settlement panels are readable; keyboard focus is visible and Escape closes the sidebar. Sample unknown unit prices show blank/“?” cells as represented in the data, with no visible layout break. | PASS |
| A + B, proposal PDF and sidebar | Standard/landscape preview and canvas, history and sidebar top/footer | [A Standard](A_proposal-editor_163_standard-pdf-canvas.png) · [A Landscape](A_proposal-pdf_173_landscape-canvas.png) · [A sidebar/history](A_proposal-sidebar_178_top-footer.png) · [B Standard](B_proposal-editor_378_standard-pdf-canvas.png) · [B Landscape](B_proposal-pdf_388_landscape-canvas.png) · [B sidebar/history](B_proposal-sidebar_393_top-footer.png) | Both orientations show contained page previews with the main heading, item table and totals visible. Sidebars scroll through the captured history without text escaping the panel. | PASS |
| A + B, prototype tabs | Contact, notes, dates, background edit/save, visibility, local save, date/finish, collapse/reopen | [A tabs initial](A_prototype-tabs_187_initial-loaded-before-scroll.png) · [A dates/save](A_prototype-tabs_199_date-and-finish.png) · [A reopened](A_prototype-tabs_201_reopened.png) · [B tabs initial](B_prototype-tabs_402_initial-loaded-before-scroll.png) · [B dates/save](B_prototype-tabs_414_date-and-finish.png) · [B reopened](B_prototype-tabs_416_reopened.png) | Fields and tabs remain aligned through changed visibility, local save feedback and panel collapse/reopen. Demo/local-only notices remain visible. | PASS |
| A + B, prototype ledger | All details open/closed, expanded scroll, background edit/save, visibility, local save, dates, collapse/reopen | [A all details](A_prototype-ledger_203_all-detail-sections-open.png) · [A local save/reopen](A_prototype-ledger_216_local-save.png) · [B all details](B_prototype-ledger_418_all-detail-sections-open.png) · [B local save/reopen](B_prototype-ledger_431_local-save.png) | Accordion rows and ledger controls remain aligned across expanded and collapsed states. The quantity edit displays the corresponding total; the prototype local-save boundary is explicit. | PASS |
| A + B, calendar behavioral visuals | Failed save, sidebar/background planner, version conflict and lost-response retry | [A failed save](../../../final-round2/calendar-browser/screenshots/A-D2-5-failed-save-preserves-input.png) · [Historical obstructed A frame](../../../final-round2/calendar-browser/screenshots/A-D3-3-sidebar-and-background-planner.png) · [Fresh A planner/sidebar](revision2/A_calendar_sidebar-planner_after-natural-toast-clear.png) · [B failed save](../../../final-round2/calendar-browser/screenshots/B-D2-5-failed-save-preserves-input.png) · [B conflict](../../../final-round2/calendar-browser/screenshots/B-D3-3-real-version-conflict.png) | Error and conflict messages fit their surfaces and retain visible form values. The historical A frame is obstructed by a red archive toast across lower calendar cards. A later fresh read-only capture after the normal timer elapsed shows the same planner/sidebar composition without that toast; this confirms a clear recaptured frame, not that the historical frame was unobstructed or that content behind the planner was visible. | Fresh A composition PASS; historical A frame remains a capture limitation; other linked states PASS |
| A + B, proposal behavioral visuals | Eight highlighted proposal scenarios, save failure, conflict, sidebar conflict/recovery, lost response and recovery | [A highlighted scenario 4](../../../final-round2/proposal-browser/A-scenario-4-highlight.png) · [A save failure](../../../final-round2/proposal-browser/A-proposal-save-failure.png) · [B conflict](../../../final-round2/proposal-browser/B-proposal-conflict.png) · [B recovered customer](../../../final-round2/proposal-browser/B-new-customer-recovered.png) | Highlighted cells, side panels, totals and standard preview remain aligned. Error/conflict messaging is readable and the form remains present with entered data in the captures. | PASS |
| A + B, prototype behavioral visuals | Contact/background, date notice and notes for both tabs and ledger prototypes | [A ledger date notice](../../../final-round2/prototypes-browser/A-ledger-date-notice.png) · [A tabs notes](../../../final-round2/prototypes-browser/A-tabs-notes.png) · [B ledger date notice](../../../final-round2/prototypes-browser/B-ledger-date-notice.png) · [B tabs notes](../../../final-round2/prototypes-browser/B-tabs-notes.png) | Local edits and weekday scheduling notice are contained in the panel. Notes and save notice remain readable; the prototype’s local-only scope is displayed. | PASS |
| A + B, dated-payment editor/summary | Contact sidebar, ledger with payment rows and summary preview | [A contact sidebar](../../../final-round2/proposal-payment-browser/A-dated-payments-contact-sidebar.png) · [A ledger](../../../final-round2/proposal-payment-browser/A-dated-payments-ledger.png) · [A summary](../../../final-round2/proposal-payment-browser/A-dated-payments-summary.png) · [B contact sidebar](../../../final-round2/proposal-payment-browser/B-dated-payments-contact-sidebar.png) · [B ledger](../../../final-round2/proposal-payment-browser/B-dated-payments-ledger.png) · [B summary](../../../final-round2/proposal-payment-browser/B-dated-payments-summary.png) | Two dated payment rows, requested/received totals and remaining balance are legible. Summary preview tables remain inside the page. In the tall editor screenshots, the viewport ends partway through the page/panel, so below-fold content is not judged from those frames. | PASS for captured content |
| A + B, PDF scenario 4 | Unknown-price Standard draft, pages 1–2 | [A page 1](../../../final-round2/pdf-scenarios/A/scenario-4/unknown-standard-draft-1.png) · [A page 2](../../../final-round2/pdf-scenarios/A/scenario-4/unknown-standard-draft-2.png) · [B page 1](../../../final-round2/pdf-scenarios/B/scenario-4/unknown-standard-draft-1.png) · [B page 2](../../../final-round2/pdf-scenarios/B/scenario-4/unknown-standard-draft-2.png) | Draft marker, known subtotal, missing-total warning, item table, settlement tables and footer/page numbers are visible. Text and table fit on both pages. | PASS |
| A + B, PDF scenario 6 | Dated payments, Standard and Landscape, pages 1–2 | [A Standard p1](../../../final-round2/pdf-scenarios/A/scenario-6/dated-payments-standard-1.png) · [A Standard p2](../../../final-round2/pdf-scenarios/A/scenario-6/dated-payments-standard-2.png) · [A Landscape p1](../../../final-round2/pdf-scenarios/A/scenario-6/dated-payments-landscape-1.png) · [B Standard p1](../../../final-round2/pdf-scenarios/B/scenario-6/dated-payments-standard-1.png) · [B Landscape p1](../../../final-round2/pdf-scenarios/B/scenario-6/dated-payments-landscape-1.png) · [B Landscape p2](../../../final-round2/pdf-scenarios/B/scenario-6/dated-payments-landscape-2.png) | Both page orientations contain the item totals and settlement/payments. Two received payments and the remaining balance are readable; page numbering is present. | PASS |
| A + B, PDF scenario 8 | Long five-stage proposal, representative Standard pages 1/8/16 and Landscape pages 1/3/5 | [A Standard p1](../../../final-round2/pdf-scenarios/A/scenario-8/long-five-standard-01.png) · [A Standard p8](../../../final-round2/pdf-scenarios/A/scenario-8/long-five-standard-08.png) · [A Standard p16](../../../final-round2/pdf-scenarios/A/scenario-8/long-five-standard-16.png) · [A Landscape p3](../../../final-round2/pdf-scenarios/A/scenario-8/long-five-landscape-3.png) · [B Standard p16](../../../final-round2/pdf-scenarios/B/scenario-8/long-five-standard-16.png) · [B Landscape p3](../../../final-round2/pdf-scenarios/B/scenario-8/long-five-landscape-3.png) · [B Landscape p5](../../../final-round2/pdf-scenarios/B/scenario-8/long-five-landscape-5.png) | Sampled long-description rows wrap inside their cells and page headers repeat. A landscape page with a very long source description has an unusually tall row, but its content remains inside the page and subsequent rows continue. The indexed samples are the only long-PDF pages claimed as visually inspected. Separately, the [final PDF scenario receipt](../../../final-round2/pdf-scenarios/receipt.json) records 44 PDF artifacts and 128 rendered pages (64 per origin), with 128 page-bound records and 0 clipped words; status is PASS_API_PDF while guiStatus is NOT_RUN. These are all-page programmatic text/geometry assertions, not visual inspection of all 128 pages. | PASS for visual samples and programmatic receipt; other pages not individually visually inspected |

## Findings and evidence limits

1. **Historical calendar frame obstruction, now bounded.** The original A-D3-3 frame remains obstructed by a full-width red “A lead az archívumba került” toast across lower calendar cards and controls. A fresh read-only capture after the toast timer elapsed shows the open sidebar and background planner without the toast. That resolves the assigned clean-frame capture gap; it cannot reveal calendar content covered by the planner or establish that the historical screenshot itself was clear. No shared save, archive, or other write was used for this recapture.
2. **Dashboard/blog loaded top shells.** Both origins reached loaded dashboard and blog terminal states in the new capture. These are the assigned initial top-shell/navigation screenshots only. Dashboard cards show CRM/Leadek active and Ads/Analytics/Search Console as “kapcsolás alatt”; A renders 65 total leads and B 64. No data parity requirement was supplied, so the count difference is recorded without being labeled a visual defect. Full analytics or blog editing behavior was not reviewed.
3. **Small browser asset error.** The primary manifest recorded two generic 404 console messages on the proposal-list pages. The supplemental CDP console audit attributes them to each origin’s implicit /favicon.ico request. The audit reports no application exceptions; capture manifests report no application failed requests or HTTP response events at status 400 or above. This remains an asset-level console error, not evidence of an application page request failure. Evidence: [A/B console audit](supplement/console-audit.json).
4. **PDF coverage boundary.** Long-PDF pages beyond the representative visual samples were not individually viewed. The separate API/PDF receipt covers 128 rendered pages with page-bound text/geometry assertions and zero clipped words, while explicitly marking GUI review NOT_RUN. It supplements, but does not replace, visual inspection of the unviewed pages.
5. **Visual-only conclusion.** The separate current suite and 31-check original-data/PDF audit were reported passing by the parent. They are not counted as visual evidence here. No persistent page-layout defect was confirmed in the revised screenshots; this report does not make a blanket product or release acceptance claim.
