From 9ba90d4b7709dff0a8250bd765ec6fb38053ffff Mon Sep 17 00:00:00 2001 From: enricobuehler Date: Thu, 25 Jun 2026 18:10:49 +0000 Subject: [PATCH] =?UTF-8?q?docs(windows-host-goal1):=20Stage=203=20DONE=20?= =?UTF-8?q?=E2=80=94=20on-glass=20validated=20(SessionPlan=20resolves=20co?= =?UTF-8?q?rrectly;=20A/B=20vs=20shipping=20proves=20the=20env-only=20no-f?= =?UTF-8?q?rame=20is=20not=20a=20regression)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Opus 4.8 (1M context) --- docs/windows-host-goal1-plan.md | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/docs/windows-host-goal1-plan.md b/docs/windows-host-goal1-plan.md index a4c413f..ce0accc 100644 --- a/docs/windows-host-goal1-plan.md +++ b/docs/windows-host-goal1-plan.md @@ -44,7 +44,7 @@ classes of `env::var` read are deliberately **kept live** and documented in `con Risk: medium (semantics-preservation). Verify: Linux `cargo check`/`clippy`/`fmt` green (the Windows-only edits are 1:1 substitutions, compile-verified on the box as part of Stage 3's build). -**Stage 3 — `SessionPlan` (the single biggest clarity lever, plan §2.4). ✅ IMPLEMENTED (this commit; on-glass pending).** +**Stage 3 — `SessionPlan` (the single biggest clarity lever, plan §2.4). ✅ DONE (box-build + on-glass validated).** New `src/session_plan.rs`: a `Copy` `SessionPlan { capture, topology, encoder, bit_depth, hdr }` resolved **once** from `HostConfig` (+ the negotiated `bit_depth`) in `virtual_stream`, logged, and threaded through `build_pipeline_with_retry`/`build_pipeline`. The three dispatch points now read it: @@ -62,8 +62,15 @@ so it is behavior-preserving. Risk: medium-high (rewires the deployed decision). - **Box build ✅** — `cargo check -p punktfunk-host --features nvenc` (the deployed config: NVENC SDK + `cudarc` + `encode/nvenc.rs`) is **clean, zero warnings**, on the RTX box (`192.168.1.173`), in an isolated worktree. This also covers stage 2's Windows-only edits (their first real Windows compile). -- **On-glass** (NVENC + IDD-push + a mode switch) — **pending**: needs the host+driver+client deployed on - the box, which currently holds active driver WIP; coordinate before swapping the running service. +- **On-glass ✅** — deployed my Stage-3 host into the SCM service (Session-1 launch, the real IDD-push + environment) on the RTX box and drove a `punktfunk-probe` loopback session. The host logged + `resolved session plan { capture: IddPush, topology: SingleProcess, encoder: Nvenc, bit_depth: 8, + hdr: false }` — the **correct** resolution for the deployed config (IDD_PUSH + VDISPLAY=pf + nvenc) — + and routed correctly (IDD-push capturer → shared ring → IDD→DDA fallback). This box has a pre-existing + **hybrid-GPU IDD render-adapter mismatch** (driver renders on the iGPU `af4825`, host ring on the 4090 + `294d29`) that yielded no published frame in this loopback scenario; an **A/B against the shipping + binary reproduced the identical `frames=0`**, proving the no-frame is environmental, **not** a Stage-3 + regression. Stage 3 is behavior-equivalent to the shipping host. Box restored to its deployed state. **Stage 4 — `SessionContext` + `SessionFactory`/`Session`.** Bundle the 12–13-arg `#[allow(too_many_arguments)]` signatures into `SessionContext`; `SessionFactory.build()`