release: 2.2.0 — predictive tracking + self-healing reliability#150
Merged
Conversation
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
TCVinNYC
added a commit
that referenced
this pull request
Jul 5, 2026
…ng gate CI caught two issues on PR #151 before merge: 1. ruff format — 9 files (some from this session's commits, some pre-existing on this long-lived branch, which has never been through CI as a PR before today) had formatting drift. Whitespace/line-wrap only, no behavior change. 2. tests/test_group_framing_worker.py — a real regression from this session's tracking-gate commit (04fdf09): _current_digital_target() now returns None unless _tracking_enabled is set, but this pre-existing test file's shared _make_worker() helper never set it (TargetConfig.mode defaults "off"). Missed because the tracking-gate commit's own verification only ran the test files touching the same code path, not the full suite — group framing has its own dedicated test file. Fixed the shared helper (same pattern already applied to test_camera_worker_framing.py and test_digital_ptz.py). Verified via CI's own per-file sharding (tests/test_*.py individually, matches .github/workflows/ci.yml's documented approach — a single-process full-suite run accumulates native Qt state and aborts late-suite in this local anaconda environment on EVERY file after enough Qt fixtures run, confirmed identical on an unmodified main checkout via a throwaway worktree; CI's clean per-OS runners don't hit this, per the workflow's own comments and PR #150's green history). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
feat/center-stage-output (PR #151) merged into main after this release branch was cut, adding substantial user-facing work on top of the R1-R6 reliability overhaul this CHANGELOG section already documented. Folding it into the same v2.2.0 stable entry rather than a separate release: pose-stable Center Stage framing (dot-anchored crop composition, and the fix for pose being silently dead in model-server mode that blocked it from ever engaging), per-camera NDI output, group-framing, face-pack management, several model-server lifecycle/reliability fixes, and the Windows-only CI failures this branch's own PR surfaced and fixed (real cross-platform layout and clock-resolution bugs, not test flakiness). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Rolls the changelog for v2.2.0, bumps
__version__to 2.2.0, and records the release soak artifact.Release gate evidence (in this PR)
docs/release/artifacts/2026-07-03-8x1080p30-full-model-server-30min-post-R1R2R3-with-server-kill.json— 30-min 8×1080p30 NDI full profile, model-server mode: 29.8 fps median/cam, 0 app-induced drops, detect_active 99.9%, stall_s_max 0.0, e2e 42.4 ms, app CPU 50% median — including a live SIGKILL of the model-server at T+10 min with automatic recovery in ~10 s (served/s dipped one 5-second window).Tag
v2.2.0follows the merge; the release workflow builds installers and the release body gets the hand-written notes.🤖 Generated with Claude Code