Skip to content

Add DPI-parametric matched capture harness - #907

Merged
coneilen merged 4 commits into
mainfrom
coneilen-c8r-qualification
Oct 21, 2026
Merged

coneilen merged 4 commits into
mainfrom
coneilen-c8r-qualification

Conversation

@coneilen

Copy link
Copy Markdown
Collaborator

Summary

Add a separate DPI-parametric matched-capture adapter so a future RDP run can bind an exact 1440x900 logical client to its actual DPI-192 physical geometry without weakening the existing 96-DPI adapter. This is capture/test tooling only; it does not change product code, grant a lease, execute a new capture, or promote a parity row.

Changes

  • Preserve S_MATCHED_V12_V1 and add S_MATCHED_V12_DPI_V1 with explicit logical client, physical client, runtime DPI, adjustment/runtime styles, menu state, work-area, placement and no-resampling contracts.
  • Derive the physical frame with AdjustWindowRectExForDpi: 1440x900 logical at DPI 192 becomes a 2880x1800 physical client and 2906x1910 outer window. Refuse undersized physical work areas before worker launch.
  • Query and revalidate the actual owned window DPI/style/menu, normalize physical UIA widths back to logical pixels for 100% zoom, and preserve raw physical image metadata.
  • Add four focused no-desktop groups for exact frame derivation, work-area/scaling refusals, logical zoom normalization and 36-image manifest metadata. Current registration is 181 default / 184 real-seed.
  • Document that DPI-192 RDP evidence can support only observed matched-state/layout/action findings after privacy and paired review, not physical input, local-console rendering, native glyph/raster fidelity or automatic row validation.

Refs #764
Refs #772
Refs #781

Test plan

RED: pwsh -NoProfile -File Tools\windows\Invoke-UiCapture.ps1 -OwnedRoot C:\u8 -OutputDirectory C:\u8\outputs\c8r-rdp-qualified\561be978-20261020T234300Z -JobPath C:\u8\job.json -JobSha256 3DE7D80362653AB03479962CA9124128C058B0D65412C52FF008B6CC74395E85 -FixtureMappingSha256 AA11396F6D1428E416AF8D4CA45F10997A54DD553D81DF4982F3FC6239142D7B -ExecutionMode LIVE_CAPTURE -LeaseReceiptPath C:\u8\receipts\lease-c8r-rdp-561be978.json -LeaseReceiptSha256 AFA87510BA2E409A79B05E78778EEA4E573809A8AB6DDF093314A555AE199F03 -PreflightReceiptPath C:\u8\reports\preflight-180.json -PreflightReceiptSha256 7D91004977F97366DBE4C627358A5651EEACAB882A38365392B46F53407B3506 -> exit 1 before the first image: Actual app DPI is 192, expected 96; official release FAILED_ZERO_SURVIVORS with KERNEL_EXIT_AND_EOF_PROVEN.
GREEN: pwsh -NoProfile -File Tools\windows\Tests\UiCaptureDriver.Tests.ps1 -MatchedDpiContractOnly -ScratchRoot C:\t8\c8r-dpi-final -> exit 0; 4/4 passed, including exact 1456x959 at DPI96, 2906x1910 at DPI192, undersized-work-area refusals, logical zoom normalization and raw no-resampling metadata mutants.
REGRESSION: pwsh -NoProfile -File Tools\windows\Tests\UiCaptureDriver.Tests.ps1 -MatchedScenarioContractOnly -ScratchRoot C:\t8\c8r-v1-final -> exit 0; existing matched V1 contracts executed 8/8 and all passed.

  • pwsh -NoProfile -File Tools\windows\Tests\UiCaptureDriver.Tests.ps1 -NativeBindingsContractOnly -ScratchRoot C:\t8\c8r-bindings-final -> 8/8 passed, including actual resolution of the added Win32 declarations.
  • pwsh -NoProfile -File Tools\windows\Tests\UiCaptureDriver.Tests.ps1 -PreflightReportContractOnly -ScratchRoot C:\t8\c8r-preflight-final -> 1/1 passed.
  • PowerShell parser checks for all five changed scripts -> 0 errors.
  • git diff --cached --check -> passed.
  • git ls-files --eol for all six changed files -> index and working-tree LF before commit.
  • One independent code review found that the image validator accepted a self-consistent but non-contract outer size. The validator now requires the exact adjusted outer/raw dimensions, and the focused manifest group includes a distinguishing outer-size mutation.
  • The behavioral RED came from the preserved live run before the focused contract existed; no missing-API or compile failure is presented as behavioral evidence, so the test-first checklist item remains unchecked.

Not verified: no DPI-parametric GraphCode window was launched after this change; no 2906x1910-capable RDP desktop was available; no images, physical input, local-console rendering, native glyph/raster fidelity, accessibility conformance, authenticated provider behavior or paired macOS review ran. The prior failed RDP attempt remains immutable evidence only of the old 96-DPI refusal and clean teardown. Full registered regression is left to exact-head CI.

make test and make check were not run on this Windows host; the focused Windows harness contracts above are the local evidence.

Checklist

  • I have read the Contributing Guidelines
  • I have signed off my commits (git commit -s) per the DCO
  • Tests pass locally (make test)
  • Code follows the existing style (make check)
  • I added the test/contract before the implementation and observed the intended RED failure

coneilen and others added 4 commits October 20, 2026 17:21
Add a separate DPI-192 matched adapter with logical/physical geometry, raw no-resampling metadata, normalized UIA zoom, and focused no-desktop contracts while preserving the 96-DPI V1 adapter.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Colin Neilens <coneilen@microsoft.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Colin Neilens <coneilen@microsoft.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Colin Neilens <coneilen@microsoft.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Colin Neilens <coneilen@microsoft.com>
@coneilen
coneilen marked this pull request as ready for review October 21, 2026 02:11
@coneilen
coneilen marked this pull request as draft October 21, 2026 02:12
@coneilen
coneilen marked this pull request as ready for review October 21, 2026 02:14
@coneilen
coneilen merged commit 2242758 into main Oct 21, 2026
27 checks passed
@coneilen
coneilen deleted the coneilen-c8r-qualification branch October 21, 2026 02:15
@coneilen coneilen mentioned this pull request Oct 21, 2026
3 of 5 tasks
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.

1 participant