Skip to content

bench(citrix): comprehensive deterministic ICA/HDX stand-in qualification (Section 10)#258

Merged
abrichr merged 3 commits into
mainfrom
bench/citrix-ica-hdx-standin
Jul 26, 2026
Merged

bench(citrix): comprehensive deterministic ICA/HDX stand-in qualification (Section 10)#258
abrichr merged 3 commits into
mainfrom
bench/citrix-ica-hdx-standin

Conversation

@abrichr

@abrichr abrichr commented Jul 26, 2026

Copy link
Copy Markdown
Member

This is a DETERMINISTIC STAND-IN, NOT real Citrix ICA/HDX

This PR extends the Citrix ICA/HDX stand-in from a thin smoke test into the comprehensive, fixture-based campaign roadmap Section 10 asks for. It is the license-free alternative to owning a real Citrix environment: a deterministic synthetic fixture that reproduces ICA/HDX conditions in-process and qualifies the pixel/no-DOM actuation contract of the unmodified CitrixWorkspaceBackend against them.

Honesty (brand moat): this is a deterministic stand-in reproducing ICA/HDX conditions. It is NOT real Citrix ICA/HDX — no HDX codecs, no ICA compression, no real Workspace-client transport. No result here is real-protocol acceptance. Real ICA/HDX evidence remains pending the customer-environment (Accuro) lane. Every degradation produces either a correct out-of-band-verified actuation or a safe halt — never a silent incorrect success.

Runs fully in-process (no Docker, no network, no Playwright), so the whole matrix stays green in CI via tests/test_ica_hdx_qualification.py (~2s).

Condition matrix covered (29 scenarios, each a reproducible pass/halt scenario)

  • session launch + application readiness — session_launch_ready (pass) / application_not_ready (halt)
  • reconnect / roaming — reconnect_roaming_identity_change (halt)
  • session lock / unlock — session_unlock_recovery (pass) / session_lock (halt)
  • window minimize / occlusion / move / resize — window_minimize, window_occlusion, window_move_after_acquire, window_resize_after_acquire (halt)
  • DPI + scaling — dpi_scale_consistent (pass) / dpi_anisotropic_uncalibrated (halt)
  • single & multimonitor geometry — single_monitor_geometry, multimonitor_secondary_offset (pass) / multimonitor_ambiguous_window (halt)
  • display compression / codec artifacts — codec_artifacts_mild_legible (pass) / codec_artifacts_severe_illegible (halt)
  • latency / jitter / packet-loss / delayed-frames — delayed_frame_settles (pass) / stale_frame_latency, frame_never_settles (halt)
  • keyboard-layout / IME — keyboard_named_key_ok (pass) / ime_unmapped_key (halt)
  • clipboard restrictions — clipboard_restricted_paste (halt)
  • focus theft — focus_theft_after_acquire (halt)
  • unexpected dialogs / overlays — unexpected_dialog_overlay (halt)
  • ambiguous visual identity — unverifiable_application_identity (halt)
  • stale-frame detection — stale_frame_latency (halt)
  • uncertain submission (no blind retry) — uncertain_submission_no_blind_retry (halt)
  • duplicate prevention — duplicate_write_prevention_one_shot (halt; exactly one legit write)
  • persisted-state readback (out-of-band effect verification) — persisted_state_readback (pass) / optimistic_banner_effect_refused (effect refused)

Enforcement verified on every scenario

Fresh-frame lease; actuation bound to the authorized window/session; target re-resolved immediately before acting; one-shot actuation lease consumed exactly once; DPI/scale refused when anisotropic; focus/occlusion enforced before every input edge; readiness + identity gated on the fresh frame; effect verified out of band (independent record, never the on-screen banner); zero model calls on every path. Reviewable VolatileMaskSpec + check_masks_reviewable prove no volatile mask covers a target/actionability/identity/workflow-state/effect region (with tests for the safe default and a rejected bad spec).

Headline counts

29/29 scenarios passed · 0 silent-incorrect-successes · 0 healthy over-halts · 0 silent writes · 0 model calls. deterministic_standin_accepted: true; ica_hdx_accepted: false (pending_real_environment_customer_lane).

Separate status dimensions (never collapsed into one "Available")

status_manifest.json: backend_shipped = shipped · installed_driver_available = shipped host clients · real_protocol_environment_evidence = pending · managed_execution_available = pending · customer_controlled_execution_available = pending · exact_application_qualification_available = pending · deterministic_standin_qualification = qualified (stand-in, not real ICA/HDX).

Files

  • benchmark/citrix_ica_hdx/fixture.py, run_ica_hdx_qualification.py, README.md, results.json, status_manifest.json
  • tests/test_ica_hdx_qualification.py

DO NOT MERGE pending review.

🤖 Generated with Claude Code

https://claude.ai/code/session_01NyCHrzA1psrKMFfroYbzaM

abrichr and others added 2 commits July 26, 2026 14:15
…tion (Section 10)

Extend the Citrix ICA/HDX stand-in from a thin smoke test into a comprehensive,
fixture-based campaign covering the roadmap Section 10 condition matrix. This is
the license-free alternative to owning a real Citrix environment: a
DETERMINISTIC synthetic fixture that reproduces ICA/HDX conditions in-process
and qualifies the pixel/no-DOM actuation contract of the unmodified
CitrixWorkspaceBackend against them.

DETERMINISTIC STAND-IN, NOT real ICA/HDX. No HDX codecs, no ICA compression, no
real Workspace-client transport. Real-protocol evidence remains pending the
customer-environment (Accuro) lane.

- benchmark/citrix_ica_hdx/fixture.py: deterministic synthetic ICA/HDX frame
  renderer + SyntheticIcaWindowClient (real WindowClient seam) + out-of-band
  FaultDB effect oracle + reviewable VolatileMaskSpec / check_masks_reviewable.
- benchmark/citrix_ica_hdx/run_ica_hdx_qualification.py: 29-scenario campaign
  over the Section 10 matrix (each a reproducible pass/halt scenario), emitting
  results.json + a separate status_manifest.json of the six status dimensions.
- tests/test_ica_hdx_qualification.py: in-process, CI-green campaign + mask tests.

Headline counts (29 scenarios): 29/29 passed, 0 silent-incorrect-successes,
0 healthy over-halts, 0 silent writes, 0 model calls. deterministic_standin
accepted; ica_hdx_accepted=false.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01NyCHrzA1psrKMFfroYbzaM
@abrichr
abrichr merged commit 22fbb3a into main Jul 26, 2026
17 checks passed
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