Skip to content

Add server compatibility plan - #336

Merged
sibson merged 6 commits into
mainfrom
claude/server-compatibility-plan-dz6ul0
Aug 13, 2026
Merged

Add server compatibility plan#336
sibson merged 6 commits into
mainfrom
claude/server-compatibility-plan-dz6ul0

Conversation

@sibson

@sibson sibson commented Aug 13, 2026

Copy link
Copy Markdown
Owner

Adds docs/server-compatibility-plan.md: a phased plan to close the gap between vncdotool and the many VNC server implementations in the wild.

What's in it

Review notes

The doc is the deliverable here; #334/#335 carry the working spike code and can be reviewed independently. Sphinx only builds .rst, so the markdown file doesn't affect the docs build.


Generated by Claude Code

claude added 6 commits August 13, 2026 11:06
Take stock of the RFB protocol surface currently implemented, map open
issues to concrete compatibility gaps (security types, encodings, pixel
formats, silent hangs), and lay out a phased plan: CI server matrix and
transcript fixtures first, then robust error reporting, then Tight/
VeNCrypt/pixel-format work, then modern protocol features.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01STWkReabCK9sJW2qQ45brM
Add a three-tier access model: a digest-pinned Docker Compose fleet for
Linux servers (identical for local dev and CI), nightly Windows/macOS
hosted runners for UltraVNC and Apple Screen Sharing, and a
community-sourced fingerprint pipeline for servers we cannot run in CI,
with a paved contribution road (scrubbing recorder, manifest, issue
template, self-verifying replay CI, compatibility-table credit).

Also defines gold-file manifests and regeneration rules, the
pinned-on-PR / latest-on-schedule drift policy, and new supply-chain
risks. Spike results section pending two in-flight viability spikes.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01STWkReabCK9sJW2qQ45brM
State that live server tests always take precedence over recorded
transcripts: recordings are a regression floor and last resort, every
server sits at the most-live tier it can occupy, tier assignment is
revisited as promotion paths appear (e.g. RealVNC via QEMU-emulated
Raspberry Pi OS), and live runs are the source of truth for the
compatibility matrix with fixtures refreshed from them.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01STWkReabCK9sJW2qQ45brM
Scheduled OS-runner jobs are wasteful on a quiet repository. Windows and
macOS jobs now trigger only on pushes/PRs path-filtered to code that can
affect server compatibility, plus manual dispatch; document why Windows
containers are not an alternative (GUI-less, no desktop session to
serve, Windows-host-only, and macOS has no containers). The weekly
latest-drift job is scoped to Tier 1 containers only.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01STWkReabCK9sJW2qQ45brM
The Docker Compose fleet spike on claude/spike-server-fleet is green on
GitHub Actions (run 31729730724): three in-repo Dockerfile services,
healthcheck-gated startup, parameterized functional tests, screenshot
artifacts, ~70s total. Local proof used the same test module against
natively started servers. Notable finding: api.connect() requires
api.shutdown() or the reactor thread hangs the process, reinforcing the
Phase 1 robustness theme. Tier 2 spike still pending.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01STWkReabCK9sJW2qQ45brM
UltraVNC on windows-latest works end-to-end (choco install, service
mode, classic ini password obfuscation, real non-black captures). macOS
Screen Sharing works at the protocol level via ARD/DH auth with a
dedicated user, but the runner framebuffer is black, so macOS jobs cover
protocol/auth/input only until the display question is resolved. Both
graduate into Phase 0 under the change-triggered policy; legacy VNC
password on modern macOS is confirmed dead, and the interactive username
prompt crash on TTY-less runners joins the Phase 1 robustness items.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01STWkReabCK9sJW2qQ45brM
@sibson
sibson merged commit 55d2694 into main Aug 13, 2026
9 checks passed
@sibson
sibson deleted the claude/server-compatibility-plan-dz6ul0 branch August 13, 2026 21:35
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.

2 participants