diff --git a/HANDOFF.md b/HANDOFF.md new file mode 100644 index 0000000..f42a804 --- /dev/null +++ b/HANDOFF.md @@ -0,0 +1,80 @@ +# Run the reviewed local collaboration example + +A developer can use FeatureClipStudio to turn a recorded two-client interaction into a movie and GIF. Start with the preserved LiveSync example: it shows an added card, a fixed-text agent response and the same selected result in both clients. Its title identifies local, in-memory behavior. This example does not establish a cloud service, model response or durable collaboration. + +**Re your request:** make the current tool usable for developer handoff with actual exported proof — the commands below reproduce the scoped example from this checkout. The [evidence index](promotion/evidence/local-livesync-handoff-20260907/README.md) separates the original failures, corrected capture behavior and accepted encoded output. + +## First render + +The observed lane used Windows, Node 22.22.2, the locked Remotion 4.0.474 and Playwright 1.60.0. Use a short checkout path on Windows. Have ffmpeg and ffprobe on PATH; Python 3 is needed only for the evidence verifier. Other host/version combinations were not certified by this run. + +Run from the repository root, choosing fresh output names: + +```sh +npm ci +npm run check +node run-remotion.mjs browser ensure +node run-remotion.mjs render src/index.js WTC-LiveSync out/local-livesync.mp4 --concurrency=2 +ffmpeg -v error -i out/local-livesync.mp4 -vf "fps=15,scale=720:-1:flags=lanczos,split[s0][s1];[s0]palettegen=max_colors=128:stats_mode=diff[p];[s1][p]paletteuse=dither=bayer:bayer_scale=3:diff_mode=rectangle" -loop 0 out/local-livesync.gif +ffprobe -v error -show_streams -show_format -of json out/local-livesync.mp4 +``` + +This uses 54 checked-in captures and authored presentation metadata; it performs no new browser interaction. The [accepted movie](promotion/evidence/local-livesync-handoff-20260907/after-output/readable-livesync.mp4) has 588 video frames, 1920×1080 at 30 fps and 19.600 seconds of video. Its container is 19.648 seconds because of the AAC stream. The [actual GIF](promotion/evidence/local-livesync-handoff-20260907/after-output/readable-livesync.gif) has 294 frames, 720×405 at nominal 15 fps. Both fully decoded without errors. Encoded bytes can differ across environments; the supplied files have exact hashes in the packet. + +The normal source check passed 39 JavaScript parses, 36 tour anchors and 34 prose citations on the reviewed behavior source. This handoff and its evidence index were added afterward; they do not imply another runtime run or shared CI result. + +## Optional: capture the local interaction again + +Recapture deliberately replaces the selected LiveSync frame directory and generated data module. Keep a baseline or backup first. Install the capture browser once: + +```sh +node node_modules/playwright/cli.js install chromium +``` + +Keep the local demo running in a separate terminal: + +```sh +node examples/collab-demo/server.mjs +``` + +The demo listens on port 8930 by default and does not enforce a loopback-only bind. It uses fixed text and in-memory state. In Bash, capture only this example: + +```sh +COLLAB_ONLY=LiveSync node walkthrough.collab.mjs +``` + +In PowerShell, scope that selection to the command and restore the previous value: + +```powershell +$previousCollabOnly = [Environment]::GetEnvironmentVariable('COLLAB_ONLY', 'Process') +try { + $env:COLLAB_ONLY = 'LiveSync' + node walkthrough.collab.mjs + if ($LASTEXITCODE -ne 0) { throw "LiveSync capture failed with exit $LASTEXITCODE" } +} finally { + [Environment]::SetEnvironmentVariable('COLLAB_ONLY', $previousCollabOnly, 'Process') +} +``` + +Then render and export with fresh output names. Stop the demo you started when finished. No provider key, voice pipeline or external product target is required for these commands. + +## Failure and recovery + +Unknown or mixed-unknown selections, whitespace-only values and comma-created empty entries fail before browser/output work. An absent variable or explicit empty string follows the existing refusal to capture all specs without a deliberate broad selection. These two meanings of “empty” are distinct. + +An unavailable demo or exhausted action failure now exits nonzero, preserves diagnostic output and leaves the generated data module unchanged. Attempted selected frame directories can be incomplete, including earlier specs in a multi-spec run; they are not rolled back. Restore the demo/control and explicitly recapture the selected example successfully before rendering it. Existing swallowed `waitText` timeouts remain a limitation, so exit success alone does not prove every desired text assertion. + +## What the evidence supports + +The accepted framing makes the selected control/result and both client labels readable in the actual movie and GIF. The longest card has a tight lower margin. The previous card is partly cropped, and early camera travel does not show every complete stream state. These are disclosed presentation limits, not synchronization latency measurements. Audio was not listened to; no full continuous-motion or human-comprehension grade was granted. + +The default `npm run render:example` still renders historical WT-NodeRoom inputs and retains a separate output-quality hold. LiveSync acceptance does not certify other examples, responsive browser behavior, physical devices, provider behavior or production. The recorded install reported 12 dependency advisories (2 low, 10 high), which remain unresolved. Full criterion and overall grades remain null. + +Verify the packet and its selected current source bindings from the repository root: + +```sh +python promotion/evidence/local-livesync-handoff-20260907/verify.py +python promotion/evidence/local-livesync-handoff-20260907/verify.py --source-root . +``` + +The first command checks exact packet bytes. The optional source check accepts only each row's demonstrated Git checkout newline transformation; it does not rerun capture/render or certify the whole repository. The evidence index records raw versus minimized receipts and which historical artifacts remain operator-local. diff --git a/README.md b/README.md index 9cc260d..2e8d4c3 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,14 @@ Not a single final‑state "hero shot" — the viewer follows the *whole flow*. --- +For the reviewed local example, use the [current developer handoff](HANDOFF.md): locked setup, explicit capture, accepted exports and known limits. + +## Local collaboration presentation + +The two-client `LiveSync` example uses `layout: "stacked"` and the existing per-step zoom metadata to keep the acted control or relevant result visible in both labelled clients. Its persistent title identifies fixed text and in-memory state. The other examples keep their existing framing. + +The checked-in LiveSync presentation metadata was projected onto the same 54 captured images; it does not record another action, measure synchronization latency, or establish durable state. A future explicit LiveSync capture obtains zoom points from the spec's selectors. Output readability must be judged from the actual MP4 and 720-pixel GIF, including the complete final result, rather than from readable native screenshots. The inherited `waitText` limitation and the capture failure/recovery behavior below remain unchanged. + ## Storyboard first The default quality bar is not "nice zooms." A walkthrough should have a clear @@ -1248,13 +1256,26 @@ Ships with a **worked example** (the live-collab counterpart to the single-pane `useMutation().withOptimisticUpdate`, `ctx.scheduler` + `internalMutation` for the streamed agent) — the production reference, mapped 1:1 to the local demo. -Reproduce it: +After `npm ci` and `npx playwright install chromium`, keep the demo server running +in one terminal and run the selected capture in another: ```bash -node examples/collab-demo/server.mjs # local demo on :8930 (no install, no login) -node walkthrough.collab.mjs # multi-pane capture: Client A + Client B +node examples/collab-demo/server.mjs # terminal 1: local demo on :8930 +COLLAB_ONLY=LiveSync node walkthrough.collab.mjs # terminal 2 (Bash): Client A + Client B node run-remotion.mjs render src/index.js WTC-LiveSync out/collab.mp4 # then the same two-pass ffmpeg palette → assets/feature-collab.gif ``` +In PowerShell, set `$env:COLLAB_ONLY = "LiveSync"` before `node walkthrough.collab.mjs`. +The demo uses local, in-memory state and fixed text; it does not call a model or +prove durable Convex behavior. Its listener is not restricted to loopback by the server. + +Every selected ID must exist. Unknown or empty selector entries fail before the +browser starts or capture files change. An exhausted navigation/action failure +keeps the diagnostic PNGs, exits nonzero and does not write generated data or print +the completion marker. Selected frame directories can contain partial output; +this is not automatic rollback. Preserve the failed evidence and re-capture the +selected walkthrough successfully before rendering it. Configured retry counts +are unchanged; a successful command still needs its actual captured states checked. + Panes + steps live in `walkthrough.collab.specs.mjs`; the 2-up renderer is `src/Walkthrough2up.jsx`. See **[`STACK_GUIDELINES.md`](STACK_GUIDELINES.md)** for why Convex + React demos need this and Streamlit doesn't. @@ -1355,8 +1376,9 @@ against a real, deployed app (not just a demo harness). -Specs: `walkthrough.noderoom.specs.mjs`. Capture: `node walkthrough.collab.mjs` (the NodeRoom -specs are imported into the collab specs). Render: `node run-remotion.mjs render src/index.js WTC-NRsolo` +Historical examples use `walkthrough.noderoom.specs.mjs`, imported into the collab specs. +Re-capturing requires an explicitly selected current spec ID in `COLLAB_ONLY` and +its intended application running; a bare capture command is refused. Render: `node run-remotion.mjs render src/index.js WTC-NRsolo` / `WTC-NRsync` / `WTC-NRfresh` / `WTC-NRdeepDive`. ## Designing for specific stacks diff --git a/docs/START_HERE.md b/docs/START_HERE.md index 84e8b7e..8b99653 100644 --- a/docs/START_HERE.md +++ b/docs/START_HERE.md @@ -313,9 +313,14 @@ hand.` and the run prints `WALKTHROUGH_CAPTURE_DONE`. **Output** — `src/walkthrough.data.js`, overwritten whole. Its sibling generated files follow the same rule: `src/walkthrough.collab.data.js` (from `walkthrough.collab.mjs`), `src/walkthrough.roomos.data.js`, `src/walkthrough.visual.data.js`. -**Failure behavior** — the file is written even if some specs failed all their -retries; a failed spec contributes an empty `steps` array rather than aborting the -others. Check the console for `attempt N/M err:` lines before trusting a render. +**Failure behavior** — the single-pane writer described here can write the file +even if a spec exhausted its retries. Check its `attempt N/M err:` lines before +trusting a render. The collaboration driver has a stricter command boundary: +every selected ID must exist, and an exhausted navigation/action failure exits +nonzero before the generated module is written or its completion marker printed. +Partial/failed PNGs remain for diagnosis; the previously generated module is not +rewritten, but earlier selected frames are not automatically restored. Re-capture +that selection successfully before rendering it. **One more writer, and it is worth knowing about:** `clip.mjs:31` (`writeFileSync("src/walkthrough.data.js"`) **rewrites this same file in place**, changing each step's `hold` so the picture lasts exactly as long as its spoken narration. That is the only other thing that edits generated data. diff --git a/docs/codebase/INTEGRATIONS.md b/docs/codebase/INTEGRATIONS.md index 4a584e9..754b023 100644 --- a/docs/codebase/INTEGRATIONS.md +++ b/docs/codebase/INTEGRATIONS.md @@ -19,10 +19,15 @@ on different dev servers because the url is per-spec. Streamlit accommodation, and the fallback exists because scoping to a selector that does not exist made every step fail while the run still reported success. -**Failure mode:** the app is not running → `page.goto` throws a connection error and -the spec's attempt fails into the forensics path (`zz-fail.png`). The app is running -but slow → the `ready` proof string times out after 30 s. Neither can produce a -green run with empty frames; that is the whole point of the `ready` field. +**Failure mode:** the single-pane driver uses its `ready` proof string to check +that the intended app is present. In the collaboration driver, navigation and +thrown action errors enter the per-pane forensics path (`zz-fail-p.png`). An +exhausted attempt closes its contexts/browser and exits nonzero before writing +generated data or printing completion. Unknown selection entries are rejected +before browser launch or output changes. This does not make every semantic check +strict: the existing collaboration `waitText` helper still swallows its timeout, +so final captured state needs independent observation. Partial selected PNGs are +diagnostics, not a rollback or a verified render input. **Setup:** `npx playwright install chromium`. `npm ci` alone is not enough. diff --git a/promotion/evidence/local-livesync-handoff-20260907/.gitattributes b/promotion/evidence/local-livesync-handoff-20260907/.gitattributes new file mode 100644 index 0000000..6254495 --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/.gitattributes @@ -0,0 +1 @@ +* -text diff --git a/promotion/evidence/local-livesync-handoff-20260907/README.md b/promotion/evidence/local-livesync-handoff-20260907/README.md new file mode 100644 index 0000000..5d7bdcb --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/README.md @@ -0,0 +1,52 @@ +# Reviewed LiveSync example and capture-status evidence + +Start with the [developer handoff](../../../HANDOFF.md). A developer can render the preserved two-client example, or deliberately recapture the local demo and recover from a failed capture. This packet supports those scoped jobs; it is not a whole-product readiness certificate. + +The [movie](after-output/readable-livesync.mp4) and [actual palette GIF](after-output/readable-livesync.gif) are the accepted encoded files. Their [independent final review](judgments/E6o_FEATURECLIPSTUDIO_READABILITY_FINAL_JUDGE.md.txt) covers selected controls/results, both clients and the persistent local/fixed-text/in-memory disclosure. Both files fully decoded. Audio listening, every motion frame and human comprehension remain unverified. + +## Read the evidence by claim + +| Claim | Physical payload | +|---|---| +| Normal locked setup and current source check | [Install output](setup/normal-ci.stdout.txt), [Node version](setup/node-version.stdout.txt), [normal check](checks/normal-check.stdout.txt). The install recorded 12 advisories; they remain unresolved. | +| Original false success | [Unknown selector exit](before-status/unknown-selector-command.json), [unavailable demo exit](before-status/unavailable-demo-command.json), [original completion output](before-status/unavailable-demo.stdout.txt). These are historical failures, not passing examples. | +| Corrected selection boundary | [Six selector cases](after-status/02-selection-negatives/selection-semantics.json), including absent/explicit empty versus whitespace/comma semantics. | +| Failed work exits with its cause; explicit recovery succeeds | [Unavailable demo](after-status/04-unavailable/unavailable-command.json), [missing control](after-status/05-missing-control/missing-control-command.json), [successful recapture](after-status/06-recovery/selected-livesync-command.json), [native observation](after-status/native-observation.json), [54 native-buffer/generated/disk bindings](after-status/06-recovery/native-generated-disk-bijection.json). | +| Same native captures, changed presentation | [Labelled prior boundary](scope/change-boundary.png), [state contract](scope/change-boundary.md.txt), [eight selected legacy comparisons](checks/legacy-parity.json). | +| Actual encoded outputs | [Render command](encoding/render-readable-command.json), [documented GIF command](encoding/documented-gif-command.json), [movie probe](encoding/readable-ffprobe.stdout.txt), [GIF probe](encoding/gif-probe.stdout.txt), [movie decode](encoding/readable-decode-command.json), [GIF decode](encoding/gif-decode-command.json). | +| Final source/process closure | [Stage04 summary](encoding/stage04-receipt.json), [stage05 receipt](encoding/stage05-receipt.json), [stage05 closing guard](encoding/stage05-closed.json). Command success itself does not grant visual acceptance. | + +The 54 native PNGs are already part of the repository's `public/wt-collab/LiveSync` cohort. They are not recopied here. The first render reuses those inputs; it is not another native interaction, a synchronization-latency measurement or a durable-state result. + +## Actual before and after pixels + +These pairs use the same output frame and preserved input sequence: + +| Frame | Before | After | +|---|---|---| +| MP4 0 | [Before](before-output/repaired-frame-0.png) | [After](after-output/movie-0.png) | +| MP4 147 | [Before](before-output/repaired-frame-147.png) | [After](after-output/movie-147.png) | +| MP4 294 | [Before](before-output/repaired-frame-294.png) | [After](after-output/movie-294.png) | +| MP4 587 | [Before](before-output/repaired-frame-587.png) | [After](after-output/movie-587.png) | +| Actual GIF 293 | [Before](before-output/gif-frame-293.png) | [After](after-output/gif-293.png) | + +All eight settled steps have MP4/GIF samples: [1](after-output/movie-26.png), [2](after-output/movie-96.png), [3](after-output/movie-156.png), [4](after-output/movie-210.png), [5](after-output/movie-294.png), [6](after-output/movie-372.png), [7](after-output/movie-432.png), [8](after-output/movie-518.png). Their GIF files use the corresponding nominal half-frame numbers. [GIF216](after-output/gif-216.png) retains the longest card's lower border with tight clearance. [Early402](after-output/movie-402.png), [408](after-output/movie-408.png) and [420](after-output/movie-420.png) preserve the disclosed camera travel: not every early stream state is fully visible. The previous card is partly cropped in result focus. Fixed output dimensions do not prove responsive browser behavior. + +The [historical assessment](judgments/E6o_FEATURECLIPSTUDIO_CRITERION_ASSESSMENT.json) stays a distinct prior observation. The [scoped successor](judgments/E6o_FEATURECLIPSTUDIO_READABILITY_CRITERION_ASSESSMENT.json) updates evidence supported by LiveSync's output, retaining 21 partial observations, 23 not run and all full scores null. Its [precise field correction](judgments/final-judge-field-correction.json) explains the final judgment's inherited nested pending-review label; the top-level approval is unchanged. The [reviewer's resolved reading concern](judgments/reviewer-reading-correction.json) is also preserved. + +The default WT-NodeRoom example, recorded dependency advisories, inherited swallowed `waitText` timeout, provider/model paths and production remain held. This scoped approval does not certify those surfaces. + +## Portability and verification + +From the repository root: + +```sh +python promotion/evidence/local-livesync-handoff-20260907/verify.py +python promotion/evidence/local-livesync-handoff-20260907/verify.py --source-root . +``` + +[The manifest](manifest.json) checks strict packet bytes, including logs and inert historical text. [The copy map](copy-map.json) distinguishes exact raw copies from explicit derivatives and binds each to its original hash. Derivatives remove named operator/home path prefixes or redundant recorder fields; they are never labelled exact raw copies. The narrow `.gitattributes` preserves raw packet bytes under Git. + +[Selected source bindings](source-bindings.json) separately record raw working SHA-256/Git blob and the actual Git-filtered canonical identities. Optional source verification permits CRLF→LF only for rows where the native Git filter demonstrated that equivalence; binary and other exact rows stay strict. This is a selected-source check, not a full repository or installed-dependency inventory. The current behavior proof precedes this documentation-only addition; it does not assert a new shared CI run. + +[Omissions](omissions.json) identify hash-bound operator-local groups. Unselected pictures, full DOM/session state, old movies, controller histories, private path/environment inventories, databases and caches are not portable. Hashes do not reconstruct them. Inert historical reports may reference those local originals; use the copy map to find the files actually supplied. The correct historical generated-custody origin is plan01, as recorded in omissions, rather than the missing relative plan03 link. diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-output/gif-0.png b/promotion/evidence/local-livesync-handoff-20260907/after-output/gif-0.png new file mode 100644 index 0000000..d428de5 Binary files /dev/null and b/promotion/evidence/local-livesync-handoff-20260907/after-output/gif-0.png differ diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-output/gif-105.png b/promotion/evidence/local-livesync-handoff-20260907/after-output/gif-105.png new file mode 100644 index 0000000..1e9d19e Binary files /dev/null and b/promotion/evidence/local-livesync-handoff-20260907/after-output/gif-105.png differ diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-output/gif-13.png b/promotion/evidence/local-livesync-handoff-20260907/after-output/gif-13.png new file mode 100644 index 0000000..8da85fa Binary files /dev/null and b/promotion/evidence/local-livesync-handoff-20260907/after-output/gif-13.png differ diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-output/gif-147.png b/promotion/evidence/local-livesync-handoff-20260907/after-output/gif-147.png new file mode 100644 index 0000000..f6a3d49 Binary files /dev/null and b/promotion/evidence/local-livesync-handoff-20260907/after-output/gif-147.png differ diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-output/gif-186.png b/promotion/evidence/local-livesync-handoff-20260907/after-output/gif-186.png new file mode 100644 index 0000000..d9baace Binary files /dev/null and b/promotion/evidence/local-livesync-handoff-20260907/after-output/gif-186.png differ diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-output/gif-201.png b/promotion/evidence/local-livesync-handoff-20260907/after-output/gif-201.png new file mode 100644 index 0000000..d05ce6a Binary files /dev/null and b/promotion/evidence/local-livesync-handoff-20260907/after-output/gif-201.png differ diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-output/gif-204.png b/promotion/evidence/local-livesync-handoff-20260907/after-output/gif-204.png new file mode 100644 index 0000000..dbe048e Binary files /dev/null and b/promotion/evidence/local-livesync-handoff-20260907/after-output/gif-204.png differ diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-output/gif-210.png b/promotion/evidence/local-livesync-handoff-20260907/after-output/gif-210.png new file mode 100644 index 0000000..69c0707 Binary files /dev/null and b/promotion/evidence/local-livesync-handoff-20260907/after-output/gif-210.png differ diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-output/gif-216.png b/promotion/evidence/local-livesync-handoff-20260907/after-output/gif-216.png new file mode 100644 index 0000000..2d545ef Binary files /dev/null and b/promotion/evidence/local-livesync-handoff-20260907/after-output/gif-216.png differ diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-output/gif-259.png b/promotion/evidence/local-livesync-handoff-20260907/after-output/gif-259.png new file mode 100644 index 0000000..5bfc2a0 Binary files /dev/null and b/promotion/evidence/local-livesync-handoff-20260907/after-output/gif-259.png differ diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-output/gif-293.png b/promotion/evidence/local-livesync-handoff-20260907/after-output/gif-293.png new file mode 100644 index 0000000..a49d63c Binary files /dev/null and b/promotion/evidence/local-livesync-handoff-20260907/after-output/gif-293.png differ diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-output/gif-48.png b/promotion/evidence/local-livesync-handoff-20260907/after-output/gif-48.png new file mode 100644 index 0000000..8c6dc66 Binary files /dev/null and b/promotion/evidence/local-livesync-handoff-20260907/after-output/gif-48.png differ diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-output/gif-78.png b/promotion/evidence/local-livesync-handoff-20260907/after-output/gif-78.png new file mode 100644 index 0000000..8f6e3b0 Binary files /dev/null and b/promotion/evidence/local-livesync-handoff-20260907/after-output/gif-78.png differ diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-output/movie-0.png b/promotion/evidence/local-livesync-handoff-20260907/after-output/movie-0.png new file mode 100644 index 0000000..3ebf61c Binary files /dev/null and b/promotion/evidence/local-livesync-handoff-20260907/after-output/movie-0.png differ diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-output/movie-147.png b/promotion/evidence/local-livesync-handoff-20260907/after-output/movie-147.png new file mode 100644 index 0000000..997b467 Binary files /dev/null and b/promotion/evidence/local-livesync-handoff-20260907/after-output/movie-147.png differ diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-output/movie-156.png b/promotion/evidence/local-livesync-handoff-20260907/after-output/movie-156.png new file mode 100644 index 0000000..ad2e05c Binary files /dev/null and b/promotion/evidence/local-livesync-handoff-20260907/after-output/movie-156.png differ diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-output/movie-210.png b/promotion/evidence/local-livesync-handoff-20260907/after-output/movie-210.png new file mode 100644 index 0000000..8b71337 Binary files /dev/null and b/promotion/evidence/local-livesync-handoff-20260907/after-output/movie-210.png differ diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-output/movie-26.png b/promotion/evidence/local-livesync-handoff-20260907/after-output/movie-26.png new file mode 100644 index 0000000..f24ee56 Binary files /dev/null and b/promotion/evidence/local-livesync-handoff-20260907/after-output/movie-26.png differ diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-output/movie-294.png b/promotion/evidence/local-livesync-handoff-20260907/after-output/movie-294.png new file mode 100644 index 0000000..a9d059a Binary files /dev/null and b/promotion/evidence/local-livesync-handoff-20260907/after-output/movie-294.png differ diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-output/movie-372.png b/promotion/evidence/local-livesync-handoff-20260907/after-output/movie-372.png new file mode 100644 index 0000000..8f98a59 Binary files /dev/null and b/promotion/evidence/local-livesync-handoff-20260907/after-output/movie-372.png differ diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-output/movie-402.png b/promotion/evidence/local-livesync-handoff-20260907/after-output/movie-402.png new file mode 100644 index 0000000..23513eb Binary files /dev/null and b/promotion/evidence/local-livesync-handoff-20260907/after-output/movie-402.png differ diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-output/movie-408.png b/promotion/evidence/local-livesync-handoff-20260907/after-output/movie-408.png new file mode 100644 index 0000000..e3bed3f Binary files /dev/null and b/promotion/evidence/local-livesync-handoff-20260907/after-output/movie-408.png differ diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-output/movie-420.png b/promotion/evidence/local-livesync-handoff-20260907/after-output/movie-420.png new file mode 100644 index 0000000..2459d2f Binary files /dev/null and b/promotion/evidence/local-livesync-handoff-20260907/after-output/movie-420.png differ diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-output/movie-432.png b/promotion/evidence/local-livesync-handoff-20260907/after-output/movie-432.png new file mode 100644 index 0000000..0b38aa8 Binary files /dev/null and b/promotion/evidence/local-livesync-handoff-20260907/after-output/movie-432.png differ diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-output/movie-518.png b/promotion/evidence/local-livesync-handoff-20260907/after-output/movie-518.png new file mode 100644 index 0000000..7567517 Binary files /dev/null and b/promotion/evidence/local-livesync-handoff-20260907/after-output/movie-518.png differ diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-output/movie-587.png b/promotion/evidence/local-livesync-handoff-20260907/after-output/movie-587.png new file mode 100644 index 0000000..b9c89ae Binary files /dev/null and b/promotion/evidence/local-livesync-handoff-20260907/after-output/movie-587.png differ diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-output/movie-96.png b/promotion/evidence/local-livesync-handoff-20260907/after-output/movie-96.png new file mode 100644 index 0000000..89bb9ab Binary files /dev/null and b/promotion/evidence/local-livesync-handoff-20260907/after-output/movie-96.png differ diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-output/readable-livesync.gif b/promotion/evidence/local-livesync-handoff-20260907/after-output/readable-livesync.gif new file mode 100644 index 0000000..ee3ab3e Binary files /dev/null and b/promotion/evidence/local-livesync-handoff-20260907/after-output/readable-livesync.gif differ diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-output/readable-livesync.mp4 b/promotion/evidence/local-livesync-handoff-20260907/after-output/readable-livesync.mp4 new file mode 100644 index 0000000..027f0f9 Binary files /dev/null and b/promotion/evidence/local-livesync-handoff-20260907/after-output/readable-livesync.mp4 differ diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-status/02-selection-negatives/absent-command.json b/promotion/evidence/local-livesync-handoff-20260907/after-status/02-selection-negatives/absent-command.json new file mode 100644 index 0000000..f06de9e --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/after-status/02-selection-negatives/absent-command.json @@ -0,0 +1,14 @@ +{ + "name": "absent", + "argv": [ + "C:/nvm4w/nodejs/node.exe", + "walkthrough.collab.mjs" + ], + "seconds": 0.343, + "timeoutSeconds": 45, + "timedout": false, + "exitCode": 1, + "expectedExitCodes": [ + 1 + ] +} diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-status/02-selection-negatives/absent.stderr.txt b/promotion/evidence/local-livesync-handoff-20260907/after-status/02-selection-negatives/absent.stderr.txt new file mode 100644 index 0000000..c9fadca --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/after-status/02-selection-negatives/absent.stderr.txt @@ -0,0 +1,4 @@ +refusing to wipe every capture in public/wt-collab. + re-capture ONE walkthrough: COLLAB_ONLY=TShero node walkthrough.collab.mjs + full re-capture from empty: COLLAB_WIPE=1 node walkthrough.collab.mjs +(note COLLAB_ONLY is an ENV VAR, not an argv — a bare id is ignored.) diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-status/02-selection-negatives/comma-command.json b/promotion/evidence/local-livesync-handoff-20260907/after-status/02-selection-negatives/comma-command.json new file mode 100644 index 0000000..dd92e2a --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/after-status/02-selection-negatives/comma-command.json @@ -0,0 +1,14 @@ +{ + "name": "comma", + "argv": [ + "C:/nvm4w/nodejs/node.exe", + "walkthrough.collab.mjs" + ], + "seconds": 0.344, + "timeoutSeconds": 45, + "timedout": false, + "exitCode": 1, + "expectedExitCodes": [ + 1 + ] +} diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-status/02-selection-negatives/comma.stderr.txt b/promotion/evidence/local-livesync-handoff-20260907/after-status/02-selection-negatives/comma.stderr.txt new file mode 100644 index 0000000..efb2cde --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/after-status/02-selection-negatives/comma.stderr.txt @@ -0,0 +1,6 @@ +Error: Unknown COLLAB_ONLY selector(s): "", "". Choose: LiveSync, LiveSync3, NRhero, NRsolo, NRsync, NRfresh, NRdeepDive, TShero, TScode, TSide + at run (file:///checkout/walkthrough.collab.mjs:152:11) + at file:///checkout/walkthrough.collab.mjs:335:1 + at ModuleJob.run (node:internal/modules/esm/module_job:343:25) + at async onImport.tracePromise.__proto__ (node:internal/modules/esm/loader:665:26) + at async asyncRunEntryPointWithESMLoader (node:internal/modules/run_main:117:5) diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-status/02-selection-negatives/empty-env-command.json b/promotion/evidence/local-livesync-handoff-20260907/after-status/02-selection-negatives/empty-env-command.json new file mode 100644 index 0000000..e1759de --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/after-status/02-selection-negatives/empty-env-command.json @@ -0,0 +1,14 @@ +{ + "name": "empty-env", + "argv": [ + "C:/nvm4w/nodejs/node.exe", + "walkthrough.collab.mjs" + ], + "seconds": 0.344, + "timeoutSeconds": 45, + "timedout": false, + "exitCode": 1, + "expectedExitCodes": [ + 1 + ] +} diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-status/02-selection-negatives/empty-env.stderr.txt b/promotion/evidence/local-livesync-handoff-20260907/after-status/02-selection-negatives/empty-env.stderr.txt new file mode 100644 index 0000000..c9fadca --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/after-status/02-selection-negatives/empty-env.stderr.txt @@ -0,0 +1,4 @@ +refusing to wipe every capture in public/wt-collab. + re-capture ONE walkthrough: COLLAB_ONLY=TShero node walkthrough.collab.mjs + full re-capture from empty: COLLAB_WIPE=1 node walkthrough.collab.mjs +(note COLLAB_ONLY is an ENV VAR, not an argv — a bare id is ignored.) diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-status/02-selection-negatives/mixed-command.json b/promotion/evidence/local-livesync-handoff-20260907/after-status/02-selection-negatives/mixed-command.json new file mode 100644 index 0000000..1c3746a --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/after-status/02-selection-negatives/mixed-command.json @@ -0,0 +1,14 @@ +{ + "name": "mixed", + "argv": [ + "C:/nvm4w/nodejs/node.exe", + "walkthrough.collab.mjs" + ], + "seconds": 0.359, + "timeoutSeconds": 45, + "timedout": false, + "exitCode": 1, + "expectedExitCodes": [ + 1 + ] +} diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-status/02-selection-negatives/mixed.stderr.txt b/promotion/evidence/local-livesync-handoff-20260907/after-status/02-selection-negatives/mixed.stderr.txt new file mode 100644 index 0000000..7344667 --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/after-status/02-selection-negatives/mixed.stderr.txt @@ -0,0 +1,6 @@ +Error: Unknown COLLAB_ONLY selector(s): "FCS_UNKNOWN_OWNED". Choose: LiveSync, LiveSync3, NRhero, NRsolo, NRsync, NRfresh, NRdeepDive, TShero, TScode, TSide + at run (file:///checkout/walkthrough.collab.mjs:152:11) + at file:///checkout/walkthrough.collab.mjs:335:1 + at ModuleJob.run (node:internal/modules/esm/module_job:343:25) + at async onImport.tracePromise.__proto__ (node:internal/modules/esm/loader:665:26) + at async asyncRunEntryPointWithESMLoader (node:internal/modules/run_main:117:5) diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-status/02-selection-negatives/selection-semantics.json b/promotion/evidence/local-livesync-handoff-20260907/after-status/02-selection-negatives/selection-semantics.json new file mode 100644 index 0000000..935bac3 --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/after-status/02-selection-negatives/selection-semantics.json @@ -0,0 +1,44 @@ +{ + "cases": [ + { + "name": "unknown", + "expectedMessage": "Unknown COLLAB_ONLY", + "explicitValue": "FCS_UNKNOWN_OWNED", + "present": true + }, + { + "name": "mixed", + "expectedMessage": "Unknown COLLAB_ONLY", + "explicitValue": "LiveSync,FCS_UNKNOWN_OWNED", + "present": true + }, + { + "name": "whitespace", + "expectedMessage": "Unknown COLLAB_ONLY", + "explicitValue": " ", + "present": true + }, + { + "name": "comma", + "expectedMessage": "Unknown COLLAB_ONLY", + "explicitValue": ",", + "present": true + }, + { + "name": "absent", + "expectedMessage": "refusing to wipe", + "explicitValue": null, + "present": false + }, + { + "name": "empty-env", + "expectedMessage": "refusing to wipe", + "explicitValue": "", + "present": true + } + ], + "allExit1": true, + "sourceExact": true, + "observedChromeChildren": 0, + "emptyEnvironmentMeaning": "Empty string is falsy and follows existing no-filter refusal. Whitespace/comma values have empty entries and fail validation." +} diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-status/02-selection-negatives/unknown-command.json b/promotion/evidence/local-livesync-handoff-20260907/after-status/02-selection-negatives/unknown-command.json new file mode 100644 index 0000000..6aa7890 --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/after-status/02-selection-negatives/unknown-command.json @@ -0,0 +1,14 @@ +{ + "name": "unknown", + "argv": [ + "C:/nvm4w/nodejs/node.exe", + "walkthrough.collab.mjs" + ], + "seconds": 0.343, + "timeoutSeconds": 45, + "timedout": false, + "exitCode": 1, + "expectedExitCodes": [ + 1 + ] +} diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-status/02-selection-negatives/unknown.stderr.txt b/promotion/evidence/local-livesync-handoff-20260907/after-status/02-selection-negatives/unknown.stderr.txt new file mode 100644 index 0000000..7344667 --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/after-status/02-selection-negatives/unknown.stderr.txt @@ -0,0 +1,6 @@ +Error: Unknown COLLAB_ONLY selector(s): "FCS_UNKNOWN_OWNED". Choose: LiveSync, LiveSync3, NRhero, NRsolo, NRsync, NRfresh, NRdeepDive, TShero, TScode, TSide + at run (file:///checkout/walkthrough.collab.mjs:152:11) + at file:///checkout/walkthrough.collab.mjs:335:1 + at ModuleJob.run (node:internal/modules/esm/module_job:343:25) + at async onImport.tracePromise.__proto__ (node:internal/modules/esm/loader:665:26) + at async asyncRunEntryPointWithESMLoader (node:internal/modules/run_main:117:5) diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-status/02-selection-negatives/whitespace-command.json b/promotion/evidence/local-livesync-handoff-20260907/after-status/02-selection-negatives/whitespace-command.json new file mode 100644 index 0000000..6d626c6 --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/after-status/02-selection-negatives/whitespace-command.json @@ -0,0 +1,14 @@ +{ + "name": "whitespace", + "argv": [ + "C:/nvm4w/nodejs/node.exe", + "walkthrough.collab.mjs" + ], + "seconds": 0.344, + "timeoutSeconds": 45, + "timedout": false, + "exitCode": 1, + "expectedExitCodes": [ + 1 + ] +} diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-status/02-selection-negatives/whitespace.stderr.txt b/promotion/evidence/local-livesync-handoff-20260907/after-status/02-selection-negatives/whitespace.stderr.txt new file mode 100644 index 0000000..a79f93d --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/after-status/02-selection-negatives/whitespace.stderr.txt @@ -0,0 +1,6 @@ +Error: Unknown COLLAB_ONLY selector(s): "". Choose: LiveSync, LiveSync3, NRhero, NRsolo, NRsync, NRfresh, NRdeepDive, TShero, TScode, TSide + at run (file:///checkout/walkthrough.collab.mjs:152:11) + at file:///checkout/walkthrough.collab.mjs:335:1 + at ModuleJob.run (node:internal/modules/esm/module_job:343:25) + at async onImport.tracePromise.__proto__ (node:internal/modules/esm/loader:665:26) + at async asyncRunEntryPointWithESMLoader (node:internal/modules/run_main:117:5) diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-status/04-unavailable/unavailable-command.json b/promotion/evidence/local-livesync-handoff-20260907/after-status/04-unavailable/unavailable-command.json new file mode 100644 index 0000000..060bc4f --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/after-status/04-unavailable/unavailable-command.json @@ -0,0 +1,14 @@ +{ + "name": "unavailable", + "argv": [ + "C:/nvm4w/nodejs/node.exe", + "walkthrough.collab.mjs" + ], + "seconds": 3.079, + "timeoutSeconds": 150, + "timedout": false, + "exitCode": 1, + "expectedExitCodes": [ + 1 + ] +} diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-status/04-unavailable/unavailable.stderr.txt b/promotion/evidence/local-livesync-handoff-20260907/after-status/04-unavailable/unavailable.stderr.txt new file mode 100644 index 0000000..a801aec --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/after-status/04-unavailable/unavailable.stderr.txt @@ -0,0 +1,11 @@ +Error: Capture LiveSync failed after 1 attempt(s); generated data was not written. Partial/failed PNGs remain in checkout\public\wt-collab\LiveSync. Re-capture successfully before rendering this spec. + at run (file:///checkout/walkthrough.collab.mjs:295:15) { + [cause]: page.goto: net::ERR_CONNECTION_REFUSED at http://127.0.0.1:8930/?user=B + Call log: +  - navigating to "http://127.0.0.1:8930/?user=B", waiting until "domcontentloaded" + + at checkout\walkthrough.collab.mjs:215:22 + at run (checkout\walkthrough.collab.mjs:212:33) { + name: 'Error' + } +} diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-status/04-unavailable/unavailable.stdout.txt b/promotion/evidence/local-livesync-handoff-20260907/after-status/04-unavailable/unavailable.stdout.txt new file mode 100644 index 0000000..757cbe7 --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/after-status/04-unavailable/unavailable.stdout.txt @@ -0,0 +1,4 @@ +RUNID (fresh-room code) = STR1N2ZR + LiveSync fail-state pane 0: + LiveSync fail-state pane 1: +LiveSync attempt 1/1 err: page.goto: net::ERR_CONNECTION_REFUSED at http://127.0.0.1:8930/?user=B diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-status/05-missing-control/missing-control-command.json b/promotion/evidence/local-livesync-handoff-20260907/after-status/05-missing-control/missing-control-command.json new file mode 100644 index 0000000..a4aa854 --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/after-status/05-missing-control/missing-control-command.json @@ -0,0 +1,14 @@ +{ + "name": "missing-control", + "argv": [ + "C:/nvm4w/nodejs/node.exe", + "walkthrough.collab.mjs" + ], + "seconds": 63.328, + "timeoutSeconds": 150, + "timedout": false, + "exitCode": 1, + "expectedExitCodes": [ + 1 + ] +} diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-status/05-missing-control/missing-control.stderr.txt b/promotion/evidence/local-livesync-handoff-20260907/after-status/05-missing-control/missing-control.stderr.txt new file mode 100644 index 0000000..26b68a9 --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/after-status/05-missing-control/missing-control.stderr.txt @@ -0,0 +1,11 @@ +Error: Capture LiveSync failed after 1 attempt(s); generated data was not written. Partial/failed PNGs remain in checkout\public\wt-collab\LiveSync. Re-capture successfully before rendering this spec. + at run (file:///checkout/walkthrough.collab.mjs:295:15) { + [cause]: locator.click: Timeout 60000ms exceeded. + Call log: +  - waiting for locator('[data-testid="add-input"]').first() + + at doAct (checkout\walkthrough.collab.mjs:81:14) + at run (checkout\walkthrough.collab.mjs:275:19) { + name: 'TimeoutError' + } +} diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-status/05-missing-control/missing-control.stdout.txt b/promotion/evidence/local-livesync-handoff-20260907/after-status/05-missing-control/missing-control.stdout.txt new file mode 100644 index 0000000..a26caca --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/after-status/05-missing-control/missing-control.stdout.txt @@ -0,0 +1,5 @@ +RUNID (fresh-room code) = STR1O8FO + LiveSync cap 0: Two clients, one shared board + LiveSync fail-state pane 0: Owned missing-control fixture This reachable page intentionally has no Add control. It is not the collaboration application. + LiveSync fail-state pane 1: Owned missing-control fixture This reachable page intentionally has no Add control. It is not the collaboration application. +LiveSync attempt 1/1 err: locator.click: Timeout 60000ms exceeded. diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-status/06-recovery/native-generated-disk-bijection.json b/promotion/evidence/local-livesync-handoff-20260907/after-status/06-recovery/native-generated-disk-bijection.json new file mode 100644 index 0000000..a1f8a93 --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/after-status/06-recovery/native-generated-disk-bijection.json @@ -0,0 +1,272 @@ +[ + { + "path": "wt-collab/LiveSync/p0_00.png", + "bytes": 236192, + "sha256": "3432eebd1336f92b13502f69fe28b176daf260fc83e76b27f17c3bcdad908e4f" + }, + { + "path": "wt-collab/LiveSync/p0_01.png", + "bytes": 241905, + "sha256": "36b6110a24d5ad3192cd1b013bac6f403aa71444b03f96858406cd4b68f4fd47" + }, + { + "path": "wt-collab/LiveSync/p0_02.png", + "bytes": 241905, + "sha256": "36b6110a24d5ad3192cd1b013bac6f403aa71444b03f96858406cd4b68f4fd47" + }, + { + "path": "wt-collab/LiveSync/p0_03_00.png", + "bytes": 208511, + "sha256": "4c6953e1d4f0d2116bb2a4ee03ef47e034bc2f9b8940d36a29503471b15c0db9" + }, + { + "path": "wt-collab/LiveSync/p0_03_01.png", + "bytes": 208511, + "sha256": "4c6953e1d4f0d2116bb2a4ee03ef47e034bc2f9b8940d36a29503471b15c0db9" + }, + { + "path": "wt-collab/LiveSync/p0_03_02.png", + "bytes": 208511, + "sha256": "4c6953e1d4f0d2116bb2a4ee03ef47e034bc2f9b8940d36a29503471b15c0db9" + }, + { + "path": "wt-collab/LiveSync/p0_03_03.png", + "bytes": 208511, + "sha256": "4c6953e1d4f0d2116bb2a4ee03ef47e034bc2f9b8940d36a29503471b15c0db9" + }, + { + "path": "wt-collab/LiveSync/p0_03_04.png", + "bytes": 208511, + "sha256": "4c6953e1d4f0d2116bb2a4ee03ef47e034bc2f9b8940d36a29503471b15c0db9" + }, + { + "path": "wt-collab/LiveSync/p0_03_05.png", + "bytes": 208511, + "sha256": "4c6953e1d4f0d2116bb2a4ee03ef47e034bc2f9b8940d36a29503471b15c0db9" + }, + { + "path": "wt-collab/LiveSync/p0_03_06.png", + "bytes": 208511, + "sha256": "4c6953e1d4f0d2116bb2a4ee03ef47e034bc2f9b8940d36a29503471b15c0db9" + }, + { + "path": "wt-collab/LiveSync/p0_03_07.png", + "bytes": 208511, + "sha256": "4c6953e1d4f0d2116bb2a4ee03ef47e034bc2f9b8940d36a29503471b15c0db9" + }, + { + "path": "wt-collab/LiveSync/p0_03_08.png", + "bytes": 208511, + "sha256": "4c6953e1d4f0d2116bb2a4ee03ef47e034bc2f9b8940d36a29503471b15c0db9" + }, + { + "path": "wt-collab/LiveSync/p0_03_09.png", + "bytes": 208511, + "sha256": "4c6953e1d4f0d2116bb2a4ee03ef47e034bc2f9b8940d36a29503471b15c0db9" + }, + { + "path": "wt-collab/LiveSync/p0_04.png", + "bytes": 208511, + "sha256": "4c6953e1d4f0d2116bb2a4ee03ef47e034bc2f9b8940d36a29503471b15c0db9" + }, + { + "path": "wt-collab/LiveSync/p0_05.png", + "bytes": 208511, + "sha256": "4c6953e1d4f0d2116bb2a4ee03ef47e034bc2f9b8940d36a29503471b15c0db9" + }, + { + "path": "wt-collab/LiveSync/p0_06_00.png", + "bytes": 228274, + "sha256": "63cb5423e4de0b02c181e74cd34a76ee256184d3ef1140c5d13468528ad9a7a8" + }, + { + "path": "wt-collab/LiveSync/p0_06_01.png", + "bytes": 231072, + "sha256": "bfca72a2c5d1b6ba019d37c4f3c739ff669dcb1f9dcaa733c59c42a732b97018" + }, + { + "path": "wt-collab/LiveSync/p0_06_02.png", + "bytes": 245105, + "sha256": "1cbf02ca4de16400614e522d3be3da4b5924526e25d1480de4025b6c676e0d90" + }, + { + "path": "wt-collab/LiveSync/p0_06_03.png", + "bytes": 232967, + "sha256": "554eb8436339ba70bbb0883586e5c54dac5e5ae11ff57c6106c985594281847e" + }, + { + "path": "wt-collab/LiveSync/p0_06_04.png", + "bytes": 234520, + "sha256": "af3ce9f500e30db33e68d48b67748b7d25783d680f0da8f51b9584f09f9f21c2" + }, + { + "path": "wt-collab/LiveSync/p0_06_05.png", + "bytes": 236605, + "sha256": "4ba3d4f0da970a6ba9c0e9ca7bc67ba9ae9788dba1eee5d06dda8a59470adcab" + }, + { + "path": "wt-collab/LiveSync/p0_06_06.png", + "bytes": 236531, + "sha256": "99960a86896834a060c1695458f7a03b98182d14c482c9962698813679a9da0b" + }, + { + "path": "wt-collab/LiveSync/p0_06_07.png", + "bytes": 233304, + "sha256": "40a772e63cdeab75031898e15f2c2694e549321800c70b4a86994100e766e3b2" + }, + { + "path": "wt-collab/LiveSync/p0_06_08.png", + "bytes": 233304, + "sha256": "40a772e63cdeab75031898e15f2c2694e549321800c70b4a86994100e766e3b2" + }, + { + "path": "wt-collab/LiveSync/p0_06_09.png", + "bytes": 233304, + "sha256": "40a772e63cdeab75031898e15f2c2694e549321800c70b4a86994100e766e3b2" + }, + { + "path": "wt-collab/LiveSync/p0_06_10.png", + "bytes": 233304, + "sha256": "40a772e63cdeab75031898e15f2c2694e549321800c70b4a86994100e766e3b2" + }, + { + "path": "wt-collab/LiveSync/p0_07.png", + "bytes": 233304, + "sha256": "40a772e63cdeab75031898e15f2c2694e549321800c70b4a86994100e766e3b2" + }, + { + "path": "wt-collab/LiveSync/p1_00.png", + "bytes": 235816, + "sha256": "30678a7cf6edc046240ceed8995ca7153e6041c8710849b27970801058da147c" + }, + { + "path": "wt-collab/LiveSync/p1_01.png", + "bytes": 235816, + "sha256": "30678a7cf6edc046240ceed8995ca7153e6041c8710849b27970801058da147c" + }, + { + "path": "wt-collab/LiveSync/p1_02.png", + "bytes": 235816, + "sha256": "30678a7cf6edc046240ceed8995ca7153e6041c8710849b27970801058da147c" + }, + { + "path": "wt-collab/LiveSync/p1_03_00.png", + "bytes": 208019, + "sha256": "c46747b93eb9b8161f3a4e86ec8621bdb3b1bcd933572dc5c6b6d28dfece8db0" + }, + { + "path": "wt-collab/LiveSync/p1_03_01.png", + "bytes": 208019, + "sha256": "c46747b93eb9b8161f3a4e86ec8621bdb3b1bcd933572dc5c6b6d28dfece8db0" + }, + { + "path": "wt-collab/LiveSync/p1_03_02.png", + "bytes": 208019, + "sha256": "c46747b93eb9b8161f3a4e86ec8621bdb3b1bcd933572dc5c6b6d28dfece8db0" + }, + { + "path": "wt-collab/LiveSync/p1_03_03.png", + "bytes": 208019, + "sha256": "c46747b93eb9b8161f3a4e86ec8621bdb3b1bcd933572dc5c6b6d28dfece8db0" + }, + { + "path": "wt-collab/LiveSync/p1_03_04.png", + "bytes": 208019, + "sha256": "c46747b93eb9b8161f3a4e86ec8621bdb3b1bcd933572dc5c6b6d28dfece8db0" + }, + { + "path": "wt-collab/LiveSync/p1_03_05.png", + "bytes": 208019, + "sha256": "c46747b93eb9b8161f3a4e86ec8621bdb3b1bcd933572dc5c6b6d28dfece8db0" + }, + { + "path": "wt-collab/LiveSync/p1_03_06.png", + "bytes": 208019, + "sha256": "c46747b93eb9b8161f3a4e86ec8621bdb3b1bcd933572dc5c6b6d28dfece8db0" + }, + { + "path": "wt-collab/LiveSync/p1_03_07.png", + "bytes": 208019, + "sha256": "c46747b93eb9b8161f3a4e86ec8621bdb3b1bcd933572dc5c6b6d28dfece8db0" + }, + { + "path": "wt-collab/LiveSync/p1_03_08.png", + "bytes": 208019, + "sha256": "c46747b93eb9b8161f3a4e86ec8621bdb3b1bcd933572dc5c6b6d28dfece8db0" + }, + { + "path": "wt-collab/LiveSync/p1_03_09.png", + "bytes": 208019, + "sha256": "c46747b93eb9b8161f3a4e86ec8621bdb3b1bcd933572dc5c6b6d28dfece8db0" + }, + { + "path": "wt-collab/LiveSync/p1_04.png", + "bytes": 208019, + "sha256": "c46747b93eb9b8161f3a4e86ec8621bdb3b1bcd933572dc5c6b6d28dfece8db0" + }, + { + "path": "wt-collab/LiveSync/p1_05.png", + "bytes": 208019, + "sha256": "c46747b93eb9b8161f3a4e86ec8621bdb3b1bcd933572dc5c6b6d28dfece8db0" + }, + { + "path": "wt-collab/LiveSync/p1_06_00.png", + "bytes": 223722, + "sha256": "3eef0bf4826fe4fa5befd88bf338bb864cf133ef3025e625a19ba6878116a2f8" + }, + { + "path": "wt-collab/LiveSync/p1_06_01.png", + "bytes": 226594, + "sha256": "ca781679f0d36370950e9381a9a91a7168d1c4b9c6b01c01e8f9aee2a24db20b" + }, + { + "path": "wt-collab/LiveSync/p1_06_02.png", + "bytes": 241175, + "sha256": "9aae7ae4ea32cb5f7d980d3631d754a76e72e225fcfb523f6a54f0b4db195d61" + }, + { + "path": "wt-collab/LiveSync/p1_06_03.png", + "bytes": 228440, + "sha256": "61dcb99b917b497409ac2727e99c85a2656570c4009905007bd9b2c41365b4f4" + }, + { + "path": "wt-collab/LiveSync/p1_06_04.png", + "bytes": 229941, + "sha256": "5de3011b5712e736b15927f55cdd70fe3b21207881dcd9a49a2cd11175b7f22a" + }, + { + "path": "wt-collab/LiveSync/p1_06_05.png", + "bytes": 232160, + "sha256": "fb7a77e748784f8e1109603b1100a9fc72251bc97b46e3a642b343b82b30dab5" + }, + { + "path": "wt-collab/LiveSync/p1_06_06.png", + "bytes": 232087, + "sha256": "84698eef610099bb5f964941e1272a44a12796bf8b4c64b4de4ce9ce0f6a609a" + }, + { + "path": "wt-collab/LiveSync/p1_06_07.png", + "bytes": 232433, + "sha256": "ab6c81aed2aece48c7830fc2c34583e7547293abab36f2486bc969496b706a8e" + }, + { + "path": "wt-collab/LiveSync/p1_06_08.png", + "bytes": 232433, + "sha256": "ab6c81aed2aece48c7830fc2c34583e7547293abab36f2486bc969496b706a8e" + }, + { + "path": "wt-collab/LiveSync/p1_06_09.png", + "bytes": 232433, + "sha256": "ab6c81aed2aece48c7830fc2c34583e7547293abab36f2486bc969496b706a8e" + }, + { + "path": "wt-collab/LiveSync/p1_06_10.png", + "bytes": 232433, + "sha256": "ab6c81aed2aece48c7830fc2c34583e7547293abab36f2486bc969496b706a8e" + }, + { + "path": "wt-collab/LiveSync/p1_07.png", + "bytes": 232433, + "sha256": "ab6c81aed2aece48c7830fc2c34583e7547293abab36f2486bc969496b706a8e" + } +] diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-status/06-recovery/selected-livesync-command.json b/promotion/evidence/local-livesync-handoff-20260907/after-status/06-recovery/selected-livesync-command.json new file mode 100644 index 0000000..429000c --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/after-status/06-recovery/selected-livesync-command.json @@ -0,0 +1,16 @@ +{ + "name": "selected-livesync", + "argv": [ + "C:/nvm4w/nodejs/node.exe", + "--import", + "file:////.codex/worktrees/5dba/nodebench-ai/docs/plans/portfolio-recovery-20260904/E6o-featureclipstudio-capture-status-after-plan-01/observe-capture.mjs", + "walkthrough.collab.mjs" + ], + "seconds": 16.843, + "timeoutSeconds": 180, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] +} diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-status/06-recovery/selected-livesync.stderr.txt b/promotion/evidence/local-livesync-handoff-20260907/after-status/06-recovery/selected-livesync.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-status/06-recovery/selected-livesync.stdout.txt b/promotion/evidence/local-livesync-handoff-20260907/after-status/06-recovery/selected-livesync.stdout.txt new file mode 100644 index 0000000..553fc2e --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/after-status/06-recovery/selected-livesync.stdout.txt @@ -0,0 +1,10 @@ +RUNID (fresh-room code) = STR1QH7X + LiveSync cap 0: Two clients, one shared board + LiveSync cap 1: Client A types a new card + LiveSync cap 2: Client A clicks Add + LiveSync burst 3: 10 frames x 2 panes — Client A adds a card → Client B sees it live + LiveSync cap 4: Synced — both clients agree + LiveSync cap 5: Client A asks the agent to act + LiveSync burst 6: 11 frames x 2 panes — Server-led agent streams to every client + LiveSync cap 7: Every client converges on the same state +WALKTHROUGH_COLLAB_CAPTURE_DONE — wrote src/walkthrough.collab.data.js diff --git a/promotion/evidence/local-livesync-handoff-20260907/after-status/native-observation.json b/promotion/evidence/local-livesync-handoff-20260907/after-status/native-observation.json new file mode 100644 index 0000000..065ba72 --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/after-status/native-observation.json @@ -0,0 +1,227 @@ +{ + "mode": "OBSERVED_UNCHANGED_DRIVER", + "errors": [], + "finalStates": [ + { + "context": 0, + "state": { + "url": "http://127.0.0.1:8930/?user=A", + "title": "Collab · Ana", + "width": 1280, + "height": 600, + "body": "Collab Board\nConvex reactive pattern · local stand-in · you are Ana\nA\nB\nAdd\n🤖 Run agent\n\nAgent finished.\n\nShip the collab demo\nAna\n🤖 Agent (requested by Ana): Analyzing the board · clustering 3 themes · drafting a summary · ranking by impact · done. Top theme: collaboration.\nAgent\nServer-led state · optimistic add → atomic temp→real swap · live SSE broadcast to every pane.\nOpen ?user=A and ?user=B side by side to watch them sync.", + "cards": [ + { + "id": "69d53880-9d72-497c-b5d1-0a2119ba3738", + "text": "Ship the collab demo", + "author": "Ana", + "classes": "card", + "rect": { + "x": 280, + "y": 161, + "width": 720, + "height": 72, + "top": 161, + "right": 1000, + "bottom": 233, + "left": 280 + } + }, + { + "id": "ef2492a6-6aca-4e33-a575-dfd9e05663f5", + "text": "🤖 Agent (requested by Ana): Analyzing the board · clustering 3 themes · drafting a summary · ranking by impact · done. Top theme: collaboration.", + "author": "Agent", + "classes": "card", + "rect": { + "x": 280, + "y": 243, + "width": 720, + "height": 93, + "top": 243, + "right": 1000, + "bottom": 336, + "left": 280 + } + } + ], + "agent": { + "text": "🤖 Run agent", + "busy": "false", + "disabled": false + }, + "controls": [ + { + "id": "add-input", + "value": "", + "rect": { + "x": 280, + "y": 77, + "width": 513.21875, + "height": 43, + "top": 77, + "right": 793.21875, + "bottom": 120, + "left": 280 + } + }, + { + "id": "add-btn", + "value": "", + "rect": { + "x": 803.21875, + "y": 77, + "width": 61.21875, + "height": 43, + "top": 77, + "right": 864.4375, + "bottom": 120, + "left": 803.21875 + } + }, + { + "id": "agent-btn", + "value": "", + "rect": { + "x": 874.4375, + "y": 77, + "width": 125.5625, + "height": 43, + "top": 77, + "right": 1000, + "bottom": 120, + "left": 874.4375 + } + } + ], + "status": "Agent finished." + } + }, + { + "context": 1, + "state": { + "url": "http://127.0.0.1:8930/?user=B", + "title": "Collab · Ben", + "width": 1280, + "height": 600, + "body": "Collab Board\nConvex reactive pattern · local stand-in · you are Ben\nA\nB\nAdd\n🤖 Run agent\n\nAgent finished.\n\nShip the collab demo\nAna\n🤖 Agent (requested by Ana): Analyzing the board · clustering 3 themes · drafting a summary · ranking by impact · done. Top theme: collaboration.\nAgent\nServer-led state · optimistic add → atomic temp→real swap · live SSE broadcast to every pane.\nOpen ?user=A and ?user=B side by side to watch them sync.", + "cards": [ + { + "id": "69d53880-9d72-497c-b5d1-0a2119ba3738", + "text": "Ship the collab demo", + "author": "Ana", + "classes": "card", + "rect": { + "x": 280, + "y": 161, + "width": 720, + "height": 72, + "top": 161, + "right": 1000, + "bottom": 233, + "left": 280 + } + }, + { + "id": "ef2492a6-6aca-4e33-a575-dfd9e05663f5", + "text": "🤖 Agent (requested by Ana): Analyzing the board · clustering 3 themes · drafting a summary · ranking by impact · done. Top theme: collaboration.", + "author": "Agent", + "classes": "card", + "rect": { + "x": 280, + "y": 243, + "width": 720, + "height": 93, + "top": 243, + "right": 1000, + "bottom": 336, + "left": 280 + } + } + ], + "agent": { + "text": "🤖 Run agent", + "busy": "false", + "disabled": false + }, + "controls": [ + { + "id": "add-input", + "value": "", + "rect": { + "x": 280, + "y": 77, + "width": 513.21875, + "height": 43, + "top": 77, + "right": 793.21875, + "bottom": 120, + "left": 280 + } + }, + { + "id": "add-btn", + "value": "", + "rect": { + "x": 803.21875, + "y": 77, + "width": 61.21875, + "height": 43, + "top": 77, + "right": 864.4375, + "bottom": 120, + "left": 803.21875 + } + }, + { + "id": "agent-btn", + "value": "", + "rect": { + "x": 874.4375, + "y": 77, + "width": 125.5625, + "height": 43, + "top": 77, + "right": 1000, + "bottom": 120, + "left": 874.4375 + } + } + ], + "status": "Agent finished." + } + } + ], + "contexts": 2, + "limitation": "Public Playwright launch/context/screenshot methods are wrapped for observation and request blocking. Routing disables the browser cache and state reads add timing overhead. No performance claim.", + "checks": [ + { + "name": "two actual captured contexts", + "pass": true + }, + { + "name": "54 native screenshot payloads", + "pass": true + }, + { + "name": "no observed errors or disallowed requests", + "pass": true + }, + { + "name": "both final boards contain exact committed card and finished fixed stream", + "pass": true + }, + { + "name": "nonempty distinct DOM-reported IDs in each final board", + "pass": true + }, + { + "name": "both captured clients agree on exact server IDs and texts", + "pass": true + } + ], + "driverExitCodeBeforeObserverGate": 0, + "passed": true, + "observedRequestCount": 8, + "allObservedRequestsAllowed": true, + "nativeScreenshots": 54 +} diff --git a/promotion/evidence/local-livesync-handoff-20260907/before-output/gif-frame-293.png b/promotion/evidence/local-livesync-handoff-20260907/before-output/gif-frame-293.png new file mode 100644 index 0000000..79b01dd Binary files /dev/null and b/promotion/evidence/local-livesync-handoff-20260907/before-output/gif-frame-293.png differ diff --git a/promotion/evidence/local-livesync-handoff-20260907/before-output/repaired-frame-0.png b/promotion/evidence/local-livesync-handoff-20260907/before-output/repaired-frame-0.png new file mode 100644 index 0000000..dca6a5e Binary files /dev/null and b/promotion/evidence/local-livesync-handoff-20260907/before-output/repaired-frame-0.png differ diff --git a/promotion/evidence/local-livesync-handoff-20260907/before-output/repaired-frame-147.png b/promotion/evidence/local-livesync-handoff-20260907/before-output/repaired-frame-147.png new file mode 100644 index 0000000..81933f8 Binary files /dev/null and b/promotion/evidence/local-livesync-handoff-20260907/before-output/repaired-frame-147.png differ diff --git a/promotion/evidence/local-livesync-handoff-20260907/before-output/repaired-frame-294.png b/promotion/evidence/local-livesync-handoff-20260907/before-output/repaired-frame-294.png new file mode 100644 index 0000000..d0519e4 Binary files /dev/null and b/promotion/evidence/local-livesync-handoff-20260907/before-output/repaired-frame-294.png differ diff --git a/promotion/evidence/local-livesync-handoff-20260907/before-output/repaired-frame-587.png b/promotion/evidence/local-livesync-handoff-20260907/before-output/repaired-frame-587.png new file mode 100644 index 0000000..cc260a9 Binary files /dev/null and b/promotion/evidence/local-livesync-handoff-20260907/before-output/repaired-frame-587.png differ diff --git a/promotion/evidence/local-livesync-handoff-20260907/before-status/unavailable-demo-command.json b/promotion/evidence/local-livesync-handoff-20260907/before-status/unavailable-demo-command.json new file mode 100644 index 0000000..6f30e37 --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/before-status/unavailable-demo-command.json @@ -0,0 +1,16 @@ +{ + "name": "unavailable-demo", + "argv": [ + "C:/nvm4w/nodejs/node.exe", + "walkthrough.collab.mjs" + ], + "seconds": 65.437, + "timeoutSeconds": 150, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0, + 1, + 2 + ] +} diff --git a/promotion/evidence/local-livesync-handoff-20260907/before-status/unavailable-demo.stderr.txt b/promotion/evidence/local-livesync-handoff-20260907/before-status/unavailable-demo.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/promotion/evidence/local-livesync-handoff-20260907/before-status/unavailable-demo.stdout.txt b/promotion/evidence/local-livesync-handoff-20260907/before-status/unavailable-demo.stdout.txt new file mode 100644 index 0000000..e0a4b14 --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/before-status/unavailable-demo.stdout.txt @@ -0,0 +1,6 @@ +RUNID (fresh-room code) = STR08WGE + LiveSync cap 0: Two clients, one shared board + LiveSync fail-state pane 0: + LiveSync fail-state pane 1: +LiveSync attempt 1/1 err: locator.click: Timeout 60000ms exceeded. +WALKTHROUGH_COLLAB_CAPTURE_DONE — wrote src/walkthrough.collab.data.js diff --git a/promotion/evidence/local-livesync-handoff-20260907/before-status/unknown-selector-command.json b/promotion/evidence/local-livesync-handoff-20260907/before-status/unknown-selector-command.json new file mode 100644 index 0000000..5d7b29e --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/before-status/unknown-selector-command.json @@ -0,0 +1,16 @@ +{ + "name": "unknown-selector", + "argv": [ + "C:/nvm4w/nodejs/node.exe", + "walkthrough.collab.mjs" + ], + "seconds": 0.688, + "timeoutSeconds": 45, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0, + 1, + 2 + ] +} diff --git a/promotion/evidence/local-livesync-handoff-20260907/before-status/unknown-selector.stderr.txt b/promotion/evidence/local-livesync-handoff-20260907/before-status/unknown-selector.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/promotion/evidence/local-livesync-handoff-20260907/before-status/unknown-selector.stdout.txt b/promotion/evidence/local-livesync-handoff-20260907/before-status/unknown-selector.stdout.txt new file mode 100644 index 0000000..f677fd3 --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/before-status/unknown-selector.stdout.txt @@ -0,0 +1,2 @@ +RUNID (fresh-room code) = STR08V81 +WALKTHROUGH_COLLAB_CAPTURE_DONE — wrote src/walkthrough.collab.data.js diff --git a/promotion/evidence/local-livesync-handoff-20260907/checks/legacy-parity.json b/promotion/evidence/local-livesync-handoff-20260907/checks/legacy-parity.json new file mode 100644 index 0000000..f53c27f --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/checks/legacy-parity.json @@ -0,0 +1,106 @@ +[ + { + "composition": "WTC-NRsolo", + "frame": 0, + "before": { + "bytes": 696734, + "sha256": "64829bc1c00898a3ddb3bb04f6691613ac03b99b8a36564f6e530690b06118df" + }, + "after": { + "bytes": 696734, + "sha256": "64829bc1c00898a3ddb3bb04f6691613ac03b99b8a36564f6e530690b06118df" + }, + "decodedPixelsExact": true + }, + { + "composition": "WTC-NRsolo", + "frame": 34, + "before": { + "bytes": 711545, + "sha256": "076a932452dd22f41034b46aae41c321bcf83e0f29042d817ecd7d1be2482d43" + }, + "after": { + "bytes": 711545, + "sha256": "076a932452dd22f41034b46aae41c321bcf83e0f29042d817ecd7d1be2482d43" + }, + "decodedPixelsExact": true + }, + { + "composition": "WTC-NRsync", + "frame": 0, + "before": { + "bytes": 689073, + "sha256": "53a8462b82570fb73162f6a567d74aad89c154e0de4833287a3a24a6a007bdd2" + }, + "after": { + "bytes": 689073, + "sha256": "53a8462b82570fb73162f6a567d74aad89c154e0de4833287a3a24a6a007bdd2" + }, + "decodedPixelsExact": true + }, + { + "composition": "WTC-NRsync", + "frame": 34, + "before": { + "bytes": 693215, + "sha256": "a90ce3c87964e5c38623eaac82638100a9ff1462ec9c1588d82a94c3cdf3d59e" + }, + "after": { + "bytes": 693215, + "sha256": "a90ce3c87964e5c38623eaac82638100a9ff1462ec9c1588d82a94c3cdf3d59e" + }, + "decodedPixelsExact": true + }, + { + "composition": "WTC-LiveSync3", + "frame": 0, + "before": { + "bytes": 788366, + "sha256": "9f073df1001bd6aea718debd0cee7278d16d4df0fd535f413fd32a4bbc0f92f0" + }, + "after": { + "bytes": 788366, + "sha256": "9f073df1001bd6aea718debd0cee7278d16d4df0fd535f413fd32a4bbc0f92f0" + }, + "decodedPixelsExact": true + }, + { + "composition": "WTC-LiveSync3", + "frame": 34, + "before": { + "bytes": 797287, + "sha256": "cad3fdc71e1162a9b88b0fb8dfdab55bf66c5e23549e19184d7d0d492ef0605c" + }, + "after": { + "bytes": 797287, + "sha256": "cad3fdc71e1162a9b88b0fb8dfdab55bf66c5e23549e19184d7d0d492ef0605c" + }, + "decodedPixelsExact": true + }, + { + "composition": "WTC-TShero", + "frame": 0, + "before": { + "bytes": 75600, + "sha256": "67f6c6b9ab1dcb988c723cc96e565463cb000cccceb92f9dd04ea3ff9e2a20de" + }, + "after": { + "bytes": 75600, + "sha256": "67f6c6b9ab1dcb988c723cc96e565463cb000cccceb92f9dd04ea3ff9e2a20de" + }, + "decodedPixelsExact": true + }, + { + "composition": "WTC-TShero", + "frame": 34, + "before": { + "bytes": 89187, + "sha256": "68de95ced7725e1d197dc47459af4abf7a96c0f1c6fa11e7861832c0ac7176d5" + }, + "after": { + "bytes": 89187, + "sha256": "68de95ced7725e1d197dc47459af4abf7a96c0f1c6fa11e7861832c0ac7176d5" + }, + "decodedPixelsExact": true + } +] diff --git a/promotion/evidence/local-livesync-handoff-20260907/checks/normal-check-command.json b/promotion/evidence/local-livesync-handoff-20260907/checks/normal-check-command.json new file mode 100644 index 0000000..fadc5b1 --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/checks/normal-check-command.json @@ -0,0 +1,16 @@ +{ + "name": "normal-check", + "argv": [ + "C:/nvm4w/nodejs/node.exe", + "C:/nvm4w/nodejs/node_modules/npm/bin/npm-cli.js", + "run", + "check" + ], + "seconds": 1.954, + "timeoutSeconds": 180, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] +} diff --git a/promotion/evidence/local-livesync-handoff-20260907/checks/normal-check.stderr.txt b/promotion/evidence/local-livesync-handoff-20260907/checks/normal-check.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/promotion/evidence/local-livesync-handoff-20260907/checks/normal-check.stdout.txt b/promotion/evidence/local-livesync-handoff-20260907/checks/normal-check.stdout.txt new file mode 100644 index 0000000..4e71434 --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/checks/normal-check.stdout.txt @@ -0,0 +1,5 @@ + +> feature-clip-studio@0.1.0 check +> node check.mjs + +[check] parsed 39/39 JavaScript files; 36/36 tour steps and 34/34 prose citations name a line that matches diff --git a/promotion/evidence/local-livesync-handoff-20260907/copy-map.json b/promotion/evidence/local-livesync-handoff-20260907/copy-map.json new file mode 100644 index 0000000..8525669 --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/copy-map.json @@ -0,0 +1,1255 @@ +{ + "schema": "fcs-selected-evidence-map/v1", + "origins": "Paths are relative to the operator evidence root, not links claiming every original is portable.", + "files": [ + { + "origin": "E6o-featureclipstudio-current-consumer-01/02-install/normal-ci-command.json", + "originBytes": 258, + "originSHA256": "c84b3f3625fc2ccd15da4fd1469f635c487a02fce7b9979d9d74104e195308fb", + "path": "setup/normal-ci-command.json", + "bytes": 258, + "sha256": "c84b3f3625fc2ccd15da4fd1469f635c487a02fce7b9979d9d74104e195308fb", + "kind": "exact-raw-copy", + "purpose": "Actual ordinary locked setup and tool versions", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-current-consumer-01/02-install/normal-ci.stdout.txt", + "originBytes": 230, + "originSHA256": "21be77b9f71f41300cbb75f576b35c0fcedcafade477b3bb35484f35ce6ca4a2", + "path": "setup/normal-ci.stdout.txt", + "bytes": 230, + "sha256": "21be77b9f71f41300cbb75f576b35c0fcedcafade477b3bb35484f35ce6ca4a2", + "kind": "exact-raw-copy", + "purpose": "Actual ordinary locked setup and tool versions", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-current-consumer-01/02-install/normal-ci.stderr.txt", + "originBytes": 125, + "originSHA256": "d5075113082a929119680914d84f6aca56a7b331f8d88abbbb82b1cab4e94788", + "path": "setup/normal-ci.stderr.txt", + "bytes": 125, + "sha256": "d5075113082a929119680914d84f6aca56a7b331f8d88abbbb82b1cab4e94788", + "kind": "exact-raw-copy", + "purpose": "Actual ordinary locked setup and tool versions", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-current-consumer-01/02-install/node-version.stdout.txt", + "originBytes": 10, + "originSHA256": "99149e35f76aa1efc846f029c3d2733b3541fe76ac97b74d33883481c0ce8dd9", + "path": "setup/node-version.stdout.txt", + "bytes": 10, + "sha256": "99149e35f76aa1efc846f029c3d2733b3541fe76ac97b74d33883481c0ce8dd9", + "kind": "exact-raw-copy", + "purpose": "Actual ordinary locked setup and tool versions", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-current-consumer-01/02-install/npm-version.stdout.txt", + "originBytes": 7, + "originSHA256": "35217e32d288f09fea0fe2b8124665225fc00ac7ea72c312bb523db9950a13c4", + "path": "setup/npm-version.stdout.txt", + "bytes": 7, + "sha256": "35217e32d288f09fea0fe2b8124665225fc00ac7ea72c312bb523db9950a13c4", + "kind": "exact-raw-copy", + "purpose": "Actual ordinary locked setup and tool versions", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-current-consumer-01/02-install/ffmpeg-version.stdout.txt", + "originBytes": 1964, + "originSHA256": "f4d5c3a47d3592181730b4d37764498c96091f1604066b43ad60db1a480992dd", + "path": "setup/ffmpeg-version.stdout.txt", + "bytes": 1964, + "sha256": "f4d5c3a47d3592181730b4d37764498c96091f1604066b43ad60db1a480992dd", + "kind": "exact-raw-copy", + "purpose": "Actual ordinary locked setup and tool versions", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-current-consumer-01/02-install/ffprobe-version.stdout.txt", + "originBytes": 1965, + "originSHA256": "4cac2bf444f8d0c49ba2d8a05a4dd16656b762c24eba79d95a7fe8fc9a672cf9", + "path": "setup/ffprobe-version.stdout.txt", + "bytes": 1965, + "sha256": "4cac2bf444f8d0c49ba2d8a05a4dd16656b762c24eba79d95a7fe8fc9a672cf9", + "kind": "exact-raw-copy", + "purpose": "Actual ordinary locked setup and tool versions", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-current-consumer-01/10-negatives/unknown-selector-command.json", + "originBytes": 243, + "originSHA256": "d59aa53af90f6ded6dc55191199c907bcbd71f64acbd72c0faa4601202efb984", + "path": "before-status/unknown-selector-command.json", + "bytes": 243, + "sha256": "d59aa53af90f6ded6dc55191199c907bcbd71f64acbd72c0faa4601202efb984", + "kind": "exact-raw-copy", + "purpose": "Original false-success behavior; historical failure remains visible", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-current-consumer-01/10-negatives/unknown-selector.stdout.txt", + "originBytes": 108, + "originSHA256": "db73075647daa78f0c51a2a2f68fad46d41eaec30250b482f606f709e536bfba", + "path": "before-status/unknown-selector.stdout.txt", + "bytes": 108, + "sha256": "db73075647daa78f0c51a2a2f68fad46d41eaec30250b482f606f709e536bfba", + "kind": "exact-raw-copy", + "purpose": "Original false-success behavior; historical failure remains visible", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-current-consumer-01/10-negatives/unknown-selector.stderr.txt", + "originBytes": 0, + "originSHA256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "path": "before-status/unknown-selector.stderr.txt", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "kind": "exact-raw-copy", + "purpose": "Original false-success behavior; historical failure remains visible", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-current-consumer-01/10-negatives/unavailable-demo-command.json", + "originBytes": 245, + "originSHA256": "d106fc54fbee5b5321c3aaf441431504a32ee1de16289a258d48262503f3be27", + "path": "before-status/unavailable-demo-command.json", + "bytes": 245, + "sha256": "d106fc54fbee5b5321c3aaf441431504a32ee1de16289a258d48262503f3be27", + "kind": "exact-raw-copy", + "purpose": "Original false-success behavior; historical failure remains visible", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-current-consumer-01/10-negatives/unavailable-demo.stdout.txt", + "originBytes": 285, + "originSHA256": "f6db93d8bb1ae45d6acb696c0afc695ce3b3418f1ab82809067f0d17bfffdbeb", + "path": "before-status/unavailable-demo.stdout.txt", + "bytes": 285, + "sha256": "f6db93d8bb1ae45d6acb696c0afc695ce3b3418f1ab82809067f0d17bfffdbeb", + "kind": "exact-raw-copy", + "purpose": "Original false-success behavior; historical failure remains visible", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-current-consumer-01/10-negatives/unavailable-demo.stderr.txt", + "originBytes": 0, + "originSHA256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "path": "before-status/unavailable-demo.stderr.txt", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "kind": "exact-raw-copy", + "purpose": "Original false-success behavior; historical failure remains visible", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-capture-status-after-01/02-selection-negatives/selection-semantics.json", + "originBytes": 1106, + "originSHA256": "3568846278b110ab5eba127bc6366d7cc96483fc9a7d96c19a9c1511c4cceee1", + "path": "after-status/02-selection-negatives/selection-semantics.json", + "bytes": 1106, + "sha256": "3568846278b110ab5eba127bc6366d7cc96483fc9a7d96c19a9c1511c4cceee1", + "kind": "exact-raw-copy", + "purpose": "Six exact absent/empty/unknown/mixed selector outcomes", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-capture-status-after-01/02-selection-negatives/unknown-command.json", + "originBytes": 220, + "originSHA256": "80f5eb1edba4a6559ed59c59a803fd5fe09c5be57bd3bd7d92f46b9f0c7faeac", + "path": "after-status/02-selection-negatives/unknown-command.json", + "bytes": 220, + "sha256": "80f5eb1edba4a6559ed59c59a803fd5fe09c5be57bd3bd7d92f46b9f0c7faeac", + "kind": "exact-raw-copy", + "purpose": "Actual exit and diagnostic for this selection boundary", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-capture-status-after-01/02-selection-negatives/unknown.stderr.txt", + "originBytes": 554, + "originSHA256": "e474a2e198303999331cdf0eed5c4a3e7d2feb4dc012d329956405066ecbbe77", + "path": "after-status/02-selection-negatives/unknown.stderr.txt", + "bytes": 508, + "sha256": "2713c01ce3ee34fad04c071a41325c06e9467c9249e2d7fc226bf6c12ee779ee", + "kind": "explicit-derivative", + "purpose": "Actual exit and diagnostic for this selection boundary", + "omittedOrTransformed": [ + "Forward-slash/file-URL spelling of the same named absolute root is also replaced; no exception or exit value altered." + ] + }, + { + "origin": "E6o-featureclipstudio-capture-status-after-01/02-selection-negatives/mixed-command.json", + "originBytes": 218, + "originSHA256": "e97f05d33503da464cff4fc2ca94f67c1e4f587a77815e90b9631f65bd841012", + "path": "after-status/02-selection-negatives/mixed-command.json", + "bytes": 218, + "sha256": "e97f05d33503da464cff4fc2ca94f67c1e4f587a77815e90b9631f65bd841012", + "kind": "exact-raw-copy", + "purpose": "Actual exit and diagnostic for this selection boundary", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-capture-status-after-01/02-selection-negatives/mixed.stderr.txt", + "originBytes": 554, + "originSHA256": "e474a2e198303999331cdf0eed5c4a3e7d2feb4dc012d329956405066ecbbe77", + "path": "after-status/02-selection-negatives/mixed.stderr.txt", + "bytes": 508, + "sha256": "2713c01ce3ee34fad04c071a41325c06e9467c9249e2d7fc226bf6c12ee779ee", + "kind": "explicit-derivative", + "purpose": "Actual exit and diagnostic for this selection boundary", + "omittedOrTransformed": [ + "Forward-slash/file-URL spelling of the same named absolute root is also replaced; no exception or exit value altered." + ] + }, + { + "origin": "E6o-featureclipstudio-capture-status-after-01/02-selection-negatives/whitespace-command.json", + "originBytes": 223, + "originSHA256": "ad8428a723845ef7a75c23f1df5a5411f888336f6a58ea06fe0c8c3b0b61ee80", + "path": "after-status/02-selection-negatives/whitespace-command.json", + "bytes": 223, + "sha256": "ad8428a723845ef7a75c23f1df5a5411f888336f6a58ea06fe0c8c3b0b61ee80", + "kind": "exact-raw-copy", + "purpose": "Actual exit and diagnostic for this selection boundary", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-capture-status-after-01/02-selection-negatives/whitespace.stderr.txt", + "originBytes": 537, + "originSHA256": "31706d225ae0a00cb45107abb819d7a5504ed0e66fd0cd8ced5a18645feeb006", + "path": "after-status/02-selection-negatives/whitespace.stderr.txt", + "bytes": 491, + "sha256": "8553db10149a86f10c3de1cad04e4a28814ca04d316fd3053bbd58b1df48bb78", + "kind": "explicit-derivative", + "purpose": "Actual exit and diagnostic for this selection boundary", + "omittedOrTransformed": [ + "Forward-slash/file-URL spelling of the same named absolute root is also replaced; no exception or exit value altered." + ] + }, + { + "origin": "E6o-featureclipstudio-capture-status-after-01/02-selection-negatives/comma-command.json", + "originBytes": 218, + "originSHA256": "08df08325cf34063ea6173fbff9fb17c302ce3860cbfe20a7400a003c020b007", + "path": "after-status/02-selection-negatives/comma-command.json", + "bytes": 218, + "sha256": "08df08325cf34063ea6173fbff9fb17c302ce3860cbfe20a7400a003c020b007", + "kind": "exact-raw-copy", + "purpose": "Actual exit and diagnostic for this selection boundary", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-capture-status-after-01/02-selection-negatives/comma.stderr.txt", + "originBytes": 541, + "originSHA256": "c9acfcf903f6e2976ff4732ddb40e7324180d39abfcdc023931f2bf928a4c804", + "path": "after-status/02-selection-negatives/comma.stderr.txt", + "bytes": 495, + "sha256": "eb019103075c177d12feaa3d08d837f53eeffcba74dee954d4a507342fabf9ac", + "kind": "explicit-derivative", + "purpose": "Actual exit and diagnostic for this selection boundary", + "omittedOrTransformed": [ + "Forward-slash/file-URL spelling of the same named absolute root is also replaced; no exception or exit value altered." + ] + }, + { + "origin": "E6o-featureclipstudio-capture-status-after-01/02-selection-negatives/absent-command.json", + "originBytes": 219, + "originSHA256": "6112757274385c917ceca8da49dddeffc9f0a5b4aa3f7777595b3a1c19bb2f9d", + "path": "after-status/02-selection-negatives/absent-command.json", + "bytes": 219, + "sha256": "6112757274385c917ceca8da49dddeffc9f0a5b4aa3f7777595b3a1c19bb2f9d", + "kind": "exact-raw-copy", + "purpose": "Actual exit and diagnostic for this selection boundary", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-capture-status-after-01/02-selection-negatives/absent.stderr.txt", + "originBytes": 275, + "originSHA256": "ff04f1b1378a71378492d2aa74f326832907481551e4b23aba498fcdbfe4ea11", + "path": "after-status/02-selection-negatives/absent.stderr.txt", + "bytes": 275, + "sha256": "ff04f1b1378a71378492d2aa74f326832907481551e4b23aba498fcdbfe4ea11", + "kind": "exact-raw-copy", + "purpose": "Actual exit and diagnostic for this selection boundary", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-capture-status-after-01/02-selection-negatives/empty-env-command.json", + "originBytes": 222, + "originSHA256": "b9d149879166de1d3f410a2dbfc3e90131a6139845cc16fc515ca0a6469ada46", + "path": "after-status/02-selection-negatives/empty-env-command.json", + "bytes": 222, + "sha256": "b9d149879166de1d3f410a2dbfc3e90131a6139845cc16fc515ca0a6469ada46", + "kind": "exact-raw-copy", + "purpose": "Actual exit and diagnostic for this selection boundary", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-capture-status-after-01/02-selection-negatives/empty-env.stderr.txt", + "originBytes": 275, + "originSHA256": "ff04f1b1378a71378492d2aa74f326832907481551e4b23aba498fcdbfe4ea11", + "path": "after-status/02-selection-negatives/empty-env.stderr.txt", + "bytes": 275, + "sha256": "ff04f1b1378a71378492d2aa74f326832907481551e4b23aba498fcdbfe4ea11", + "kind": "exact-raw-copy", + "purpose": "Actual exit and diagnostic for this selection boundary", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-capture-status-after-01/04-unavailable/unavailable-command.json", + "originBytes": 225, + "originSHA256": "d0fa01fea600b544e7a9ecf7c8222c30f86a955b62bfd4d00f62092aae628890", + "path": "after-status/04-unavailable/unavailable-command.json", + "bytes": 225, + "sha256": "d0fa01fea600b544e7a9ecf7c8222c30f86a955b62bfd4d00f62092aae628890", + "kind": "exact-raw-copy", + "purpose": "Failure exits nonzero and exposes original cause, including unchanged60s timeout", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-capture-status-after-01/04-unavailable/unavailable.stdout.txt", + "originBytes": 195, + "originSHA256": "f3210d5e17ef70528e079b868686528d15c99f66e77c6e32f07dbffb43c6f77f", + "path": "after-status/04-unavailable/unavailable.stdout.txt", + "bytes": 195, + "sha256": "f3210d5e17ef70528e079b868686528d15c99f66e77c6e32f07dbffb43c6f77f", + "kind": "exact-raw-copy", + "purpose": "Failure exits nonzero and exposes original cause, including unchanged60s timeout", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-capture-status-after-01/04-unavailable/unavailable.stderr.txt", + "originBytes": 676, + "originSHA256": "f5006960fbf50e8e4b77432ef86695c93426fd43870933dfd3f441edc98e9cec", + "path": "after-status/04-unavailable/unavailable.stderr.txt", + "bytes": 584, + "sha256": "95552b1733068b682749538fcae681f620b29d4c018b40d68bbfebc8b2a7100e", + "kind": "explicit-derivative", + "purpose": "Failure exits nonzero and exposes original cause, including unchanged60s timeout", + "omittedOrTransformed": [ + "Absolute operator/checkout/home prefixes replaced by labelled placeholders; original stack locations remain bound locally.", + "Forward-slash/file-URL spelling of the same named absolute root is also replaced; no exception or exit value altered." + ] + }, + { + "origin": "E6o-featureclipstudio-capture-status-after-01/05-missing-control/missing-control-command.json", + "originBytes": 230, + "originSHA256": "3ff6d902e3ded3e4b65ddae31d8ee15462666b69a6b3814d0bfad0532355ca96", + "path": "after-status/05-missing-control/missing-control-command.json", + "bytes": 230, + "sha256": "3ff6d902e3ded3e4b65ddae31d8ee15462666b69a6b3814d0bfad0532355ca96", + "kind": "exact-raw-copy", + "purpose": "Failure exits nonzero and exposes original cause, including unchanged60s timeout", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-capture-status-after-01/05-missing-control/missing-control.stdout.txt", + "originBytes": 460, + "originSHA256": "ffed6bb12aa48f864e393ce286e4f14fd94970e8b473fd87f18c8f3b8307f50b", + "path": "after-status/05-missing-control/missing-control.stdout.txt", + "bytes": 460, + "sha256": "ffed6bb12aa48f864e393ce286e4f14fd94970e8b473fd87f18c8f3b8307f50b", + "kind": "exact-raw-copy", + "purpose": "Failure exits nonzero and exposes original cause, including unchanged60s timeout", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-capture-status-after-01/05-missing-control/missing-control.stderr.txt", + "originBytes": 636, + "originSHA256": "ff955ac7ccfea174c0a74ec401314c95983b67d1448d13a1e27d6a2b36485c61", + "path": "after-status/05-missing-control/missing-control.stderr.txt", + "bytes": 544, + "sha256": "eb048e753761ef99a5fec7d897a5acd37d766e6e7ad6c1b6d24a49a4d86093ec", + "kind": "explicit-derivative", + "purpose": "Failure exits nonzero and exposes original cause, including unchanged60s timeout", + "omittedOrTransformed": [ + "Absolute operator/checkout/home prefixes replaced by labelled placeholders; original stack locations remain bound locally.", + "Forward-slash/file-URL spelling of the same named absolute root is also replaced; no exception or exit value altered." + ] + }, + { + "origin": "E6o-featureclipstudio-capture-status-after-01/06-recovery/selected-livesync-command.json", + "originBytes": 423, + "originSHA256": "d4c6e7ed487b541bf7cca053607e8207b827a6853b2db7d65c7c95056a49b6c9", + "path": "after-status/06-recovery/selected-livesync-command.json", + "bytes": 420, + "sha256": "ca1f766a481063a2a1829c082891cb9ad8f452b4cf3a6a224d92926eb83f0bc3", + "kind": "explicit-derivative", + "purpose": "Actual successful recovery and exact54capture/native-buffer/disk relation", + "omittedOrTransformed": [ + "Absolute operator/checkout/home prefixes replaced by labelled placeholders; referenced originals remain operator-local." + ] + }, + { + "origin": "E6o-featureclipstudio-capture-status-after-01/06-recovery/selected-livesync.stdout.txt", + "originBytes": 570, + "originSHA256": "99138eaeb5576d6819730aa42932715c9e213d1114f2fe2bae8729f0281b48a1", + "path": "after-status/06-recovery/selected-livesync.stdout.txt", + "bytes": 570, + "sha256": "99138eaeb5576d6819730aa42932715c9e213d1114f2fe2bae8729f0281b48a1", + "kind": "exact-raw-copy", + "purpose": "Actual successful recovery and exact54capture/native-buffer/disk relation", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-capture-status-after-01/06-recovery/selected-livesync.stderr.txt", + "originBytes": 0, + "originSHA256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "path": "after-status/06-recovery/selected-livesync.stderr.txt", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "kind": "exact-raw-copy", + "purpose": "Actual successful recovery and exact54capture/native-buffer/disk relation", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-capture-status-after-01/06-recovery/native-generated-disk-bijection.json", + "originBytes": 8499, + "originSHA256": "a97cca0bb43d1fa8710ae98f03cbe2cff84fffd48b6363e0421818660bdeb71d", + "path": "after-status/06-recovery/native-generated-disk-bijection.json", + "bytes": 8499, + "sha256": "a97cca0bb43d1fa8710ae98f03cbe2cff84fffd48b6363e0421818660bdeb71d", + "kind": "exact-raw-copy", + "purpose": "Actual successful recovery and exact54capture/native-buffer/disk relation", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-capture-status-after-01/06-recovery/observer/report.json", + "originBytes": 17323, + "originSHA256": "7fde87aa378f1a50ad6b690e6399c6f2a03ec263b00906f1153f9f837fcc2c45", + "path": "after-status/native-observation.json", + "bytes": 6921, + "sha256": "b47e4b58b281a071358faee6fc1abfa84e92fed8277195f1efcf8d2d844eb21e", + "kind": "explicit-derivative", + "purpose": "Actual two-client board agreement and local request/error observations", + "omittedOrTransformed": [ + "Per-request origin/path rows omitted; allowed/count derived from those exact rows.", + "Per-screenshot rows omitted; exact native/generated/disk table is separately included." + ] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/02-normal-check/normal-check-command.json", + "originBytes": 275, + "originSHA256": "3cc47d0741288a4da4e4e8ca68017d0b63e3c3bfbec83b02edd488270ceab742", + "path": "checks/normal-check-command.json", + "bytes": 275, + "sha256": "3cc47d0741288a4da4e4e8ca68017d0b63e3c3bfbec83b02edd488270ceab742", + "kind": "exact-raw-copy", + "purpose": "Actual current39JavaScript/36tour/34citation check", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/02-normal-check/normal-check.stdout.txt", + "originBytes": 160, + "originSHA256": "bd6cb30c52eb122651a342069acd32cf94a32ed9ee44fb386fa99239533afefb", + "path": "checks/normal-check.stdout.txt", + "bytes": 160, + "sha256": "bd6cb30c52eb122651a342069acd32cf94a32ed9ee44fb386fa99239533afefb", + "kind": "exact-raw-copy", + "purpose": "Actual current39JavaScript/36tour/34citation check", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/02-normal-check/normal-check.stderr.txt", + "originBytes": 0, + "originSHA256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "path": "checks/normal-check.stderr.txt", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "kind": "exact-raw-copy", + "purpose": "Actual current39JavaScript/36tour/34citation check", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/03-preflight-stills/legacy-parity.json", + "originBytes": 2777, + "originSHA256": "1736a8a1bf96b1132b3beba23d0733c7e409083c54fb3ba543c7fd6c1849785c", + "path": "checks/legacy-parity.json", + "bytes": 2777, + "sha256": "1736a8a1bf96b1132b3beba23d0733c7e409083c54fb3ba543c7fd6c1849785c", + "kind": "exact-raw-copy", + "purpose": "Eight selected legacy frame comparisons, not all old compositions", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-capture-status-after-01/07-media/repaired-frame-0.png", + "originBytes": 190598, + "originSHA256": "8b909c3b819574600c9a6fd5a814bd17c062e542cec7e16dfdb4e268bf707ecc", + "path": "before-output/repaired-frame-0.png", + "bytes": 190598, + "sha256": "8b909c3b819574600c9a6fd5a814bd17c062e542cec7e16dfdb4e268bf707ecc", + "kind": "exact-raw-copy", + "purpose": "Actual old unreadable exported state at named frame", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-capture-status-after-01/07-media/repaired-frame-147.png", + "originBytes": 223729, + "originSHA256": "f4c6fcdf0cf8a73b3f555a00b5a1f37ae5126dcf06293c054e7cd37d36e30281", + "path": "before-output/repaired-frame-147.png", + "bytes": 223729, + "sha256": "f4c6fcdf0cf8a73b3f555a00b5a1f37ae5126dcf06293c054e7cd37d36e30281", + "kind": "exact-raw-copy", + "purpose": "Actual old unreadable exported state at named frame", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-capture-status-after-01/07-media/repaired-frame-294.png", + "originBytes": 209727, + "originSHA256": "4ba2fca74b9ce400e9f2a05e6cea6519c984cd0870ce28c711569ced75e00839", + "path": "before-output/repaired-frame-294.png", + "bytes": 209727, + "sha256": "4ba2fca74b9ce400e9f2a05e6cea6519c984cd0870ce28c711569ced75e00839", + "kind": "exact-raw-copy", + "purpose": "Actual old unreadable exported state at named frame", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-capture-status-after-01/07-media/repaired-frame-587.png", + "originBytes": 234102, + "originSHA256": "c8567729d745e5de081e7e8a6483fb046a4fa712e7c5c48a005fccdb07e3ce79", + "path": "before-output/repaired-frame-587.png", + "bytes": 234102, + "sha256": "c8567729d745e5de081e7e8a6483fb046a4fa712e7c5c48a005fccdb07e3ce79", + "kind": "exact-raw-copy", + "purpose": "Actual old unreadable exported state at named frame", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-capture-status-after-01/07-media/gif-frame-293.png", + "originBytes": 46486, + "originSHA256": "27ce1ac241da93b211beb75ee9b777a599226e8d32a480626e29fd5eefa5ae77", + "path": "before-output/gif-frame-293.png", + "bytes": 46486, + "sha256": "27ce1ac241da93b211beb75ee9b777a599226e8d32a480626e29fd5eefa5ae77", + "kind": "exact-raw-copy", + "purpose": "Actual old720 palette GIF frame, not a resampled substitute", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-readability-plan-03/change-boundary.png", + "originBytes": 224067, + "originSHA256": "f69cea8c46e7ddfef5967388f8eb76346337716a4a7c50dead85a0b6865b9f04", + "path": "scope/change-boundary.png", + "bytes": 224067, + "sha256": "f69cea8c46e7ddfef5967388f8eb76346337716a4a7c50dead85a0b6865b9f04", + "kind": "exact-raw-copy", + "purpose": "Actual labelled change boundary of frozen old output", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-readability-plan-03/change-boundary.md", + "originBytes": 3717, + "originSHA256": "cbfe55ab985d59603a6cde6f576bd32ed87f187f60d07345dcc9107940da99b8", + "path": "scope/change-boundary.md.txt", + "bytes": 3717, + "sha256": "cbfe55ab985d59603a6cde6f576bd32ed87f187f60d07345dcc9107940da99b8", + "kind": "exact-raw-copy", + "purpose": "Scope contract and explicit motion/focus limits", + "omittedOrTransformed": [] + }, + { + "origin": "E6o_FEATURECLIPSTUDIO_CAPTURE_STATUS_FINAL_JUDGE.md", + "originBytes": 3192, + "originSHA256": "927c8638a8691e46512bf6411f6474c7c3d91b55507a6ddf1e209d4ec959ba22", + "path": "judgments/E6o_FEATURECLIPSTUDIO_CAPTURE_STATUS_FINAL_JUDGE.md.txt", + "bytes": 3192, + "sha256": "927c8638a8691e46512bf6411f6474c7c3d91b55507a6ddf1e209d4ec959ba22", + "kind": "exact-raw-copy", + "purpose": "Independent historical scoped status/criterion judgment; source/local references explicitly mapped", + "omittedOrTransformed": [] + }, + { + "origin": "E6o_FEATURECLIPSTUDIO_CAPTURE_STATUS_FINAL_JUDGE.json", + "originBytes": 9876, + "originSHA256": "833c51ba6f9974d60662c256f03fb87e8a16b5830006b496c9832ed0dbbf1020", + "path": "judgments/E6o_FEATURECLIPSTUDIO_CAPTURE_STATUS_FINAL_JUDGE.json", + "bytes": 9258, + "sha256": "b40c0069d521d23554dd092811cb4e81046ce894c6875ebdc92162e3ed13b299", + "kind": "explicit-derivative", + "purpose": "Independent historical scoped status/criterion judgment; source/local references explicitly mapped", + "omittedOrTransformed": [ + "Absolute operator/checkout/home prefixes replaced by labelled placeholders; referenced originals remain operator-local." + ] + }, + { + "origin": "E6o_FEATURECLIPSTUDIO_CRITERION_ASSESSMENT.md", + "originBytes": 5000, + "originSHA256": "34ff93d97754f0e66041feeb19c0545dcf3d84e1f356673a3fdd9ff5cdc3a446", + "path": "judgments/E6o_FEATURECLIPSTUDIO_CRITERION_ASSESSMENT.md.txt", + "bytes": 5000, + "sha256": "34ff93d97754f0e66041feeb19c0545dcf3d84e1f356673a3fdd9ff5cdc3a446", + "kind": "exact-raw-copy", + "purpose": "Independent historical scoped status/criterion judgment; source/local references explicitly mapped", + "omittedOrTransformed": [] + }, + { + "origin": "E6o_FEATURECLIPSTUDIO_CRITERION_ASSESSMENT.json", + "originBytes": 52393, + "originSHA256": "1af30f642f6521de90e58fa64aea530297448627fe23770d8a23bb3420bb3ca0", + "path": "judgments/E6o_FEATURECLIPSTUDIO_CRITERION_ASSESSMENT.json", + "bytes": 47752, + "sha256": "1e9d47b96c0213865628321e04243120451b8ffbbd86be50b54530477a04d49a", + "kind": "explicit-derivative", + "purpose": "Independent historical scoped status/criterion judgment; source/local references explicitly mapped", + "omittedOrTransformed": [ + "Absolute operator/checkout/home prefixes replaced by labelled placeholders; referenced originals remain operator-local." + ] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/04-full-media/readable-livesync.mp4", + "originBytes": 2374634, + "originSHA256": "9fdf8250cfadd6957ae23e68de104b2827d9b64de3857bf3ee1808860698700e", + "path": "after-output/readable-livesync.mp4", + "bytes": 2374634, + "sha256": "9fdf8250cfadd6957ae23e68de104b2827d9b64de3857bf3ee1808860698700e", + "kind": "exact-raw-copy", + "purpose": "Accepted encoded LiveSync output; actual bytes, not a regenerated example.", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/04-full-media/readable-livesync.gif", + "originBytes": 2772039, + "originSHA256": "406425fade2aaae2b06722a4d279214f43b6b1698f22ee6b9c8b175af9967648", + "path": "after-output/readable-livesync.gif", + "bytes": 2772039, + "sha256": "406425fade2aaae2b06722a4d279214f43b6b1698f22ee6b9c8b175af9967648", + "kind": "exact-raw-copy", + "purpose": "Accepted encoded LiveSync output; actual bytes, not a regenerated example.", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/04-full-media/movie-0.png", + "originBytes": 449030, + "originSHA256": "181cd4d925a5f1bb1645d75357c04d58e1b816ade5624b8dd614611f81fb1da4", + "path": "after-output/movie-0.png", + "bytes": 449030, + "sha256": "181cd4d925a5f1bb1645d75357c04d58e1b816ade5624b8dd614611f81fb1da4", + "kind": "exact-raw-copy", + "purpose": "Actual decoded MP4 sample: eight settled steps plus start/final, early travel and longest card.", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/04-full-media/gif-0.png", + "originBytes": 69971, + "originSHA256": "7d1a6004259387788d815b049f17e6ba70764389938657f22b8b27b458151ab2", + "path": "after-output/gif-0.png", + "bytes": 69971, + "sha256": "7d1a6004259387788d815b049f17e6ba70764389938657f22b8b27b458151ab2", + "kind": "exact-raw-copy", + "purpose": "Actual palette GIF decoded sample; nominal half-frame selection, not a downscaled still.", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/04-full-media/movie-26.png", + "originBytes": 480813, + "originSHA256": "de3ace6e9d21b81ea7af5c713a000b79c18040b36d733ed7db28468a557e7c45", + "path": "after-output/movie-26.png", + "bytes": 480813, + "sha256": "de3ace6e9d21b81ea7af5c713a000b79c18040b36d733ed7db28468a557e7c45", + "kind": "exact-raw-copy", + "purpose": "Actual decoded MP4 sample: eight settled steps plus start/final, early travel and longest card.", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/04-full-media/gif-13.png", + "originBytes": 73397, + "originSHA256": "a54cd91e516ec85e78a2f0f0ed1e49f54605f05f4c1995b0bd246f146fd16e6b", + "path": "after-output/gif-13.png", + "bytes": 73397, + "sha256": "a54cd91e516ec85e78a2f0f0ed1e49f54605f05f4c1995b0bd246f146fd16e6b", + "kind": "exact-raw-copy", + "purpose": "Actual palette GIF decoded sample; nominal half-frame selection, not a downscaled still.", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/04-full-media/movie-96.png", + "originBytes": 518760, + "originSHA256": "4a30488b5e8064adf7e5be51861587637b9ed9cc8c7de8b35f7ed29da24351b0", + "path": "after-output/movie-96.png", + "bytes": 518760, + "sha256": "4a30488b5e8064adf7e5be51861587637b9ed9cc8c7de8b35f7ed29da24351b0", + "kind": "exact-raw-copy", + "purpose": "Actual decoded MP4 sample: eight settled steps plus start/final, early travel and longest card.", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/04-full-media/gif-48.png", + "originBytes": 77084, + "originSHA256": "0fe14996174cb39f6b6a9a14e44b6a596dc97face9acb28a039e5f3ecadc5457", + "path": "after-output/gif-48.png", + "bytes": 77084, + "sha256": "0fe14996174cb39f6b6a9a14e44b6a596dc97face9acb28a039e5f3ecadc5457", + "kind": "exact-raw-copy", + "purpose": "Actual palette GIF decoded sample; nominal half-frame selection, not a downscaled still.", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/04-full-media/movie-156.png", + "originBytes": 516450, + "originSHA256": "b9f3ff3791015b83c710feca1bf1644ec98320dd36887cf941b5be2300b08c72", + "path": "after-output/movie-156.png", + "bytes": 516450, + "sha256": "b9f3ff3791015b83c710feca1bf1644ec98320dd36887cf941b5be2300b08c72", + "kind": "exact-raw-copy", + "purpose": "Actual decoded MP4 sample: eight settled steps plus start/final, early travel and longest card.", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/04-full-media/gif-78.png", + "originBytes": 76323, + "originSHA256": "ed299db2f33c8261df32ab60842260623b323543a02d9e8364839250a8c332bd", + "path": "after-output/gif-78.png", + "bytes": 76323, + "sha256": "ed299db2f33c8261df32ab60842260623b323543a02d9e8364839250a8c332bd", + "kind": "exact-raw-copy", + "purpose": "Actual palette GIF decoded sample; nominal half-frame selection, not a downscaled still.", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/04-full-media/movie-210.png", + "originBytes": 304978, + "originSHA256": "283f6a9a3b4310ed32e7b0eeb420510d6437029666b4338a80ef916bbdec7db6", + "path": "after-output/movie-210.png", + "bytes": 304978, + "sha256": "283f6a9a3b4310ed32e7b0eeb420510d6437029666b4338a80ef916bbdec7db6", + "kind": "exact-raw-copy", + "purpose": "Actual decoded MP4 sample: eight settled steps plus start/final, early travel and longest card.", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/04-full-media/gif-105.png", + "originBytes": 51717, + "originSHA256": "3811256de7e9126e8435952858c78d1bdf4b66db709224f348146acdfe6569ee", + "path": "after-output/gif-105.png", + "bytes": 51717, + "sha256": "3811256de7e9126e8435952858c78d1bdf4b66db709224f348146acdfe6569ee", + "kind": "exact-raw-copy", + "purpose": "Actual palette GIF decoded sample; nominal half-frame selection, not a downscaled still.", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/04-full-media/movie-294.png", + "originBytes": 289199, + "originSHA256": "0c0d46c1c07a4d98fb7eb5c7026b00f67d44572be7a85aa88a2ec5b7360d6b40", + "path": "after-output/movie-294.png", + "bytes": 289199, + "sha256": "0c0d46c1c07a4d98fb7eb5c7026b00f67d44572be7a85aa88a2ec5b7360d6b40", + "kind": "exact-raw-copy", + "purpose": "Actual decoded MP4 sample: eight settled steps plus start/final, early travel and longest card.", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/04-full-media/gif-147.png", + "originBytes": 50905, + "originSHA256": "83812d5e087eb8cf6ef58c34b01b52b4dd4a222659aa921a8d5096c768e05e22", + "path": "after-output/gif-147.png", + "bytes": 50905, + "sha256": "83812d5e087eb8cf6ef58c34b01b52b4dd4a222659aa921a8d5096c768e05e22", + "kind": "exact-raw-copy", + "purpose": "Actual palette GIF decoded sample; nominal half-frame selection, not a downscaled still.", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/04-full-media/movie-372.png", + "originBytes": 506643, + "originSHA256": "2ad49cbc3cb519cffff293ef5a104b773263793c9d4f3356f1ce23e394003d89", + "path": "after-output/movie-372.png", + "bytes": 506643, + "sha256": "2ad49cbc3cb519cffff293ef5a104b773263793c9d4f3356f1ce23e394003d89", + "kind": "exact-raw-copy", + "purpose": "Actual decoded MP4 sample: eight settled steps plus start/final, early travel and longest card.", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/04-full-media/gif-186.png", + "originBytes": 76240, + "originSHA256": "603372e3becb11b7b9479df7b892023a624c57c9eee55bf2b81228a57ba97043", + "path": "after-output/gif-186.png", + "bytes": 76240, + "sha256": "603372e3becb11b7b9479df7b892023a624c57c9eee55bf2b81228a57ba97043", + "kind": "exact-raw-copy", + "purpose": "Actual palette GIF decoded sample; nominal half-frame selection, not a downscaled still.", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/04-full-media/movie-402.png", + "originBytes": 467540, + "originSHA256": "83ac02498b8b713b0cc83460b2d009559cdc8560be8061b4e16ac9e71a3df747", + "path": "after-output/movie-402.png", + "bytes": 467540, + "sha256": "83ac02498b8b713b0cc83460b2d009559cdc8560be8061b4e16ac9e71a3df747", + "kind": "exact-raw-copy", + "purpose": "Actual decoded MP4 sample: eight settled steps plus start/final, early travel and longest card.", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/04-full-media/gif-201.png", + "originBytes": 72022, + "originSHA256": "cd0c71876f41ca5664739c8bfb557d36f7d50f7bb8eeceb73f29e7c4256fa861", + "path": "after-output/gif-201.png", + "bytes": 72022, + "sha256": "cd0c71876f41ca5664739c8bfb557d36f7d50f7bb8eeceb73f29e7c4256fa861", + "kind": "exact-raw-copy", + "purpose": "Actual palette GIF decoded sample; nominal half-frame selection, not a downscaled still.", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/04-full-media/movie-408.png", + "originBytes": 493764, + "originSHA256": "4f135552f905d3a29ea360945dabcb37b395871dcae936275a4adeb9c492cef8", + "path": "after-output/movie-408.png", + "bytes": 493764, + "sha256": "4f135552f905d3a29ea360945dabcb37b395871dcae936275a4adeb9c492cef8", + "kind": "exact-raw-copy", + "purpose": "Actual decoded MP4 sample: eight settled steps plus start/final, early travel and longest card.", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/04-full-media/gif-204.png", + "originBytes": 75230, + "originSHA256": "ec3d85c21127980139b9095194e29c4f0dacca356360687493f7320d9a941714", + "path": "after-output/gif-204.png", + "bytes": 75230, + "sha256": "ec3d85c21127980139b9095194e29c4f0dacca356360687493f7320d9a941714", + "kind": "exact-raw-copy", + "purpose": "Actual palette GIF decoded sample; nominal half-frame selection, not a downscaled still.", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/04-full-media/movie-420.png", + "originBytes": 425302, + "originSHA256": "c02b3301b5ab2e1c9cf54ca899cc4841ef9fd5d0f7db17c39145bccbf2a1cf6d", + "path": "after-output/movie-420.png", + "bytes": 425302, + "sha256": "c02b3301b5ab2e1c9cf54ca899cc4841ef9fd5d0f7db17c39145bccbf2a1cf6d", + "kind": "exact-raw-copy", + "purpose": "Actual decoded MP4 sample: eight settled steps plus start/final, early travel and longest card.", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/04-full-media/gif-210.png", + "originBytes": 64383, + "originSHA256": "712b70119c50f2bca4dba9d93b9c1af99fab0158ca2dc301d0a3bc27be0d1beb", + "path": "after-output/gif-210.png", + "bytes": 64383, + "sha256": "712b70119c50f2bca4dba9d93b9c1af99fab0158ca2dc301d0a3bc27be0d1beb", + "kind": "exact-raw-copy", + "purpose": "Actual palette GIF decoded sample; nominal half-frame selection, not a downscaled still.", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/04-full-media/movie-432.png", + "originBytes": 553961, + "originSHA256": "bfb055ea03da0b5aa564d59122bac4ad3198db09a1b964e15ebc9fc14ef06b37", + "path": "after-output/movie-432.png", + "bytes": 553961, + "sha256": "bfb055ea03da0b5aa564d59122bac4ad3198db09a1b964e15ebc9fc14ef06b37", + "kind": "exact-raw-copy", + "purpose": "Actual decoded MP4 sample: eight settled steps plus start/final, early travel and longest card.", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/04-full-media/gif-216.png", + "originBytes": 71097, + "originSHA256": "310cd10b6ceaad026d319473828f5504b4eee23b2e4b35305c6dc428b5759a21", + "path": "after-output/gif-216.png", + "bytes": 71097, + "sha256": "310cd10b6ceaad026d319473828f5504b4eee23b2e4b35305c6dc428b5759a21", + "kind": "exact-raw-copy", + "purpose": "Actual palette GIF decoded sample; nominal half-frame selection, not a downscaled still.", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/04-full-media/movie-518.png", + "originBytes": 578710, + "originSHA256": "d18a89ec9f72f7fa05810036e4ce48813d380853066180d096f52d014508ee00", + "path": "after-output/movie-518.png", + "bytes": 578710, + "sha256": "d18a89ec9f72f7fa05810036e4ce48813d380853066180d096f52d014508ee00", + "kind": "exact-raw-copy", + "purpose": "Actual decoded MP4 sample: eight settled steps plus start/final, early travel and longest card.", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/04-full-media/gif-259.png", + "originBytes": 72989, + "originSHA256": "f9277d00ea2a411ff80fc7c69de3387c84c9edfb1016a82bae6e6bf924101a5d", + "path": "after-output/gif-259.png", + "bytes": 72989, + "sha256": "f9277d00ea2a411ff80fc7c69de3387c84c9edfb1016a82bae6e6bf924101a5d", + "kind": "exact-raw-copy", + "purpose": "Actual palette GIF decoded sample; nominal half-frame selection, not a downscaled still.", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/04-full-media/movie-587.png", + "originBytes": 578774, + "originSHA256": "105372737a0521a8deab9fca32cb9ba25e40e3845d8e7b20851521c99cd4aae7", + "path": "after-output/movie-587.png", + "bytes": 578774, + "sha256": "105372737a0521a8deab9fca32cb9ba25e40e3845d8e7b20851521c99cd4aae7", + "kind": "exact-raw-copy", + "purpose": "Actual decoded MP4 sample: eight settled steps plus start/final, early travel and longest card.", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/04-full-media/gif-293.png", + "originBytes": 73016, + "originSHA256": "1203538167ff51942b507d05391142772b0034f9a3423e6971865772d8d03fb3", + "path": "after-output/gif-293.png", + "bytes": 73016, + "sha256": "1203538167ff51942b507d05391142772b0034f9a3423e6971865772d8d03fb3", + "kind": "exact-raw-copy", + "purpose": "Actual palette GIF decoded sample; nominal half-frame selection, not a downscaled still.", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/04-full-media/render-readable-command.json", + "originBytes": 490, + "originSHA256": "a226c9314b027b2a616b7ca826b01e729ba38c91ae5604602f19965a5c101aaf", + "path": "encoding/render-readable-command.json", + "bytes": 410, + "sha256": "a561836ee6990bda38e3d38e48d95aec553a77983c8eb39d7043e76cb0f654bb", + "kind": "explicit-derivative", + "purpose": "Actual one-render/one-GIF command or probe/full-decode output.", + "omittedOrTransformed": [ + "Absolute operator/checkout/home prefixes replaced by labelled placeholders; referenced originals remain operator-local." + ] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/04-full-media/render-readable.stdout.txt", + "originBytes": 24668, + "originSHA256": "6b918a87efc0ef29eb9fc50acdfbbe868fccdf8eb985908fda6e703a0bf1e387", + "path": "encoding/render-readable.stdout.txt", + "bytes": 24526, + "sha256": "1c63c0152442e2baf5ef84bfcf94bc2628bbda911beff26c1d2a2dd56973e1fc", + "kind": "explicit-derivative", + "purpose": "Actual one-render/one-GIF command or probe/full-decode output.", + "omittedOrTransformed": [ + "Absolute operator/checkout/home prefixes replaced by labelled placeholders; original stack locations remain bound locally." + ] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/04-full-media/render-readable.stderr.txt", + "originBytes": 0, + "originSHA256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "path": "encoding/render-readable.stderr.txt", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "kind": "exact-raw-copy", + "purpose": "Actual one-render/one-GIF command or probe/full-decode output.", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/04-full-media/documented-gif-command.json", + "originBytes": 822, + "originSHA256": "c508d3f0c76284233dd8a0b18d257dfd0d8b3764eac81457c0d526c7f28c81c5", + "path": "encoding/documented-gif-command.json", + "bytes": 659, + "sha256": "f8d9833aba9a37ebeeb9397e6a380dd575eeab140d42ed812111872996ca14bd", + "kind": "explicit-derivative", + "purpose": "Actual one-render/one-GIF command or probe/full-decode output.", + "omittedOrTransformed": [ + "Absolute operator/checkout/home prefixes replaced by labelled placeholders; referenced originals remain operator-local." + ] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/04-full-media/documented-gif.stdout.txt", + "originBytes": 0, + "originSHA256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "path": "encoding/documented-gif.stdout.txt", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "kind": "exact-raw-copy", + "purpose": "Actual one-render/one-GIF command or probe/full-decode output.", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/04-full-media/documented-gif.stderr.txt", + "originBytes": 0, + "originSHA256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "path": "encoding/documented-gif.stderr.txt", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "kind": "exact-raw-copy", + "purpose": "Actual one-render/one-GIF command or probe/full-decode output.", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/04-full-media/readable-ffprobe-command.json", + "originBytes": 488, + "originSHA256": "12383996e1b080bdfdbba7435d9972fdaa98b8f78de1772bdcb43d698691ea60", + "path": "encoding/readable-ffprobe-command.json", + "bytes": 405, + "sha256": "c1cb42c1c5b5489412c9335a93da56efdea6d386643810288656f772c0292f78", + "kind": "explicit-derivative", + "purpose": "Actual one-render/one-GIF command or probe/full-decode output.", + "omittedOrTransformed": [ + "Absolute operator/checkout/home prefixes replaced by labelled placeholders; referenced originals remain operator-local." + ] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/04-full-media/readable-ffprobe.stdout.txt", + "originBytes": 4771, + "originSHA256": "70df8b237d3f4b3f549ef32690bd69bed33f9bb8a2efdf0df752081f3fffabc8", + "path": "encoding/readable-ffprobe.stdout.txt", + "bytes": 4691, + "sha256": "1de72f7b43285da7f9574b6582fb1440e030ea2a60944f40c7407effc5e4c8fe", + "kind": "explicit-derivative", + "purpose": "Actual one-render/one-GIF command or probe/full-decode output.", + "omittedOrTransformed": [ + "JSON-escaped spelling of the same operator prefix in stdout text replaced; raw probe output remains locally bound." + ] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/04-full-media/readable-ffprobe.stderr.txt", + "originBytes": 0, + "originSHA256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "path": "encoding/readable-ffprobe.stderr.txt", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "kind": "exact-raw-copy", + "purpose": "Actual one-render/one-GIF command or probe/full-decode output.", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/04-full-media/readable-decode-command.json", + "originBytes": 463, + "originSHA256": "5e276742b471c2d99d9c24b3ccaa0a3ee1e9721a71b304081172767be0157783", + "path": "encoding/readable-decode-command.json", + "bytes": 380, + "sha256": "89c7627791507cf220f160b7a30ecbbd34d81ae53435c3cd250492631f7db2b8", + "kind": "explicit-derivative", + "purpose": "Actual one-render/one-GIF command or probe/full-decode output.", + "omittedOrTransformed": [ + "Absolute operator/checkout/home prefixes replaced by labelled placeholders; referenced originals remain operator-local." + ] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/04-full-media/readable-decode.stdout.txt", + "originBytes": 0, + "originSHA256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "path": "encoding/readable-decode.stdout.txt", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "kind": "exact-raw-copy", + "purpose": "Actual one-render/one-GIF command or probe/full-decode output.", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/04-full-media/readable-decode.stderr.txt", + "originBytes": 0, + "originSHA256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "path": "encoding/readable-decode.stderr.txt", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "kind": "exact-raw-copy", + "purpose": "Actual one-render/one-GIF command or probe/full-decode output.", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/04-full-media/gif-probe-command.json", + "originBytes": 481, + "originSHA256": "3b6d4586e69b9c10affc0f7becf212102ac80d48aaa62735eeeeb16e28e602a6", + "path": "encoding/gif-probe-command.json", + "bytes": 398, + "sha256": "9a27f234af491a0b929c4a19c6144173e83eecf59dbdeb12cc3a593c8d6b4486", + "kind": "explicit-derivative", + "purpose": "Actual one-render/one-GIF command or probe/full-decode output.", + "omittedOrTransformed": [ + "Absolute operator/checkout/home prefixes replaced by labelled placeholders; referenced originals remain operator-local." + ] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/04-full-media/gif-probe.stdout.txt", + "originBytes": 2151, + "originSHA256": "a5e3af9a2102580cb967a324ed4917ce787c75fc09efb6a018eec712fdd9baa1", + "path": "encoding/gif-probe.stdout.txt", + "bytes": 2071, + "sha256": "aecf348b482f91d97df7cb52a5c68e57d26ca8c8ffbb7d2e5c9bc14999ad9c38", + "kind": "explicit-derivative", + "purpose": "Actual one-render/one-GIF command or probe/full-decode output.", + "omittedOrTransformed": [ + "JSON-escaped spelling of the same operator prefix in stdout text replaced; raw probe output remains locally bound." + ] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/04-full-media/gif-probe.stderr.txt", + "originBytes": 0, + "originSHA256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "path": "encoding/gif-probe.stderr.txt", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "kind": "exact-raw-copy", + "purpose": "Actual one-render/one-GIF command or probe/full-decode output.", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/04-full-media/gif-decode-command.json", + "originBytes": 458, + "originSHA256": "14a19d38fa5c3a0aa4f9c0ec2c5e11bbb72f15ba6d7a6139fe56646c33dc03c4", + "path": "encoding/gif-decode-command.json", + "bytes": 375, + "sha256": "395b25f5bb52414ae083c2446807a0281433ea0cd2aaaf2b48684656d6085ab3", + "kind": "explicit-derivative", + "purpose": "Actual one-render/one-GIF command or probe/full-decode output.", + "omittedOrTransformed": [ + "Absolute operator/checkout/home prefixes replaced by labelled placeholders; referenced originals remain operator-local." + ] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/04-full-media/gif-decode.stdout.txt", + "originBytes": 0, + "originSHA256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "path": "encoding/gif-decode.stdout.txt", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "kind": "exact-raw-copy", + "purpose": "Actual one-render/one-GIF command or probe/full-decode output.", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/04-full-media/gif-decode.stderr.txt", + "originBytes": 0, + "originSHA256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "path": "encoding/gif-decode.stderr.txt", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "kind": "exact-raw-copy", + "purpose": "Actual one-render/one-GIF command or probe/full-decode output.", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/04-full-media/receipt.json", + "originBytes": 96049, + "originSHA256": "9b0493230f689b4e1eba82185465aae3982c57e35554fc3a8c0d27d13843fbcf", + "path": "encoding/stage04-receipt.json", + "bytes": 23747, + "sha256": "40d9b4e7633222cde48d692f803322e2c220bfa7e532f7d1b5b9055074183056", + "kind": "explicit-derivative", + "purpose": "Outcome/deadline summary retains the original receipt's explicit lack of visual certification.", + "omittedOrTransformed": [ + "Full argv rows omitted; render/GIF/probe/decode exact commands are separately included. All128 outcome/deadline rows retained." + ] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/04-full-media/closed.json", + "originBytes": 118, + "originSHA256": "17bc5068498b462463adebd3d8f6331da34ae185e43da69271520d365cf614ad", + "path": "encoding/stage04-closed.json", + "bytes": 118, + "sha256": "17bc5068498b462463adebd3d8f6331da34ae185e43da69271520d365cf614ad", + "kind": "exact-raw-copy", + "purpose": "Closed stage source/process scope.", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/05-close/receipt.json", + "originBytes": 164, + "originSHA256": "38b5dd782102d499bb77624ec6bae6aadcac5591ab18071728e7160d733fa72c", + "path": "encoding/stage05-receipt.json", + "bytes": 164, + "sha256": "38b5dd782102d499bb77624ec6bae6aadcac5591ab18071728e7160d733fa72c", + "kind": "exact-raw-copy", + "purpose": "Actual final stage outcome.", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/05-close/closed.json", + "originBytes": 118, + "originSHA256": "17bc5068498b462463adebd3d8f6331da34ae185e43da69271520d365cf614ad", + "path": "encoding/stage05-closed.json", + "bytes": 118, + "sha256": "17bc5068498b462463adebd3d8f6331da34ae185e43da69271520d365cf614ad", + "kind": "exact-raw-copy", + "purpose": "Actual final source/process closure.", + "omittedOrTransformed": [] + }, + { + "origin": "E6o_FEATURECLIPSTUDIO_READABILITY_FINAL_JUDGE.json", + "originBytes": 4365, + "originSHA256": "d403ffd98ae140d87130ad2605fcceb63a0fcc9e9e2b12a2c9d7a613bc47095e", + "path": "judgments/E6o_FEATURECLIPSTUDIO_READABILITY_FINAL_JUDGE.json", + "bytes": 3645, + "sha256": "e0177f82b99146a7aef40bb804d3cd1b3ef07ca535fc2ad2695b6ddf6ddc712c", + "kind": "explicit-derivative", + "purpose": "Independent scoped final output judgment or separate criterion successor; original historical assessment stays exact locally.", + "omittedOrTransformed": [ + "Absolute operator/checkout/home prefixes replaced by labelled placeholders; referenced originals remain operator-local.", + "JSON-escaped spelling of the same operator prefix in stdout text replaced; raw probe output remains locally bound." + ] + }, + { + "origin": "E6o_FEATURECLIPSTUDIO_READABILITY_FINAL_JUDGE.md", + "originBytes": 6199, + "originSHA256": "ecdaf01085fefdc7777316e0f74ef4b97bf9af02a129764eb100e3b9f5a5352d", + "path": "judgments/E6o_FEATURECLIPSTUDIO_READABILITY_FINAL_JUDGE.md.txt", + "bytes": 6199, + "sha256": "ecdaf01085fefdc7777316e0f74ef4b97bf9af02a129764eb100e3b9f5a5352d", + "kind": "exact-raw-copy", + "purpose": "Independent scoped final output judgment or separate criterion successor; original historical assessment stays exact locally.", + "omittedOrTransformed": [] + }, + { + "origin": "E6o_FEATURECLIPSTUDIO_READABILITY_CRITERION_ASSESSMENT.json", + "originBytes": 74834, + "originSHA256": "54b065247acc4539ef36c31465862e45204e2ba8b96bf33020f930c8f753c941", + "path": "judgments/E6o_FEATURECLIPSTUDIO_READABILITY_CRITERION_ASSESSMENT.json", + "bytes": 66031, + "sha256": "ae178f351d8a05353d2e8ad4081a4098bc829b41cab2ffbf4b2ab9448495dba0", + "kind": "explicit-derivative", + "purpose": "Independent scoped final output judgment or separate criterion successor; original historical assessment stays exact locally.", + "omittedOrTransformed": [ + "Absolute operator/checkout/home prefixes replaced by labelled placeholders; referenced originals remain operator-local." + ] + }, + { + "origin": "E6o_FEATURECLIPSTUDIO_READABILITY_CRITERION_ASSESSMENT.md", + "originBytes": 3190, + "originSHA256": "d90269fa28006e1a930ba4a67a415f1a63ef7bceb59b6b915282d3b1d0cbcc26", + "path": "judgments/E6o_FEATURECLIPSTUDIO_READABILITY_CRITERION_ASSESSMENT.md.txt", + "bytes": 3190, + "sha256": "d90269fa28006e1a930ba4a67a415f1a63ef7bceb59b6b915282d3b1d0cbcc26", + "kind": "exact-raw-copy", + "purpose": "Independent scoped final output judgment or separate criterion successor; original historical assessment stays exact locally.", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-readability-criterion-successor-01/final-judge-field-correction.json", + "originBytes": 1066, + "originSHA256": "fbab4b9092efce1460d572e83e2839039ae36dbb801012bfe36167d941cfb6ec", + "path": "judgments/final-judge-field-correction.json", + "bytes": 889, + "sha256": "491fc358c694d972b1e7bc0b77be8e4e10ce3961a6353a5f22d9cbdbfc3266c3", + "kind": "explicit-derivative", + "purpose": "Explicit correction of inherited nested pending visualReview field; top-level final approval unchanged.", + "omittedOrTransformed": [ + "Absolute operator/checkout/home prefixes replaced by labelled placeholders; referenced originals remain operator-local." + ] + }, + { + "origin": "E6o-readability-media-independent-01/reviewer-reading-correction.json", + "originBytes": 18801, + "originSHA256": "86da1a54c33480e3cc8424c41b31534e92f1c998d92e6fed49c730816468a0d1", + "path": "judgments/reviewer-reading-correction.json", + "bytes": 18801, + "sha256": "86da1a54c33480e3cc8424c41b31534e92f1c998d92e6fed49c730816468a0d1", + "kind": "exact-raw-copy", + "purpose": "Preserved independent image-reading false alarm and its numeric resolution; no product rerender.", + "omittedOrTransformed": [] + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/04-full-media/readable-frame-147.png", + "originBytes": 512543, + "originSHA256": "a5c8875fced0460989322cf476485e485964ec1b7ace316325f386a22dfb797a", + "path": "after-output/movie-147.png", + "bytes": 512543, + "sha256": "a5c8875fced0460989322cf476485e485964ec1b7ace316325f386a22dfb797a", + "kind": "exact-raw-copy", + "purpose": "Exact same-frame147 comparison with the retained original movie; native decode from the accepted MP4.", + "omittedOrTransformed": [] + } + ] +} diff --git a/promotion/evidence/local-livesync-handoff-20260907/encoding/documented-gif-command.json b/promotion/evidence/local-livesync-handoff-20260907/encoding/documented-gif-command.json new file mode 100644 index 0000000..8c8ec77 --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/encoding/documented-gif-command.json @@ -0,0 +1,22 @@ +{ + "name": "documented-gif", + "argv": [ + "/scoop/shims/ffmpeg.exe", + "-v", + "error", + "-i", + "operator-evidence\\E6o-featureclipstudio-readability-render-01\\04-full-media\\readable-livesync.mp4", + "-vf", + "fps=15,scale=720:-1:flags=lanczos,split[s0][s1];[s0]palettegen=max_colors=128:stats_mode=diff[p];[s1][p]paletteuse=dither=bayer:bayer_scale=3:diff_mode=rectangle", + "-loop", + "0", + "operator-evidence\\E6o-featureclipstudio-readability-render-01\\04-full-media\\readable-livesync.gif" + ], + "seconds": 1.719, + "timeoutSeconds": 300, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] +} diff --git a/promotion/evidence/local-livesync-handoff-20260907/encoding/documented-gif.stderr.txt b/promotion/evidence/local-livesync-handoff-20260907/encoding/documented-gif.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/promotion/evidence/local-livesync-handoff-20260907/encoding/documented-gif.stdout.txt b/promotion/evidence/local-livesync-handoff-20260907/encoding/documented-gif.stdout.txt new file mode 100644 index 0000000..e69de29 diff --git a/promotion/evidence/local-livesync-handoff-20260907/encoding/gif-decode-command.json b/promotion/evidence/local-livesync-handoff-20260907/encoding/gif-decode-command.json new file mode 100644 index 0000000..e567641 --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/encoding/gif-decode-command.json @@ -0,0 +1,20 @@ +{ + "name": "gif-decode", + "argv": [ + "/scoop/shims/ffmpeg.exe", + "-v", + "error", + "-i", + "operator-evidence\\E6o-featureclipstudio-readability-render-01\\04-full-media\\readable-livesync.gif", + "-f", + "null", + "-" + ], + "seconds": 0.25, + "timeoutSeconds": 120, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] +} diff --git a/promotion/evidence/local-livesync-handoff-20260907/encoding/gif-decode.stderr.txt b/promotion/evidence/local-livesync-handoff-20260907/encoding/gif-decode.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/promotion/evidence/local-livesync-handoff-20260907/encoding/gif-decode.stdout.txt b/promotion/evidence/local-livesync-handoff-20260907/encoding/gif-decode.stdout.txt new file mode 100644 index 0000000..e69de29 diff --git a/promotion/evidence/local-livesync-handoff-20260907/encoding/gif-probe-command.json b/promotion/evidence/local-livesync-handoff-20260907/encoding/gif-probe-command.json new file mode 100644 index 0000000..a5f8fbb --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/encoding/gif-probe-command.json @@ -0,0 +1,20 @@ +{ + "name": "gif-probe", + "argv": [ + "/scoop/shims/ffprobe.exe", + "-v", + "error", + "-show_streams", + "-show_format", + "-of", + "json", + "operator-evidence\\E6o-featureclipstudio-readability-render-01\\04-full-media\\readable-livesync.gif" + ], + "seconds": 0.125, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] +} diff --git a/promotion/evidence/local-livesync-handoff-20260907/encoding/gif-probe.stderr.txt b/promotion/evidence/local-livesync-handoff-20260907/encoding/gif-probe.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/promotion/evidence/local-livesync-handoff-20260907/encoding/gif-probe.stdout.txt b/promotion/evidence/local-livesync-handoff-20260907/encoding/gif-probe.stdout.txt new file mode 100644 index 0000000..091b121 --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/encoding/gif-probe.stdout.txt @@ -0,0 +1,63 @@ +{ + "streams": [ + { + "index": 0, + "codec_name": "gif", + "codec_long_name": "CompuServe GIF (Graphics Interchange Format)", + "codec_type": "video", + "codec_tag_string": "[0][0][0][0]", + "codec_tag": "0x0000", + "width": 720, + "height": 405, + "coded_width": 720, + "coded_height": 405, + "closed_captions": 0, + "film_grain": 0, + "has_b_frames": 0, + "sample_aspect_ratio": "1:1", + "display_aspect_ratio": "16:9", + "pix_fmt": "bgra", + "level": -99, + "refs": 1, + "r_frame_rate": "15/1", + "avg_frame_rate": "15/1", + "time_base": "1/100", + "start_pts": 0, + "start_time": "0.000000", + "duration_ts": 1959, + "duration": "19.590000", + "nb_frames": "294", + "disposition": { + "default": 0, + "dub": 0, + "original": 0, + "comment": 0, + "lyrics": 0, + "karaoke": 0, + "forced": 0, + "hearing_impaired": 0, + "visual_impaired": 0, + "clean_effects": 0, + "attached_pic": 0, + "timed_thumbnails": 0, + "captions": 0, + "descriptions": 0, + "metadata": 0, + "dependent": 0, + "still_image": 0 + } + } + ], + "format": { + "filename": "operator-evidence\\E6o-featureclipstudio-readability-render-01\\04-full-media\\readable-livesync.gif", + "nb_streams": 1, + "nb_programs": 0, + "format_name": "gif", + "format_long_name": "CompuServe Graphics Interchange Format (GIF)", + "start_time": "0.000000", + "duration": "19.590000", + "size": "2772039", + "bit_rate": "1132022", + "probe_score": 100 + } +} diff --git a/promotion/evidence/local-livesync-handoff-20260907/encoding/readable-decode-command.json b/promotion/evidence/local-livesync-handoff-20260907/encoding/readable-decode-command.json new file mode 100644 index 0000000..6eb9fd5 --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/encoding/readable-decode-command.json @@ -0,0 +1,20 @@ +{ + "name": "readable-decode", + "argv": [ + "/scoop/shims/ffmpeg.exe", + "-v", + "error", + "-i", + "operator-evidence\\E6o-featureclipstudio-readability-render-01\\04-full-media\\readable-livesync.mp4", + "-f", + "null", + "-" + ], + "seconds": 0.25, + "timeoutSeconds": 180, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] +} diff --git a/promotion/evidence/local-livesync-handoff-20260907/encoding/readable-decode.stderr.txt b/promotion/evidence/local-livesync-handoff-20260907/encoding/readable-decode.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/promotion/evidence/local-livesync-handoff-20260907/encoding/readable-decode.stdout.txt b/promotion/evidence/local-livesync-handoff-20260907/encoding/readable-decode.stdout.txt new file mode 100644 index 0000000..e69de29 diff --git a/promotion/evidence/local-livesync-handoff-20260907/encoding/readable-ffprobe-command.json b/promotion/evidence/local-livesync-handoff-20260907/encoding/readable-ffprobe-command.json new file mode 100644 index 0000000..9756a0c --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/encoding/readable-ffprobe-command.json @@ -0,0 +1,20 @@ +{ + "name": "readable-ffprobe", + "argv": [ + "/scoop/shims/ffprobe.exe", + "-v", + "error", + "-show_streams", + "-show_format", + "-of", + "json", + "operator-evidence\\E6o-featureclipstudio-readability-render-01\\04-full-media\\readable-livesync.mp4" + ], + "seconds": 0.125, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] +} diff --git a/promotion/evidence/local-livesync-handoff-20260907/encoding/readable-ffprobe.stderr.txt b/promotion/evidence/local-livesync-handoff-20260907/encoding/readable-ffprobe.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/promotion/evidence/local-livesync-handoff-20260907/encoding/readable-ffprobe.stdout.txt b/promotion/evidence/local-livesync-handoff-20260907/encoding/readable-ffprobe.stdout.txt new file mode 100644 index 0000000..bc75253 --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/encoding/readable-ffprobe.stdout.txt @@ -0,0 +1,141 @@ +{ + "streams": [ + { + "index": 0, + "codec_name": "h264", + "codec_long_name": "H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10", + "profile": "High", + "codec_type": "video", + "codec_tag_string": "avc1", + "codec_tag": "0x31637661", + "width": 1920, + "height": 1080, + "coded_width": 1920, + "coded_height": 1080, + "closed_captions": 0, + "film_grain": 0, + "has_b_frames": 2, + "sample_aspect_ratio": "1:1", + "display_aspect_ratio": "16:9", + "pix_fmt": "yuvj420p", + "level": 40, + "color_range": "pc", + "color_space": "bt470bg", + "chroma_location": "center", + "field_order": "progressive", + "refs": 1, + "is_avc": "true", + "nal_length_size": "4", + "id": "0x1", + "r_frame_rate": "30/1", + "avg_frame_rate": "30/1", + "time_base": "1/90000", + "start_pts": 0, + "start_time": "0.000000", + "duration_ts": 1764000, + "duration": "19.600000", + "bit_rate": "641591", + "bits_per_raw_sample": "8", + "nb_frames": "588", + "extradata_size": 51, + "disposition": { + "default": 1, + "dub": 0, + "original": 0, + "comment": 0, + "lyrics": 0, + "karaoke": 0, + "forced": 0, + "hearing_impaired": 0, + "visual_impaired": 0, + "clean_effects": 0, + "attached_pic": 0, + "timed_thumbnails": 0, + "captions": 0, + "descriptions": 0, + "metadata": 0, + "dependent": 0, + "still_image": 0 + }, + "tags": { + "language": "und", + "handler_name": "VideoHandler", + "vendor_id": "[0][0][0][0]" + }, + "side_data_list": [ + { + "side_data_type": "ICC Profile" + } + ] + }, + { + "index": 1, + "codec_name": "aac", + "codec_long_name": "AAC (Advanced Audio Coding)", + "profile": "LC", + "codec_type": "audio", + "codec_tag_string": "mp4a", + "codec_tag": "0x6134706d", + "sample_fmt": "fltp", + "sample_rate": "48000", + "channels": 2, + "channel_layout": "stereo", + "bits_per_sample": 0, + "initial_padding": 0, + "id": "0x2", + "r_frame_rate": "0/0", + "avg_frame_rate": "0/0", + "time_base": "1/48000", + "start_pts": 0, + "start_time": "0.000000", + "duration_ts": 943104, + "duration": "19.648000", + "bit_rate": "317375", + "nb_frames": "921", + "extradata_size": 2, + "disposition": { + "default": 1, + "dub": 0, + "original": 0, + "comment": 0, + "lyrics": 0, + "karaoke": 0, + "forced": 0, + "hearing_impaired": 0, + "visual_impaired": 0, + "clean_effects": 0, + "attached_pic": 0, + "timed_thumbnails": 0, + "captions": 0, + "descriptions": 0, + "metadata": 0, + "dependent": 0, + "still_image": 0 + }, + "tags": { + "language": "und", + "handler_name": "SoundHandler", + "vendor_id": "[0][0][0][0]" + } + } + ], + "format": { + "filename": "operator-evidence\\E6o-featureclipstudio-readability-render-01\\04-full-media\\readable-livesync.mp4", + "nb_streams": 2, + "nb_programs": 0, + "format_name": "mov,mp4,m4a,3gp,3g2,mj2", + "format_long_name": "QuickTime / MOV", + "start_time": "0.000000", + "duration": "19.648000", + "size": "2374634", + "bit_rate": "966870", + "probe_score": 100, + "tags": { + "major_brand": "isom", + "minor_version": "512", + "compatible_brands": "isomiso2avc1mp41", + "encoder": "Lavf61.7.100", + "comment": "Made with Remotion 4.0.474" + } + } +} diff --git a/promotion/evidence/local-livesync-handoff-20260907/encoding/render-readable-command.json b/promotion/evidence/local-livesync-handoff-20260907/encoding/render-readable-command.json new file mode 100644 index 0000000..f8edd70 --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/encoding/render-readable-command.json @@ -0,0 +1,19 @@ +{ + "name": "render-readable", + "argv": [ + "C:/nvm4w/nodejs/node.exe", + "run-remotion.mjs", + "render", + "src/index.js", + "WTC-LiveSync", + "operator-evidence\\E6o-featureclipstudio-readability-render-01\\04-full-media\\readable-livesync.mp4", + "--concurrency=2" + ], + "seconds": 26.657, + "timeoutSeconds": 1200, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] +} diff --git a/promotion/evidence/local-livesync-handoff-20260907/encoding/render-readable.stderr.txt b/promotion/evidence/local-livesync-handoff-20260907/encoding/render-readable.stderr.txt new file mode 100644 index 0000000..e69de29 diff --git a/promotion/evidence/local-livesync-handoff-20260907/encoding/render-readable.stdout.txt b/promotion/evidence/local-livesync-handoff-20260907/encoding/render-readable.stdout.txt new file mode 100644 index 0000000..19d28d9 --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/encoding/render-readable.stdout.txt @@ -0,0 +1,667 @@ +Bundling 6% +Bundling 14% +Bundling 65% +Bundling 71% +Bundling 76% +Bundling 81% +Bundling 86% +Bundling 91% +Bundling 98% +Bundling 100% +Copying public dir 10.5 MB +Copying public dir 11.4 MB +Copying public dir 14.8 MB +Copying public dir 19.9 MB +Copying public dir 30.5 MB +Copying public dir 41.2 MB +Copying public dir 51.7 MB +Copying public dir 56.9 MB +Copying public dir 67.5 MB +Copying public dir 68.9 MB +Copying public dir 79.4 MB +Copying public dir 89.1 MB +Copying public dir 98.4 MB +Copying public dir 107.3 MB +Copying public dir 117.4 MB +Copying public dir 127.3 MB +Copying public dir 138.1 MB +Copying public dir 148.6 MB +Copying public dir 151.9 MB +Copying public dir 162.4 MB +Copying public dir 162.5 MB +Copying public dir 173 MB +Copying public dir 183.7 MB +Copying public dir 194.3 MB +Getting composition +Composition WTC-LiveSync +Codec h264 +Output operator-evidence\E6o-featureclipstudio-readability-render-01\04-full-media\readable-livesync.mp4 +Concurrency 2x +Rendered 0/588 +Rendered 1/588, time remaining: 2m 8s +Rendered 2/588, time remaining: 1m 8s +Rendered 3/588, time remaining: 55s +Rendered 4/588, time remaining: 44s +Rendered 5/588, time remaining: 40s +Rendered 6/588, time remaining: 35s +Rendered 7/588, time remaining: 34s +Rendered 8/588, time remaining: 31s +Rendered 9/588, time remaining: 31s +Rendered 10/588, time remaining: 29s +Rendered 11/588, time remaining: 28s +Rendered 12/588, time remaining: 27s +Rendered 13/588, time remaining: 27s +Rendered 14/588, time remaining: 26s +Rendered 15/588, time remaining: 26s +Rendered 16/588, time remaining: 25s +Rendered 17/588, time remaining: 25s +Rendered 18/588, time remaining: 24s +Rendered 19/588, time remaining: 24s +Rendered 20/588, time remaining: 23s +Rendered 21/588, time remaining: 23s +Rendered 22/588, time remaining: 23s +Rendered 23/588, time remaining: 23s +Rendered 24/588, time remaining: 22s +Rendered 25/588, time remaining: 22s +Rendered 26/588, time remaining: 22s +Rendered 27/588, time remaining: 22s +Rendered 28/588, time remaining: 22s +Rendered 29/588, time remaining: 22s +Rendered 30/588, time remaining: 21s +Rendered 31/588, time remaining: 21s +Rendered 32/588, time remaining: 21s +Rendered 33/588, time remaining: 21s +Rendered 34/588, time remaining: 21s +Rendered 35/588, time remaining: 21s +Rendered 36/588, time remaining: 21s +Rendered 37/588, time remaining: 21s +Rendered 38/588, time remaining: 20s +Rendered 39/588, time remaining: 20s +Rendered 40/588, time remaining: 20s +Rendered 41/588, time remaining: 20s +Rendered 42/588, time remaining: 20s +Rendered 43/588, time remaining: 20s +Rendered 44/588, time remaining: 20s +Rendered 45/588, time remaining: 20s +Rendered 46/588, time remaining: 20s +Rendered 47/588, time remaining: 20s +Rendered 48/588, time remaining: 19s +Rendered 49/588, time remaining: 19s +Rendered 50/588, time remaining: 19s +Rendered 51/588, time remaining: 19s +Rendered 52/588, time remaining: 19s +Rendered 53/588, time remaining: 19s +Rendered 54/588, time remaining: 19s +Rendered 55/588, time remaining: 19s +Rendered 56/588, time remaining: 19s +Rendered 57/588, time remaining: 19s +Rendered 58/588, time remaining: 19s +Rendered 59/588, time remaining: 19s +Rendered 60/588, time remaining: 19s +Rendered 61/588, time remaining: 19s +Rendered 62/588, time remaining: 18s +Rendered 63/588, time remaining: 19s +Rendered 64/588, time remaining: 18s +Rendered 65/588, time remaining: 18s +Rendered 66/588, time remaining: 18s +Rendered 67/588, time remaining: 18s +Rendered 68/588, time remaining: 18s +Rendered 68/588, time remaining: 18s +Rendered 69/588, time remaining: 18s +Rendered 70/588, time remaining: 18s +Rendered 71/588, time remaining: 18s +Rendered 72/588, time remaining: 18s +Rendered 73/588, time remaining: 18s +Rendered 74/588, time remaining: 18s +Rendered 75/588, time remaining: 18s +Rendered 76/588, time remaining: 18s +Rendered 77/588, time remaining: 18s +Rendered 78/588, time remaining: 18s +Rendered 79/588, time remaining: 18s +Rendered 80/588, time remaining: 18s +Rendered 81/588, time remaining: 18s +Rendered 82/588, time remaining: 18s +Rendered 83/588, time remaining: 18s +Rendered 83/588, time remaining: 18s +Rendered 84/588, time remaining: 18s +Rendered 85/588, time remaining: 18s +Rendered 86/588, time remaining: 17s +Rendered 87/588, time remaining: 17s +Rendered 88/588, time remaining: 17s +Rendered 89/588, time remaining: 17s +Rendered 90/588, time remaining: 17s +Rendered 91/588, time remaining: 17s +Rendered 92/588, time remaining: 17s +Rendered 93/588, time remaining: 17s +Rendered 94/588, time remaining: 17s +Rendered 95/588, time remaining: 17s +Rendered 96/588, time remaining: 17s +Rendered 97/588, time remaining: 17s +Rendered 98/588, time remaining: 17s +Rendered 98/588, time remaining: 17s +Rendered 99/588, time remaining: 17s +Rendered 100/588, time remaining: 17s +Rendered 101/588, time remaining: 17s +Rendered 102/588, time remaining: 17s +Rendered 103/588, time remaining: 17s +Rendered 104/588, time remaining: 17s +Rendered 105/588, time remaining: 17s +Rendered 106/588, time remaining: 16s +Rendered 107/588, time remaining: 17s +Rendered 108/588, time remaining: 16s +Rendered 109/588, time remaining: 16s +Rendered 110/588, time remaining: 16s +Rendered 111/588, time remaining: 16s +Rendered 112/588, time remaining: 16s +Rendered 113/588, time remaining: 16s +Rendered 114/588, time remaining: 16s +Rendered 114/588, time remaining: 16s +Rendered 115/588, time remaining: 16s +Rendered 116/588, time remaining: 16s +Rendered 117/588, time remaining: 16s +Rendered 118/588, time remaining: 16s +Rendered 119/588, time remaining: 16s +Rendered 120/588, time remaining: 16s +Rendered 121/588, time remaining: 16s +Rendered 122/588, time remaining: 16s +Rendered 123/588, time remaining: 16s +Rendered 124/588, time remaining: 16s +Rendered 125/588, time remaining: 16s +Rendered 126/588, time remaining: 16s +Rendered 127/588, time remaining: 16s +Rendered 128/588, time remaining: 16s +Rendered 129/588, time remaining: 16s +Rendered 129/588, time remaining: 16s +Rendered 130/588, time remaining: 15s +Rendered 131/588, time remaining: 16s +Rendered 132/588, time remaining: 16s +Rendered 133/588, time remaining: 16s +Rendered 134/588, time remaining: 15s +Rendered 135/588, time remaining: 15s +Rendered 136/588, time remaining: 15s +Rendered 137/588, time remaining: 15s +Rendered 138/588, time remaining: 15s +Rendered 139/588, time remaining: 15s +Rendered 140/588, time remaining: 15s +Rendered 141/588, time remaining: 15s +Rendered 142/588, time remaining: 15s +Rendered 143/588, time remaining: 15s +Rendered 144/588, time remaining: 15s +Rendered 144/588, time remaining: 15s +Rendered 145/588, time remaining: 15s +Rendered 146/588, time remaining: 15s +Rendered 147/588, time remaining: 15s +Rendered 148/588, time remaining: 15s +Rendered 149/588, time remaining: 15s +Rendered 150/588, time remaining: 15s +Rendered 151/588, time remaining: 14s +Rendered 152/588, time remaining: 14s +Rendered 153/588, time remaining: 14s +Rendered 154/588, time remaining: 14s +Rendered 155/588, time remaining: 14s +Rendered 156/588, time remaining: 14s +Rendered 157/588, time remaining: 14s +Rendered 158/588, time remaining: 14s +Rendered 159/588, time remaining: 14s +Rendered 159/588, time remaining: 14s +Rendered 160/588, time remaining: 14s +Rendered 161/588, time remaining: 14s +Rendered 162/588, time remaining: 14s +Rendered 163/588, time remaining: 14s +Rendered 164/588, time remaining: 14s +Rendered 165/588, time remaining: 14s +Rendered 166/588, time remaining: 14s +Rendered 167/588, time remaining: 14s +Rendered 168/588, time remaining: 14s +Rendered 169/588, time remaining: 14s +Rendered 170/588, time remaining: 14s +Rendered 171/588, time remaining: 14s +Rendered 172/588, time remaining: 14s +Rendered 173/588, time remaining: 14s +Rendered 174/588, time remaining: 13s +Rendered 174/588, time remaining: 13s +Rendered 175/588, time remaining: 13s +Rendered 176/588, time remaining: 13s +Rendered 177/588, time remaining: 13s +Rendered 178/588, time remaining: 13s +Rendered 179/588, time remaining: 13s +Rendered 180/588, time remaining: 13s +Rendered 181/588, time remaining: 13s +Rendered 182/588, time remaining: 13s +Rendered 183/588, time remaining: 13s +Rendered 184/588, time remaining: 13s +Rendered 185/588, time remaining: 13s +Rendered 186/588, time remaining: 13s +Rendered 187/588, time remaining: 13s +Rendered 188/588, time remaining: 13s +Rendered 189/588, time remaining: 13s +Rendered 189/588, time remaining: 13s +Rendered 190/588, time remaining: 13s +Rendered 191/588, time remaining: 13s +Rendered 192/588, time remaining: 13s +Rendered 193/588, time remaining: 13s +Rendered 194/588, time remaining: 13s +Rendered 195/588, time remaining: 13s +Rendered 196/588, time remaining: 13s +Rendered 197/588, time remaining: 13s +Rendered 198/588, time remaining: 13s +Rendered 199/588, time remaining: 13s +Rendered 200/588, time remaining: 13s +Rendered 201/588, time remaining: 13s +Rendered 202/588, time remaining: 13s +Rendered 202/588, time remaining: 13s +Rendered 203/588, time remaining: 13s +Rendered 204/588, time remaining: 13s +Rendered 205/588, time remaining: 13s +Rendered 206/588, time remaining: 13s +Rendered 207/588, time remaining: 13s +Rendered 208/588, time remaining: 13s +Rendered 209/588, time remaining: 13s +Rendered 210/588, time remaining: 13s +Rendered 211/588, time remaining: 13s +Rendered 212/588, time remaining: 13s +Rendered 213/588, time remaining: 13s +Rendered 214/588, time remaining: 12s +Rendered 215/588, time remaining: 13s +Rendered 216/588, time remaining: 12s +Rendered 216/588, time remaining: 12s +Rendered 217/588, time remaining: 12s +Rendered 218/588, time remaining: 12s +Rendered 219/588, time remaining: 12s +Rendered 220/588, time remaining: 12s +Rendered 221/588, time remaining: 12s +Rendered 222/588, time remaining: 12s +Rendered 223/588, time remaining: 12s +Rendered 224/588, time remaining: 12s +Rendered 225/588, time remaining: 12s +Rendered 226/588, time remaining: 12s +Rendered 227/588, time remaining: 12s +Rendered 228/588, time remaining: 12s +Rendered 229/588, time remaining: 12s +Rendered 230/588, time remaining: 12s +Rendered 230/588, time remaining: 12s +Rendered 231/588, time remaining: 12s +Rendered 232/588, time remaining: 12s +Rendered 233/588, time remaining: 12s +Rendered 234/588, time remaining: 12s +Rendered 235/588, time remaining: 12s +Rendered 236/588, time remaining: 12s +Rendered 237/588, time remaining: 12s +Rendered 238/588, time remaining: 12s +Rendered 239/588, time remaining: 12s +Rendered 240/588, time remaining: 12s +Rendered 241/588, time remaining: 12s +Rendered 242/588, time remaining: 12s +Rendered 243/588, time remaining: 12s +Rendered 243/588, time remaining: 12s +Rendered 244/588, time remaining: 12s +Rendered 245/588, time remaining: 12s +Rendered 246/588, time remaining: 12s +Rendered 247/588, time remaining: 12s +Rendered 248/588, time remaining: 12s +Rendered 249/588, time remaining: 12s +Rendered 250/588, time remaining: 12s +Rendered 251/588, time remaining: 11s +Rendered 252/588, time remaining: 11s +Rendered 253/588, time remaining: 11s +Rendered 254/588, time remaining: 11s +Rendered 255/588, time remaining: 11s +Rendered 256/588, time remaining: 11s +Rendered 257/588, time remaining: 11s +Rendered 258/588, time remaining: 11s +Rendered 258/588, time remaining: 11s +Rendered 259/588, time remaining: 11s +Rendered 260/588, time remaining: 11s +Rendered 261/588, time remaining: 11s +Rendered 262/588, time remaining: 11s +Rendered 263/588, time remaining: 11s +Rendered 264/588, time remaining: 11s +Rendered 265/588, time remaining: 11s +Rendered 266/588, time remaining: 11s +Rendered 267/588, time remaining: 11s +Rendered 268/588, time remaining: 11s +Rendered 269/588, time remaining: 11s +Rendered 270/588, time remaining: 11s +Rendered 271/588, time remaining: 11s +Rendered 272/588, time remaining: 11s +Rendered 273/588, time remaining: 11s +Rendered 273/588, time remaining: 11s +Rendered 274/588, time remaining: 11s +Rendered 275/588, time remaining: 11s +Rendered 276/588, time remaining: 11s +Rendered 277/588, time remaining: 11s +Rendered 278/588, time remaining: 11s +Rendered 279/588, time remaining: 11s +Rendered 280/588, time remaining: 11s +Rendered 281/588, time remaining: 10s +Rendered 282/588, time remaining: 10s +Rendered 283/588, time remaining: 10s +Rendered 284/588, time remaining: 10s +Rendered 285/588, time remaining: 10s +Rendered 286/588, time remaining: 10s +Rendered 287/588, time remaining: 10s +Rendered 288/588, time remaining: 10s +Rendered 288/588, time remaining: 10s +Rendered 289/588, time remaining: 10s +Rendered 290/588, time remaining: 10s +Rendered 291/588, time remaining: 10s +Rendered 292/588, time remaining: 10s +Rendered 293/588, time remaining: 10s +Rendered 294/588, time remaining: 10s +Rendered 295/588, time remaining: 10s +Rendered 296/588, time remaining: 10s +Rendered 297/588, time remaining: 10s +Rendered 298/588, time remaining: 10s +Rendered 299/588, time remaining: 10s +Rendered 300/588, time remaining: 10s +Rendered 301/588, time remaining: 10s +Rendered 302/588, time remaining: 10s +Rendered 303/588, time remaining: 10s +Rendered 304/588, time remaining: 10s +Rendered 304/588, time remaining: 10s +Rendered 305/588, time remaining: 10s +Rendered 306/588, time remaining: 10s +Rendered 307/588, time remaining: 9s +Rendered 308/588, time remaining: 9s +Rendered 309/588, time remaining: 9s +Rendered 310/588, time remaining: 9s +Rendered 311/588, time remaining: 9s +Rendered 312/588, time remaining: 9s +Rendered 313/588, time remaining: 9s +Rendered 314/588, time remaining: 9s +Rendered 315/588, time remaining: 9s +Rendered 316/588, time remaining: 9s +Rendered 317/588, time remaining: 9s +Rendered 318/588, time remaining: 9s +Rendered 319/588, time remaining: 9s +Rendered 319/588, time remaining: 9s +Rendered 320/588, time remaining: 9s +Rendered 321/588, time remaining: 9s +Rendered 322/588, time remaining: 9s +Rendered 323/588, time remaining: 9s +Rendered 324/588, time remaining: 9s +Rendered 325/588, time remaining: 9s +Rendered 326/588, time remaining: 9s +Rendered 327/588, time remaining: 9s +Rendered 328/588, time remaining: 9s +Rendered 329/588, time remaining: 9s +Rendered 330/588, time remaining: 9s +Rendered 331/588, time remaining: 9s +Rendered 332/588, time remaining: 9s +Rendered 333/588, time remaining: 9s +Rendered 334/588, time remaining: 9s +Rendered 335/588, time remaining: 8s +Rendered 335/588, time remaining: 8s +Rendered 336/588, time remaining: 8s +Rendered 337/588, time remaining: 8s +Rendered 338/588, time remaining: 8s +Rendered 339/588, time remaining: 8s +Rendered 340/588, time remaining: 8s +Rendered 341/588, time remaining: 8s +Rendered 342/588, time remaining: 8s +Rendered 343/588, time remaining: 8s +Rendered 344/588, time remaining: 8s +Rendered 345/588, time remaining: 8s +Rendered 346/588, time remaining: 8s +Rendered 347/588, time remaining: 8s +Rendered 348/588, time remaining: 8s +Rendered 349/588, time remaining: 8s +Rendered 350/588, time remaining: 8s +Rendered 350/588, time remaining: 8s +Rendered 351/588, time remaining: 8s +Rendered 352/588, time remaining: 8s +Rendered 353/588, time remaining: 8s +Rendered 354/588, time remaining: 8s +Rendered 355/588, time remaining: 8s +Rendered 356/588, time remaining: 8s +Rendered 357/588, time remaining: 8s +Rendered 358/588, time remaining: 8s +Rendered 359/588, time remaining: 7s +Rendered 360/588, time remaining: 7s +Rendered 361/588, time remaining: 7s +Rendered 362/588, time remaining: 7s +Rendered 363/588, time remaining: 7s +Rendered 364/588, time remaining: 7s +Rendered 364/588, time remaining: 7s +Rendered 365/588, time remaining: 7s +Rendered 366/588, time remaining: 7s +Rendered 367/588, time remaining: 7s +Rendered 368/588, time remaining: 7s +Rendered 369/588, time remaining: 7s +Rendered 370/588, time remaining: 7s +Rendered 371/588, time remaining: 7s +Rendered 372/588, time remaining: 7s +Rendered 373/588, time remaining: 7s +Rendered 374/588, time remaining: 7s +Rendered 375/588, time remaining: 7s +Rendered 376/588, time remaining: 7s +Rendered 377/588, time remaining: 7s +Rendered 378/588, time remaining: 7s +Rendered 379/588, time remaining: 7s +Rendered 380/588, time remaining: 7s +Rendered 380/588, time remaining: 7s +Rendered 381/588, time remaining: 7s +Rendered 382/588, time remaining: 7s +Rendered 383/588, time remaining: 6s +Rendered 384/588, time remaining: 6s +Rendered 385/588, time remaining: 6s +Rendered 386/588, time remaining: 6s +Rendered 387/588, time remaining: 6s +Rendered 388/588, time remaining: 6s +Rendered 389/588, time remaining: 6s +Rendered 390/588, time remaining: 6s +Rendered 391/588, time remaining: 6s +Rendered 392/588, time remaining: 6s +Rendered 393/588, time remaining: 6s +Rendered 394/588, time remaining: 6s +Rendered 395/588, time remaining: 6s +Rendered 396/588, time remaining: 6s +Rendered 396/588, time remaining: 6s +Rendered 397/588, time remaining: 6s +Rendered 398/588, time remaining: 6s +Rendered 399/588, time remaining: 6s +Rendered 400/588, time remaining: 6s +Rendered 401/588, time remaining: 6s +Rendered 402/588, time remaining: 6s +Rendered 403/588, time remaining: 6s +Rendered 404/588, time remaining: 6s +Rendered 405/588, time remaining: 6s +Rendered 406/588, time remaining: 6s +Rendered 407/588, time remaining: 6s +Rendered 408/588, time remaining: 6s +Rendered 408/588, time remaining: 6s +Rendered 409/588, time remaining: 6s +Rendered 410/588, time remaining: 6s +Rendered 411/588, time remaining: 6s +Rendered 412/588, time remaining: 6s +Rendered 413/588, time remaining: 6s +Rendered 414/588, time remaining: 5s +Rendered 415/588, time remaining: 6s +Rendered 416/588, time remaining: 5s +Rendered 417/588, time remaining: 5s +Rendered 418/588, time remaining: 5s +Rendered 419/588, time remaining: 5s +Rendered 420/588, time remaining: 5s +Rendered 421/588, time remaining: 5s +Rendered 421/588, time remaining: 5s +Rendered 422/588, time remaining: 5s +Rendered 423/588, time remaining: 5s +Rendered 424/588, time remaining: 5s +Rendered 425/588, time remaining: 5s +Rendered 426/588, time remaining: 5s +Rendered 427/588, time remaining: 5s +Rendered 428/588, time remaining: 5s +Rendered 429/588, time remaining: 5s +Rendered 430/588, time remaining: 5s +Rendered 431/588, time remaining: 5s +Rendered 432/588, time remaining: 5s +Rendered 433/588, time remaining: 5s +Rendered 434/588, time remaining: 5s +Rendered 434/588, time remaining: 5s +Rendered 435/588, time remaining: 5s +Rendered 436/588, time remaining: 5s +Rendered 437/588, time remaining: 5s +Rendered 438/588, time remaining: 5s +Rendered 439/588, time remaining: 5s +Rendered 440/588, time remaining: 5s +Rendered 441/588, time remaining: 5s +Rendered 442/588, time remaining: 5s +Rendered 443/588, time remaining: 5s +Rendered 444/588, time remaining: 5s +Rendered 445/588, time remaining: 5s +Rendered 446/588, time remaining: 5s +Rendered 447/588, time remaining: 5s +Rendered 447/588, time remaining: 5s +Rendered 448/588, time remaining: 5s +Rendered 449/588, time remaining: 4s +Rendered 450/588, time remaining: 4s +Rendered 451/588, time remaining: 4s +Rendered 452/588, time remaining: 4s +Rendered 453/588, time remaining: 4s +Rendered 454/588, time remaining: 4s +Rendered 455/588, time remaining: 4s +Rendered 456/588, time remaining: 4s +Rendered 457/588, time remaining: 4s +Rendered 458/588, time remaining: 4s +Rendered 459/588, time remaining: 4s +Rendered 460/588, time remaining: 4s +Rendered 461/588, time remaining: 4s +Rendered 461/588, time remaining: 4s +Rendered 462/588, time remaining: 4s +Rendered 463/588, time remaining: 4s +Rendered 464/588, time remaining: 4s +Rendered 465/588, time remaining: 4s +Rendered 466/588, time remaining: 4s +Rendered 467/588, time remaining: 4s +Rendered 468/588, time remaining: 4s +Rendered 469/588, time remaining: 4s +Rendered 470/588, time remaining: 4s +Rendered 471/588, time remaining: 4s +Rendered 472/588, time remaining: 4s +Rendered 473/588, time remaining: 4s +Rendered 474/588, time remaining: 4s +Rendered 475/588, time remaining: 4s +Rendered 476/588, time remaining: 4s +Rendered 476/588, time remaining: 4s +Rendered 477/588, time remaining: 4s +Rendered 478/588, time remaining: 4s +Rendered 479/588, time remaining: 3s +Rendered 480/588, time remaining: 3s +Rendered 481/588, time remaining: 3s +Rendered 482/588, time remaining: 3s +Rendered 483/588, time remaining: 3s +Rendered 484/588, time remaining: 3s +Rendered 485/588, time remaining: 3s +Rendered 486/588, time remaining: 3s +Rendered 487/588, time remaining: 3s +Rendered 488/588, time remaining: 3s +Rendered 489/588, time remaining: 3s +Rendered 490/588, time remaining: 3s +Rendered 491/588, time remaining: 3s +Rendered 491/588, time remaining: 3s +Rendered 492/588, time remaining: 3s +Rendered 493/588, time remaining: 3s +Rendered 494/588, time remaining: 3s +Rendered 495/588, time remaining: 3s +Rendered 496/588, time remaining: 3s +Rendered 497/588, time remaining: 3s +Rendered 498/588, time remaining: 3s +Rendered 499/588, time remaining: 3s +Rendered 500/588, time remaining: 3s +Rendered 501/588, time remaining: 3s +Rendered 502/588, time remaining: 3s +Rendered 503/588, time remaining: 3s +Rendered 504/588, time remaining: 3s +Rendered 505/588, time remaining: 3s +Rendered 506/588, time remaining: 2s +Rendered 506/588, time remaining: 2s +Rendered 507/588, time remaining: 2s +Rendered 508/588, time remaining: 2s +Rendered 509/588, time remaining: 2s +Rendered 510/588, time remaining: 2s +Rendered 511/588, time remaining: 2s +Rendered 512/588, time remaining: 2s +Rendered 513/588, time remaining: 2s +Rendered 514/588, time remaining: 2s +Rendered 515/588, time remaining: 2s +Rendered 516/588, time remaining: 2s +Rendered 517/588, time remaining: 2s +Rendered 518/588, time remaining: 2s +Rendered 519/588, time remaining: 2s +Rendered 520/588, time remaining: 2s +Rendered 521/588, time remaining: 2s +Rendered 521/588, time remaining: 2s +Rendered 522/588, time remaining: 2s +Rendered 523/588, time remaining: 2s +Rendered 524/588, time remaining: 2s +Rendered 525/588, time remaining: 2s +Rendered 526/588, time remaining: 2s +Rendered 527/588, time remaining: 2s +Rendered 528/588, time remaining: 2s +Rendered 529/588, time remaining: 2s +Rendered 530/588, time remaining: 2s +Rendered 531/588, time remaining: 2s +Rendered 532/588, time remaining: 2s +Rendered 533/588, time remaining: 1s +Rendered 534/588, time remaining: 1s +Rendered 535/588, time remaining: 1s +Rendered 536/588, time remaining: 1s +Rendered 537/588, time remaining: 1s +Rendered 537/588, time remaining: 1s +Rendered 538/588, time remaining: 1s +Rendered 539/588, time remaining: 1s +Rendered 540/588, time remaining: 1s +Rendered 541/588, time remaining: 1s +Rendered 542/588, time remaining: 1s +Rendered 543/588, time remaining: 1s +Rendered 544/588, time remaining: 1s +Rendered 545/588, time remaining: 1s +Rendered 546/588, time remaining: 1s +Rendered 547/588, time remaining: 1s +Rendered 548/588, time remaining: 1s +Rendered 549/588, time remaining: 1s +Rendered 550/588, time remaining: 1s +Rendered 551/588, time remaining: 1s +Rendered 552/588, time remaining: 1s +Rendered 552/588, time remaining: 1s +Rendered 553/588, time remaining: 1s +Rendered 554/588, time remaining: 1s +Rendered 555/588, time remaining: 1s +Rendered 556/588, time remaining: 1s +Rendered 557/588, time remaining: 1s +Rendered 558/588, time remaining: 1s +Rendered 559/588, time remaining: 1s +Rendered 560/588, time remaining: 1s +Rendered 561/588, time remaining: 0s +Rendered 562/588, time remaining: 0s +Rendered 563/588, time remaining: 0s +Rendered 564/588, time remaining: 0s +Rendered 565/588, time remaining: 0s +Rendered 566/588, time remaining: 0s +Rendered 567/588, time remaining: 0s +Rendered 567/588, time remaining: 0s +Rendered 568/588, time remaining: 0s +Rendered 569/588, time remaining: 0s +Rendered 570/588, time remaining: 0s +Rendered 571/588, time remaining: 0s +Rendered 572/588, time remaining: 0s +Rendered 573/588, time remaining: 0s +Rendered 574/588, time remaining: 0s +Rendered 575/588, time remaining: 0s +Rendered 576/588, time remaining: 0s +Rendered 577/588, time remaining: 0s +Rendered 578/588, time remaining: 0s +Rendered 579/588, time remaining: 0s +Rendered 580/588, time remaining: 0s +Rendered 581/588, time remaining: 0s +Rendered 582/588, time remaining: 0s +Rendered 583/588, time remaining: 0s +Rendered 583/588, time remaining: 0s +Rendered 584/588, time remaining: 0s +Rendered 585/588, time remaining: 0s +Rendered 586/588, time remaining: 0s +Rendered 587/588, time remaining: 0s +Encoded 403/588 +Encoded 470/588 +Encoded 588/588 ++ operator-evidence\E6o-featureclipstudio-readability-render-01\04-full-media\readable-livesync.mp4 2.4 MB diff --git a/promotion/evidence/local-livesync-handoff-20260907/encoding/stage04-closed.json b/promotion/evidence/local-livesync-handoff-20260907/encoding/stage04-closed.json new file mode 100644 index 0000000..7141eac --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/encoding/stage04-closed.json @@ -0,0 +1,6 @@ +{ + "status": "CLOSED_UNCHANGED", + "sourceRows": 904, + "ownedProcessesClosed": true, + "listener8930Absent": true +} diff --git a/promotion/evidence/local-livesync-handoff-20260907/encoding/stage04-receipt.json b/promotion/evidence/local-livesync-handoff-20260907/encoding/stage04-receipt.json new file mode 100644 index 0000000..f90f8b9 --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/encoding/stage04-receipt.json @@ -0,0 +1,1289 @@ +{ + "status": "PASS", + "stage": "04-full-media", + "sourceExact": true, + "fullGrades": null, + "visualAcceptance": "Not certified by this receipt", + "commandSummary": [ + { + "name": "render-readable", + "seconds": 26.657, + "timeoutSeconds": 1200, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "readable-ffprobe", + "seconds": 0.125, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "readable-decode", + "seconds": 0.25, + "timeoutSeconds": 180, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "readable-frame-0", + "seconds": 0.235, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "readable-frame-4", + "seconds": 0.235, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "readable-frame-147", + "seconds": 0.219, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "readable-frame-294", + "seconds": 0.25, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "readable-frame-587", + "seconds": 0.359, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "documented-gif", + "seconds": 1.719, + "timeoutSeconds": 300, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-probe", + "seconds": 0.125, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-decode", + "seconds": 0.25, + "timeoutSeconds": 120, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-0", + "seconds": 0.125, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-4", + "seconds": 0.125, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-6", + "seconds": 0.125, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-16", + "seconds": 0.234, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-26", + "seconds": 0.234, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-69", + "seconds": 0.235, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-70", + "seconds": 0.234, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-76", + "seconds": 0.234, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-86", + "seconds": 0.235, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-96", + "seconds": 0.234, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-129", + "seconds": 0.25, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-130", + "seconds": 0.234, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-136", + "seconds": 0.235, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-146", + "seconds": 0.234, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-147", + "seconds": 0.234, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-156", + "seconds": 0.25, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-183", + "seconds": 0.25, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-184", + "seconds": 0.235, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-190", + "seconds": 0.234, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-196", + "seconds": 0.235, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-200", + "seconds": 0.235, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-202", + "seconds": 0.25, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-208", + "seconds": 0.234, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-210", + "seconds": 0.234, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-214", + "seconds": 0.235, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-220", + "seconds": 0.235, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-226", + "seconds": 0.25, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-232", + "seconds": 0.234, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-238", + "seconds": 0.234, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-267", + "seconds": 0.234, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-268", + "seconds": 0.235, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-274", + "seconds": 0.235, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-284", + "seconds": 0.235, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-294", + "seconds": 0.25, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-345", + "seconds": 0.25, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-346", + "seconds": 0.25, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-352", + "seconds": 0.235, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-362", + "seconds": 0.25, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-372", + "seconds": 0.25, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-401", + "seconds": 0.25, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-402", + "seconds": 0.234, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-408", + "seconds": 0.25, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-414", + "seconds": 0.234, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-418", + "seconds": 0.234, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-420", + "seconds": 0.25, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-426", + "seconds": 0.265, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-428", + "seconds": 0.25, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-432", + "seconds": 0.234, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-437", + "seconds": 0.25, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-443", + "seconds": 0.281, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-449", + "seconds": 0.25, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-455", + "seconds": 0.25, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-461", + "seconds": 0.25, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-491", + "seconds": 0.25, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-492", + "seconds": 0.25, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-498", + "seconds": 0.36, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-508", + "seconds": 0.375, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-518", + "seconds": 0.281, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "movie-587", + "seconds": 0.359, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-0", + "seconds": 0.125, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-2", + "seconds": 0.125, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-3", + "seconds": 0.109, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-8", + "seconds": 0.109, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-13", + "seconds": 0.125, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-34", + "seconds": 0.125, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-35", + "seconds": 0.109, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-38", + "seconds": 0.109, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-43", + "seconds": 0.125, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-48", + "seconds": 0.109, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-64", + "seconds": 0.109, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-65", + "seconds": 0.109, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-68", + "seconds": 0.109, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-73", + "seconds": 0.125, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-78", + "seconds": 0.125, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-91", + "seconds": 0.125, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-92", + "seconds": 0.109, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-95", + "seconds": 0.109, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-98", + "seconds": 0.125, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-100", + "seconds": 0.125, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-101", + "seconds": 0.125, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-104", + "seconds": 0.125, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-105", + "seconds": 0.11, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-107", + "seconds": 0.11, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-110", + "seconds": 0.11, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-113", + "seconds": 0.11, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-116", + "seconds": 0.11, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-119", + "seconds": 0.11, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-133", + "seconds": 0.125, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-134", + "seconds": 0.125, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-137", + "seconds": 0.203, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-142", + "seconds": 0.234, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-147", + "seconds": 0.235, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-172", + "seconds": 0.234, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-173", + "seconds": 0.234, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-176", + "seconds": 0.234, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-181", + "seconds": 0.234, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-186", + "seconds": 0.235, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-200", + "seconds": 0.234, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-201", + "seconds": 0.234, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-204", + "seconds": 0.234, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-207", + "seconds": 0.219, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-209", + "seconds": 0.235, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-210", + "seconds": 0.234, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-213", + "seconds": 0.235, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-214", + "seconds": 0.234, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-216", + "seconds": 0.234, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-218", + "seconds": 0.219, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-221", + "seconds": 0.219, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-224", + "seconds": 0.234, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-227", + "seconds": 0.234, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-230", + "seconds": 0.235, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-245", + "seconds": 0.219, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-246", + "seconds": 0.219, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-249", + "seconds": 0.235, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-254", + "seconds": 0.234, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-259", + "seconds": 0.234, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + }, + { + "name": "gif-293", + "seconds": 0.235, + "timeoutSeconds": 60, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] + } + ] +} diff --git a/promotion/evidence/local-livesync-handoff-20260907/encoding/stage05-closed.json b/promotion/evidence/local-livesync-handoff-20260907/encoding/stage05-closed.json new file mode 100644 index 0000000..7141eac --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/encoding/stage05-closed.json @@ -0,0 +1,6 @@ +{ + "status": "CLOSED_UNCHANGED", + "sourceRows": 904, + "ownedProcessesClosed": true, + "listener8930Absent": true +} diff --git a/promotion/evidence/local-livesync-handoff-20260907/encoding/stage05-receipt.json b/promotion/evidence/local-livesync-handoff-20260907/encoding/stage05-receipt.json new file mode 100644 index 0000000..2fa2c9f --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/encoding/stage05-receipt.json @@ -0,0 +1,8 @@ +{ + "status": "PASS", + "stage": "05-close", + "commands": [], + "sourceExact": true, + "fullGrades": null, + "visualAcceptance": "Not certified by this receipt" +} diff --git a/promotion/evidence/local-livesync-handoff-20260907/judgments/E6o_FEATURECLIPSTUDIO_CAPTURE_STATUS_FINAL_JUDGE.json b/promotion/evidence/local-livesync-handoff-20260907/judgments/E6o_FEATURECLIPSTUDIO_CAPTURE_STATUS_FINAL_JUDGE.json new file mode 100644 index 0000000..a682355 --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/judgments/E6o_FEATURECLIPSTUDIO_CAPTURE_STATUS_FINAL_JUDGE.json @@ -0,0 +1,248 @@ +{ + "status": "APPROVED_SCOPED_CAPTURE_STATUS_REPAIR_WITH_OUTPUT_READABILITY_HOLD", + "at": "2026-09-07T09:45:42.642402+00:00", + "repo": "HomenShum/FeatureClipStudio", + "baseCommit": "208b2e0a61b8a7240b09115ab74324f6d4a2c90c", + "baseTree": "a2ce6fd5ea7c7c2d4d4b6c94a7753c069b7c9b00", + "commit": null, + "workingSourceFreeze": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-01\\08-freeze\\source-after.json", + "bytes": 203094, + "sha256": "81574f6cf97fbafd143464145f5d90481014752af6183a8250be9d39cc58200d" + }, + "workerReceipt": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-final-01\\receipt.json", + "bytes": 3473, + "sha256": "ccf2f335f9563ec53c87c0b6183b076cbfff1f95d578f1ba0d051b51c444cf5a" + }, + "workerManifest": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-final-01\\manifest.json", + "bytes": 932, + "sha256": "8338040b8424056294d9dcf9f4b8bd1c36a3c1af51b778233007027f878ec313" + }, + "fourOwners": [ + { + "path": "walkthrough.collab.mjs", + "original": { + "bytes": 17129, + "sha256": "d35347819a47a092f0a82656f1734a3f0393104489e2057eed8bbe47bdb08ddb" + }, + "proposed": { + "bytes": 18082, + "sha256": "a3ccf4a92fafc15f6b87c9606524effbc3320255e785fdc3110d243bf41c8450" + }, + "externalCopy": "proposed/walkthrough.collab.mjs.txt", + "lineEndings": "Original CRLF preserved" + }, + { + "path": "README.md", + "original": { + "bytes": 64270, + "sha256": "38c0b38ce5f2d88c7810bd66b6896aa03b5d11373a7c68fe405bdf4d73cdda9c" + }, + "proposed": { + "bytes": 65333, + "sha256": "f30668cb1d8bd56073cdff614dd2f9c854e76fd53fbcf3698e6233f730bf2a20" + }, + "externalCopy": "proposed/README.md.txt", + "lineEndings": "Original CRLF preserved" + }, + { + "path": "docs/START_HERE.md", + "original": { + "bytes": 24836, + "sha256": "70dc7c600b21d0cbe2d3bd4cf1489f78a1465ae349683af2abfd59132bc91855" + }, + "proposed": { + "bytes": 25207, + "sha256": "0c9026ff34afeb52d08e764b932c97b5673d0424fffb98f6adb4072be0b84cdf" + }, + "externalCopy": "proposed/docs/START_HERE.md.txt", + "lineEndings": "Original CRLF preserved" + }, + { + "path": "docs/codebase/INTEGRATIONS.md", + "original": { + "bytes": 5399, + "sha256": "2a46db33ea7d11dbdb35bb1fa8c058299cf1a6dec651930ac0c294dab06f577c" + }, + "proposed": { + "bytes": 5769, + "sha256": "d5fe0d5133c11b83c3994f44540fb124d817657182ccb46954b6cb510add81de" + }, + "externalCopy": "proposed/docs/codebase/INTEGRATIONS.md.txt", + "lineEndings": "Original CRLF preserved" + } + ], + "namedProof": "FCS-CAPTURE-HONEST-STATUS-AFTER-01", + "normalCheck": { + "jsParsed": 39, + "tourCitations": 36, + "proseCitations": 34, + "seconds": 2.219, + "scope": "Normal source parser/citation check, not a general unit-test suite." + }, + "causalBeforeAfter": [ + { + "case": "unknown selector", + "beforeExit": 0, + "beforeDone": true, + "afterExit": 1, + "afterDone": false, + "afterCases": [ + "unknown", + "mixed valid/unknown", + "whitespace", + "comma" + ], + "owner": "Complete selector validation before launch/deletion." + }, + { + "case": "unavailable demo", + "beforeExit": 0, + "beforeDone": true, + "beforeSeconds": 65.437, + "afterExit": 1, + "afterDone": false, + "afterSeconds": 3.079, + "owner": "Unsuppressed navigation inside attempt forensics; final cause propagated before module/DONE." + }, + { + "case": "late action timeout", + "newIndependentFailureCase": true, + "actualExit": 1, + "done": false, + "seconds": 63.328, + "nativeTimeoutMilliseconds": 60000, + "fixture": "Explicit reachable owned static missing-control page, not collaboration application." + } + ], + "negativeCases": [ + { + "stage": "04-unavailable", + "exit": 1, + "seconds": 3.079, + "originalCause": "ERR_CONNECTION_REFUSED", + "retainedAvailableFiles": 3, + "unchangedModule": true, + "exactExternalRestoration": 55 + }, + { + "stage": "05-missing-control", + "exit": 1, + "seconds": 63.328, + "originalCause": "Timeout 60000ms exceeded", + "retainedAvailableFiles": 5, + "unchangedModule": true, + "exactExternalRestoration": 55 + } + ], + "positiveCaptures": [ + { + "stage": "03-positive", + "seconds": 17.468, + "nativeExit": 0, + "exactNativeGeneratedCopiedPngs": 54, + "steps": 8, + "frames": 588, + "sameTwoClientCardIdsAndTexts": true, + "twoContexts": true, + "allowedRequests": 8, + "errors": 0 + }, + { + "stage": "06-recovery", + "seconds": 16.843, + "nativeExit": 0, + "exactNativeGeneratedCopiedPngs": 54, + "steps": 8, + "frames": 588, + "sameTwoClientCardIdsAndTexts": true, + "twoContexts": true, + "allowedRequests": 8, + "errors": 0 + } + ], + "media": [ + { + "path": "checkout\\out\\status-repair-livesync.mp4", + "bytes": 1506505, + "sha256": "7b606abab5e5506758e1e015afb4c01bc75e2eb1209a9cd52668526b4ed84c3e", + "video": { + "codec_name": "h264", + "width": 1920, + "height": 1080, + "nb_frames": "588", + "r_frame_rate": "30/1", + "duration": "19.600000" + }, + "containerDuration": "19.648000", + "recordedFullDecodeExit": 0, + "recordedDecodeStderrBytes": 0 + }, + { + "path": "checkout\\out\\status-repair-livesync.gif", + "bytes": 928209, + "sha256": "36f447ac19bef088818d19135854586c4f0ca78be435774ca674033fe48db46c", + "video": { + "codec_name": "gif", + "width": 720, + "height": 405, + "nb_frames": "294", + "r_frame_rate": "15/1", + "duration": "19.590000" + }, + "containerDuration": "19.590000", + "recordedFullDecodeExit": 0, + "recordedDecodeStderrBytes": 0 + } + ], + "actualPixelsViewed": { + "nativePrimaryStatePairs": 8, + "nativeImages": 16, + "mp4Extracted": 5, + "gifExtracted": 3, + "scope": "Fixed1280x600 native CSS cells;1920x1080 MP4 and720x405 GIF still samples, no responsive-matrix or motion certification." + }, + "custody": { + "stageCount": 8, + "actualCommands": 26, + "frozenRawFiles": 646, + "currentSourceRows": 904, + "protectedSourceOutside58GeneratedPaths": 846, + "fourAuthoredOwnersUnchanged": true, + "historicalInstalledInputs": 908, + "primaryPreservedRows": 596, + "processIdentities": 127, + "sameOwnedAlive": 0, + "unreadableRecordedIdentities": 0, + "listener8930": [], + "guard": "CLOSED_UNCHANGED" + }, + "openFindings": [ + { + "id": "FCS-OUTPUT-READABILITY", + "severity": "P2", + "status": "RETAINED_OBSERVED_LIMIT", + "observed": "The two captured application boards occupy a narrow central band with broad empty space above and below. At1920x1080 the inner board text and local-stand-in disclosure are very small; at720x405 the inner text is largely unreadable at native size. Large captions remain legible and no longer overlap panels in this current render.", + "causalBoundary": "The1280x600 source capture contains a centered720CSSpx application. Fitting two entire captures into the output and then scaling to720 further reduces the actual content. The status-exit patch does not change that renderer/framing boundary.", + "inferenceLimit": "Still frames establish legibility and composition only; no continuous-motion, playback-speed, audio quality, performance or fresh-human comprehension claim." + } + ], + "limits": [ + "Existing waitText timeout swallowing is unchanged; these receipts establish thrown navigation/action and explicit selector honesty only.", + "Negative55-file restoration is the external owned controller, not product rollback. Earlier selected PNGs in multi-spec runs may change even if module publication aborts; same-path concurrency/cancel/undo are untested.", + "The unchanged observer mode string OBSERVED_UNCHANGED_DRIVER is a legacy label. Actual changed driver is bound to a3ccf4a9; wrapper did not edit it during capture.", + "Both positive captures use an explicitly disclosed observer with request restrictions/state reads; native negative invocations use no --import wrapper. No performance inference from their wall time.", + "Demo is fixed-text local in-memory collaboration, not provider or durable Convex execution. Actual demo listener is all-interface; observed browser requests are loopback-only.", + "All prior failures, first-use artifacts and media remain exact. No install/browser/command/decode rerun by this judge.", + "Dependency advisories, shared integration, publication, production, human usability and full readiness grades remain pending or held.44criterion assessment is separate." + ], + "fullGrades": null, + "guard": "CLOSED_UNCHANGED", + "independentRawManifest": { + "path": "operator-evidence\\E6o-status-after-final-independent-01\\manifest.json", + "bytes": 959, + "sha256": "7704546ba7b3700771e0622e3514dc3900fc5270cc168b07b4e33ad0006f433f" + } +} diff --git a/promotion/evidence/local-livesync-handoff-20260907/judgments/E6o_FEATURECLIPSTUDIO_CAPTURE_STATUS_FINAL_JUDGE.md.txt b/promotion/evidence/local-livesync-handoff-20260907/judgments/E6o_FEATURECLIPSTUDIO_CAPTURE_STATUS_FINAL_JUDGE.md.txt new file mode 100644 index 0000000..fb94006 --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/judgments/E6o_FEATURECLIPSTUDIO_CAPTURE_STATUS_FINAL_JUDGE.md.txt @@ -0,0 +1,13 @@ +Builder mode. **APPROVED_SCOPED_CAPTURE_STATUS_REPAIR_WITH_OUTPUT_READABILITY_HOLD**. + +**Re your request:** independently judge the repaired capture's actual failures, recovery, media and preserved source — the named exit-status repair is accepted. This does not close visual/readability or whole-product readiness. + +The old unknown-selector call reported DONE/exit0 without capturing anything. All six current selector/no-filter cases now return1, omit DONE and preserve source. The old unavailable-app attempt suppressed navigation failure, waited for a later action timeout, wrote partial data and reported DONE/exit0. Current navigation fails in3.079s with its original ERR_CONNECTION_REFUSED, leaves the generated module exact and omits DONE. A separate reachable missing-control page exercises the late catch: the unchanged60-second action timeout propagates as exit1 after63.328s. Three early-failure and five late-failure files remain exact; the external controller restored55 selected outputs after preserving them. This is not product rollback. + +Normal `npm run check` passed39 JavaScript parses,36 tour references and34 prose citations. The two real local captures passed the unchanged disclosed observer with54 exact native/generated/disk/copied PNGs each,8steps/588frames, two matching final clients and two fresh recovery IDs. Native failure calls were unwrapped. I viewed all16 final primary state images and8 extracted media frames. The actual new H264 MP4 (1920×1080,588frames,19.600s video) and GIF (720×405,294frames,19.590s) have recorded full decoder exits0 with empty decoder stderr. No command or decoder was repeated by me. + +The output still places two small boards in a narrow central band with broad empty space. Inner text and local-mode disclosure are very small in the MP4 and largely unreadable in the native-size GIF; the larger narrative captions remain readable and do not overlap panels. Those are actual current output deductions, not repaired by CLI honesty. Still samples do not prove continuous motion, audio quality, performance or responsive behavior. + +I rehashed646 frozen stage artifacts,908 prior/installed input bindings and all904 final source rows (the environment example is metadata-only). The four authored files remain exact;846 source rows outside the58 permitted generated paths match the applied baseline. The596-row original primary, raw indices, refs and registrations remain exact. All127 recorded PID/create-time identities are closed, none unreadable, and port8930 has no listener. The source guard is CLOSED_UNCHANGED. + +The legacy observer mode string does not mean this driver equals the pre-repair source; its exact changed hash is recorded. Existing waitText suppression, no multi-spec rollback, concurrency/cancel/undo gaps, tiny exports, dependencies, human usability and full grades remain explicit. The44-criterion assessment is separate. [Raw stage review](E6o-status-after-final-independent-01/stage-review.json), [actual pixel review](E6o-status-after-final-independent-01/media-pixel-review.json) and [closed guard](E6o-status-after-final-independent-01/source-closing.json) preserve the scoped evidence. diff --git a/promotion/evidence/local-livesync-handoff-20260907/judgments/E6o_FEATURECLIPSTUDIO_CRITERION_ASSESSMENT.json b/promotion/evidence/local-livesync-handoff-20260907/judgments/E6o_FEATURECLIPSTUDIO_CRITERION_ASSESSMENT.json new file mode 100644 index 0000000..2f91dbb --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/judgments/E6o_FEATURECLIPSTUDIO_CRITERION_ASSESSMENT.json @@ -0,0 +1,1121 @@ +{ + "schema": "repository-criterion-assessment/v1", + "at": "2026-09-07T09:52:21.091728+00:00", + "repo": "FeatureClipStudio", + "canonicalRepo": "https://github.com/HomenShum/FeatureClipStudio", + "commit": null, + "tree": null, + "baseCommit": "208b2e0a61b8a7240b09115ab74324f6d4a2c90c", + "baseTree": "a2ce6fd5ea7c7c2d4d4b6c94a7753c069b7c9b00", + "workingSourceFreeze": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-01\\08-freeze\\source-after.json", + "bytes": 203094, + "sha256": "81574f6cf97fbafd143464145f5d90481014752af6183a8250be9d39cc58200d" + }, + "profileRevision": "FCS-CLI-LIVESYNC-CURRENT-OUTPUT-01-AGENT-EVALUATED-ONLY", + "referenceRefs": [ + { + "path": "operator-evidence\\REPO_READINESS_STANDARD.md", + "bytes": 18664, + "sha256": "8b5bb532bf0dfeed7cc4ecd2b425d708fc49048cc05ab4cbeb315fc3534aeff2" + }, + { + "path": "operator-evidence\\E6o_FEATURECLIPSTUDIO_CURRENT_CONSUMER_FINAL_JUDGE.json", + "bytes": 18212, + "sha256": "fdaeb9ddafea99fa9c9ae836463996e4b7c71b9a15b9d9d7732a462f27b3200d", + "kind": "preserved historical before" + }, + { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-plan-01\\plan.json", + "bytes": 1578, + "sha256": "f88d9798efdddd700fdf370e476b9326fb0b946d0cca038ae7d5e062caaaa85a" + }, + { + "path": "operator-evidence\\E6o_FEATURECLIPSTUDIO_CAPTURE_STATUS_FINAL_JUDGE.json", + "bytes": 9876, + "sha256": "833c51ba6f9974d60662c256f03fb87e8a16b5830006b496c9832ed0dbbf1020" + } + ], + "testedAt": "2026-09-07", + "reviewer": { + "role": "independent implementation nonauthor", + "contextReuse": true, + "authored": [ + "external read-only review scripts", + "judgments", + "criterion assessment" + ], + "productEdits": 0, + "nativeReplayByJudge": 0 + }, + "evaluationScope": "AGENT_EVALUATED_ONLY: current named collaboration CLI, one owned local fixed-text demo and its captured/rendered artifacts. No full studio, provider, human, shared or deployed experience claim. All observed grades are criterion-level partial observations.", + "environment": { + "os": "Windows; owned isolated checkout and child profile", + "nodeExecutable": "C:/nvm4w/nodejs/node.exe", + "nodeVersion": "Not independently re-read in this after review; exact executable/command paths retained", + "browser": "Headless Chromium through frozen Playwright1.60.0; browser version not promoted from a historical receipt", + "surface": "Local LiveSync demo with actual all-interface listener; positive observed requests restricted to http://127.0.0.1:8930; all owned runtime now closed", + "input": "Native Playwright pointer/fill for two independent contexts; no keyboard-only/device/AT proof", + "providerMode": "NONE: fixed-text local in-memory stand-in. No durable Convex or model execution.", + "sourceIdentity": { + "state": "UNCOMMITTED_REVIEWED_FOUR_OWNER_REPAIR_WITH_GENERATED_EVIDENCE", + "sourceFreeze": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-01\\08-freeze\\source-after.json", + "bytes": 203094, + "sha256": "81574f6cf97fbafd143464145f5d90481014752af6183a8250be9d39cc58200d" + }, + "applicationReceipt": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-apply-01\\receipt.json", + "bytes": 2334, + "sha256": "7517ad977d4b0069f2bbf58029352a63e481c491f6461e387f984bfd2f6bf9e5" + } + }, + "renderedOutputs": { + "nativeCssViewport": [ + 1280, + 600 + ], + "nativePngRaster": [ + 2560, + 1200 + ], + "nativeViewToolRaster": [ + 2048, + 960 + ], + "mp4": [ + 1920, + 1080, + 588, + "30fps" + ], + "gif": [ + 720, + 405, + 294, + "15fps" + ] + }, + "observerBoundary": "Two positives use the unchanged disclosed wrapper with route/state observations; native negatives have no --import instrumentation. Legacy OBSERVED_UNCHANGED_DRIVER string does not assert equality to the old baseline source." + }, + "coverage": { + "sourceFloor": "Normal check39/39JS parse,36/36tour references,34/34prose citations; not a general unit-test suite.", + "currentAfter": "8stages/26actualcommands/646rawartifacts;6selectorcases,early navigation failure,late60s action timeout,two positive captures and explicit fresh-server recovery", + "nativeProof": "54exact native/generated/copied images in each positive;2matching final clients/2fresh recovery IDs;8steps588frames", + "actualPixelsViewed": { + "nativePrimaryStatePairs": 8, + "nativeImages": 16, + "mp4ExtractedFrames": [ + 0, + 4, + 147, + 294, + 587 + ], + "gifExtractedFrames": [ + 0, + 147, + 293 + ] + }, + "normalViewports": [ + [ + 1280, + 600 + ] + ], + "requiredResponsiveMatrixStatus": "NOT_RUN; export dimensions are not CSS viewport cells", + "computedText200": [], + "physicalDeviceOrHuman": false, + "counts": { + "criteria": 44, + "partiallyObserved": 21, + "notRun": 23, + "notApplicable": 0, + "belowTarget": [ + "V1", + "V2", + "V4", + "V5", + "D4", + "P4", + "U2", + "U3", + "U4", + "L1", + "L3" + ] + } + }, + "criterionRatings": [ + { + "id": "V1", + "field": "visualScore", + "name": "typography", + "observedScore": 2, + "finalScore": null, + "status": "PARTIALLY_OBSERVED", + "evidenceRefs": [ + "mp4_final", + "gif_final", + "native_finished_a" + ], + "deductionOrMissingEvidence": "Native board text is readable in the original capture, but the exported panels shrink it severely. At720x405 the board content and local-mode disclosure are largely unreadable without the separate full-size PNG; large narrative captions are still readable.", + "scope": "Typography of the actual native capture and fixed MP4/GIF outputs only." + }, + { + "id": "V2", + "field": "visualScore", + "name": "spacing/grid", + "observedScore": 3, + "finalScore": null, + "status": "PARTIALLY_OBSERVED", + "evidenceRefs": [ + "mp4_action", + "mp4_final", + "gif_final" + ], + "deductionOrMissingEvidence": "Two small board panels occupy a narrow middle band with large unused space above and below. Viewing the underlying PNG is a workaround for reading the result; the available output area is not used effectively.", + "scope": "Spacing and framing of the observed fixed composition; no responsive layout inference." + }, + { + "id": "V3", + "field": "visualScore", + "name": "color/token discipline", + "observedScore": 4, + "finalScore": null, + "status": "PARTIALLY_OBSERVED", + "evidenceRefs": [ + "native_finished_a", + "mp4_final", + "gif_final" + ], + "deductionOrMissingEvidence": "The dark navy/green palette and client accents remain coherent. Muted supporting text and mixed emoji/chrome treatments leave minor visual polish friction; no token audit or measured contrast certification was performed.", + "scope": "Perceptual color discipline in the captured example and exported theme only." + }, + { + "id": "V4", + "field": "visualScore", + "name": "hierarchy", + "observedScore": 3, + "finalScore": null, + "status": "PARTIALLY_OBSERVED", + "evidenceRefs": [ + "mp4_action", + "mp4_final", + "gif_final" + ], + "deductionOrMissingEvidence": "The title and narrative captions are easy to find, but the actual two-client evidence is visually secondary and too small for routine reading. The viewer must trust the caption or open another artifact.", + "scope": "Observed hierarchy of the exported demonstration." + }, + { + "id": "V5", + "field": "visualScore", + "name": "rendered legibility/contrast", + "observedScore": 2, + "finalScore": null, + "status": "PARTIALLY_OBSERVED", + "evidenceRefs": [ + "mp4_final", + "gif_final", + "native_finished_a" + ], + "deductionOrMissingEvidence": "The inner board text and low-emphasis local-stand-in line lose legibility after two-panel scaling, especially in the GIF. This is a pixel-based reading deduction; no numerical contrast ratio or WCAG pass is claimed.", + "scope": "Native-size output legibility, with native capture as the before-scaling reference." + }, + { + "id": "V6", + "field": "visualScore", + "name": "consistent elevation/icons", + "observedScore": 4, + "finalScore": null, + "status": "PARTIALLY_OBSERVED", + "evidenceRefs": [ + "native_working", + "native_finished_a", + "mp4_final" + ], + "deductionOrMissingEvidence": "Both clients use the same card, border and presence vocabulary. Emoji and decorative browser chrome have mixed visual styles and become very small in the export, but the larger Client A/B labels remain useful.", + "scope": "Observed icon/elevation consistency in one desktop example, not all platforms or themes." + }, + { + "id": "V7", + "field": "visualScore", + "name": "alignment", + "observedScore": 5, + "finalScore": null, + "status": "PARTIALLY_OBSERVED", + "evidenceRefs": [ + "mp4_action", + "mp4_final", + "gif_final" + ], + "deductionOrMissingEvidence": "The exercised frames keep the two panel boxes and labels aligned, with captions outside their bounds. No material alignment or caption-overlap defect was observed in this current composition.", + "scope": "Exact sampled current frames only; does not supersede the historical bundled-video overlap finding." + }, + { + "id": "V8", + "field": "visualScore", + "name": "polish of empty/loading/error/populated states", + "observedScore": 4, + "finalScore": null, + "status": "PARTIALLY_OBSERVED", + "evidenceRefs": [ + "native_empty", + "native_working", + "native_finished_a" + ], + "deductionOrMissingEvidence": "The observed empty, working and populated boards reuse coherent controls and card spacing. The working/finished supporting text is subdued. Integrated application failure styling and other states were not observed; native CLI failure honesty is rated separately.", + "scope": "Partial observation of three actual local-demo states." + }, + { + "id": "V9", + "field": "visualScore", + "name": "purposeful motion and reduced-motion behavior", + "observedScore": null, + "finalScore": null, + "status": "NOT_RUN", + "evidenceRefs": [ + "plan", + "stage_review" + ], + "deductionOrMissingEvidence": "Only sampled still frames and full-decoder outcomes were reviewed. Continuous motion quality and reduced-motion alternatives were not exercised.", + "scope": "Current CLI/captured/rendered-artifact profile; absence of coverage is not N/A or a pass." + }, + { + "id": "D1", + "field": "designScore", + "name": "Clarity of the main action", + "observedScore": 4, + "finalScore": null, + "status": "PARTIALLY_OBSERVED", + "evidenceRefs": [ + "native_empty", + "native_typed", + "source_readme", + "selection_cases" + ], + "deductionOrMissingEvidence": "Add and Run agent are visible, labeled actions in the native board. The corrected capture instructions identify the next command and selection; the manual two-terminal/environment-variable setup remains minor developer friction. No fresh-human discovery study was run.", + "scope": "Agent-observed native action and corrected CLI setup path only." + }, + { + "id": "D2", + "field": "designScore", + "name": "navigation/information architecture", + "observedScore": null, + "finalScore": null, + "status": "NOT_RUN", + "evidenceRefs": [ + "plan", + "stage_review" + ], + "deductionOrMissingEvidence": "No first-use navigation/information-architecture journey across the studio, documentation and other command families was run.", + "scope": "Current CLI/captured/rendered-artifact profile; absence of coverage is not N/A or a pass." + }, + { + "id": "D3", + "field": "designScore", + "name": "progressive disclosure", + "observedScore": null, + "finalScore": null, + "status": "NOT_RUN", + "evidenceRefs": [ + "plan", + "stage_review" + ], + "deductionOrMissingEvidence": "No disclosure, inspector or progressive-reveal interaction was exercised in this fixed example/output proof.", + "scope": "Current CLI/captured/rendered-artifact profile; absence of coverage is not N/A or a pass." + }, + { + "id": "D4", + "field": "designScore", + "name": "useful information density", + "observedScore": 3, + "finalScore": null, + "status": "PARTIALLY_OBSERVED", + "evidenceRefs": [ + "mp4_final", + "gif_final" + ], + "deductionOrMissingEvidence": "Most of the video canvas is unused while the information that substantiates the narration is densely reduced inside small panels. A viewer needs a larger source artifact to inspect card content.", + "scope": "Information density of the actual output, not the entire source repository." + }, + { + "id": "D5", + "field": "designScore", + "name": "consistency of component behavior and wording", + "observedScore": 4, + "finalScore": null, + "status": "PARTIALLY_OBSERVED", + "evidenceRefs": [ + "unavailable_error", + "late_error", + "selection_cases", + "native_working", + "native_finished_a" + ], + "deductionOrMissingEvidence": "Selected-ID errors, original causes, recapture guidance and native working/finished labels agree with the observed behavior. Native error stacks add reading noise, and other command families are outside this proof.", + "scope": "Wording/behavior consistency in the named capture command and local demo." + }, + { + "id": "R1", + "field": "responsiveScore", + "name": "Reflow/content preservation", + "observedScore": null, + "finalScore": null, + "status": "NOT_RUN", + "evidenceRefs": [ + "plan", + "stage_review" + ], + "deductionOrMissingEvidence": "The native capture used one1280x600 CSS cell. Fixed1920x1080 video and720x405 GIF sizes are export transforms, not responsive reflow tests.", + "scope": "Current CLI/captured/rendered-artifact profile; absence of coverage is not N/A or a pass." + }, + { + "id": "R2", + "field": "responsiveScore", + "name": "reachability of navigation and primary actions", + "observedScore": null, + "finalScore": null, + "status": "NOT_RUN", + "evidenceRefs": [ + "plan", + "stage_review" + ], + "deductionOrMissingEvidence": "Actions were exercised at the single native desktop cell, without the required narrow/wide viewport matrix or responsive navigation checks.", + "scope": "Current CLI/captured/rendered-artifact profile; absence of coverage is not N/A or a pass." + }, + { + "id": "R3", + "field": "responsiveScore", + "name": "modal/panel/table/canvas adaptation", + "observedScore": null, + "finalScore": null, + "status": "NOT_RUN", + "evidenceRefs": [ + "plan", + "stage_review" + ], + "deductionOrMissingEvidence": "Two panels fit one fixed video canvas; no adaptive modal/panel/table/canvas interaction or responsive layout was exercised.", + "scope": "Current CLI/captured/rendered-artifact profile; absence of coverage is not N/A or a pass." + }, + { + "id": "R4", + "field": "responsiveScore", + "name": "touch and on-screen-keyboard usability", + "observedScore": null, + "finalScore": null, + "status": "NOT_RUN", + "evidenceRefs": [ + "plan", + "stage_review" + ], + "deductionOrMissingEvidence": "No physical touch or operating-system on-screen keyboard was used. Headless pointer actions do not establish device usability.", + "scope": "Current CLI/captured/rendered-artifact profile; absence of coverage is not N/A or a pass." + }, + { + "id": "R5", + "field": "responsiveScore", + "name": "stability under zoom, long content and declared locales", + "observedScore": null, + "finalScore": null, + "status": "NOT_RUN", + "evidenceRefs": [ + "plan", + "stage_review" + ], + "deductionOrMissingEvidence": "No200% text,400% zoom, long-content, locale or narrow-width stability proof was run.", + "scope": "Current CLI/captured/rendered-artifact profile; absence of coverage is not N/A or a pass." + }, + { + "id": "I1", + "field": "interactionScore", + "name": "Working controls and keyboard paths", + "observedScore": 5, + "finalScore": null, + "status": "PARTIALLY_OBSERVED", + "evidenceRefs": [ + "recovery_observation", + "native_typed", + "native_finished_a", + "native_finished_b" + ], + "deductionOrMissingEvidence": "Actual Playwright pointer/fill actions produced the intended card and fixed stream; both final clients agree. All named native CLI cases reached their expected exit. No control defect was observed in those exercised actions.", + "scope": "Pointer/fill and process invocation only. Keyboard-only paths, Tab order and device input remain NOT_RUN." + }, + { + "id": "I2", + "field": "interactionScore", + "name": "immediate honest feedback and durable status", + "observedScore": 5, + "finalScore": null, + "status": "PARTIALLY_OBSERVED", + "evidenceRefs": [ + "selection_cases", + "unavailable_error", + "late_error", + "recovery_observation" + ], + "deductionOrMissingEvidence": "All exercised rejected/failed commands omit DONE and return1; successful captures return0 with actual completed boards. No fake success remains in these thrown-failure cases.", + "scope": "Process feedback and current local state only; durable status and swallowed waitText semantics are not certified." + }, + { + "id": "I3", + "field": "interactionScore", + "name": "validation/error/retry behavior", + "observedScore": 5, + "finalScore": null, + "status": "PARTIALLY_OBSERVED", + "evidenceRefs": [ + "selection_cases", + "unavailable_command", + "late_command", + "explicit_recovery" + ], + "deductionOrMissingEvidence": "Six selector/no-filter cases, early connection refusal, late unchanged60-second timeout and an explicit fresh-server recapture all behaved as specified, retaining original causes.", + "scope": "These exact validation/error/recovery cases only; no automatic retry, full semantic validator or multi-spec guarantee." + }, + { + "id": "I4", + "field": "interactionScore", + "name": "safe cancellation/undo and duplicate-action handling", + "observedScore": null, + "finalScore": null, + "status": "NOT_RUN", + "evidenceRefs": [ + "plan", + "stage_review" + ], + "deductionOrMissingEvidence": "Cancellation, undo, duplicate submissions and concurrent same-path capture writers were not exercised. External cleanup/restoration is not product undo.", + "scope": "Current CLI/captured/rendered-artifact profile; absence of coverage is not N/A or a pass." + }, + { + "id": "I5", + "field": "interactionScore", + "name": "state continuity through navigation, reload, conflicts and reopening", + "observedScore": null, + "finalScore": null, + "status": "NOT_RUN", + "evidenceRefs": [ + "plan", + "stage_review" + ], + "deductionOrMissingEvidence": "Fresh-server recovery deliberately creates new state. Navigation/reload/conflict/reopen continuity or durable state was not tested.", + "scope": "Current CLI/captured/rendered-artifact profile; absence of coverage is not N/A or a pass." + }, + { + "id": "A1", + "field": "accessibilityScore", + "name": "Semantic names/structure", + "observedScore": null, + "finalScore": null, + "status": "NOT_RUN", + "evidenceRefs": [ + "plan", + "stage_review" + ], + "deductionOrMissingEvidence": "The observer captured DOM text, IDs and geometry, but no semantic-role/name/structure audit was performed.", + "scope": "Current CLI/captured/rendered-artifact profile; absence of coverage is not N/A or a pass." + }, + { + "id": "A2", + "field": "accessibilityScore", + "name": "keyboard/focus order and modal focus return", + "observedScore": null, + "finalScore": null, + "status": "NOT_RUN", + "evidenceRefs": [ + "plan", + "stage_review" + ], + "deductionOrMissingEvidence": "Pointer focus is visible in snapshots; keyboard order, keyboard-only operation, dialogs and focus return were not tested.", + "scope": "Current CLI/captured/rendered-artifact profile; absence of coverage is not N/A or a pass." + }, + { + "id": "A3", + "field": "accessibilityScore", + "name": "contrast/non-color cues", + "observedScore": null, + "finalScore": null, + "status": "NOT_RUN", + "evidenceRefs": [ + "plan", + "stage_review" + ], + "deductionOrMissingEvidence": "Qualitative visual legibility is rated atV5. No manual/automated contrast measurements and full non-color-cue audit were performed.", + "scope": "Current CLI/captured/rendered-artifact profile; absence of coverage is not N/A or a pass." + }, + { + "id": "A4", + "field": "accessibilityScore", + "name": "text resize/reflow and target size", + "observedScore": null, + "finalScore": null, + "status": "NOT_RUN", + "evidenceRefs": [ + "plan", + "stage_review" + ], + "deductionOrMissingEvidence": "The fixed desktop controls were captured, but text resizing/reflow, target-size exceptions and narrow/device accessibility were not exercised.", + "scope": "Current CLI/captured/rendered-artifact profile; absence of coverage is not N/A or a pass." + }, + { + "id": "A5", + "field": "accessibilityScore", + "name": "screen-reader announcements and reduced-motion alternatives. Manual checks accompany automated scans", + "observedScore": null, + "finalScore": null, + "status": "NOT_RUN", + "evidenceRefs": [ + "plan", + "stage_review" + ], + "deductionOrMissingEvidence": "No screen reader, live announcement inspection or reduced-motion alternative was exercised.", + "scope": "Current CLI/captured/rendered-artifact profile; absence of coverage is not N/A or a pass." + }, + { + "id": "P1", + "field": "performanceScore", + "name": "Initial usable view", + "observedScore": null, + "finalScore": null, + "status": "NOT_RUN", + "evidenceRefs": [ + "plan", + "stage_review" + ], + "deductionOrMissingEvidence": "Capture begins after scripted waits; no initial usable-view workload or latency budget was measured.", + "scope": "Current CLI/captured/rendered-artifact profile; absence of coverage is not N/A or a pass." + }, + { + "id": "P2", + "field": "performanceScore", + "name": "input/scroll responsiveness", + "observedScore": null, + "finalScore": null, + "status": "NOT_RUN", + "evidenceRefs": [ + "plan", + "stage_review" + ], + "deductionOrMissingEvidence": "The positive observer adds state-read/request-routing overhead. Input/scroll latency was not measured.", + "scope": "Current CLI/captured/rendered-artifact profile; absence of coverage is not N/A or a pass." + }, + { + "id": "P3", + "field": "performanceScore", + "name": "layout stability", + "observedScore": null, + "finalScore": null, + "status": "NOT_RUN", + "evidenceRefs": [ + "plan", + "stage_review" + ], + "deductionOrMissingEvidence": "Sparse frames and a successful decoder do not establish layout stability or CLS.", + "scope": "Current CLI/captured/rendered-artifact profile; absence of coverage is not N/A or a pass." + }, + { + "id": "P4", + "field": "performanceScore", + "name": "honest long-operation feedback", + "observedScore": 3, + "finalScore": null, + "status": "PARTIALLY_OBSERVED", + "evidenceRefs": [ + "late_stdout", + "late_command", + "media_receipt" + ], + "deductionOrMissingEvidence": "The CLI eventually reports the real timeout and rendering emits progress, but the missing-control call spends its existing60-second wait without additional user-facing progress between the initial capture line and final failure. It is bounded and honest, with a silent-wait usability gap.", + "scope": "Observed command-output feedback only, not throughput, latency improvement, web vitals or a performance benchmark." + }, + { + "id": "P5", + "field": "performanceScore", + "name": "behavior with large data and constrained device/network conditions. Record workload and measured budgets separately from reviewer impressions", + "observedScore": null, + "finalScore": null, + "status": "NOT_RUN", + "evidenceRefs": [ + "plan", + "stage_review" + ], + "deductionOrMissingEvidence": "No large-data, constrained-device/network, spike or sustained-accumulation workload was run.", + "scope": "Current CLI/captured/rendered-artifact profile; absence of coverage is not N/A or a pass." + }, + { + "id": "U1", + "field": "usageScore", + "name": "First-time task comprehension", + "observedScore": null, + "finalScore": null, + "status": "NOT_RUN", + "evidenceRefs": [ + "plan", + "stage_review" + ], + "deductionOrMissingEvidence": "No fresh intended human participant attempted the job. An informed agent executing a prepared controller is not first-human comprehension evidence.", + "scope": "Current CLI/captured/rendered-artifact profile; absence of coverage is not N/A or a pass." + }, + { + "id": "U2", + "field": "usageScore", + "name": "successful core journey", + "observedScore": 3, + "finalScore": null, + "status": "PARTIALLY_OBSERVED", + "evidenceRefs": [ + "recovery_observation", + "media_receipt", + "gif_final" + ], + "deductionOrMissingEvidence": "The developer completes the named capture and produces valid formats, but a viewer cannot comfortably inspect the result text in the exported GIF. Finishing the evidence-reading job requires opening the full-size native screenshots.", + "scope": "One local two-client capture-to-export job; all other advertised pipelines are untested." + }, + { + "id": "U3", + "field": "usageScore", + "name": "bounded errors/help/rework", + "observedScore": 3, + "finalScore": null, + "status": "PARTIALLY_OBSERVED", + "evidenceRefs": [ + "late_failed_outputs", + "external_restoration", + "unavailable_error", + "explicit_recovery" + ], + "deductionOrMissingEvidence": "Errors now give actionable causes and recapture guidance, but a failed selected capture still replaces its PNG directory with partial/diagnostic files. The successful55-file restoration in this proof is external backup work, so product recovery requires preserving artifacts and an explicit recapture.", + "scope": "Observed failed-output preservation/rework boundary; no new rollback capability is claimed." + }, + { + "id": "U4", + "field": "usageScore", + "name": "usable export or consumer result", + "observedScore": 2, + "finalScore": null, + "status": "PARTIALLY_OBSERVED", + "evidenceRefs": [ + "media_bindings", + "mp4_final", + "gif_final", + "media_pixel_review" + ], + "deductionOrMissingEvidence": "The H264 and GIF files decode completely, but inner content and local-mode disclosure are too small for a self-contained evidence handoff at native GIF size. Valid bytes do not make the result sufficiently readable.", + "scope": "Usability of the actual fixed output artifacts, separate from technical export validity." + }, + { + "id": "U5", + "field": "usageScore", + "name": "restart/reopen/handoff without hidden knowledge. Fresh-agent operability is separate from observed fresh-human usability", + "observedScore": null, + "finalScore": null, + "status": "NOT_RUN", + "evidenceRefs": [ + "plan", + "stage_review" + ], + "deductionOrMissingEvidence": "Explicit technical recovery is observed, but no fresh developer followed a final portable handoff end-to-end after publication. That separate handoff remains pending.", + "scope": "Current CLI/captured/rendered-artifact profile; absence of coverage is not N/A or a pass." + }, + { + "id": "L1", + "field": "alignmentScore", + "name": "Fit to intended user and job", + "observedScore": 3, + "finalScore": null, + "status": "PARTIALLY_OBSERVED", + "evidenceRefs": [ + "mp4_final", + "gif_final", + "media_pixel_review" + ], + "deductionOrMissingEvidence": "The tool produces a genuine two-client demonstration, yet the intended viewer needs separate enlarged source captures to verify the main content. The output only partially serves an inspectable feature-evidence job.", + "scope": "Fit of this local capture/render slice to a developer demonstrating behavior." + }, + { + "id": "L2", + "field": "alignmentScore", + "name": "coverage of advertised capabilities", + "observedScore": null, + "finalScore": null, + "status": "NOT_RUN", + "evidenceRefs": [ + "plan", + "stage_review" + ], + "deductionOrMissingEvidence": "The current proof covers the local LiveSync capture/render only; advertised provider, narration, other-app and other composition capabilities were not exercised.", + "scope": "Current CLI/captured/rendered-artifact profile; absence of coverage is not N/A or a pass." + }, + { + "id": "L3", + "field": "alignmentScore", + "name": "truthful limits/status", + "observedScore": 3, + "finalScore": null, + "status": "PARTIALLY_OBSERVED", + "evidenceRefs": [ + "unavailable_error", + "late_error", + "source_integration_limits", + "native_finished_a", + "gif_final" + ], + "deductionOrMissingEvidence": "The repaired CLI and current docs state failures/limits truthfully. The local fixed-text stand-in disclosure is visible in native captures but too small in the exported GIF, so the clip alone does not make its mode easy to understand.", + "scope": "Named process status plus visible provenance in current artifacts; no live-provider or durable-state claim." + }, + { + "id": "L4", + "field": "alignmentScore", + "name": "permissions and review authority", + "observedScore": null, + "finalScore": null, + "status": "NOT_RUN", + "evidenceRefs": [ + "plan", + "stage_review" + ], + "deductionOrMissingEvidence": "The owned controller has a bounded authorization/environment policy, but application review/approval/permissions behavior was not exercised and cannot be graded from the harness.", + "scope": "Current CLI/captured/rendered-artifact profile; absence of coverage is not N/A or a pass." + }, + { + "id": "L5", + "field": "alignmentScore", + "name": "source/trace/artifact consistency", + "observedScore": 5, + "finalScore": null, + "status": "PARTIALLY_OBSERVED", + "evidenceRefs": [ + "source_freeze", + "final_judge", + "native_bijection", + "recovery_observation", + "media_bindings" + ], + "deductionOrMissingEvidence": "Exact source,54 native/generated/copied image bindings, matching two-client IDs/texts, final media hashes and full decoder records agree in the exercised chain. No material identity inconsistency was found.", + "scope": "Bound current local source/trace/artifact chain only; no shared or deployed producer certification." + } + ], + "visualScore": null, + "designScore": null, + "responsiveScore": null, + "interactionScore": null, + "accessibilityScore": null, + "performanceScore": null, + "usageScore": null, + "alignmentScore": null, + "barScores": null, + "overallScore": null, + "overallGrade": null, + "workingTarget": { + "eachApplicableCriterionAtLeast": 4, + "eachDimensionAtLeast": 4.5, + "status": "UNCHANGED; no means computed because coverage is incomplete" + }, + "confidence": { + "sourceNativeArtifactIdentity": "High within named proof", + "pixelDeductions": "Moderate agent evaluation of actual fixed output", + "responsiveAccessibilityPerformanceHuman": "Not measured beyond explicit partial facts" + }, + "developerHandoffStatus": "NAMED_SOURCE_AND_CAPTURE_COMMAND_PROOF_APPROVED; portable final handoff/publication remains pending", + "userExperienceStatus": "AGENT_EVALUATED_ONLY_PARTIAL_WITH_OUTPUT_READABILITY_GAP", + "freshHumanUsabilityStatus": "NOT_RUN", + "sharedIntegrationStatus": "NOT_RUN_FOR_THIS_CANDIDATE", + "productionStatus": "NOT_RUN", + "hardGates": [ + { + "name": "Exact named selector/thrown-failure status repair", + "status": "PASS_SCOPED", + "evidenceRefs": [ + "final_judge", + "selection_cases", + "unavailable_error", + "late_error" + ] + }, + { + "name": "Actual local capture and technical media export", + "status": "PASS_WITH_READABILITY_HOLD", + "evidenceRefs": [ + "recovery_observation", + "media_bindings", + "media_pixel_review" + ] + }, + { + "name": "Final responsive/accessibility/human coverage", + "status": "NOT_RUN", + "evidenceRefs": [ + "plan", + "stage_review" + ] + }, + { + "name": "Shared integration and production", + "status": "NOT_RUN", + "evidenceRefs": [ + "source_freeze" + ] + }, + { + "name": "Dependency readiness", + "status": "RETAINED_ADVISORIES_NOT_REASSESSED_IN_THIS_SLICE", + "evidenceRefs": [ + "final_judge" + ] + } + ], + "requiredFixes": [ + { + "id": "FCS-OUTPUT-READABILITY", + "criterionIds": [ + "V1", + "V2", + "V4", + "V5", + "D4", + "U2", + "U4", + "L1", + "L3" + ], + "status": "OBSERVED_FOLLOW_ON_REQUIRED_FOR_EXPERIENCE_TARGET", + "reason": "Inner board content and local-mode disclosure are too small in the fixed two-panel export, particularly720GIF, despite large empty space.", + "nextLowestFix": "Freeze a separate before reference at these actual outputs, then examine the existing capture/framing/scale owner so both client evidence and readable local-mode disclosure survive the intended output size. Preserve actual captured pixels and semantics; do not conflate with the accepted exit fix.", + "evidenceRefs": [ + "mp4_final", + "gif_final", + "media_pixel_review" + ] + }, + { + "id": "FCS-FAILED-CAPTURE-REWORK", + "criterionIds": [ + "U3", + "I4", + "I5", + "U5" + ], + "status": "KNOWN_PRODUCT_BOUNDARY_AND_HANDOFF_HOLD", + "reason": "A failed capture keeps its old generated module but can replace selected PNGs with partial diagnostics. This proof restores55files externally.", + "nextLowestFix": "Keep direct backup/diagnostic/recapture instructions in the handoff. Treat any future atomic multi-spec or product-rollback change as a separate planned capability, not a hidden claim from this controller.", + "evidenceRefs": [ + "late_failed_outputs", + "external_restoration", + "source_integration_limits" + ] + }, + { + "id": "FCS-LONG-WAIT-FEEDBACK", + "criterionIds": [ + "P4" + ], + "status": "OBSERVED_FRICTION_SEPARATE_FROM_HONEST_EXIT_FIX", + "reason": "The real late-action case has an existing60-second silent interval after its initial capture line before the final failure.", + "nextLowestFix": "If addressed later, retain the native deadline and original error while giving truthful elapsed/current-step feedback; do not raise timeout or claim fake progress.", + "evidenceRefs": [ + "late_stdout", + "late_command" + ] + } + ], + "limitations": [ + "All21 numeric observations are partial, with23NOT_RUN rows. All44final scores/eight dimensions/overall/bar scores remain null; no letter grade or readiness pass.", + "No criterion is declared N/A merely because the current proof omitted it. The repository owns a demo and exported visual surface, so fixed-output coverage cannot exempt its applicable responsive/accessibility checks.", + "Still frames establish composition/legibility only; complete decoder success does not establish motion, audio quality or human comprehension.", + "The positive wrapper affects timing; command durations are not a performance improvement or field benchmark.", + "The legacy observer mode label is qualified by the exact changed-source identity.", + "Fixed local in-memory mode, swallowed waitText timeout, partial output/no product rollback, no same-path concurrency/cancel/undo, dependency advisories and untested other pipelines remain explicit.", + "No AQA runtime evidence or grades were reused; only the requested44field/id/name schema was reused from its scorecard." + ], + "evidenceRefs": { + "standard": { + "path": "operator-evidence\\REPO_READINESS_STANDARD.md", + "bytes": 18664, + "sha256": "8b5bb532bf0dfeed7cc4ecd2b425d708fc49048cc05ab4cbeb315fc3534aeff2" + }, + "source_freeze": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-01\\08-freeze\\source-after.json", + "bytes": 203094, + "sha256": "81574f6cf97fbafd143464145f5d90481014752af6183a8250be9d39cc58200d" + }, + "final_judge": { + "path": "operator-evidence\\E6o_FEATURECLIPSTUDIO_CAPTURE_STATUS_FINAL_JUDGE.json", + "bytes": 9876, + "sha256": "833c51ba6f9974d60662c256f03fb87e8a16b5830006b496c9832ed0dbbf1020" + }, + "baseline_judge": { + "path": "operator-evidence\\E6o_FEATURECLIPSTUDIO_CURRENT_CONSUMER_FINAL_JUDGE.json", + "bytes": 18212, + "sha256": "fdaeb9ddafea99fa9c9ae836463996e4b7c71b9a15b9d9d7732a462f27b3200d", + "kind": "preserved historical before" + }, + "plan": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-plan-01\\plan.json", + "bytes": 1578, + "sha256": "f88d9798efdddd700fdf370e476b9326fb0b946d0cca038ae7d5e062caaaa85a" + }, + "source_application": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-apply-01\\receipt.json", + "bytes": 2334, + "sha256": "7517ad977d4b0069f2bbf58029352a63e481c491f6461e387f984bfd2f6bf9e5" + }, + "source_readme": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-repair-plan-01\\proposed\\README.md.txt", + "bytes": 65333, + "sha256": "f30668cb1d8bd56073cdff614dd2f9c854e76fd53fbcf3698e6233f730bf2a20" + }, + "source_integration_limits": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-repair-plan-01\\proposed\\docs\\codebase\\INTEGRATIONS.md.txt", + "bytes": 5769, + "sha256": "d5fe0d5133c11b83c3994f44540fb124d817657182ccb46954b6cb510add81de" + }, + "normal_check": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-01\\01-check\\normal-check.stdout.txt", + "bytes": 160, + "sha256": "bd6cb30c52eb122651a342069acd32cf94a32ed9ee44fb386fa99239533afefb" + }, + "selection_cases": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-01\\02-selection-negatives\\selection-semantics.json", + "bytes": 1106, + "sha256": "3568846278b110ab5eba127bc6366d7cc96483fc9a7d96c19a9c1511c4cceee1" + }, + "unavailable_error": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-01\\04-unavailable\\unavailable.stderr.txt", + "bytes": 676, + "sha256": "f5006960fbf50e8e4b77432ef86695c93426fd43870933dfd3f441edc98e9cec" + }, + "unavailable_command": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-01\\04-unavailable\\unavailable-command.json", + "bytes": 225, + "sha256": "d0fa01fea600b544e7a9ecf7c8222c30f86a955b62bfd4d00f62092aae628890" + }, + "late_error": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-01\\05-missing-control\\missing-control.stderr.txt", + "bytes": 636, + "sha256": "ff955ac7ccfea174c0a74ec401314c95983b67d1448d13a1e27d6a2b36485c61" + }, + "late_stdout": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-01\\05-missing-control\\missing-control.stdout.txt", + "bytes": 460, + "sha256": "ffed6bb12aa48f864e393ce286e4f14fd94970e8b473fd87f18c8f3b8307f50b" + }, + "late_command": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-01\\05-missing-control\\missing-control-command.json", + "bytes": 230, + "sha256": "3ff6d902e3ded3e4b65ddae31d8ee15462666b69a6b3814d0bfad0532355ca96" + }, + "late_failed_outputs": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-01\\05-missing-control\\source-failed-before-restoration.json", + "bytes": 6724, + "sha256": "4b207e8f612fa366110272aa0f9f7fceaa7e57bf1254eaae650c33f2f02e570a" + }, + "external_restoration": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-01\\05-missing-control\\restoration.json", + "bytes": 9623, + "sha256": "6669a72ec6626573b92b4e5e0b2197ffa96239cdf98e6de479ed16def1dcd78a" + }, + "positive_observation": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-01\\03-positive\\observer\\report.json", + "bytes": 17323, + "sha256": "a42ab544927ca6448cd87dbc669e500cc980ee02e2b9b6a50440a3e1ac1e8d75" + }, + "recovery_observation": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-01\\06-recovery\\observer\\report.json", + "bytes": 17323, + "sha256": "7fde87aa378f1a50ad6b690e6399c6f2a03ec263b00906f1153f9f837fcc2c45" + }, + "explicit_recovery": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-01\\06-recovery\\explicit-recovery.json", + "bytes": 296, + "sha256": "30a2afd55aff9716327d56f5b761d758d9d430bf071973e54eeccbd7597ea5cd" + }, + "native_bijection": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-01\\06-recovery\\native-generated-disk-bijection.json", + "bytes": 8499, + "sha256": "a97cca0bb43d1fa8710ae98f03cbe2cff84fffd48b6363e0421818660bdeb71d" + }, + "native_empty": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-01\\06-recovery\\after\\public\\wt-collab\\LiveSync\\p0_00.png", + "bytes": 236192, + "sha256": "3432eebd1336f92b13502f69fe28b176daf260fc83e76b27f17c3bcdad908e4f" + }, + "native_typed": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-01\\06-recovery\\after\\public\\wt-collab\\LiveSync\\p0_01.png", + "bytes": 241905, + "sha256": "36b6110a24d5ad3192cd1b013bac6f403aa71444b03f96858406cd4b68f4fd47" + }, + "native_working": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-01\\06-recovery\\after\\public\\wt-collab\\LiveSync\\p0_06_00.png", + "bytes": 228274, + "sha256": "63cb5423e4de0b02c181e74cd34a76ee256184d3ef1140c5d13468528ad9a7a8" + }, + "native_finished_a": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-01\\06-recovery\\after\\public\\wt-collab\\LiveSync\\p0_07.png", + "bytes": 233304, + "sha256": "40a772e63cdeab75031898e15f2c2694e549321800c70b4a86994100e766e3b2" + }, + "native_finished_b": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-01\\06-recovery\\after\\public\\wt-collab\\LiveSync\\p1_07.png", + "bytes": 232433, + "sha256": "ab6c81aed2aece48c7830fc2c34583e7547293abab36f2486bc969496b706a8e" + }, + "mp4_action": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-01\\07-media\\repaired-frame-147.png", + "bytes": 223729, + "sha256": "f4c6fcdf0cf8a73b3f555a00b5a1f37ae5126dcf06293c054e7cd37d36e30281" + }, + "mp4_final": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-01\\07-media\\repaired-frame-587.png", + "bytes": 234102, + "sha256": "c8567729d745e5de081e7e8a6483fb046a4fa712e7c5c48a005fccdb07e3ce79" + }, + "gif_empty": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-01\\07-media\\gif-frame-0.png", + "bytes": 41471, + "sha256": "0ff5273dbd5ecf0dd9ada37061ca17b381aa39ccad2837752a0729c868c46165" + }, + "gif_final": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-01\\07-media\\gif-frame-293.png", + "bytes": 46486, + "sha256": "27ce1ac241da93b211beb75ee9b777a599226e8d32a480626e29fd5eefa5ae77" + }, + "media_bindings": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-final-01\\media-bindings.json", + "bytes": 944, + "sha256": "4fad28259220d9b95d1ba565c58a3d40408a847296eeefb577ebd9d36ceca357" + }, + "media_receipt": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-01\\07-media\\receipt.json", + "bytes": 8609, + "sha256": "b1b6e6eeb6cbfabe3b40e96d27023ede5cc640278ff58792447d88e4416764ab" + }, + "native_pixel_review": { + "path": "operator-evidence\\E6o-status-after-final-independent-01\\native-pixel-review.json", + "bytes": 10204, + "sha256": "d2e1cb5040ab3e745ab789b84fd64218aaaa3b500e5ed14470b4c4786dbaab5f" + }, + "media_pixel_review": { + "path": "operator-evidence\\E6o-status-after-final-independent-01\\media-pixel-review.json", + "bytes": 4288, + "sha256": "34afdb366b95101d9b774a3b879fdb42a390e8fcf4e18910587ccd7f966cb383" + }, + "stage_review": { + "path": "operator-evidence\\E6o-status-after-final-independent-01\\stage-review.json", + "bytes": 17750, + "sha256": "1f851039f0b48c8bab18eff8b2e81e89c4132c3046d018349e52057e7ed6218f" + }, + "source_closure": { + "path": "operator-evidence\\E6o-status-after-final-independent-01\\source-closing.json", + "bytes": 2854, + "sha256": "2b5db0e60a36e5f2ee7aae551d1b69841d26e980868514d47b59e51adc923c50" + }, + "process_closure": { + "path": "operator-evidence\\E6o-status-after-final-independent-01\\process-readback.json", + "bytes": 111, + "sha256": "0085fb39f35b5900e9062413736d7c1009412fe8124c4b6362befeaf6db15447" + } + }, + "completionTraceability": "Re your explicit request for visual, UI, responsiveness, interaction standards and grading:44named criteria now have evidence-scoped observed1-5ratings or explicit null NOT_RUN, with exact current source/native/media identities. The honest-exit repair is accepted separately from output readability and missing human/full-product evidence." +} diff --git a/promotion/evidence/local-livesync-handoff-20260907/judgments/E6o_FEATURECLIPSTUDIO_CRITERION_ASSESSMENT.md.txt b/promotion/evidence/local-livesync-handoff-20260907/judgments/E6o_FEATURECLIPSTUDIO_CRITERION_ASSESSMENT.md.txt new file mode 100644 index 0000000..7ea20e5 --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/judgments/E6o_FEATURECLIPSTUDIO_CRITERION_ASSESSMENT.md.txt @@ -0,0 +1,58 @@ +Builder mode. **AGENT_EVALUATED_ONLY_PARTIAL_WITH_OUTPUT_READABILITY_GAP**. + +**Re your request:** make visual, UI, responsive and interaction grading concrete — all44 standard criteria are recorded below and in the machine-readable scorecard. There are21 partial observations and23 NOT_RUN rows; all final criterion scores, eight dimension scores, overall score and letter grade remain null. + +The named CLI exit repair passed independently. The actual MP4/GIF still shrinks its two-client evidence and local-mode disclosure too far, especially at720×405. Fixed video dimensions are not responsive viewport evidence. No fresh human, physical device, keyboard-only or assistive-technology claim is made. + +| Criterion | Observed | Status | +| --- | --- | --- | +| V1 typography | 2 | PARTIALLY_OBSERVED | +| V2 spacing/grid | 3 | PARTIALLY_OBSERVED | +| V3 color/token discipline | 4 | PARTIALLY_OBSERVED | +| V4 hierarchy | 3 | PARTIALLY_OBSERVED | +| V5 rendered legibility/contrast | 2 | PARTIALLY_OBSERVED | +| V6 consistent elevation/icons | 4 | PARTIALLY_OBSERVED | +| V7 alignment | 5 | PARTIALLY_OBSERVED | +| V8 polish of empty/loading/error/populated states | 4 | PARTIALLY_OBSERVED | +| V9 purposeful motion and reduced-motion behavior | null | NOT_RUN | +| D1 Clarity of the main action | 4 | PARTIALLY_OBSERVED | +| D2 navigation/information architecture | null | NOT_RUN | +| D3 progressive disclosure | null | NOT_RUN | +| D4 useful information density | 3 | PARTIALLY_OBSERVED | +| D5 consistency of component behavior and wording | 4 | PARTIALLY_OBSERVED | +| R1 Reflow/content preservation | null | NOT_RUN | +| R2 reachability of navigation and primary actions | null | NOT_RUN | +| R3 modal/panel/table/canvas adaptation | null | NOT_RUN | +| R4 touch and on-screen-keyboard usability | null | NOT_RUN | +| R5 stability under zoom, long content and declared locales | null | NOT_RUN | +| I1 Working controls and keyboard paths | 5 | PARTIALLY_OBSERVED | +| I2 immediate honest feedback and durable status | 5 | PARTIALLY_OBSERVED | +| I3 validation/error/retry behavior | 5 | PARTIALLY_OBSERVED | +| I4 safe cancellation/undo and duplicate-action handling | null | NOT_RUN | +| I5 state continuity through navigation, reload, conflicts and reopening | null | NOT_RUN | +| A1 Semantic names/structure | null | NOT_RUN | +| A2 keyboard/focus order and modal focus return | null | NOT_RUN | +| A3 contrast/non-color cues | null | NOT_RUN | +| A4 text resize/reflow and target size | null | NOT_RUN | +| A5 screen-reader announcements and reduced-motion alternatives. Manual checks accompany automated scans | null | NOT_RUN | +| P1 Initial usable view | null | NOT_RUN | +| P2 input/scroll responsiveness | null | NOT_RUN | +| P3 layout stability | null | NOT_RUN | +| P4 honest long-operation feedback | 3 | PARTIALLY_OBSERVED | +| P5 behavior with large data and constrained device/network conditions. Record workload and measured budgets separately from reviewer impressions | null | NOT_RUN | +| U1 First-time task comprehension | null | NOT_RUN | +| U2 successful core journey | 3 | PARTIALLY_OBSERVED | +| U3 bounded errors/help/rework | 3 | PARTIALLY_OBSERVED | +| U4 usable export or consumer result | 2 | PARTIALLY_OBSERVED | +| U5 restart/reopen/handoff without hidden knowledge. Fresh-agent operability is separate from observed fresh-human usability | null | NOT_RUN | +| L1 Fit to intended user and job | 3 | PARTIALLY_OBSERVED | +| L2 coverage of advertised capabilities | null | NOT_RUN | +| L3 truthful limits/status | 3 | PARTIALLY_OBSERVED | +| L4 permissions and review authority | null | NOT_RUN | +| L5 source/trace/artifact consistency | 5 | PARTIALLY_OBSERVED | + +The principal deductions are typography/legibility/export usability (2/5), and excess empty space, hierarchy, information density, inspectable core journey and visible mode disclosure (3/5). The same raw output can pass byte/decoder checks while failing the reader’s job. Native pointer actions, the exact selected/thrown-failure contract and source/artifact consistency receive5/5 only within their explicitly exercised scope; their final criterion scores are still null. + +Failure recovery retains its own3/5 rework deduction: the product does not roll back selected PNGs. The proof’s55-file restoration is external. The native60-second action wait is now honest at exit but still has a silent-wait feedback gap. No timeout/retry/rollback policy was changed to improve a grade. + +I directly viewed16 final native images and8 decoded output samples. The source/runtime judgment independently binds904 source rows,646 current raw artifacts,908 historical/installed inputs and closed owned runtime. The numeric rows cite exact source/command/pixel evidence and expose their missing coverage in [the JSON assessment](E6o_FEATURECLIPSTUDIO_CRITERION_ASSESSMENT.json). [Source approval](E6o_FEATURECLIPSTUDIO_CAPTURE_STATUS_FINAL_JUDGE.md) remains separate from these experience holds. diff --git a/promotion/evidence/local-livesync-handoff-20260907/judgments/E6o_FEATURECLIPSTUDIO_READABILITY_CRITERION_ASSESSMENT.json b/promotion/evidence/local-livesync-handoff-20260907/judgments/E6o_FEATURECLIPSTUDIO_READABILITY_CRITERION_ASSESSMENT.json new file mode 100644 index 0000000..6602828 --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/judgments/E6o_FEATURECLIPSTUDIO_READABILITY_CRITERION_ASSESSMENT.json @@ -0,0 +1,1523 @@ +{ + "schema": "repository-criterion-assessment/v1", + "at": "2026-09-07T11:25:11.401534+00:00", + "repo": "FeatureClipStudio", + "canonicalRepo": "https://github.com/HomenShum/FeatureClipStudio", + "commit": null, + "tree": null, + "baseCommit": "208b2e0a61b8a7240b09115ab74324f6d4a2c90c", + "baseTree": "a2ce6fd5ea7c7c2d4d4b6c94a7753c069b7c9b00", + "workingSourceFreeze": { + "path": "operator-evidence\\E6o-featureclipstudio-readability-render-01\\05-close\\source-after.json", + "bytes": 203094, + "sha256": "9c0556c9d68195277515242415e7afcac8a8e20e790403aec737dc44a21bbd6e" + }, + "profileRevision": "FCS-CLI-LIVESYNC-READABLE-OUTPUT-02-AGENT-EVALUATED-ONLY", + "referenceRefs": [ + { + "path": "operator-evidence\\REPO_READINESS_STANDARD.md", + "bytes": 18664, + "sha256": "8b5bb532bf0dfeed7cc4ecd2b425d708fc49048cc05ab4cbeb315fc3534aeff2" + }, + { + "path": "operator-evidence\\E6o_FEATURECLIPSTUDIO_CURRENT_CONSUMER_FINAL_JUDGE.json", + "bytes": 18212, + "sha256": "fdaeb9ddafea99fa9c9ae836463996e4b7c71b9a15b9d9d7732a462f27b3200d", + "kind": "preserved historical before" + }, + { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-plan-01\\plan.json", + "bytes": 1578, + "sha256": "f88d9798efdddd700fdf370e476b9326fb0b946d0cca038ae7d5e062caaaa85a" + }, + { + "path": "operator-evidence\\E6o_FEATURECLIPSTUDIO_CAPTURE_STATUS_FINAL_JUDGE.json", + "bytes": 9876, + "sha256": "833c51ba6f9974d60662c256f03fb87e8a16b5830006b496c9832ed0dbbf1020" + }, + { + "path": "operator-evidence\\E6o_FEATURECLIPSTUDIO_CRITERION_ASSESSMENT.json", + "bytes": 52393, + "sha256": "1af30f642f6521de90e58fa64aea530297448627fe23770d8a23bb3420bb3ca0" + }, + { + "path": "operator-evidence\\E6o-featureclipstudio-readability-plan-03\\plan.json", + "bytes": 5457, + "sha256": "32e0dcd1e76e4972549203bd0bae47d387af2f6072ebf77ba94871e7448a58ce" + }, + { + "path": "operator-evidence\\E6o_FEATURECLIPSTUDIO_READABILITY_FINAL_JUDGE.json", + "bytes": 4365, + "sha256": "d403ffd98ae140d87130ad2605fcceb63a0fcc9e9e2b12a2c9d7a613bc47095e" + } + ], + "testedAt": "2026-09-07", + "reviewer": { + "role": "independent implementation nonauthor", + "contextReuse": true, + "authored": [ + "external read-only review scripts", + "judgments", + "criterion assessment" + ], + "productEdits": 0, + "nativeReplayByJudge": 0 + }, + "evaluationScope": "Separate successor for the frozen local LiveSync capture/render surface. New partial scores concern selected actual encoded output only. Historical CLI/native observations are retained with their original evidence; other examples remain unresolved and cannot be averaged away. No full product, responsive, accessibility, motion, human, provider or production acceptance.", + "environment": { + "os": "Windows; owned isolated checkout and child profile", + "nodeExecutable": "C:/nvm4w/nodejs/node.exe", + "nodeVersion": "Not independently re-read in this after review; exact executable/command paths retained", + "browser": "Headless Chromium through frozen Playwright1.60.0; browser version not promoted from a historical receipt", + "surface": "Prior owned local LiveSync native captures reused unchanged; new frozen encoded exports from the five-owner readability repair. No new browser/provider session in this assessment.", + "input": "Inherited native pointer/fill evidence only; the new review inspects encoded artifacts.", + "providerMode": "NONE: fixed-text local in-memory stand-in. No durable Convex or model execution.", + "sourceIdentity": { + "state": "UNCOMMITTED_REVIEWED_READABILITY_SOURCE_SNAPSHOT", + "sourceFreeze": { + "path": "operator-evidence\\E6o-featureclipstudio-readability-render-01\\05-close\\source-after.json", + "bytes": 203094, + "sha256": "9c0556c9d68195277515242415e7afcac8a8e20e790403aec737dc44a21bbd6e" + }, + "applicationReceipt": { + "path": "operator-evidence\\E6o-featureclipstudio-readability-apply-01\\receipt.json", + "bytes": 1834, + "sha256": "387e962892dd8a1f7c9641ea2b26d58a2b44e02b5aefab5a8e3a92c976361fcf" + } + }, + "renderedOutputs": { + "nativeCssViewport": [ + 1280, + 600 + ], + "nativePngRaster": [ + 2560, + 1200 + ], + "nativeViewToolRaster": [ + 2048, + 960 + ], + "mp4": [ + 1920, + 1080, + 588, + "30fps" + ], + "gif": [ + 720, + 405, + 294, + "15fps" + ], + "actualCurrentMP4": { + "codec": "H264", + "width": 1920, + "height": 1080, + "frames": 588, + "fps": 30, + "videoSeconds": 19.6, + "containerSeconds": 19.648, + "audio": "AAC stereo 48000Hz; not listened to" + }, + "actualCurrentGIF": { + "width": 720, + "height": 405, + "frames": 294, + "fps": 15, + "durationSeconds": 19.59, + "paletteColors": 128 + } + }, + "observerBoundary": "Two positives use the unchanged disclosed wrapper with route/state observations; native negatives have no --import instrumentation. Legacy OBSERVED_UNCHANGED_DRIVER string does not assert equality to the old baseline source." + }, + "coverage": { + "sourceFloor": "Normal check39/39JS parse,36/36tour references,34/34prose citations; not a general unit-test suite.", + "nativeProof": "54exact native/generated/copied images in each positive;2matching final clients/2fresh recovery IDs;8steps588frames", + "normalViewports": [ + [ + 1280, + 600 + ] + ], + "requiredResponsiveMatrixStatus": "NOT_RUN; export dimensions are not CSS viewport cells", + "computedText200": [], + "physicalDeviceOrHuman": false, + "counts": { + "criteria": 44, + "partiallyObserved": 21, + "notRun": 23, + "notApplicable": 0, + "belowTarget": [ + "P4", + "U3" + ], + "belowTargetScope": "LiveSync/retained CLI partial rows only; other-example holds are not omitted from final readiness." + }, + "historicalStatusRepair": "8stages/26actualcommands/646rawartifacts;6selectorcases,early navigation failure,late60s action timeout,two positive captures and explicit fresh-server recovery", + "historicalNativeAndMediaPixelsViewed": { + "nativePrimaryStatePairs": 8, + "nativeImages": 16, + "mp4ExtractedFrames": [ + 0, + 4, + 147, + 294, + 587 + ], + "gifExtractedFrames": [ + 0, + 147, + 293 + ] + }, + "currentReadability": { + "nativeCaptureCountUnchanged": 54, + "preflightStills": 18, + "legacyRGBAParityPairs": 8, + "boundMP4Samples": 59, + "boundGIFSamples": 58, + "directlyViewedMP4Frames": [ + 0, + 96, + 156, + 210, + 226, + 232, + 268, + 294, + 372, + 408, + 420, + 432, + 491, + 518, + 587 + ], + "directlyViewedGIFFrames": [ + 0, + 2, + 3, + 8, + 13, + 34, + 35, + 38, + 43, + 48, + 64, + 65, + 68, + 73, + 78, + 91, + 92, + 95, + 98, + 100, + 101, + 104, + 105, + 107, + 110, + 113, + 116, + 119, + 133, + 134, + 137, + 142, + 147, + 172, + 173, + 176, + 181, + 186, + 200, + 201, + 204, + 207, + 209, + 210, + 213, + 214, + 216, + 218, + 221, + 224, + 227, + 230, + 245, + 246, + 249, + 254, + 259, + 293 + ], + "independentGIFFramesDecoded": 294, + "fullMotionOrAudioAcceptance": false, + "runtimeRerunsByThisAssessment": 0 + } + }, + "criterionRatings": [ + { + "id": "V1", + "field": "visualScore", + "name": "typography", + "observedScore": 4, + "finalScore": null, + "status": "PARTIALLY_OBSERVED", + "evidenceRefs": [ + "readable_gif_105", + "readable_gif_259", + "readable_gif_293", + "readable_movie_587" + ], + "deductionOrMissingEvidence": "Selected input, user/agent cards, author and client labels are readable in the actual 720x405 GIF and 1920x1080 MP4. Muted inactive copy and GIF texture remain minor friction; no typography claim for the clipped off-target content.", + "scope": "Selected actual LiveSync MP4/GIF output only; unchanged WT-NodeRoom/default findings remain separately open. No full-repository or untested-state score." + }, + { + "id": "V2", + "field": "visualScore", + "name": "spacing/grid", + "observedScore": 4, + "finalScore": null, + "status": "PARTIALLY_OBSERVED", + "evidenceRefs": [ + "readable_movie_432", + "readable_gif_216", + "readable_gif_293" + ], + "deductionOrMissingEvidence": "Stacked focused panes use the available area effectively and separate captions from both clients. The longest selected card retains its bottom border with tight clearance; the preceding off-target card is partly cropped.", + "scope": "Selected actual LiveSync MP4/GIF output only; unchanged WT-NodeRoom/default findings remain separately open. No full-repository or untested-state score." + }, + { + "id": "V3", + "field": "visualScore", + "name": "color/token discipline", + "observedScore": 4, + "finalScore": null, + "status": "PARTIALLY_OBSERVED", + "evidenceRefs": [ + "readable_gif_0", + "readable_gif_216", + "readable_gif_293" + ], + "deductionOrMissingEvidence": "Dark navy/green and client accents remain coherent in the current encoded output. Muted support text and GIF dithering remain minor polish friction; no token audit or measured contrast certification.", + "scope": "Selected actual LiveSync MP4/GIF output only; unchanged WT-NodeRoom/default findings remain separately open. No full-repository or untested-state score." + }, + { + "id": "V4", + "field": "visualScore", + "name": "hierarchy", + "observedScore": 4, + "finalScore": null, + "status": "PARTIALLY_OBSERVED", + "evidenceRefs": [ + "readable_gif_0", + "readable_gif_186", + "readable_gif_201", + "readable_gif_213", + "readable_gif_293" + ], + "deductionOrMissingEvidence": "Readable acted controls and selected results now substantiate the caption. Client labels and the local fixed-text/in-memory disclosure remain visible; early camera travel and caption fade-in do not represent a fully settled hierarchy.", + "scope": "Selected actual LiveSync MP4/GIF output only; unchanged WT-NodeRoom/default findings remain separately open. No full-repository or untested-state score." + }, + { + "id": "V5", + "field": "visualScore", + "name": "rendered legibility/contrast", + "observedScore": 4, + "finalScore": null, + "status": "PARTIALLY_OBSERVED", + "evidenceRefs": [ + "readable_gif_0", + "readable_gif_216", + "readable_gif_293", + "independent_gif_decode" + ], + "deductionOrMissingEvidence": "The final selected result and visible mode disclosure can be read in the actual palette GIF without opening the native PNG. Inactive supporting copy and fading captions remain subdued. No numerical contrast or WCAG certification is claimed.", + "scope": "Selected actual LiveSync MP4/GIF output only; unchanged WT-NodeRoom/default findings remain separately open. No full-repository or untested-state score." + }, + { + "id": "V6", + "field": "visualScore", + "name": "consistent elevation/icons", + "observedScore": 4, + "finalScore": null, + "status": "PARTIALLY_OBSERVED", + "evidenceRefs": [ + "readable_movie_432", + "readable_gif_216", + "readable_gif_293" + ], + "deductionOrMissingEvidence": "Both clients retain matching cards, borders and client-label vocabulary. Mixed emoji/browser decoration persists; the longest card has only tight bottom clearance, so generous shadow clearance is not established.", + "scope": "Selected actual LiveSync MP4/GIF output only; unchanged WT-NodeRoom/default findings remain separately open. No full-repository or untested-state score." + }, + { + "id": "V7", + "field": "visualScore", + "name": "alignment", + "observedScore": 5, + "finalScore": null, + "status": "PARTIALLY_OBSERVED", + "evidenceRefs": [ + "readable_gif_0", + "readable_gif_216", + "readable_gif_293" + ], + "deductionOrMissingEvidence": "The two stacked panel boxes and client labels align, and settled captions remain outside them in the inspected frames. No material box alignment or caption-overlap defect was observed; this does not close historical bundled-video overlap.", + "scope": "Selected actual LiveSync MP4/GIF output only; unchanged WT-NodeRoom/default findings remain separately open. No full-repository or untested-state score." + }, + { + "id": "V8", + "field": "visualScore", + "name": "polish of empty/loading/error/populated states", + "observedScore": 4, + "finalScore": null, + "status": "PARTIALLY_OBSERVED", + "evidenceRefs": [ + "readable_gif_0", + "readable_gif_216", + "readable_gif_293", + "native_working" + ], + "deductionOrMissingEvidence": "The reused empty, working and populated states remain coherent and their selected content is now legible in the output. Working/support copy is muted, and early moving crops omit some content; integrated error-state styling was not tested.", + "scope": "Selected actual LiveSync MP4/GIF output only; unchanged WT-NodeRoom/default findings remain separately open. No full-repository or untested-state score." + }, + { + "id": "V9", + "field": "visualScore", + "name": "purposeful motion and reduced-motion behavior", + "observedScore": null, + "finalScore": null, + "status": "NOT_RUN", + "evidenceRefs": [ + "plan", + "stage_review" + ], + "deductionOrMissingEvidence": "Only sampled still frames and full-decoder outcomes were reviewed. Continuous motion quality and reduced-motion alternatives were not exercised.", + "scope": "Current CLI/captured/rendered-artifact profile; absence of coverage is not N/A or a pass." + }, + { + "id": "D1", + "field": "designScore", + "name": "Clarity of the main action", + "observedScore": 4, + "finalScore": null, + "status": "PARTIALLY_OBSERVED", + "evidenceRefs": [ + "native_empty", + "native_typed", + "source_readme", + "selection_cases" + ], + "deductionOrMissingEvidence": "Add and Run agent are visible, labeled actions in the native board. The corrected capture instructions identify the next command and selection; the manual two-terminal/environment-variable setup remains minor developer friction. No fresh-human discovery study was run.", + "scope": "Agent-observed native action and corrected CLI setup path only." + }, + { + "id": "D2", + "field": "designScore", + "name": "navigation/information architecture", + "observedScore": null, + "finalScore": null, + "status": "NOT_RUN", + "evidenceRefs": [ + "plan", + "stage_review" + ], + "deductionOrMissingEvidence": "No first-use navigation/information-architecture journey across the studio, documentation and other command families was run.", + "scope": "Current CLI/captured/rendered-artifact profile; absence of coverage is not N/A or a pass." + }, + { + "id": "D3", + "field": "designScore", + "name": "progressive disclosure", + "observedScore": null, + "finalScore": null, + "status": "NOT_RUN", + "evidenceRefs": [ + "plan", + "stage_review" + ], + "deductionOrMissingEvidence": "No disclosure, inspector or progressive-reveal interaction was exercised in this fixed example/output proof.", + "scope": "Current CLI/captured/rendered-artifact profile; absence of coverage is not N/A or a pass." + }, + { + "id": "D4", + "field": "designScore", + "name": "useful information density", + "observedScore": 4, + "finalScore": null, + "status": "PARTIALLY_OBSERVED", + "evidenceRefs": [ + "readable_gif_186", + "readable_gif_216", + "readable_gif_293" + ], + "deductionOrMissingEvidence": "Focused crops prioritize the acted controls and selected cards rather than shrinking the whole board. Both final results fit; neighboring content is intentionally outside the crop and longest-card clearance is tight.", + "scope": "Selected actual LiveSync MP4/GIF output only; unchanged WT-NodeRoom/default findings remain separately open. No full-repository or untested-state score." + }, + { + "id": "D5", + "field": "designScore", + "name": "consistency of component behavior and wording", + "observedScore": 4, + "finalScore": null, + "status": "PARTIALLY_OBSERVED", + "evidenceRefs": [ + "unavailable_error", + "late_error", + "selection_cases", + "native_working", + "native_finished_a" + ], + "deductionOrMissingEvidence": "Selected-ID errors, original causes, recapture guidance and native working/finished labels agree with the observed behavior. Native error stacks add reading noise, and other command families are outside this proof.", + "scope": "Wording/behavior consistency in the named capture command and local demo." + }, + { + "id": "R1", + "field": "responsiveScore", + "name": "Reflow/content preservation", + "observedScore": null, + "finalScore": null, + "status": "NOT_RUN", + "evidenceRefs": [ + "plan", + "stage_review" + ], + "deductionOrMissingEvidence": "The native capture used one1280x600 CSS cell. Fixed1920x1080 video and720x405 GIF sizes are export transforms, not responsive reflow tests.", + "scope": "Current CLI/captured/rendered-artifact profile; absence of coverage is not N/A or a pass." + }, + { + "id": "R2", + "field": "responsiveScore", + "name": "reachability of navigation and primary actions", + "observedScore": null, + "finalScore": null, + "status": "NOT_RUN", + "evidenceRefs": [ + "plan", + "stage_review" + ], + "deductionOrMissingEvidence": "Actions were exercised at the single native desktop cell, without the required narrow/wide viewport matrix or responsive navigation checks.", + "scope": "Current CLI/captured/rendered-artifact profile; absence of coverage is not N/A or a pass." + }, + { + "id": "R3", + "field": "responsiveScore", + "name": "modal/panel/table/canvas adaptation", + "observedScore": null, + "finalScore": null, + "status": "NOT_RUN", + "evidenceRefs": [ + "plan", + "stage_review" + ], + "deductionOrMissingEvidence": "Two panels fit one fixed video canvas; no adaptive modal/panel/table/canvas interaction or responsive layout was exercised.", + "scope": "Current CLI/captured/rendered-artifact profile; absence of coverage is not N/A or a pass." + }, + { + "id": "R4", + "field": "responsiveScore", + "name": "touch and on-screen-keyboard usability", + "observedScore": null, + "finalScore": null, + "status": "NOT_RUN", + "evidenceRefs": [ + "plan", + "stage_review" + ], + "deductionOrMissingEvidence": "No physical touch or operating-system on-screen keyboard was used. Headless pointer actions do not establish device usability.", + "scope": "Current CLI/captured/rendered-artifact profile; absence of coverage is not N/A or a pass." + }, + { + "id": "R5", + "field": "responsiveScore", + "name": "stability under zoom, long content and declared locales", + "observedScore": null, + "finalScore": null, + "status": "NOT_RUN", + "evidenceRefs": [ + "plan", + "stage_review" + ], + "deductionOrMissingEvidence": "No200% text,400% zoom, long-content, locale or narrow-width stability proof was run.", + "scope": "Current CLI/captured/rendered-artifact profile; absence of coverage is not N/A or a pass." + }, + { + "id": "I1", + "field": "interactionScore", + "name": "Working controls and keyboard paths", + "observedScore": 5, + "finalScore": null, + "status": "PARTIALLY_OBSERVED", + "evidenceRefs": [ + "recovery_observation", + "native_typed", + "native_finished_a", + "native_finished_b" + ], + "deductionOrMissingEvidence": "Actual Playwright pointer/fill actions produced the intended card and fixed stream; both final clients agree. All named native CLI cases reached their expected exit. No control defect was observed in those exercised actions.", + "scope": "Pointer/fill and process invocation only. Keyboard-only paths, Tab order and device input remain NOT_RUN." + }, + { + "id": "I2", + "field": "interactionScore", + "name": "immediate honest feedback and durable status", + "observedScore": 5, + "finalScore": null, + "status": "PARTIALLY_OBSERVED", + "evidenceRefs": [ + "selection_cases", + "unavailable_error", + "late_error", + "recovery_observation" + ], + "deductionOrMissingEvidence": "All exercised rejected/failed commands omit DONE and return1; successful captures return0 with actual completed boards. No fake success remains in these thrown-failure cases.", + "scope": "Process feedback and current local state only; durable status and swallowed waitText semantics are not certified." + }, + { + "id": "I3", + "field": "interactionScore", + "name": "validation/error/retry behavior", + "observedScore": 5, + "finalScore": null, + "status": "PARTIALLY_OBSERVED", + "evidenceRefs": [ + "selection_cases", + "unavailable_command", + "late_command", + "explicit_recovery" + ], + "deductionOrMissingEvidence": "Six selector/no-filter cases, early connection refusal, late unchanged60-second timeout and an explicit fresh-server recapture all behaved as specified, retaining original causes.", + "scope": "These exact validation/error/recovery cases only; no automatic retry, full semantic validator or multi-spec guarantee." + }, + { + "id": "I4", + "field": "interactionScore", + "name": "safe cancellation/undo and duplicate-action handling", + "observedScore": null, + "finalScore": null, + "status": "NOT_RUN", + "evidenceRefs": [ + "plan", + "stage_review" + ], + "deductionOrMissingEvidence": "Cancellation, undo, duplicate submissions and concurrent same-path capture writers were not exercised. External cleanup/restoration is not product undo.", + "scope": "Current CLI/captured/rendered-artifact profile; absence of coverage is not N/A or a pass." + }, + { + "id": "I5", + "field": "interactionScore", + "name": "state continuity through navigation, reload, conflicts and reopening", + "observedScore": null, + "finalScore": null, + "status": "NOT_RUN", + "evidenceRefs": [ + "plan", + "stage_review" + ], + "deductionOrMissingEvidence": "Fresh-server recovery deliberately creates new state. Navigation/reload/conflict/reopen continuity or durable state was not tested.", + "scope": "Current CLI/captured/rendered-artifact profile; absence of coverage is not N/A or a pass." + }, + { + "id": "A1", + "field": "accessibilityScore", + "name": "Semantic names/structure", + "observedScore": null, + "finalScore": null, + "status": "NOT_RUN", + "evidenceRefs": [ + "plan", + "stage_review" + ], + "deductionOrMissingEvidence": "The observer captured DOM text, IDs and geometry, but no semantic-role/name/structure audit was performed.", + "scope": "Current CLI/captured/rendered-artifact profile; absence of coverage is not N/A or a pass." + }, + { + "id": "A2", + "field": "accessibilityScore", + "name": "keyboard/focus order and modal focus return", + "observedScore": null, + "finalScore": null, + "status": "NOT_RUN", + "evidenceRefs": [ + "plan", + "stage_review" + ], + "deductionOrMissingEvidence": "Pointer focus is visible in snapshots; keyboard order, keyboard-only operation, dialogs and focus return were not tested.", + "scope": "Current CLI/captured/rendered-artifact profile; absence of coverage is not N/A or a pass." + }, + { + "id": "A3", + "field": "accessibilityScore", + "name": "contrast/non-color cues", + "observedScore": null, + "finalScore": null, + "status": "NOT_RUN", + "evidenceRefs": [ + "plan", + "stage_review" + ], + "deductionOrMissingEvidence": "Qualitative visual legibility is rated atV5. No manual/automated contrast measurements and full non-color-cue audit were performed.", + "scope": "Current CLI/captured/rendered-artifact profile; absence of coverage is not N/A or a pass." + }, + { + "id": "A4", + "field": "accessibilityScore", + "name": "text resize/reflow and target size", + "observedScore": null, + "finalScore": null, + "status": "NOT_RUN", + "evidenceRefs": [ + "plan", + "stage_review" + ], + "deductionOrMissingEvidence": "The fixed desktop controls were captured, but text resizing/reflow, target-size exceptions and narrow/device accessibility were not exercised.", + "scope": "Current CLI/captured/rendered-artifact profile; absence of coverage is not N/A or a pass." + }, + { + "id": "A5", + "field": "accessibilityScore", + "name": "screen-reader announcements and reduced-motion alternatives. Manual checks accompany automated scans", + "observedScore": null, + "finalScore": null, + "status": "NOT_RUN", + "evidenceRefs": [ + "plan", + "stage_review" + ], + "deductionOrMissingEvidence": "No screen reader, live announcement inspection or reduced-motion alternative was exercised.", + "scope": "Current CLI/captured/rendered-artifact profile; absence of coverage is not N/A or a pass." + }, + { + "id": "P1", + "field": "performanceScore", + "name": "Initial usable view", + "observedScore": null, + "finalScore": null, + "status": "NOT_RUN", + "evidenceRefs": [ + "plan", + "stage_review" + ], + "deductionOrMissingEvidence": "Capture begins after scripted waits; no initial usable-view workload or latency budget was measured.", + "scope": "Current CLI/captured/rendered-artifact profile; absence of coverage is not N/A or a pass." + }, + { + "id": "P2", + "field": "performanceScore", + "name": "input/scroll responsiveness", + "observedScore": null, + "finalScore": null, + "status": "NOT_RUN", + "evidenceRefs": [ + "plan", + "stage_review" + ], + "deductionOrMissingEvidence": "The positive observer adds state-read/request-routing overhead. Input/scroll latency was not measured.", + "scope": "Current CLI/captured/rendered-artifact profile; absence of coverage is not N/A or a pass." + }, + { + "id": "P3", + "field": "performanceScore", + "name": "layout stability", + "observedScore": null, + "finalScore": null, + "status": "NOT_RUN", + "evidenceRefs": [ + "plan", + "stage_review" + ], + "deductionOrMissingEvidence": "Sparse frames and a successful decoder do not establish layout stability or CLS.", + "scope": "Current CLI/captured/rendered-artifact profile; absence of coverage is not N/A or a pass." + }, + { + "id": "P4", + "field": "performanceScore", + "name": "honest long-operation feedback", + "observedScore": 3, + "finalScore": null, + "status": "PARTIALLY_OBSERVED", + "evidenceRefs": [ + "late_stdout", + "late_command", + "media_receipt" + ], + "deductionOrMissingEvidence": "The CLI eventually reports the real timeout and rendering emits progress, but the missing-control call spends its existing60-second wait without additional user-facing progress between the initial capture line and final failure. It is bounded and honest, with a silent-wait usability gap.", + "scope": "Observed command-output feedback only, not throughput, latency improvement, web vitals or a performance benchmark." + }, + { + "id": "P5", + "field": "performanceScore", + "name": "behavior with large data and constrained device/network conditions. Record workload and measured budgets separately from reviewer impressions", + "observedScore": null, + "finalScore": null, + "status": "NOT_RUN", + "evidenceRefs": [ + "plan", + "stage_review" + ], + "deductionOrMissingEvidence": "No large-data, constrained-device/network, spike or sustained-accumulation workload was run.", + "scope": "Current CLI/captured/rendered-artifact profile; absence of coverage is not N/A or a pass." + }, + { + "id": "U1", + "field": "usageScore", + "name": "First-time task comprehension", + "observedScore": null, + "finalScore": null, + "status": "NOT_RUN", + "evidenceRefs": [ + "plan", + "stage_review" + ], + "deductionOrMissingEvidence": "No fresh intended human participant attempted the job. An informed agent executing a prepared controller is not first-human comprehension evidence.", + "scope": "Current CLI/captured/rendered-artifact profile; absence of coverage is not N/A or a pass." + }, + { + "id": "U2", + "field": "usageScore", + "name": "successful core journey", + "observedScore": 4, + "finalScore": null, + "status": "PARTIALLY_OBSERVED", + "evidenceRefs": [ + "recovery_observation", + "native_bijection", + "encoded_receipt", + "readable_gif_293" + ], + "deductionOrMissingEvidence": "The inherited local two-client capture now ends in newly encoded files whose selected final result is readable at native GIF size. Minor crop/transition limits remain; no fresh human journey or other pipeline was run.", + "scope": "Selected actual LiveSync MP4/GIF output only; unchanged WT-NodeRoom/default findings remain separately open. No full-repository or untested-state score." + }, + { + "id": "U3", + "field": "usageScore", + "name": "bounded errors/help/rework", + "observedScore": 3, + "finalScore": null, + "status": "PARTIALLY_OBSERVED", + "evidenceRefs": [ + "late_failed_outputs", + "external_restoration", + "unavailable_error", + "explicit_recovery" + ], + "deductionOrMissingEvidence": "Errors now give actionable causes and recapture guidance, but a failed selected capture still replaces its PNG directory with partial/diagnostic files. The successful55-file restoration in this proof is external backup work, so product recovery requires preserving artifacts and an explicit recapture.", + "scope": "Observed failed-output preservation/rework boundary; no new rollback capability is claimed." + }, + { + "id": "U4", + "field": "usageScore", + "name": "usable export or consumer result", + "observedScore": 4, + "finalScore": null, + "status": "PARTIALLY_OBSERVED", + "evidenceRefs": [ + "encoded_mp4", + "encoded_gif", + "encoded_receipt", + "readable_movie_432", + "readable_gif_216", + "readable_gif_293" + ], + "deductionOrMissingEvidence": "The H264 and palette GIF fully decode, and the selected user/agent results plus local-mode disclosure are readable in the actual files. Tight framing, dither texture and partial early travel remain. Continuous motion, audio and human comprehension were not assessed.", + "scope": "Selected actual LiveSync MP4/GIF output only; unchanged WT-NodeRoom/default findings remain separately open. No full-repository or untested-state score." + }, + { + "id": "U5", + "field": "usageScore", + "name": "restart/reopen/handoff without hidden knowledge. Fresh-agent operability is separate from observed fresh-human usability", + "observedScore": null, + "finalScore": null, + "status": "NOT_RUN", + "evidenceRefs": [ + "plan", + "stage_review" + ], + "deductionOrMissingEvidence": "Explicit technical recovery is observed, but no fresh developer followed a final portable handoff end-to-end after publication. That separate handoff remains pending.", + "scope": "Current CLI/captured/rendered-artifact profile; absence of coverage is not N/A or a pass." + }, + { + "id": "L1", + "field": "alignmentScore", + "name": "Fit to intended user and job", + "observedScore": 4, + "finalScore": null, + "status": "PARTIALLY_OBSERVED", + "evidenceRefs": [ + "readable_movie_587", + "readable_gif_293", + "readability_narrative" + ], + "deductionOrMissingEvidence": "For a developer showing this fixed local collaboration example, the exported clip now contains inspectable selected results in both clients. It remains a focused presentation requiring the stated crop/travel limits, not a complete board or provider demonstration.", + "scope": "Selected actual LiveSync MP4/GIF output only; unchanged WT-NodeRoom/default findings remain separately open. No full-repository or untested-state score." + }, + { + "id": "L2", + "field": "alignmentScore", + "name": "coverage of advertised capabilities", + "observedScore": null, + "finalScore": null, + "status": "NOT_RUN", + "evidenceRefs": [ + "plan", + "stage_review" + ], + "deductionOrMissingEvidence": "The current proof covers the local LiveSync capture/render only; advertised provider, narration, other-app and other composition capabilities were not exercised.", + "scope": "Current CLI/captured/rendered-artifact profile; absence of coverage is not N/A or a pass." + }, + { + "id": "L3", + "field": "alignmentScore", + "name": "truthful limits/status", + "observedScore": 4, + "finalScore": null, + "status": "PARTIALLY_OBSERVED", + "evidenceRefs": [ + "readable_gif_0", + "readable_gif_293", + "unavailable_error", + "late_error", + "readability_narrative" + ], + "deductionOrMissingEvidence": "The persistent title explicitly discloses local collaboration, fixed text and in-memory state at actual GIF size, matching the captured mode. Honest CLI failure observations remain inherited. Captions and selected stills do not substantiate timing, complete early stream visibility or live-provider claims.", + "scope": "Selected actual LiveSync MP4/GIF output only; unchanged WT-NodeRoom/default findings remain separately open. No full-repository or untested-state score." + }, + { + "id": "L4", + "field": "alignmentScore", + "name": "permissions and review authority", + "observedScore": null, + "finalScore": null, + "status": "NOT_RUN", + "evidenceRefs": [ + "plan", + "stage_review" + ], + "deductionOrMissingEvidence": "The owned controller has a bounded authorization/environment policy, but application review/approval/permissions behavior was not exercised and cannot be graded from the harness.", + "scope": "Current CLI/captured/rendered-artifact profile; absence of coverage is not N/A or a pass." + }, + { + "id": "L5", + "field": "alignmentScore", + "name": "source/trace/artifact consistency", + "observedScore": 5, + "finalScore": null, + "status": "PARTIALLY_OBSERVED", + "evidenceRefs": [ + "readability_source_freeze", + "native_bijection", + "encoded_samples", + "independent_gif_decode", + "readability_final_judge" + ], + "deductionOrMissingEvidence": "The accepted source freeze, unchanged 54 native images, new encoded-media hashes, all 117 bound samples and independent selected GIF pixel readback agree. No material identity inconsistency was found; provenance is local fixed-text capture, not a shared/deployed producer.", + "scope": "Selected actual LiveSync MP4/GIF output only; unchanged WT-NodeRoom/default findings remain separately open. No full-repository or untested-state score." + } + ], + "visualScore": null, + "designScore": null, + "responsiveScore": null, + "interactionScore": null, + "accessibilityScore": null, + "performanceScore": null, + "usageScore": null, + "alignmentScore": null, + "barScores": null, + "overallScore": null, + "overallGrade": null, + "workingTarget": { + "eachApplicableCriterionAtLeast": 4, + "eachDimensionAtLeast": 4.5, + "status": "UNCHANGED; no means computed because coverage is incomplete" + }, + "confidence": { + "sourceNativeArtifactIdentity": "High within named proof", + "pixelDeductions": "Moderate agent judgment of all 58 selected actual GIF frames and 15 selected MP4 frames; no human calibration or continuous playback review", + "responsiveAccessibilityPerformanceHuman": "Not measured beyond explicit partial facts" + }, + "developerHandoffStatus": "NAMED_SOURCE_CAPTURE_STATUS_AND_LIVESYNC_ENCODED_OUTPUT_APPROVED; final portable handoff/publication remains a separate step", + "userExperienceStatus": "AGENT_EVALUATED_ONLY_PARTIAL; LiveSync selected output readability improved; other examples and full coverage held", + "freshHumanUsabilityStatus": "NOT_RUN", + "sharedIntegrationStatus": "NOT_RUN_FOR_THIS_CANDIDATE", + "productionStatus": "NOT_RUN", + "hardGates": [ + { + "name": "Exact named selector/thrown-failure status repair", + "status": "PASS_SCOPED", + "evidenceRefs": [ + "final_judge", + "selection_cases", + "unavailable_error", + "late_error" + ] + }, + { + "name": "Actual local capture and selected LiveSync encoded output", + "status": "PASS_SCOPED_WITH_PRESENTATION_LIMITS", + "evidenceRefs": [ + "recovery_observation", + "encoded_receipt", + "readability_final_judge" + ] + }, + { + "name": "Final responsive/accessibility/human coverage", + "status": "NOT_RUN", + "evidenceRefs": [ + "plan", + "stage_review" + ] + }, + { + "name": "Shared integration and production", + "status": "NOT_RUN", + "evidenceRefs": [ + "source_freeze" + ] + }, + { + "name": "Dependency readiness", + "status": "RETAINED_ADVISORIES_NOT_REASSESSED_IN_THIS_SLICE", + "evidenceRefs": [ + "final_judge" + ] + }, + { + "name": "Other examples and full experience coverage", + "status": "HELD", + "evidenceRefs": [ + "bundled_historical_frame571", + "historical_assessment" + ] + } + ], + "requiredFixes": [ + { + "id": "FCS-OUTPUT-READABILITY", + "criterionIds": [ + "V1", + "V2", + "V4", + "V5", + "D4", + "U2", + "U4", + "L1", + "L3" + ], + "status": "CLOSED_ONLY_FOR_NAMED_LIVESYNC_SELECTED_OUTPUT", + "reason": "The nine prior LiveSync readability deductions improve to scoped observed 4s using actual encoded output; other examples remain unresolved.", + "nextLowestFix": "Retain tight-margin, off-target crop and early-travel limits in handoff. Any other-example repair requires its own before/after proof.", + "evidenceRefs": [ + "readability_final_judge", + "readable_gif_216", + "readable_gif_293" + ] + }, + { + "id": "FCS-FAILED-CAPTURE-REWORK", + "criterionIds": [ + "U3", + "I4", + "I5", + "U5" + ], + "status": "KNOWN_PRODUCT_BOUNDARY_AND_HANDOFF_HOLD", + "reason": "A failed capture keeps its old generated module but can replace selected PNGs with partial diagnostics. This proof restores55files externally.", + "nextLowestFix": "Keep direct backup/diagnostic/recapture instructions in the handoff. Treat any future atomic multi-spec or product-rollback change as a separate planned capability, not a hidden claim from this controller.", + "evidenceRefs": [ + "late_failed_outputs", + "external_restoration", + "source_integration_limits" + ] + }, + { + "id": "FCS-LONG-WAIT-FEEDBACK", + "criterionIds": [ + "P4" + ], + "status": "OBSERVED_FRICTION_SEPARATE_FROM_HONEST_EXIT_FIX", + "reason": "The real late-action case has an existing60-second silent interval after its initial capture line before the final failure.", + "nextLowestFix": "If addressed later, retain the native deadline and original error while giving truthful elapsed/current-step feedback; do not raise timeout or claim fake progress.", + "evidenceRefs": [ + "late_stdout", + "late_command" + ] + }, + { + "id": "FCS-DEFAULT-EXAMPLE-QUALITY", + "criterionIds": [ + "V1", + "V2", + "V4", + "V5", + "V7", + "D4", + "U4", + "L1" + ], + "status": "UNCHANGED_OTHER_SURFACE_HOLD", + "reason": "The default/WT-NodeRoom historical readability and caption/contrast findings are not fixed by the LiveSync opt-in.", + "nextLowestFix": "Keep the affected default example separate in handoff; do not present selected legacy parity as quality repair.", + "evidenceRefs": [ + "bundled_historical_frame571", + "bundled_historical_media", + "readability_preflight_judge" + ] + } + ], + "limitations": [ + "21 partial observations and 23 NOT_RUN rows; all 44 final criterion scores, eight dimensions, overall and bar scores remain null. No letter grade, whole-repository score or readiness pass.", + "Nine observed LiveSync scores improve to 4; these are surface-scoped partial ratings. The repo minimum-over-required-surfaces rule remains intact and cannot be calculated with unresolved other surfaces.", + "All 58 selected actual GIF frames and 15 selected MP4 frames were viewed in the accepted review. All 117 supplied sample bindings were verified; all 294 GIF frames were independently decoded, with 58 exact RGBA comparisons. This assessment does not repeat those operations.", + "Tight longest-card lower margin, partly cropped off-target card, entering/returning controls during camera travel, muted inactive copy, caption fade-in and GIF texture remain. No claim that every early stream state is fully visible.", + "WT-NodeRoom/default example observations remain open. Legacy eight-pair RGBA parity preserves behavior, not a quality upgrade.", + "Fixed 1920x1080 movie and 720x405 GIF are export dimensions, not responsive CSS viewport proof. Responsive, keyboard/device/accessibility, continuous motion/audio and fresh-human coverage remain missing.", + "No new capture or provider run. Same 54 local fixed-text/in-memory native images; prior pointer/CLI outcomes retain their original source/evidence lineage. No new interaction or performance score from the renderer.", + "The 12 retained dependency advisories, waitText suppression, partial selected-output/no product rollback and silent late-action wait remain unchanged.", + "The final judge nested media.visualReview preamble was stale. An explicit reference-only correction is included; original judge bytes and its completed final verdict remain preserved.", + "Only immutable historical/source/evidence files were checked here. No stable current working-tree claim during separately authorized documentation publication, no runtime rerun and no central grade-file change." + ], + "evidenceRefs": { + "standard": { + "path": "operator-evidence\\REPO_READINESS_STANDARD.md", + "bytes": 18664, + "sha256": "8b5bb532bf0dfeed7cc4ecd2b425d708fc49048cc05ab4cbeb315fc3534aeff2" + }, + "source_freeze": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-01\\08-freeze\\source-after.json", + "bytes": 203094, + "sha256": "81574f6cf97fbafd143464145f5d90481014752af6183a8250be9d39cc58200d" + }, + "final_judge": { + "path": "operator-evidence\\E6o_FEATURECLIPSTUDIO_CAPTURE_STATUS_FINAL_JUDGE.json", + "bytes": 9876, + "sha256": "833c51ba6f9974d60662c256f03fb87e8a16b5830006b496c9832ed0dbbf1020" + }, + "baseline_judge": { + "path": "operator-evidence\\E6o_FEATURECLIPSTUDIO_CURRENT_CONSUMER_FINAL_JUDGE.json", + "bytes": 18212, + "sha256": "fdaeb9ddafea99fa9c9ae836463996e4b7c71b9a15b9d9d7732a462f27b3200d", + "kind": "preserved historical before" + }, + "plan": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-plan-01\\plan.json", + "bytes": 1578, + "sha256": "f88d9798efdddd700fdf370e476b9326fb0b946d0cca038ae7d5e062caaaa85a" + }, + "source_application": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-apply-01\\receipt.json", + "bytes": 2334, + "sha256": "7517ad977d4b0069f2bbf58029352a63e481c491f6461e387f984bfd2f6bf9e5" + }, + "source_readme": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-repair-plan-01\\proposed\\README.md.txt", + "bytes": 65333, + "sha256": "f30668cb1d8bd56073cdff614dd2f9c854e76fd53fbcf3698e6233f730bf2a20" + }, + "source_integration_limits": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-repair-plan-01\\proposed\\docs\\codebase\\INTEGRATIONS.md.txt", + "bytes": 5769, + "sha256": "d5fe0d5133c11b83c3994f44540fb124d817657182ccb46954b6cb510add81de" + }, + "normal_check": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-01\\01-check\\normal-check.stdout.txt", + "bytes": 160, + "sha256": "bd6cb30c52eb122651a342069acd32cf94a32ed9ee44fb386fa99239533afefb" + }, + "selection_cases": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-01\\02-selection-negatives\\selection-semantics.json", + "bytes": 1106, + "sha256": "3568846278b110ab5eba127bc6366d7cc96483fc9a7d96c19a9c1511c4cceee1" + }, + "unavailable_error": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-01\\04-unavailable\\unavailable.stderr.txt", + "bytes": 676, + "sha256": "f5006960fbf50e8e4b77432ef86695c93426fd43870933dfd3f441edc98e9cec" + }, + "unavailable_command": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-01\\04-unavailable\\unavailable-command.json", + "bytes": 225, + "sha256": "d0fa01fea600b544e7a9ecf7c8222c30f86a955b62bfd4d00f62092aae628890" + }, + "late_error": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-01\\05-missing-control\\missing-control.stderr.txt", + "bytes": 636, + "sha256": "ff955ac7ccfea174c0a74ec401314c95983b67d1448d13a1e27d6a2b36485c61" + }, + "late_stdout": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-01\\05-missing-control\\missing-control.stdout.txt", + "bytes": 460, + "sha256": "ffed6bb12aa48f864e393ce286e4f14fd94970e8b473fd87f18c8f3b8307f50b" + }, + "late_command": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-01\\05-missing-control\\missing-control-command.json", + "bytes": 230, + "sha256": "3ff6d902e3ded3e4b65ddae31d8ee15462666b69a6b3814d0bfad0532355ca96" + }, + "late_failed_outputs": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-01\\05-missing-control\\source-failed-before-restoration.json", + "bytes": 6724, + "sha256": "4b207e8f612fa366110272aa0f9f7fceaa7e57bf1254eaae650c33f2f02e570a" + }, + "external_restoration": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-01\\05-missing-control\\restoration.json", + "bytes": 9623, + "sha256": "6669a72ec6626573b92b4e5e0b2197ffa96239cdf98e6de479ed16def1dcd78a" + }, + "positive_observation": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-01\\03-positive\\observer\\report.json", + "bytes": 17323, + "sha256": "a42ab544927ca6448cd87dbc669e500cc980ee02e2b9b6a50440a3e1ac1e8d75" + }, + "recovery_observation": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-01\\06-recovery\\observer\\report.json", + "bytes": 17323, + "sha256": "7fde87aa378f1a50ad6b690e6399c6f2a03ec263b00906f1153f9f837fcc2c45" + }, + "explicit_recovery": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-01\\06-recovery\\explicit-recovery.json", + "bytes": 296, + "sha256": "30a2afd55aff9716327d56f5b761d758d9d430bf071973e54eeccbd7597ea5cd" + }, + "native_bijection": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-01\\06-recovery\\native-generated-disk-bijection.json", + "bytes": 8499, + "sha256": "a97cca0bb43d1fa8710ae98f03cbe2cff84fffd48b6363e0421818660bdeb71d" + }, + "native_empty": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-01\\06-recovery\\after\\public\\wt-collab\\LiveSync\\p0_00.png", + "bytes": 236192, + "sha256": "3432eebd1336f92b13502f69fe28b176daf260fc83e76b27f17c3bcdad908e4f" + }, + "native_typed": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-01\\06-recovery\\after\\public\\wt-collab\\LiveSync\\p0_01.png", + "bytes": 241905, + "sha256": "36b6110a24d5ad3192cd1b013bac6f403aa71444b03f96858406cd4b68f4fd47" + }, + "native_working": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-01\\06-recovery\\after\\public\\wt-collab\\LiveSync\\p0_06_00.png", + "bytes": 228274, + "sha256": "63cb5423e4de0b02c181e74cd34a76ee256184d3ef1140c5d13468528ad9a7a8" + }, + "native_finished_a": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-01\\06-recovery\\after\\public\\wt-collab\\LiveSync\\p0_07.png", + "bytes": 233304, + "sha256": "40a772e63cdeab75031898e15f2c2694e549321800c70b4a86994100e766e3b2" + }, + "native_finished_b": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-01\\06-recovery\\after\\public\\wt-collab\\LiveSync\\p1_07.png", + "bytes": 232433, + "sha256": "ab6c81aed2aece48c7830fc2c34583e7547293abab36f2486bc969496b706a8e" + }, + "mp4_action": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-01\\07-media\\repaired-frame-147.png", + "bytes": 223729, + "sha256": "f4c6fcdf0cf8a73b3f555a00b5a1f37ae5126dcf06293c054e7cd37d36e30281" + }, + "mp4_final": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-01\\07-media\\repaired-frame-587.png", + "bytes": 234102, + "sha256": "c8567729d745e5de081e7e8a6483fb046a4fa712e7c5c48a005fccdb07e3ce79" + }, + "gif_empty": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-01\\07-media\\gif-frame-0.png", + "bytes": 41471, + "sha256": "0ff5273dbd5ecf0dd9ada37061ca17b381aa39ccad2837752a0729c868c46165" + }, + "gif_final": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-01\\07-media\\gif-frame-293.png", + "bytes": 46486, + "sha256": "27ce1ac241da93b211beb75ee9b777a599226e8d32a480626e29fd5eefa5ae77" + }, + "media_bindings": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-final-01\\media-bindings.json", + "bytes": 944, + "sha256": "4fad28259220d9b95d1ba565c58a3d40408a847296eeefb577ebd9d36ceca357" + }, + "media_receipt": { + "path": "operator-evidence\\E6o-featureclipstudio-capture-status-after-01\\07-media\\receipt.json", + "bytes": 8609, + "sha256": "b1b6e6eeb6cbfabe3b40e96d27023ede5cc640278ff58792447d88e4416764ab" + }, + "native_pixel_review": { + "path": "operator-evidence\\E6o-status-after-final-independent-01\\native-pixel-review.json", + "bytes": 10204, + "sha256": "d2e1cb5040ab3e745ab789b84fd64218aaaa3b500e5ed14470b4c4786dbaab5f" + }, + "media_pixel_review": { + "path": "operator-evidence\\E6o-status-after-final-independent-01\\media-pixel-review.json", + "bytes": 4288, + "sha256": "34afdb366b95101d9b774a3b879fdb42a390e8fcf4e18910587ccd7f966cb383" + }, + "stage_review": { + "path": "operator-evidence\\E6o-status-after-final-independent-01\\stage-review.json", + "bytes": 17750, + "sha256": "1f851039f0b48c8bab18eff8b2e81e89c4132c3046d018349e52057e7ed6218f" + }, + "source_closure": { + "path": "operator-evidence\\E6o-status-after-final-independent-01\\source-closing.json", + "bytes": 2854, + "sha256": "2b5db0e60a36e5f2ee7aae551d1b69841d26e980868514d47b59e51adc923c50" + }, + "process_closure": { + "path": "operator-evidence\\E6o-status-after-final-independent-01\\process-readback.json", + "bytes": 111, + "sha256": "0085fb39f35b5900e9062413736d7c1009412fe8124c4b6362befeaf6db15447" + }, + "historical_assessment": { + "path": "operator-evidence\\E6o_FEATURECLIPSTUDIO_CRITERION_ASSESSMENT.json", + "bytes": 52393, + "sha256": "1af30f642f6521de90e58fa64aea530297448627fe23770d8a23bb3420bb3ca0" + }, + "readability_final_judge": { + "path": "operator-evidence\\E6o_FEATURECLIPSTUDIO_READABILITY_FINAL_JUDGE.json", + "bytes": 4365, + "sha256": "d403ffd98ae140d87130ad2605fcceb63a0fcc9e9e2b12a2c9d7a613bc47095e" + }, + "readability_narrative": { + "path": "operator-evidence\\E6o_FEATURECLIPSTUDIO_READABILITY_FINAL_JUDGE.md", + "bytes": 6199, + "sha256": "ecdaf01085fefdc7777316e0f74ef4b97bf9af02a129764eb100e3b9f5a5352d" + }, + "readability_field_correction": { + "path": "operator-evidence\\E6o-readability-criterion-successor-01\\final-judge-field-correction.json", + "bytes": 1066, + "sha256": "fbab4b9092efce1460d572e83e2839039ae36dbb801012bfe36167d941cfb6ec" + }, + "readability_source_freeze": { + "path": "operator-evidence\\E6o-featureclipstudio-readability-render-01\\05-close\\source-after.json", + "bytes": 203094, + "sha256": "9c0556c9d68195277515242415e7afcac8a8e20e790403aec737dc44a21bbd6e" + }, + "readability_apply": { + "path": "operator-evidence\\E6o-featureclipstudio-readability-apply-01\\receipt.json", + "bytes": 1834, + "sha256": "387e962892dd8a1f7c9641ea2b26d58a2b44e02b5aefab5a8e3a92c976361fcf" + }, + "readability_preflight_judge": { + "path": "operator-evidence\\E6o_READABILITY_PREFLIGHT_FINAL_JUDGE.json", + "bytes": 2671, + "sha256": "9e9231d36753ece032268420792f4688db05baef6840071aa6260109f70df0b1" + }, + "readability_plan": { + "path": "operator-evidence\\E6o-featureclipstudio-readability-plan-03\\plan.json", + "bytes": 5457, + "sha256": "32e0dcd1e76e4972549203bd0bae47d387af2f6072ebf77ba94871e7448a58ce" + }, + "encoded_receipt": { + "path": "operator-evidence\\E6o-featureclipstudio-readability-render-01\\04-full-media\\receipt.json", + "bytes": 96049, + "sha256": "9b0493230f689b4e1eba82185465aae3982c57e35554fc3a8c0d27d13843fbcf" + }, + "encoded_manifest": { + "path": "operator-evidence\\E6o-featureclipstudio-readability-render-01\\04-full-media\\manifest.json", + "bytes": 78157, + "sha256": "25067467684022f9cdcef775cb47c459d8795b0685bf58ade898a70a59694999" + }, + "readability_closure": { + "path": "operator-evidence\\E6o-featureclipstudio-readability-render-01\\05-close\\receipt.json", + "bytes": 164, + "sha256": "38b5dd782102d499bb77624ec6bae6aadcac5591ab18071728e7160d733fa72c" + }, + "encoded_mp4": { + "path": "operator-evidence\\E6o-featureclipstudio-readability-render-01\\04-full-media\\readable-livesync.mp4", + "bytes": 2374634, + "sha256": "9fdf8250cfadd6957ae23e68de104b2827d9b64de3857bf3ee1808860698700e" + }, + "encoded_gif": { + "path": "operator-evidence\\E6o-featureclipstudio-readability-render-01\\04-full-media\\readable-livesync.gif", + "bytes": 2772039, + "sha256": "406425fade2aaae2b06722a4d279214f43b6b1698f22ee6b9c8b175af9967648" + }, + "encoded_samples": { + "path": "operator-evidence\\E6o-readability-media-independent-01\\all-sample-bindings.json", + "bytes": 42507, + "sha256": "ddd580c178d9f84e2c795b18be5f28902428884fcd46bbabf5631dc5e4e7c4ae" + }, + "independent_gif_decode": { + "path": "operator-evidence\\E6o-readability-media-independent-01\\independent-GIF-decode.json", + "bytes": 3365, + "sha256": "8138f62b1543248635aff702b4a1bf058a7166ca5a10f87eaaa11af6a686373e" + }, + "bundled_historical_media": { + "path": "operator-evidence\\E6o-featureclipstudio-current-consumer-01\\06-bundled-render\\bundled-media.json", + "bytes": 245, + "sha256": "24ceefeda1ca379473a79cde40de1741472e2530868c7e2eafcb78284fc862ff" + }, + "bundled_historical_frame571": { + "path": "operator-evidence\\E6o-featureclipstudio-current-consumer-01\\06-bundled-render\\bundled-frame-571.png", + "bytes": 533368, + "sha256": "da3a2553d5d0db53e9de23ca2435d1da2eddb25907cc98ad15aaeb6838fea63d" + }, + "readable_movie_0": { + "path": "operator-evidence\\E6o-featureclipstudio-readability-render-01\\04-full-media\\movie-0.png", + "bytes": 449030, + "sha256": "181cd4d925a5f1bb1645d75357c04d58e1b816ade5624b8dd614611f81fb1da4" + }, + "readable_movie_96": { + "path": "operator-evidence\\E6o-featureclipstudio-readability-render-01\\04-full-media\\movie-96.png", + "bytes": 518760, + "sha256": "4a30488b5e8064adf7e5be51861587637b9ed9cc8c7de8b35f7ed29da24351b0" + }, + "readable_movie_156": { + "path": "operator-evidence\\E6o-featureclipstudio-readability-render-01\\04-full-media\\movie-156.png", + "bytes": 516450, + "sha256": "b9f3ff3791015b83c710feca1bf1644ec98320dd36887cf941b5be2300b08c72" + }, + "readable_movie_210": { + "path": "operator-evidence\\E6o-featureclipstudio-readability-render-01\\04-full-media\\movie-210.png", + "bytes": 304978, + "sha256": "283f6a9a3b4310ed32e7b0eeb420510d6437029666b4338a80ef916bbdec7db6" + }, + "readable_movie_294": { + "path": "operator-evidence\\E6o-featureclipstudio-readability-render-01\\04-full-media\\movie-294.png", + "bytes": 289199, + "sha256": "0c0d46c1c07a4d98fb7eb5c7026b00f67d44572be7a85aa88a2ec5b7360d6b40" + }, + "readable_movie_372": { + "path": "operator-evidence\\E6o-featureclipstudio-readability-render-01\\04-full-media\\movie-372.png", + "bytes": 506643, + "sha256": "2ad49cbc3cb519cffff293ef5a104b773263793c9d4f3356f1ce23e394003d89" + }, + "readable_movie_408": { + "path": "operator-evidence\\E6o-featureclipstudio-readability-render-01\\04-full-media\\movie-408.png", + "bytes": 493764, + "sha256": "4f135552f905d3a29ea360945dabcb37b395871dcae936275a4adeb9c492cef8" + }, + "readable_movie_420": { + "path": "operator-evidence\\E6o-featureclipstudio-readability-render-01\\04-full-media\\movie-420.png", + "bytes": 425302, + "sha256": "c02b3301b5ab2e1c9cf54ca899cc4841ef9fd5d0f7db17c39145bccbf2a1cf6d" + }, + "readable_movie_432": { + "path": "operator-evidence\\E6o-featureclipstudio-readability-render-01\\04-full-media\\movie-432.png", + "bytes": 553961, + "sha256": "bfb055ea03da0b5aa564d59122bac4ad3198db09a1b964e15ebc9fc14ef06b37" + }, + "readable_movie_491": { + "path": "operator-evidence\\E6o-featureclipstudio-readability-render-01\\04-full-media\\movie-491.png", + "bytes": 582849, + "sha256": "6141beb9895647c5c48c03e1a1e10a837d034564870ee83cf46d4e39827b692e" + }, + "readable_movie_518": { + "path": "operator-evidence\\E6o-featureclipstudio-readability-render-01\\04-full-media\\movie-518.png", + "bytes": 578710, + "sha256": "d18a89ec9f72f7fa05810036e4ce48813d380853066180d096f52d014508ee00" + }, + "readable_movie_587": { + "path": "operator-evidence\\E6o-featureclipstudio-readability-render-01\\04-full-media\\movie-587.png", + "bytes": 578774, + "sha256": "105372737a0521a8deab9fca32cb9ba25e40e3845d8e7b20851521c99cd4aae7" + }, + "readable_gif_0": { + "path": "operator-evidence\\E6o-featureclipstudio-readability-render-01\\04-full-media\\gif-0.png", + "bytes": 69971, + "sha256": "7d1a6004259387788d815b049f17e6ba70764389938657f22b8b27b458151ab2" + }, + "readable_gif_48": { + "path": "operator-evidence\\E6o-featureclipstudio-readability-render-01\\04-full-media\\gif-48.png", + "bytes": 77084, + "sha256": "0fe14996174cb39f6b6a9a14e44b6a596dc97face9acb28a039e5f3ecadc5457" + }, + "readable_gif_78": { + "path": "operator-evidence\\E6o-featureclipstudio-readability-render-01\\04-full-media\\gif-78.png", + "bytes": 76323, + "sha256": "ed299db2f33c8261df32ab60842260623b323543a02d9e8364839250a8c332bd" + }, + "readable_gif_105": { + "path": "operator-evidence\\E6o-featureclipstudio-readability-render-01\\04-full-media\\gif-105.png", + "bytes": 51717, + "sha256": "3811256de7e9126e8435952858c78d1bdf4b66db709224f348146acdfe6569ee" + }, + "readable_gif_147": { + "path": "operator-evidence\\E6o-featureclipstudio-readability-render-01\\04-full-media\\gif-147.png", + "bytes": 50905, + "sha256": "83812d5e087eb8cf6ef58c34b01b52b4dd4a222659aa921a8d5096c768e05e22" + }, + "readable_gif_176": { + "path": "operator-evidence\\E6o-featureclipstudio-readability-render-01\\04-full-media\\gif-176.png", + "bytes": 51551, + "sha256": "31aa73f0806cdc4167ce85a6fa80c1d46af4aba501b3e3574bf073b292c5c001" + }, + "readable_gif_186": { + "path": "operator-evidence\\E6o-featureclipstudio-readability-render-01\\04-full-media\\gif-186.png", + "bytes": 76240, + "sha256": "603372e3becb11b7b9479df7b892023a624c57c9eee55bf2b81228a57ba97043" + }, + "readable_gif_201": { + "path": "operator-evidence\\E6o-featureclipstudio-readability-render-01\\04-full-media\\gif-201.png", + "bytes": 72022, + "sha256": "cd0c71876f41ca5664739c8bfb557d36f7d50f7bb8eeceb73f29e7c4256fa861" + }, + "readable_gif_204": { + "path": "operator-evidence\\E6o-featureclipstudio-readability-render-01\\04-full-media\\gif-204.png", + "bytes": 75230, + "sha256": "ec3d85c21127980139b9095194e29c4f0dacca356360687493f7320d9a941714" + }, + "readable_gif_213": { + "path": "operator-evidence\\E6o-featureclipstudio-readability-render-01\\04-full-media\\gif-213.png", + "bytes": 66997, + "sha256": "5135e50d56755a468f670ffa59e3d319663df70613a3ba703b4b3771c57672b0" + }, + "readable_gif_216": { + "path": "operator-evidence\\E6o-featureclipstudio-readability-render-01\\04-full-media\\gif-216.png", + "bytes": 71097, + "sha256": "310cd10b6ceaad026d319473828f5504b4eee23b2e4b35305c6dc428b5759a21" + }, + "readable_gif_245": { + "path": "operator-evidence\\E6o-featureclipstudio-readability-render-01\\04-full-media\\gif-245.png", + "bytes": 73248, + "sha256": "58b5ef44eab8546ebe05e46e7adacf3433e39d24f5bbdb0b7887c4605ebd7966" + }, + "readable_gif_259": { + "path": "operator-evidence\\E6o-featureclipstudio-readability-render-01\\04-full-media\\gif-259.png", + "bytes": 72989, + "sha256": "f9277d00ea2a411ff80fc7c69de3387c84c9edfb1016a82bae6e6bf924101a5d" + }, + "readable_gif_293": { + "path": "operator-evidence\\E6o-featureclipstudio-readability-render-01\\04-full-media\\gif-293.png", + "bytes": 73016, + "sha256": "1203538167ff51942b507d05391142772b0034f9a3423e6971865772d8d03fb3" + } + }, + "completionTraceability": "Re your request for explicit visual/UI/responsive/interaction grading: this separate 44-criterion successor records nine evidence-supported LiveSync readability improvements, preserves other-example findings and historical assessment, and leaves all full scores null.", + "historicalAssessment": { + "path": "operator-evidence\\E6o_FEATURECLIPSTUDIO_CRITERION_ASSESSMENT.json", + "bytes": 52393, + "sha256": "1af30f642f6521de90e58fa64aea530297448627fe23770d8a23bb3420bb3ca0" + }, + "scopeCarryForward": "The same 54 native captures and accepted failure-policy lineage are retained. No native interaction was repeated in this presentation-only slice. Unchanged rows retain their original evidence and scope, not a claim of new testing. This assessment binds the immutable 904-row source freeze; later documentation/publication working-tree edits are outside it.", + "surfaceObservations": [ + { + "surface": "LiveSync selected encoded presentation", + "status": "SCOPED_READABILITY_IMPROVED", + "evidenceRefs": [ + "readability_final_judge", + "encoded_mp4", + "encoded_gif" + ], + "finalScore": null + }, + { + "surface": "WT-NodeRoom / bundled default example", + "status": "HISTORICAL_FINDINGS_RETAINED_UNRESOLVED", + "observations": [ + "Bundled historical input is distinct from fresh LiveSync capture.", + "Prior caption/overlap, small inner content and contrast observations remain. The LiveSync opt-in does not repair this surface.", + "Eight legacy RGBA parity pairs establish unchanged selected output, not improved quality or a whole-default-example pass." + ], + "evidenceRefs": [ + "bundled_historical_media", + "bundled_historical_frame571", + "baseline_judge", + "readability_preflight_judge" + ], + "finalScore": null + } + ] +} diff --git a/promotion/evidence/local-livesync-handoff-20260907/judgments/E6o_FEATURECLIPSTUDIO_READABILITY_CRITERION_ASSESSMENT.md.txt b/promotion/evidence/local-livesync-handoff-20260907/judgments/E6o_FEATURECLIPSTUDIO_READABILITY_CRITERION_ASSESSMENT.md.txt new file mode 100644 index 0000000..3348007 --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/judgments/E6o_FEATURECLIPSTUDIO_READABILITY_CRITERION_ASSESSMENT.md.txt @@ -0,0 +1,29 @@ +# FeatureClipStudio: scoped readability grading successor + +**Builder. Re your request:** visual, UI, responsiveness and interaction grading now has a separate 44-criterion successor for the repaired LiveSync export. A developer can show the selected result in both clients, and viewers can read that result and its local fixed-text disclosure in the actual GIF. This is a partial observation, not a whole-product grade. + +Nine observed scores improve to **4**. Five additional rows refresh their output evidence without changing scores; the other 30 rows remain exact. The historical assessment is preserved. All **21 partial / 23 NOT_RUN** statuses, all 44 final criterion scores, eight dimensions, overall and bar scores remain unchanged/null as applicable. + +| Criterion | Before | After | +| --- | ---: | ---: | +| V1 typography | 2 | 4 | +| V2 spacing/grid | 3 | 4 | +| V4 hierarchy | 3 | 4 | +| V5 rendered legibility/contrast | 2 | 4 | +| D4 useful information density | 3 | 4 | +| U2 successful core journey | 3 | 4 | +| U4 usable export or consumer result | 2 | 4 | +| L1 Fit to intended user and job | 3 | 4 | +| L3 truthful limits/status | 3 | 4 | + +The new evidence is the actual H264 1920x1080 movie and 720x405 palette GIF, with 58 selected GIF frames and 15 MP4 frames directly viewed in the accepted final review. The same 54 native captures are retained. This grading pass only read immutable evidence; it did not rerun capture, rendering, decoding or application tests. + +The longest card keeps its lower border with tight clearance. A neighboring off-target card remains partly cropped; early camera travel does not show every complete stream state. Muted inactive text, caption fade-in and GIF texture remain minor limitations. Continuous playback, audio, fresh-human comprehension, responsive browser/device/accessibility coverage and provider behavior remain untested. + +**WT-NodeRoom and the bundled default example remain unresolved.** Their earlier small-content, caption/overlap and contrast observations are not repaired by the LiveSync opt-in. Eight legacy pixel-parity selections prove preservation only. The repository minimum-over-required-surfaces rule remains unchanged, so these scoped improvements cannot produce a full grade. + +The retained CLI rows still record partial selected-output recovery (U3=3) and the silent late-action wait (P4=3). The 12 dependency advisories, waitText suppression, provider/production and final handoff/integration limits stay explicit. + +A stale nested `media.visualReview` preamble in the already accepted final judge is documented in an append-only field correction. Its explicit completed view lists, narrative and final approval are unchanged; no evidence or verdict is replaced. + +[Machine-readable 44 rows](E6o_FEATURECLIPSTUDIO_READABILITY_CRITERION_ASSESSMENT.json) · [Exact row delta](E6o-readability-criterion-successor-01/criterion-delta.json) · [Historical assessment](E6o_FEATURECLIPSTUDIO_CRITERION_ASSESSMENT.json) · [Final source/output judgment](E6o_FEATURECLIPSTUDIO_READABILITY_FINAL_JUDGE.md) · [Field correction](E6o-readability-criterion-successor-01/final-judge-field-correction.json) diff --git a/promotion/evidence/local-livesync-handoff-20260907/judgments/E6o_FEATURECLIPSTUDIO_READABILITY_FINAL_JUDGE.json b/promotion/evidence/local-livesync-handoff-20260907/judgments/E6o_FEATURECLIPSTUDIO_READABILITY_FINAL_JUDGE.json new file mode 100644 index 0000000..f8310ab --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/judgments/E6o_FEATURECLIPSTUDIO_READABILITY_FINAL_JUDGE.json @@ -0,0 +1,160 @@ +{ + "status": "APPROVED_SCOPED_LIVESYNC_READABILITY_REPAIR_AND_ENCODED_OUTPUT", + "guard": "CLOSED_UNCHANGED", + "checks": 4497, + "sourceBinding": { + "path": "operator-evidence\\E6o-featureclipstudio-readability-render-01\\05-close\\source-after.json", + "bytes": 203094, + "sha256": "9c0556c9d68195277515242415e7afcac8a8e20e790403aec737dc44a21bbd6e" + }, + "sourceRows": 904, + "hashedSourceRows": 903, + "opaqueExampleNameSizeOnly": 1, + "primaryRows": 596, + "frozenInputs": 797, + "nativePNGsUnchanged": 54, + "stagePayloadCounts": { + "operator-evidence\\E6o-featureclipstudio-readability-render-01\\04-full-media": 515, + "operator-evidence\\E6o-featureclipstudio-readability-render-01\\05-close": 6 + }, + "actualStage04Commands": 128, + "media": { + "mp4": { + "path": "operator-evidence\\E6o-featureclipstudio-readability-render-01\\04-full-media\\readable-livesync.mp4", + "bytes": 2374634, + "sha256": "9fdf8250cfadd6957ae23e68de104b2827d9b64de3857bf3ee1808860698700e" + }, + "gif": { + "path": "operator-evidence\\E6o-featureclipstudio-readability-render-01\\04-full-media\\readable-livesync.gif", + "bytes": 2772039, + "sha256": "406425fade2aaae2b06722a4d279214f43b6b1698f22ee6b9c8b175af9967648", + "frames": 294, + "width": 720, + "height": 405 + }, + "visualReview": "PENDING_ACTUAL_VIEW", + "sampleContract": "operator-evidence\\E6o-featureclipstudio-readability-plan-03\\frame-contract.json" + }, + "actualMovie": { + "codec": "H264", + "width": 1920, + "height": 1080, + "frames": 588, + "fps": 30, + "videoSeconds": 19.6, + "containerSeconds": 19.648, + "audio": "AAC stereo 48000Hz; not listened to" + }, + "actualGIF": { + "width": 720, + "height": 405, + "frames": 294, + "fps": 15, + "durationSeconds": 19.59, + "paletteColors": 128 + }, + "directlyViewedGIF": [ + 0, + 2, + 3, + 8, + 13, + 34, + 35, + 38, + 43, + 48, + 64, + 65, + 68, + 73, + 78, + 91, + 92, + 95, + 98, + 100, + 101, + 104, + 105, + 107, + 110, + 113, + 116, + 119, + 133, + 134, + 137, + 142, + 147, + 172, + 173, + 176, + 181, + 186, + 200, + 201, + 204, + 207, + 209, + 210, + 213, + 214, + 216, + 218, + 221, + 224, + 227, + 230, + 245, + 246, + 249, + 254, + 259, + 293 + ], + "directlyViewedMovie": [ + 0, + 96, + 156, + 210, + 226, + 232, + 268, + 294, + 372, + 408, + 420, + 432, + 491, + 518, + 587 + ], + "allSamplesBound": 117, + "independentGIFFramesDecoded": 294, + "applicationOrRenderRunByJudge": false, + "fullMotionOrAudioAcceptance": false, + "fullGrades": null, + "at": "2026-09-07T11:15:11.055021+00:00", + "narrative": { + "path": "operator-evidence\\E6o_FEATURECLIPSTUDIO_READABILITY_FINAL_JUDGE.md", + "bytes": 6199, + "sha256": "ecdaf01085fefdc7777316e0f74ef4b97bf9af02a129764eb100e3b9f5a5352d" + }, + "reviewerScript": { + "path": "operator-evidence\\E6o-review-readability-media.py", + "bytes": 8163, + "sha256": "7d5c4ee5a53e8fc5859162cb8d25b09ce225475db805d806937c0a55948f92a1" + }, + "priorPreflight": { + "path": "operator-evidence\\E6o_READABILITY_PREFLIGHT_FINAL_JUDGE.json", + "bytes": 2671, + "sha256": "9e9231d36753ece032268420792f4688db05baef6840071aa6260109f70df0b1" + }, + "limits": [ + "tight lower margin; off-target card cropped", + "early camera travel is not complete stream visibility", + "no continuous playback/audio/human/responsive certification", + "WT-NodeRoom/default output and12 advisories/waitText/provider/full grades remain held" + ] +} diff --git a/promotion/evidence/local-livesync-handoff-20260907/judgments/E6o_FEATURECLIPSTUDIO_READABILITY_FINAL_JUDGE.md.txt b/promotion/evidence/local-livesync-handoff-20260907/judgments/E6o_FEATURECLIPSTUDIO_READABILITY_FINAL_JUDGE.md.txt new file mode 100644 index 0000000..0262071 --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/judgments/E6o_FEATURECLIPSTUDIO_READABILITY_FINAL_JUDGE.md.txt @@ -0,0 +1,26 @@ +# LiveSync encoded readability: scoped approval + +**Builder. Re your request:** independently judge the visual/readability repair from the actual encoded MP4 and GIF. A developer demonstrating the fixed local two-client scenario needs viewers to read the acted controls, see both clients' selected result, and understand that this is a local stand-in. The five-owner repair and its named encoded output are **APPROVED_SCOPED_LIVESYNC_READABILITY_REPAIR_AND_ENCODED_OUTPUT**. The source/Git/process guard is **CLOSED_UNCHANGED**. This completes the named readability slice; no new source or encoding correction is required by this review. + +The source inventory is `9c0556c9d68195277515242415e7afcac8a8e20e790403aec737dc44a21bbd6e`. It retains exactly 904 rows, including 903 files rehashed and one declared environment example checked only by name/size. All 596 original files, 797 frozen inputs, 54 native PNG captures and candidate/primary Git/index boundaries remain exact. The previously accepted normal check parsed 39/39 JavaScript files and resolved 36/36 tour anchors and 34/34 prose citations. Eight legacy selections were independently equal as decoded RGBA in the preflight judgment; no legacy rerender was needed here. + +The actual [MP4](E6o-featureclipstudio-readability-render-01/04-full-media/readable-livesync.mp4) is 2,374,634 bytes, SHA-256 `9fdf8250cfadd6957ae23e68de104b2827d9b64de3857bf3ee1808860698700e`: H.264, 1920×1080, 588 frames at 30 fps, 19.600 seconds of video. Its AAC stereo stream is present; the container is 19.648 seconds. Audio was not listened to. The actual [GIF](E6o-featureclipstudio-readability-render-01/04-full-media/readable-livesync.gif) is 2,772,039 bytes, SHA-256 `406425fade2aaae2b06722a4d279214f43b6b1698f22ee6b9c8b175af9967648`: 720×405, 294 frames at nominal 15 fps, 19.590 seconds, using the unchanged documented 128-color palette command. + +All 58 selected GIF images were directly viewed, together with 15 MP4 images covering all eight settled step states, early stream travel, the longest result and the final result. All 59 MP4 and 58 GIF sample paths, extraction commands and bytes were verified against the exact sample contract. The original full-decode commands both exited zero with empty error logs. This reviewer separately decoded all 294 GIF frames in memory and compared all 58 selected frames byte-for-byte as RGBA with the supplied ffmpeg PNGs; all matched. No application capture, render, install, provider request or ffmpeg command was repeated by this reviewer. + +The stacked layout makes the selected content materially easier to read than the retained narrow-board output. Both client labels are distinguishable. The title visibly states local collaboration, fixed text and in-memory state. The acted input/Add/Run agent control and the selected user/agent cards are readable at the actual GIF dimensions. The complete final agent result and author are visible in both clients. Settled captions remain separate from the panes. GIF dithering adds visible texture, but does not obscure the selected text. + +Limits observed in the actual output remain explicit: + +- The longest streaming card at MP4 432 / GIF 216 retains its lower border, last line, author and badge in both clients. Bottom clearance is tight; generous shadow clearance is not established. +- The preceding Ana card is partly cropped above the selected agent result. This is a focused presentation, not a full-board view. +- Early camera travel does not show every complete stream state: MP4 402/408 still presents the controls; at 420 the entering agent card is partly below the pane. By GIF 213 the selected card is fully framed. Returning toward Run agent also starts with the control partly above the crop before it settles. None of these frames is represented as full early-state visibility. +- Caption fade-in and inactive placeholder/status copy remain muted. Still selection and successful decode do not certify continuous motion quality, human comprehension, audio quality or every unsampled frame. + +An initial reviewer reading concern about missing text in a few small displayed images was investigated and withdrawn. Independent decoding matched the saved frames, and measured static glyph regions retained essentially the same bright-pixel masks; for example, GIF 116's title and Client B region exactly match GIF 110, while its user line differs by only one threshold-edge pixel. The raw concern and numeric correction remain in [reviewer-reading-correction.json](E6o-readability-media-independent-01/reviewer-reading-correction.json). This is a reviewer false alarm, not a hidden product failure or a reason to rerender. + +The stage04 receipt binds one full render, one documented GIF conversion and 128 total bounded commands. All 521 stage04/05 payloads match their manifests. The 240 recorded owned process identities were rechecked closed, no 8930 listener was present, and the closing source/Git guard passed. These are sampled ownership observations rather than a claim that the whole host was inactive. The independent receipt records 4,497 finite identity, source, artifact and decode checks. + +This approval concerns LiveSync's selected exported presentation only. WT-NodeRoom and the default example retain their prior findings. The 12 recorded dependency advisories, inherited waitText behavior, provider/model and production claims, responsive app behavior, human calibration and full grades remain held. A fixed 720/1920 output is not responsive browser proof. The historical 44-row assessment must stay exact; a separate successor may update only criteria supported by this new output. Publication and integration are separate steps owned by the root. + +Reproduction and lineage remain bound by [plan03](E6o-featureclipstudio-readability-plan-03/PLAN.md), [preflight judgment](E6o_READABILITY_PREFLIGHT_FINAL_JUDGE.json), [stage04](E6o-featureclipstudio-readability-render-01/04-full-media/receipt.json), [stage05](E6o-featureclipstudio-readability-render-01/05-close/receipt.json), and [independent raw readback](E6o-readability-media-independent-01/summary.json). Historical failures and the plan03 custody-link correction remain preserved. diff --git a/promotion/evidence/local-livesync-handoff-20260907/judgments/final-judge-field-correction.json b/promotion/evidence/local-livesync-handoff-20260907/judgments/final-judge-field-correction.json new file mode 100644 index 0000000..d6b7dd6 --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/judgments/final-judge-field-correction.json @@ -0,0 +1,17 @@ +{ + "at": "2026-09-07T11:25:11.401534+00:00", + "original": { + "path": "operator-evidence\\E6o_FEATURECLIPSTUDIO_READABILITY_FINAL_JUDGE.json", + "bytes": 4365, + "sha256": "d403ffd98ae140d87130ad2605fcceb63a0fcc9e9e2b12a2c9d7a613bc47095e" + }, + "field": "media.visualReview", + "originalValue": "PENDING_ACTUAL_VIEW", + "correctedInterpretation": "ACTUAL_SELECTED_PIXELS_REVIEWED_AND_SCOPED_APPROVAL_COMPLETE", + "reason": "The nested preamble value was not refreshed. The final status, explicit 58 GIF/15 MP4 view lists and final narrative already recorded completed visual review. This reference-only correction changes no raw evidence, verdict, score, scope or source.", + "narrative": { + "path": "operator-evidence\\E6o_FEATURECLIPSTUDIO_READABILITY_FINAL_JUDGE.md", + "bytes": 6199, + "sha256": "ecdaf01085fefdc7777316e0f74ef4b97bf9af02a129764eb100e3b9f5a5352d" + } +} diff --git a/promotion/evidence/local-livesync-handoff-20260907/judgments/reviewer-reading-correction.json b/promotion/evidence/local-livesync-handoff-20260907/judgments/reviewer-reading-correction.json new file mode 100644 index 0000000..62ba674 --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/judgments/reviewer-reading-correction.json @@ -0,0 +1,834 @@ +{ + "initialObservation": "Small displayed GIF frames seemed to omit portions of static glyphs. This was raised as a possible issue, not a confirmed defect.", + "resolution": "Not supported by actual pixel readback: independent Pillow and ffmpeg agree; cited static masks retain essentially all glyph pixels. Reviewer reading false alarm, not a product, encoding or extraction defect. No fix or rerender requested.", + "observations": [ + { + "kind": "gif", + "baseline": 110, + "frame": 105, + "regions": { + "userText": { + "rect": [ + 45, + 115, + 175, + 131 + ], + "threshold": 150, + "baseBright": 272, + "actualBright": 272, + "lostBright": 0, + "meanAbsoluteChannelDifference": 0.13637820512820512 + }, + "clientB": { + "rect": [ + 337, + 201, + 402, + 216 + ], + "threshold": 150, + "baseBright": 105, + "actualBright": 105, + "lostBright": 0, + "meanAbsoluteChannelDifference": 0.0 + }, + "title": { + "rect": [ + 35, + 10, + 408, + 28 + ], + "threshold": 150, + "baseBright": 1515, + "actualBright": 1515, + "lostBright": 0, + "meanAbsoluteChannelDifference": 0.01067421308708172 + } + } + }, + { + "kind": "gif", + "baseline": 110, + "frame": 107, + "regions": { + "userText": { + "rect": [ + 45, + 115, + 175, + 131 + ], + "threshold": 150, + "baseBright": 272, + "actualBright": 272, + "lostBright": 0, + "meanAbsoluteChannelDifference": 0.09342948717948718 + }, + "clientB": { + "rect": [ + 337, + 201, + 402, + 216 + ], + "threshold": 150, + "baseBright": 105, + "actualBright": 105, + "lostBright": 0, + "meanAbsoluteChannelDifference": 0.0 + }, + "title": { + "rect": [ + 35, + 10, + 408, + 28 + ], + "threshold": 150, + "baseBright": 1515, + "actualBright": 1515, + "lostBright": 0, + "meanAbsoluteChannelDifference": 0.00675206037136332 + } + } + }, + { + "kind": "gif", + "baseline": 110, + "frame": 110, + "regions": { + "userText": { + "rect": [ + 45, + 115, + 175, + 131 + ], + "threshold": 150, + "baseBright": 272, + "actualBright": 272, + "lostBright": 0, + "meanAbsoluteChannelDifference": 0.0 + }, + "clientB": { + "rect": [ + 337, + 201, + 402, + 216 + ], + "threshold": 150, + "baseBright": 105, + "actualBright": 105, + "lostBright": 0, + "meanAbsoluteChannelDifference": 0.0 + }, + "title": { + "rect": [ + 35, + 10, + 408, + 28 + ], + "threshold": 150, + "baseBright": 1515, + "actualBright": 1515, + "lostBright": 0, + "meanAbsoluteChannelDifference": 0.0 + } + } + }, + { + "kind": "gif", + "baseline": 110, + "frame": 113, + "regions": { + "userText": { + "rect": [ + 45, + 115, + 175, + 131 + ], + "threshold": 150, + "baseBright": 272, + "actualBright": 271, + "lostBright": 1, + "meanAbsoluteChannelDifference": 0.05384615384615385 + }, + "clientB": { + "rect": [ + 337, + 201, + 402, + 216 + ], + "threshold": 150, + "baseBright": 105, + "actualBright": 105, + "lostBright": 0, + "meanAbsoluteChannelDifference": 0.0 + }, + "title": { + "rect": [ + 35, + 10, + 408, + 28 + ], + "threshold": 150, + "baseBright": 1515, + "actualBright": 1515, + "lostBright": 0, + "meanAbsoluteChannelDifference": 0.01067421308708172 + } + } + }, + { + "kind": "gif", + "baseline": 110, + "frame": 116, + "regions": { + "userText": { + "rect": [ + 45, + 115, + 175, + 131 + ], + "threshold": 150, + "baseBright": 272, + "actualBright": 271, + "lostBright": 1, + "meanAbsoluteChannelDifference": 0.029487179487179487 + }, + "clientB": { + "rect": [ + 337, + 201, + 402, + 216 + ], + "threshold": 150, + "baseBright": 105, + "actualBright": 105, + "lostBright": 0, + "meanAbsoluteChannelDifference": 0.0 + }, + "title": { + "rect": [ + 35, + 10, + 408, + 28 + ], + "threshold": 150, + "baseBright": 1515, + "actualBright": 1515, + "lostBright": 0, + "meanAbsoluteChannelDifference": 0.0 + } + } + }, + { + "kind": "gif", + "baseline": 110, + "frame": 119, + "regions": { + "userText": { + "rect": [ + 45, + 115, + 175, + 131 + ], + "threshold": 150, + "baseBright": 272, + "actualBright": 271, + "lostBright": 1, + "meanAbsoluteChannelDifference": 0.04903846153846154 + }, + "clientB": { + "rect": [ + 337, + 201, + 402, + 216 + ], + "threshold": 150, + "baseBright": 105, + "actualBright": 105, + "lostBright": 0, + "meanAbsoluteChannelDifference": 0.0 + }, + "title": { + "rect": [ + 35, + 10, + 408, + 28 + ], + "threshold": 150, + "baseBright": 1515, + "actualBright": 1515, + "lostBright": 0, + "meanAbsoluteChannelDifference": 0.00675206037136332 + } + } + }, + { + "kind": "gif", + "baseline": 110, + "frame": 133, + "regions": { + "userText": { + "rect": [ + 45, + 115, + 175, + 131 + ], + "threshold": 150, + "baseBright": 272, + "actualBright": 271, + "lostBright": 4, + "meanAbsoluteChannelDifference": 0.907051282051282 + }, + "clientB": { + "rect": [ + 337, + 201, + 402, + 216 + ], + "threshold": 150, + "baseBright": 105, + "actualBright": 104, + "lostBright": 1, + "meanAbsoluteChannelDifference": 0.5606837606837607 + }, + "title": { + "rect": [ + 35, + 10, + 408, + 28 + ], + "threshold": 150, + "baseBright": 1515, + "actualBright": 1513, + "lostBright": 3, + "meanAbsoluteChannelDifference": 0.586634892264919 + } + } + }, + { + "kind": "gif", + "baseline": 110, + "frame": 134, + "regions": { + "userText": { + "rect": [ + 45, + 115, + 175, + 131 + ], + "threshold": 150, + "baseBright": 272, + "actualBright": 271, + "lostBright": 4, + "meanAbsoluteChannelDifference": 0.9003205128205128 + }, + "clientB": { + "rect": [ + 337, + 201, + 402, + 216 + ], + "threshold": 150, + "baseBright": 105, + "actualBright": 104, + "lostBright": 1, + "meanAbsoluteChannelDifference": 0.5606837606837607 + }, + "title": { + "rect": [ + 35, + 10, + 408, + 28 + ], + "threshold": 150, + "baseBright": 1515, + "actualBright": 1513, + "lostBright": 3, + "meanAbsoluteChannelDifference": 0.586634892264919 + } + } + }, + { + "kind": "movie", + "baseline": 226, + "frame": 210, + "regions": { + "userText": { + "rect": [ + 120, + 307, + 455, + 347 + ], + "threshold": 160, + "baseBright": 1582, + "actualBright": 1580, + "lostBright": 3, + "meanAbsoluteChannelDifference": 0.088681592039801 + }, + "clientB": { + "rect": [ + 900, + 535, + 1070, + 570 + ], + "threshold": 160, + "baseBright": 367, + "actualBright": 367, + "lostBright": 0, + "meanAbsoluteChannelDifference": 0.0 + }, + "title": { + "rect": [ + 103, + 34, + 1085, + 72 + ], + "threshold": 160, + "baseBright": 11316, + "actualBright": 11316, + "lostBright": 0, + "meanAbsoluteChannelDifference": 0.0 + } + } + }, + { + "kind": "movie", + "baseline": 226, + "frame": 220, + "regions": { + "userText": { + "rect": [ + 120, + 307, + 455, + 347 + ], + "threshold": 160, + "baseBright": 1582, + "actualBright": 1580, + "lostBright": 2, + "meanAbsoluteChannelDifference": 0.05305970149253731 + }, + "clientB": { + "rect": [ + 900, + 535, + 1070, + 570 + ], + "threshold": 160, + "baseBright": 367, + "actualBright": 367, + "lostBright": 0, + "meanAbsoluteChannelDifference": 0.0 + }, + "title": { + "rect": [ + 103, + 34, + 1085, + 72 + ], + "threshold": 160, + "baseBright": 11316, + "actualBright": 11316, + "lostBright": 0, + "meanAbsoluteChannelDifference": 0.007244434916211098 + } + } + }, + { + "kind": "movie", + "baseline": 226, + "frame": 226, + "regions": { + "userText": { + "rect": [ + 120, + 307, + 455, + 347 + ], + "threshold": 160, + "baseBright": 1582, + "actualBright": 1582, + "lostBright": 0, + "meanAbsoluteChannelDifference": 0.0 + }, + "clientB": { + "rect": [ + 900, + 535, + 1070, + 570 + ], + "threshold": 160, + "baseBright": 367, + "actualBright": 367, + "lostBright": 0, + "meanAbsoluteChannelDifference": 0.0 + }, + "title": { + "rect": [ + 103, + 34, + 1085, + 72 + ], + "threshold": 160, + "baseBright": 11316, + "actualBright": 11316, + "lostBright": 0, + "meanAbsoluteChannelDifference": 0.0 + } + } + }, + { + "kind": "movie", + "baseline": 226, + "frame": 232, + "regions": { + "userText": { + "rect": [ + 120, + 307, + 455, + 347 + ], + "threshold": 160, + "baseBright": 1582, + "actualBright": 1582, + "lostBright": 0, + "meanAbsoluteChannelDifference": 0.013507462686567164 + }, + "clientB": { + "rect": [ + 900, + 535, + 1070, + 570 + ], + "threshold": 160, + "baseBright": 367, + "actualBright": 367, + "lostBright": 0, + "meanAbsoluteChannelDifference": 0.0 + }, + "title": { + "rect": [ + 103, + 34, + 1085, + 72 + ], + "threshold": 160, + "baseBright": 11316, + "actualBright": 11316, + "lostBright": 0, + "meanAbsoluteChannelDifference": 0.007244434916211098 + } + } + }, + { + "kind": "movie", + "baseline": 226, + "frame": 238, + "regions": { + "userText": { + "rect": [ + 120, + 307, + 455, + 347 + ], + "threshold": 160, + "baseBright": 1582, + "actualBright": 1582, + "lostBright": 0, + "meanAbsoluteChannelDifference": 0.026542288557213932 + }, + "clientB": { + "rect": [ + 900, + 535, + 1070, + 570 + ], + "threshold": 160, + "baseBright": 367, + "actualBright": 367, + "lostBright": 0, + "meanAbsoluteChannelDifference": 0.0 + }, + "title": { + "rect": [ + 103, + 34, + 1085, + 72 + ], + "threshold": 160, + "baseBright": 11316, + "actualBright": 11316, + "lostBright": 0, + "meanAbsoluteChannelDifference": 0.017472397899024546 + } + } + }, + { + "kind": "movie", + "baseline": 226, + "frame": 267, + "regions": { + "userText": { + "rect": [ + 120, + 307, + 455, + 347 + ], + "threshold": 160, + "baseBright": 1582, + "actualBright": 1578, + "lostBright": 22, + "meanAbsoluteChannelDifference": 1.8438308457711443 + }, + "clientB": { + "rect": [ + 900, + 535, + 1070, + 570 + ], + "threshold": 160, + "baseBright": 367, + "actualBright": 360, + "lostBright": 51, + "meanAbsoluteChannelDifference": 1.2311484593837534 + }, + "title": { + "rect": [ + 103, + 34, + 1085, + 72 + ], + "threshold": 160, + "baseBright": 11316, + "actualBright": 11330, + "lostBright": 27, + "meanAbsoluteChannelDifference": 1.5543734591060134 + } + } + }, + { + "kind": "movie", + "baseline": 226, + "frame": 268, + "regions": { + "userText": { + "rect": [ + 120, + 307, + 455, + 347 + ], + "threshold": 160, + "baseBright": 1582, + "actualBright": 1578, + "lostBright": 22, + "meanAbsoluteChannelDifference": 1.851542288557214 + }, + "clientB": { + "rect": [ + 900, + 535, + 1070, + 570 + ], + "threshold": 160, + "baseBright": 367, + "actualBright": 360, + "lostBright": 51, + "meanAbsoluteChannelDifference": 1.2311484593837534 + }, + "title": { + "rect": [ + 103, + 34, + 1085, + 72 + ], + "threshold": 160, + "baseBright": 11316, + "actualBright": 11330, + "lostBright": 27, + "meanAbsoluteChannelDifference": 1.5543734591060134 + } + } + }, + { + "kind": "movie", + "baseline": 226, + "frame": 274, + "regions": { + "userText": { + "rect": [ + 120, + 307, + 455, + 347 + ], + "threshold": 160, + "baseBright": 1582, + "actualBright": 1566, + "lostBright": 33, + "meanAbsoluteChannelDifference": 2.4197014925373135 + }, + "clientB": { + "rect": [ + 900, + 535, + 1070, + 570 + ], + "threshold": 160, + "baseBright": 367, + "actualBright": 360, + "lostBright": 51, + "meanAbsoluteChannelDifference": 1.2311484593837534 + }, + "title": { + "rect": [ + 103, + 34, + 1085, + 72 + ], + "threshold": 160, + "baseBright": 11316, + "actualBright": 11330, + "lostBright": 27, + "meanAbsoluteChannelDifference": 1.554543180762497 + } + } + }, + { + "kind": "movie", + "baseline": 226, + "frame": 284, + "regions": { + "userText": { + "rect": [ + 120, + 307, + 455, + 347 + ], + "threshold": 160, + "baseBright": 1582, + "actualBright": 1579, + "lostBright": 20, + "meanAbsoluteChannelDifference": 1.908457711442786 + }, + "clientB": { + "rect": [ + 900, + 535, + 1070, + 570 + ], + "threshold": 160, + "baseBright": 367, + "actualBright": 360, + "lostBright": 51, + "meanAbsoluteChannelDifference": 1.2305882352941175 + }, + "title": { + "rect": [ + 103, + 34, + 1085, + 72 + ], + "threshold": 160, + "baseBright": 11316, + "actualBright": 11338, + "lostBright": 24, + "meanAbsoluteChannelDifference": 1.5936863543788187 + } + } + }, + { + "kind": "movie", + "baseline": 226, + "frame": 294, + "regions": { + "userText": { + "rect": [ + 120, + 307, + 455, + 347 + ], + "threshold": 160, + "baseBright": 1582, + "actualBright": 1580, + "lostBright": 19, + "meanAbsoluteChannelDifference": 1.9274378109452737 + }, + "clientB": { + "rect": [ + 900, + 535, + 1070, + 570 + ], + "threshold": 160, + "baseBright": 367, + "actualBright": 370, + "lostBright": 47, + "meanAbsoluteChannelDifference": 1.2507563025210084 + }, + "title": { + "rect": [ + 103, + 34, + 1085, + 72 + ], + "threshold": 160, + "baseBright": 11316, + "actualBright": 11338, + "lostBright": 24, + "meanAbsoluteChannelDifference": 1.592337513845714 + } + } + } + ] +} diff --git a/promotion/evidence/local-livesync-handoff-20260907/manifest.json b/promotion/evidence/local-livesync-handoff-20260907/manifest.json new file mode 100644 index 0000000..2c2be64 --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/manifest.json @@ -0,0 +1,696 @@ +{ + "schema": "fcs-selected-evidence-manifest/v1", + "files": [ + { + "path": ".gitattributes", + "bytes": 9, + "sha256": "8b9c3028d6467ff3be7c793141927841d70f47f52d0590677438f488ca154992", + "gitBlob": "625449502ba4b4d7c229c6ccee42e3ec41cc780c" + }, + { + "path": "after-output/gif-0.png", + "bytes": 69971, + "sha256": "7d1a6004259387788d815b049f17e6ba70764389938657f22b8b27b458151ab2", + "gitBlob": "d428de5b95825cdc5d6ccc117b4cc156917a1a08" + }, + { + "path": "after-output/gif-105.png", + "bytes": 51717, + "sha256": "3811256de7e9126e8435952858c78d1bdf4b66db709224f348146acdfe6569ee", + "gitBlob": "1e9d19edd7e652f84352c9742e201e14195e9048" + }, + { + "path": "after-output/gif-13.png", + "bytes": 73397, + "sha256": "a54cd91e516ec85e78a2f0f0ed1e49f54605f05f4c1995b0bd246f146fd16e6b", + "gitBlob": "8da85fa1f4d4ea20a486ad3834ee35080fc070b6" + }, + { + "path": "after-output/gif-147.png", + "bytes": 50905, + "sha256": "83812d5e087eb8cf6ef58c34b01b52b4dd4a222659aa921a8d5096c768e05e22", + "gitBlob": "f6a3d49a3c772c7f6e53a3d3e06120020f394d63" + }, + { + "path": "after-output/gif-186.png", + "bytes": 76240, + "sha256": "603372e3becb11b7b9479df7b892023a624c57c9eee55bf2b81228a57ba97043", + "gitBlob": "d9baace442b7ac85f8dfd89cc2d4daf4fa1feb9a" + }, + { + "path": "after-output/gif-201.png", + "bytes": 72022, + "sha256": "cd0c71876f41ca5664739c8bfb557d36f7d50f7bb8eeceb73f29e7c4256fa861", + "gitBlob": "d05ce6a38276d37ebb48e751a6deb5a92ddf0c06" + }, + { + "path": "after-output/gif-204.png", + "bytes": 75230, + "sha256": "ec3d85c21127980139b9095194e29c4f0dacca356360687493f7320d9a941714", + "gitBlob": "dbe048e51c918561103e9c6e06abd155e7ec3dcd" + }, + { + "path": "after-output/gif-210.png", + "bytes": 64383, + "sha256": "712b70119c50f2bca4dba9d93b9c1af99fab0158ca2dc301d0a3bc27be0d1beb", + "gitBlob": "69c0707897d3fe00851384a37d21a1dca080f22a" + }, + { + "path": "after-output/gif-216.png", + "bytes": 71097, + "sha256": "310cd10b6ceaad026d319473828f5504b4eee23b2e4b35305c6dc428b5759a21", + "gitBlob": "2d545ef39dc2cdc428296361b53ed8472afc49a8" + }, + { + "path": "after-output/gif-259.png", + "bytes": 72989, + "sha256": "f9277d00ea2a411ff80fc7c69de3387c84c9edfb1016a82bae6e6bf924101a5d", + "gitBlob": "5bfc2a0a06f2330b4d55f6bc19d5b7a1494fd130" + }, + { + "path": "after-output/gif-293.png", + "bytes": 73016, + "sha256": "1203538167ff51942b507d05391142772b0034f9a3423e6971865772d8d03fb3", + "gitBlob": "a49d63c66e442261ed04d09a46cf16d665de4e3d" + }, + { + "path": "after-output/gif-48.png", + "bytes": 77084, + "sha256": "0fe14996174cb39f6b6a9a14e44b6a596dc97face9acb28a039e5f3ecadc5457", + "gitBlob": "8c6dc66931e0c8435df0602f5de34b2f67cd1a41" + }, + { + "path": "after-output/gif-78.png", + "bytes": 76323, + "sha256": "ed299db2f33c8261df32ab60842260623b323543a02d9e8364839250a8c332bd", + "gitBlob": "8f6e3b0956e73abcff9a70d6742c473b2e95a5e6" + }, + { + "path": "after-output/movie-0.png", + "bytes": 449030, + "sha256": "181cd4d925a5f1bb1645d75357c04d58e1b816ade5624b8dd614611f81fb1da4", + "gitBlob": "3ebf61cae4e64f727af2cd6c030d5b7d09ef0286" + }, + { + "path": "after-output/movie-147.png", + "bytes": 512543, + "sha256": "a5c8875fced0460989322cf476485e485964ec1b7ace316325f386a22dfb797a", + "gitBlob": "997b4674e5a4e4f54175346ed272eef411ba1d95" + }, + { + "path": "after-output/movie-156.png", + "bytes": 516450, + "sha256": "b9f3ff3791015b83c710feca1bf1644ec98320dd36887cf941b5be2300b08c72", + "gitBlob": "ad2e05c8419b890486ddc1737cd7769af0cc06d7" + }, + { + "path": "after-output/movie-210.png", + "bytes": 304978, + "sha256": "283f6a9a3b4310ed32e7b0eeb420510d6437029666b4338a80ef916bbdec7db6", + "gitBlob": "8b71337871cdee704bdfe013cef7d211d05378fa" + }, + { + "path": "after-output/movie-26.png", + "bytes": 480813, + "sha256": "de3ace6e9d21b81ea7af5c713a000b79c18040b36d733ed7db28468a557e7c45", + "gitBlob": "f24ee568c45f074662de7542a015893b7cdfaafd" + }, + { + "path": "after-output/movie-294.png", + "bytes": 289199, + "sha256": "0c0d46c1c07a4d98fb7eb5c7026b00f67d44572be7a85aa88a2ec5b7360d6b40", + "gitBlob": "a9d059a3720f8a186ddcdc5ff3edc0137c8cabc2" + }, + { + "path": "after-output/movie-372.png", + "bytes": 506643, + "sha256": "2ad49cbc3cb519cffff293ef5a104b773263793c9d4f3356f1ce23e394003d89", + "gitBlob": "8f98a59cae4e8678f8b135ef31f7d6814f3942f7" + }, + { + "path": "after-output/movie-402.png", + "bytes": 467540, + "sha256": "83ac02498b8b713b0cc83460b2d009559cdc8560be8061b4e16ac9e71a3df747", + "gitBlob": "23513ebb7f89d5c7e4b5d422095ee192af8800e9" + }, + { + "path": "after-output/movie-408.png", + "bytes": 493764, + "sha256": "4f135552f905d3a29ea360945dabcb37b395871dcae936275a4adeb9c492cef8", + "gitBlob": "e3bed3f500fa5ec69a8c7c45b3c48f7619857d58" + }, + { + "path": "after-output/movie-420.png", + "bytes": 425302, + "sha256": "c02b3301b5ab2e1c9cf54ca899cc4841ef9fd5d0f7db17c39145bccbf2a1cf6d", + "gitBlob": "2459d2fbdd631f4bb0da308401a7330a4e6256f7" + }, + { + "path": "after-output/movie-432.png", + "bytes": 553961, + "sha256": "bfb055ea03da0b5aa564d59122bac4ad3198db09a1b964e15ebc9fc14ef06b37", + "gitBlob": "0b38aa825f8caadc2be44ececcc39e65453733fc" + }, + { + "path": "after-output/movie-518.png", + "bytes": 578710, + "sha256": "d18a89ec9f72f7fa05810036e4ce48813d380853066180d096f52d014508ee00", + "gitBlob": "75675179a22501ecaba2138ccdf963da90b585d6" + }, + { + "path": "after-output/movie-587.png", + "bytes": 578774, + "sha256": "105372737a0521a8deab9fca32cb9ba25e40e3845d8e7b20851521c99cd4aae7", + "gitBlob": "b9c89ae2a9bcb51a3fc277f599538ddaa2ecdce6" + }, + { + "path": "after-output/movie-96.png", + "bytes": 518760, + "sha256": "4a30488b5e8064adf7e5be51861587637b9ed9cc8c7de8b35f7ed29da24351b0", + "gitBlob": "89bb9ab770486ff92fcbcb7c96d4ae41a43f0c69" + }, + { + "path": "after-output/readable-livesync.gif", + "bytes": 2772039, + "sha256": "406425fade2aaae2b06722a4d279214f43b6b1698f22ee6b9c8b175af9967648", + "gitBlob": "ee3ab3e81e226b1aacfa10b9f519c5f07c16938b" + }, + { + "path": "after-output/readable-livesync.mp4", + "bytes": 2374634, + "sha256": "9fdf8250cfadd6957ae23e68de104b2827d9b64de3857bf3ee1808860698700e", + "gitBlob": "027f0f9dde771eeea59d3c95926b8c9556cc8a9b" + }, + { + "path": "after-status/02-selection-negatives/absent-command.json", + "bytes": 219, + "sha256": "6112757274385c917ceca8da49dddeffc9f0a5b4aa3f7777595b3a1c19bb2f9d", + "gitBlob": "f06de9e23e7b524e24c5d1383e6b40c6e6f38ecc" + }, + { + "path": "after-status/02-selection-negatives/absent.stderr.txt", + "bytes": 275, + "sha256": "ff04f1b1378a71378492d2aa74f326832907481551e4b23aba498fcdbfe4ea11", + "gitBlob": "c9fadcac780cf278c028cf55aa2233963ff5e148" + }, + { + "path": "after-status/02-selection-negatives/comma-command.json", + "bytes": 218, + "sha256": "08df08325cf34063ea6173fbff9fb17c302ce3860cbfe20a7400a003c020b007", + "gitBlob": "dd92e2a15c812192b7e00b6649eb82c3a78bfa7a" + }, + { + "path": "after-status/02-selection-negatives/comma.stderr.txt", + "bytes": 495, + "sha256": "eb019103075c177d12feaa3d08d837f53eeffcba74dee954d4a507342fabf9ac", + "gitBlob": "efb2cdeff1f27b49fd0f39dde7d6633d5a93f602" + }, + { + "path": "after-status/02-selection-negatives/empty-env-command.json", + "bytes": 222, + "sha256": "b9d149879166de1d3f410a2dbfc3e90131a6139845cc16fc515ca0a6469ada46", + "gitBlob": "e1759de3b5419f7552c3f9e28e3433596d00469d" + }, + { + "path": "after-status/02-selection-negatives/empty-env.stderr.txt", + "bytes": 275, + "sha256": "ff04f1b1378a71378492d2aa74f326832907481551e4b23aba498fcdbfe4ea11", + "gitBlob": "c9fadcac780cf278c028cf55aa2233963ff5e148" + }, + { + "path": "after-status/02-selection-negatives/mixed-command.json", + "bytes": 218, + "sha256": "e97f05d33503da464cff4fc2ca94f67c1e4f587a77815e90b9631f65bd841012", + "gitBlob": "1c3746a6255c1f1282bfbae21d9da4805eeb7a9e" + }, + { + "path": "after-status/02-selection-negatives/mixed.stderr.txt", + "bytes": 508, + "sha256": "2713c01ce3ee34fad04c071a41325c06e9467c9249e2d7fc226bf6c12ee779ee", + "gitBlob": "73446675ccd5e1537e55c1328aee9b795e620014" + }, + { + "path": "after-status/02-selection-negatives/selection-semantics.json", + "bytes": 1106, + "sha256": "3568846278b110ab5eba127bc6366d7cc96483fc9a7d96c19a9c1511c4cceee1", + "gitBlob": "935bac32c7e82926bdd8dc64a89b3f2290caa72d" + }, + { + "path": "after-status/02-selection-negatives/unknown-command.json", + "bytes": 220, + "sha256": "80f5eb1edba4a6559ed59c59a803fd5fe09c5be57bd3bd7d92f46b9f0c7faeac", + "gitBlob": "6aa7890b1e61f2c5ec545795c6c791388daba35f" + }, + { + "path": "after-status/02-selection-negatives/unknown.stderr.txt", + "bytes": 508, + "sha256": "2713c01ce3ee34fad04c071a41325c06e9467c9249e2d7fc226bf6c12ee779ee", + "gitBlob": "73446675ccd5e1537e55c1328aee9b795e620014" + }, + { + "path": "after-status/02-selection-negatives/whitespace-command.json", + "bytes": 223, + "sha256": "ad8428a723845ef7a75c23f1df5a5411f888336f6a58ea06fe0c8c3b0b61ee80", + "gitBlob": "6d626c6a7cc0b0f42a3daf368a567c345b267280" + }, + { + "path": "after-status/02-selection-negatives/whitespace.stderr.txt", + "bytes": 491, + "sha256": "8553db10149a86f10c3de1cad04e4a28814ca04d316fd3053bbd58b1df48bb78", + "gitBlob": "a79f93d94027987657a38681671601657b0dd1e9" + }, + { + "path": "after-status/04-unavailable/unavailable-command.json", + "bytes": 225, + "sha256": "d0fa01fea600b544e7a9ecf7c8222c30f86a955b62bfd4d00f62092aae628890", + "gitBlob": "060bc4f849929ec912c92b4c28515a8a32765e97" + }, + { + "path": "after-status/04-unavailable/unavailable.stderr.txt", + "bytes": 584, + "sha256": "95552b1733068b682749538fcae681f620b29d4c018b40d68bbfebc8b2a7100e", + "gitBlob": "a801aec58f36f261016bf4b5d83e7a21220d0bac" + }, + { + "path": "after-status/04-unavailable/unavailable.stdout.txt", + "bytes": 195, + "sha256": "f3210d5e17ef70528e079b868686528d15c99f66e77c6e32f07dbffb43c6f77f", + "gitBlob": "757cbe7d48062c08708c966df135ad9821482b16" + }, + { + "path": "after-status/05-missing-control/missing-control-command.json", + "bytes": 230, + "sha256": "3ff6d902e3ded3e4b65ddae31d8ee15462666b69a6b3814d0bfad0532355ca96", + "gitBlob": "a4aa854f79e1e1e4bb5fad740b87501dd4135e91" + }, + { + "path": "after-status/05-missing-control/missing-control.stderr.txt", + "bytes": 544, + "sha256": "eb048e753761ef99a5fec7d897a5acd37d766e6e7ad6c1b6d24a49a4d86093ec", + "gitBlob": "26b68a983c826d0c69bf6dcbe22e28801995c108" + }, + { + "path": "after-status/05-missing-control/missing-control.stdout.txt", + "bytes": 460, + "sha256": "ffed6bb12aa48f864e393ce286e4f14fd94970e8b473fd87f18c8f3b8307f50b", + "gitBlob": "a26caca257c14215738b06e44c02421e0667cb49" + }, + { + "path": "after-status/06-recovery/native-generated-disk-bijection.json", + "bytes": 8499, + "sha256": "a97cca0bb43d1fa8710ae98f03cbe2cff84fffd48b6363e0421818660bdeb71d", + "gitBlob": "a1f8a93fb9f94ac66388da68cdc6dc7009b57f42" + }, + { + "path": "after-status/06-recovery/selected-livesync-command.json", + "bytes": 420, + "sha256": "ca1f766a481063a2a1829c082891cb9ad8f452b4cf3a6a224d92926eb83f0bc3", + "gitBlob": "429000c41b314ddb18f919605723df3c33a257f6" + }, + { + "path": "after-status/06-recovery/selected-livesync.stderr.txt", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "gitBlob": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391" + }, + { + "path": "after-status/06-recovery/selected-livesync.stdout.txt", + "bytes": 570, + "sha256": "99138eaeb5576d6819730aa42932715c9e213d1114f2fe2bae8729f0281b48a1", + "gitBlob": "553fc2eca90dc2c57a566ef6a5c5f2255e1c166b" + }, + { + "path": "after-status/native-observation.json", + "bytes": 6921, + "sha256": "b47e4b58b281a071358faee6fc1abfa84e92fed8277195f1efcf8d2d844eb21e", + "gitBlob": "065ba72acc88c5bd2c0a20e1f1826417001e6b78" + }, + { + "path": "before-output/gif-frame-293.png", + "bytes": 46486, + "sha256": "27ce1ac241da93b211beb75ee9b777a599226e8d32a480626e29fd5eefa5ae77", + "gitBlob": "79b01dd4d77513bb5f483efbd3a335c4744392fd" + }, + { + "path": "before-output/repaired-frame-0.png", + "bytes": 190598, + "sha256": "8b909c3b819574600c9a6fd5a814bd17c062e542cec7e16dfdb4e268bf707ecc", + "gitBlob": "dca6a5e6b4af722d8ec50a8436fc2dbac0f0693f" + }, + { + "path": "before-output/repaired-frame-147.png", + "bytes": 223729, + "sha256": "f4c6fcdf0cf8a73b3f555a00b5a1f37ae5126dcf06293c054e7cd37d36e30281", + "gitBlob": "81933f8de428b3a7d23c6438ab72abfaa41e8d98" + }, + { + "path": "before-output/repaired-frame-294.png", + "bytes": 209727, + "sha256": "4ba2fca74b9ce400e9f2a05e6cea6519c984cd0870ce28c711569ced75e00839", + "gitBlob": "d0519e4b95e2096c63df4f7f86f2a69e719956c5" + }, + { + "path": "before-output/repaired-frame-587.png", + "bytes": 234102, + "sha256": "c8567729d745e5de081e7e8a6483fb046a4fa712e7c5c48a005fccdb07e3ce79", + "gitBlob": "cc260a990618b1710ecc172b4ddea768f8404965" + }, + { + "path": "before-status/unavailable-demo-command.json", + "bytes": 245, + "sha256": "d106fc54fbee5b5321c3aaf441431504a32ee1de16289a258d48262503f3be27", + "gitBlob": "6f30e37bf3e80cdd3076a26a6390cc90fa64a7e5" + }, + { + "path": "before-status/unavailable-demo.stderr.txt", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "gitBlob": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391" + }, + { + "path": "before-status/unavailable-demo.stdout.txt", + "bytes": 285, + "sha256": "f6db93d8bb1ae45d6acb696c0afc695ce3b3418f1ab82809067f0d17bfffdbeb", + "gitBlob": "e0a4b1424efffb78c13329a742c40c9e4482f51c" + }, + { + "path": "before-status/unknown-selector-command.json", + "bytes": 243, + "sha256": "d59aa53af90f6ded6dc55191199c907bcbd71f64acbd72c0faa4601202efb984", + "gitBlob": "5d7b29e2b02b2c857545e6042f4afad67db042bd" + }, + { + "path": "before-status/unknown-selector.stderr.txt", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "gitBlob": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391" + }, + { + "path": "before-status/unknown-selector.stdout.txt", + "bytes": 108, + "sha256": "db73075647daa78f0c51a2a2f68fad46d41eaec30250b482f606f709e536bfba", + "gitBlob": "f677fd330300da694194a397cbe9d46dc2a9ef0c" + }, + { + "path": "checks/legacy-parity.json", + "bytes": 2777, + "sha256": "1736a8a1bf96b1132b3beba23d0733c7e409083c54fb3ba543c7fd6c1849785c", + "gitBlob": "f53c27f766569bd63e5206ab0aea43e2bb71d0ba" + }, + { + "path": "checks/normal-check-command.json", + "bytes": 275, + "sha256": "3cc47d0741288a4da4e4e8ca68017d0b63e3c3bfbec83b02edd488270ceab742", + "gitBlob": "fadc5b1b3198838e0a4ce8ee1594621ba89ff731" + }, + { + "path": "checks/normal-check.stderr.txt", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "gitBlob": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391" + }, + { + "path": "checks/normal-check.stdout.txt", + "bytes": 160, + "sha256": "bd6cb30c52eb122651a342069acd32cf94a32ed9ee44fb386fa99239533afefb", + "gitBlob": "4e71434e55ecbfd790478fbe2199d063f87aa71c" + }, + { + "path": "copy-map.json", + "bytes": 64576, + "sha256": "c1b45301468919f863db54f9e4466ac6e19c695e1fb777eec96fe3dde4f707c8", + "gitBlob": "8525669cc440368a21db1a2dfc03545f908d2142" + }, + { + "path": "encoding/documented-gif-command.json", + "bytes": 659, + "sha256": "f8d9833aba9a37ebeeb9397e6a380dd575eeab140d42ed812111872996ca14bd", + "gitBlob": "8c8ec77068295db0c74cf98c7ad967e9d351ba0c" + }, + { + "path": "encoding/documented-gif.stderr.txt", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "gitBlob": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391" + }, + { + "path": "encoding/documented-gif.stdout.txt", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "gitBlob": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391" + }, + { + "path": "encoding/gif-decode-command.json", + "bytes": 375, + "sha256": "395b25f5bb52414ae083c2446807a0281433ea0cd2aaaf2b48684656d6085ab3", + "gitBlob": "e567641d613a43fb1e26a14aab0a490a61f6e9f2" + }, + { + "path": "encoding/gif-decode.stderr.txt", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "gitBlob": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391" + }, + { + "path": "encoding/gif-decode.stdout.txt", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "gitBlob": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391" + }, + { + "path": "encoding/gif-probe-command.json", + "bytes": 398, + "sha256": "9a27f234af491a0b929c4a19c6144173e83eecf59dbdeb12cc3a593c8d6b4486", + "gitBlob": "a5f8fbb51ff3bca9b041f6fe7a2049e8ba76d677" + }, + { + "path": "encoding/gif-probe.stderr.txt", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "gitBlob": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391" + }, + { + "path": "encoding/gif-probe.stdout.txt", + "bytes": 2071, + "sha256": "aecf348b482f91d97df7cb52a5c68e57d26ca8c8ffbb7d2e5c9bc14999ad9c38", + "gitBlob": "091b12163c657bb20721208eb9c0b289ddeb2159" + }, + { + "path": "encoding/readable-decode-command.json", + "bytes": 380, + "sha256": "89c7627791507cf220f160b7a30ecbbd34d81ae53435c3cd250492631f7db2b8", + "gitBlob": "6eb9fd568949316ac4e9312fdd4738bc1123a339" + }, + { + "path": "encoding/readable-decode.stderr.txt", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "gitBlob": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391" + }, + { + "path": "encoding/readable-decode.stdout.txt", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "gitBlob": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391" + }, + { + "path": "encoding/readable-ffprobe-command.json", + "bytes": 405, + "sha256": "c1cb42c1c5b5489412c9335a93da56efdea6d386643810288656f772c0292f78", + "gitBlob": "9756a0ca597790c47b912c4b2978039f9791e7c3" + }, + { + "path": "encoding/readable-ffprobe.stderr.txt", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "gitBlob": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391" + }, + { + "path": "encoding/readable-ffprobe.stdout.txt", + "bytes": 4691, + "sha256": "1de72f7b43285da7f9574b6582fb1440e030ea2a60944f40c7407effc5e4c8fe", + "gitBlob": "bc752539046e4c373bab6fe6de85b65e6bc86a32" + }, + { + "path": "encoding/render-readable-command.json", + "bytes": 410, + "sha256": "a561836ee6990bda38e3d38e48d95aec553a77983c8eb39d7043e76cb0f654bb", + "gitBlob": "f8edd7002f6654d30a07c5af7bd738ef5aab53fb" + }, + { + "path": "encoding/render-readable.stderr.txt", + "bytes": 0, + "sha256": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855", + "gitBlob": "e69de29bb2d1d6434b8b29ae775ad8c2e48c5391" + }, + { + "path": "encoding/render-readable.stdout.txt", + "bytes": 24526, + "sha256": "1c63c0152442e2baf5ef84bfcf94bc2628bbda911beff26c1d2a2dd56973e1fc", + "gitBlob": "19d28d94b2d8708468ae306dce6bb057f0a7d0d0" + }, + { + "path": "encoding/stage04-closed.json", + "bytes": 118, + "sha256": "17bc5068498b462463adebd3d8f6331da34ae185e43da69271520d365cf614ad", + "gitBlob": "7141eac9c9e23bad46995eff110e95e702c62f39" + }, + { + "path": "encoding/stage04-receipt.json", + "bytes": 23747, + "sha256": "40d9b4e7633222cde48d692f803322e2c220bfa7e532f7d1b5b9055074183056", + "gitBlob": "f90f8b984e84cfa8318bd44d496ed57bcee119c6" + }, + { + "path": "encoding/stage05-closed.json", + "bytes": 118, + "sha256": "17bc5068498b462463adebd3d8f6331da34ae185e43da69271520d365cf614ad", + "gitBlob": "7141eac9c9e23bad46995eff110e95e702c62f39" + }, + { + "path": "encoding/stage05-receipt.json", + "bytes": 164, + "sha256": "38b5dd782102d499bb77624ec6bae6aadcac5591ab18071728e7160d733fa72c", + "gitBlob": "2fa2c9fbf199bc05d482ba5ba34a8163266d8f3f" + }, + { + "path": "judgments/E6o_FEATURECLIPSTUDIO_CAPTURE_STATUS_FINAL_JUDGE.json", + "bytes": 9258, + "sha256": "b40c0069d521d23554dd092811cb4e81046ce894c6875ebdc92162e3ed13b299", + "gitBlob": "a68235540251343065a5c5027523056145f1e79c" + }, + { + "path": "judgments/E6o_FEATURECLIPSTUDIO_CAPTURE_STATUS_FINAL_JUDGE.md.txt", + "bytes": 3192, + "sha256": "927c8638a8691e46512bf6411f6474c7c3d91b55507a6ddf1e209d4ec959ba22", + "gitBlob": "fb94006257a77e79eff79e4ffe57c93b4efe5d2b" + }, + { + "path": "judgments/E6o_FEATURECLIPSTUDIO_CRITERION_ASSESSMENT.json", + "bytes": 47752, + "sha256": "1e9d47b96c0213865628321e04243120451b8ffbbd86be50b54530477a04d49a", + "gitBlob": "2f91dbbd7f7b9bfcdb68c276f0de4e681b518d57" + }, + { + "path": "judgments/E6o_FEATURECLIPSTUDIO_CRITERION_ASSESSMENT.md.txt", + "bytes": 5000, + "sha256": "34ff93d97754f0e66041feeb19c0545dcf3d84e1f356673a3fdd9ff5cdc3a446", + "gitBlob": "7ea20e5f3e2b10d7e5bc0e9297fb9e28ebb68be0" + }, + { + "path": "judgments/E6o_FEATURECLIPSTUDIO_READABILITY_CRITERION_ASSESSMENT.json", + "bytes": 66031, + "sha256": "ae178f351d8a05353d2e8ad4081a4098bc829b41cab2ffbf4b2ab9448495dba0", + "gitBlob": "6602828c29d683909a934dc8918239f25ee533be" + }, + { + "path": "judgments/E6o_FEATURECLIPSTUDIO_READABILITY_CRITERION_ASSESSMENT.md.txt", + "bytes": 3190, + "sha256": "d90269fa28006e1a930ba4a67a415f1a63ef7bceb59b6b915282d3b1d0cbcc26", + "gitBlob": "3348007cfa3b952c9a08e8e59b74d278646148b2" + }, + { + "path": "judgments/E6o_FEATURECLIPSTUDIO_READABILITY_FINAL_JUDGE.json", + "bytes": 3645, + "sha256": "e0177f82b99146a7aef40bb804d3cd1b3ef07ca535fc2ad2695b6ddf6ddc712c", + "gitBlob": "f8310ab6b02226f3bbfaa72e1f48f0bdb0d718d1" + }, + { + "path": "judgments/E6o_FEATURECLIPSTUDIO_READABILITY_FINAL_JUDGE.md.txt", + "bytes": 6199, + "sha256": "ecdaf01085fefdc7777316e0f74ef4b97bf9af02a129764eb100e3b9f5a5352d", + "gitBlob": "0262071302342b05c71c5bd5688f5c96df90befd" + }, + { + "path": "judgments/final-judge-field-correction.json", + "bytes": 889, + "sha256": "491fc358c694d972b1e7bc0b77be8e4e10ce3961a6353a5f22d9cbdbfc3266c3", + "gitBlob": "d6b7dd68bc09f729859a4fab85be131c591b70ca" + }, + { + "path": "judgments/reviewer-reading-correction.json", + "bytes": 18801, + "sha256": "86da1a54c33480e3cc8424c41b31534e92f1c998d92e6fed49c730816468a0d1", + "gitBlob": "62ba674b424405073477d7a5146d79afe0d3a309" + }, + { + "path": "omissions.json", + "bytes": 3590, + "sha256": "d41e78e0431e46e659c5aa9a287cd1386bf9d1dc84f63789713f569ea378280e", + "gitBlob": "8f4edce02ca0eb757aacb6e6bdd403db5f5ffbcb" + }, + { + "path": "README.md", + "bytes": 7045, + "sha256": "032b15ea3aed02e44e9f4211345f86af207caf070310cf0e611ec92ce41d2343", + "gitBlob": "5d7bdcb2c90851d4bb8ef8eba4e396a4520cd2bc" + }, + { + "path": "scope/change-boundary.md.txt", + "bytes": 3717, + "sha256": "cbfe55ab985d59603a6cde6f576bd32ed87f187f60d07345dcc9107940da99b8", + "gitBlob": "ef4de3b963eaec288638dd4bbb745639dcb4cd29" + }, + { + "path": "scope/change-boundary.png", + "bytes": 224067, + "sha256": "f69cea8c46e7ddfef5967388f8eb76346337716a4a7c50dead85a0b6865b9f04", + "gitBlob": "91cfe673a7f86d8477e4bc611e1ba76806942d59" + }, + { + "path": "setup/ffmpeg-version.stdout.txt", + "bytes": 1964, + "sha256": "f4d5c3a47d3592181730b4d37764498c96091f1604066b43ad60db1a480992dd", + "gitBlob": "f4f81e346e59dc9281a1d1286c92c287fda646da" + }, + { + "path": "setup/ffprobe-version.stdout.txt", + "bytes": 1965, + "sha256": "4cac2bf444f8d0c49ba2d8a05a4dd16656b762c24eba79d95a7fe8fc9a672cf9", + "gitBlob": "4732aa78cdf9a6a8843f288ea4e0198735aecdba" + }, + { + "path": "setup/node-version.stdout.txt", + "bytes": 10, + "sha256": "99149e35f76aa1efc846f029c3d2733b3541fe76ac97b74d33883481c0ce8dd9", + "gitBlob": "737cf4c86dc769e96a731304a110cdeedd16651a" + }, + { + "path": "setup/normal-ci-command.json", + "bytes": 258, + "sha256": "c84b3f3625fc2ccd15da4fd1469f635c487a02fce7b9979d9d74104e195308fb", + "gitBlob": "c4bca6f7330c7b80c288993fb1705110579d9ad8" + }, + { + "path": "setup/normal-ci.stderr.txt", + "bytes": 125, + "sha256": "d5075113082a929119680914d84f6aca56a7b331f8d88abbbb82b1cab4e94788", + "gitBlob": "af32c7de5f84454181b7e49ce0ed0cafe0aecb43" + }, + { + "path": "setup/normal-ci.stdout.txt", + "bytes": 230, + "sha256": "21be77b9f71f41300cbb75f576b35c0fcedcafade477b3bb35484f35ce6ca4a2", + "gitBlob": "84bc4f58459929f787d83e215b8c016ce460310c" + }, + { + "path": "setup/npm-version.stdout.txt", + "bytes": 7, + "sha256": "35217e32d288f09fea0fe2b8124665225fc00ac7ea72c312bb523db9950a13c4", + "gitBlob": "51b288c12f97178f5c3b5303af210e65d00e726d" + }, + { + "path": "source-bindings.json", + "bytes": 49582, + "sha256": "0619aa614098c6040f91f381ec0da864b5870a4ba2e9c56daff9978a3405cdd7", + "gitBlob": "821d011785b7023a41d991d2689b1a0f6271140a" + }, + { + "path": "verify.py", + "bytes": 2522, + "sha256": "5c3c9ecb048d9bc610d5c4c04f64c1be67bcace6dfbff905cda999fa0386167a", + "gitBlob": "1baf17a932229bf5f8e7c32836f4def44882bc92" + } + ], + "scope": "Exact selected bytes; this manifest is an inventory, not an authentication signature or runtime result." +} diff --git a/promotion/evidence/local-livesync-handoff-20260907/omissions.json b/promotion/evidence/local-livesync-handoff-20260907/omissions.json new file mode 100644 index 0000000..8f4edce --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/omissions.json @@ -0,0 +1,66 @@ +{ + "boundLocalGroups": [ + { + "origin": "E6o-featureclipstudio-current-consumer-01/11-freeze/manifest.json", + "bytes": 1375, + "sha256": "174f35fd37c958939168b9d50037957f229990fd9c44d2827f5c1a351a2e569a", + "reason": "Unchanged-source setup, bundled reproduction and original failures; only relevant logs are selected.", + "portable": false + }, + { + "origin": "E6o-featureclipstudio-capture-status-final-01/manifest.json", + "bytes": 932, + "sha256": "8338040b8424056294d9dcf9f4b8bd1c36a3c1af51b778233007027f878ec313", + "reason": "Complete status repair records, restoration controller, private process/source inventories and redundant captures stay local.", + "portable": false + }, + { + "origin": "E6o-featureclipstudio-readability-plan-03/manifest.json", + "bytes": 9708, + "sha256": "87ae213b864572e46788134726dc7171aef420b06382ed5e598b1f8af4343fad", + "reason": "Full preparation/helper history and custody inventories stay local. Actual boundary is selected.", + "portable": false + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/01-legacy-before/manifest.json", + "bytes": 5807, + "sha256": "777374cc316ccc9999746efa71dee2f06ccd77ff159a087628ab4f4c16f87bcd", + "reason": "Eight old-layout stills stay local; exact eight-frame parity result is selected.", + "portable": false + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/03-preflight-stills/manifest.json", + "bytes": 28415, + "sha256": "765bfd7861732081a2f0d9adc6f1635e1d0b6d232c603353003a58c3b41f38af", + "reason": "Preflight1920/resampled720 overlaps stay local; selected final encoded PNGs supersede these for the final output claim.", + "portable": false + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/04-full-media/manifest.json", + "bytes": 78157, + "sha256": "25067467684022f9cdcef775cb47c459d8795b0685bf58ade898a70a59694999", + "reason": "All117 extracted sample identities and128 commands stay bound here; only selected frames and relevant raw commands are portable.", + "portable": false + }, + { + "origin": "E6o-featureclipstudio-readability-render-01/05-close/manifest.json", + "bytes": 921, + "sha256": "b9a5c1cdf0c17eb6234e3d38923c457071a6c4edde9f39560d594570e0da16fb", + "reason": "Whole904-source/54-input inventory stays local. Selected actual source/54 PNG identities are checked separately by this packet.", + "portable": false + }, + { + "origin": "E6o-featureclipstudio-readability-plan-01/generated-custody.json", + "bytes": 11036, + "sha256": "3cdfa6344640aa911a3be527e10889a75af52a2207f5860707feeab2ccf9da51", + "reason": "Correct historical location of generated custody map; frozen plan03 relative link was missing. Four operator probes remain working, omitted from proposed commit.", + "portable": false + } + ], + "alwaysExcluded": [ + "Private profiles, environment inventories/values, credentials, SQLite/database state, dependency and browser caches, full DOM/session state, central source/path inventories.", + "Old full movies/GIFs and redundant sample images; selected actual before PNGs preserve the observed failure.", + "The54 original PNGs are present in public/wt-collab/LiveSync; they are not duplicated inside this packet." + ], + "rawReferences": "Inert historical reports contain operator-relative references. copy-map.json identifies selected physical payloads; omitted originals cannot be reconstructed from these hashes." +} diff --git a/promotion/evidence/local-livesync-handoff-20260907/scope/change-boundary.md.txt b/promotion/evidence/local-livesync-handoff-20260907/scope/change-boundary.md.txt new file mode 100644 index 0000000..ef4de3b --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/scope/change-boundary.md.txt @@ -0,0 +1,28 @@ +# Frozen export change boundary + +Audience: a developer or reviewer needs to follow one local action, see both clients agree, and read the result without mistaking a fixed-text, in-memory demo for a provider or durable backend. + +Scope: output composition `WTC-LiveSync`, 1920 × 1080 at 30 fps and its 720 × 405 GIF at 15 fps. Theme, input, eight holds and 54 captured PNG bytes are frozen. These annotations show existing exported images in an inert viewer. They are not a fresh render, a browser responsive test, or another completed capture. + +CHANGE A is the complete Client A pane, currently x48/y388, width898, height298 including the chrome border. CHANGE B is Client B at x974/y388 with the same size. CHANGE C is the existing title, step and summary group at x48/y28, width652, height44; its title will disclose local fixed text and in-memory state. The future A/B bounds are x48/y84 and x48/y528, width1824, total height424 each, with a real 20-pixel gap and bottom952. The caption, progress bar and background are unchanged neighbors. + +## State contract + +| Step | Preserved state | Focus and required observation | +| --- | --- | --- | +| 1 | Both clients, empty board | Both labels and controls; disclosure remains readable | +| 2 | A has typed the card | A input and native cursor; B remains distinguishable | +| 3 | A clicks Add | Entire Add control and ripple inside the focused pane | +| 4 | Card burst | Added card on both clients through every burst edge; obsolete off-crop hint removed | +| 5 | Card settled | Exact same card text on A and B | +| 6 | A asks the agent | Entire actual agent button and click inside the focused pane | +| 7 | Fixed text streams | Inspect every captured burst edge, including early indices0/1 during camera travel and the longest 98-pixel card; require the complete settled result on both clients | +| 8 | Final agreement | Full final text and card bottom border/shadow; both labels and disclosure readable | + +Available exported before stills bind steps 1, 3, 5 and 8 at frames 0, 147, 294 and 587, plus GIF frame293. Other before states are in the frozen full movie and native capture inventory; no missing exported still is fabricated. The annotation records raw-image hashes, exact DOM boxes and removal/restoration. Original files are never written. + +After coverage includes every step start, camera offsets 6/16/26, each step end, opening frame4, and each burst image edge; both full-size stills and actual full GIF frames are inspected. During a focus transition the whole relevant region may be temporarily outside the crop; it must settle without a clipped final state, unrelated pointer, hidden client identity or unreadable disclosure. At the longest agent state the lower margin is only 1.515 CSS pixels, so actual border/shadow/text pixels are an explicit gate. No geometry-only pass is allowed. + +Legacy exclusions: unopted one-, two- and three-pane and frameless layouts retain their original pixels at selected identical frames. No app state, caption, timing, font family, palette, provider behavior, capture selector actions, retry budget, or dependency changes. Error/recovery was already proved by the prior status slice; no fabricated error state or repeated native action is required here. Browser responsive behavior, real devices, external targets, voice and durable/provider claims remain outside this output proof. + +The header focus40.5 is an authored projection; the existing focusOf helper rounds it to41. Both clamp to the same top0 crop. Inspecting all burst edges does not mean every early state is completely visible during travel. The proof must preserve that sequence and show a clear action followed by both-client result, with no latency claim. diff --git a/promotion/evidence/local-livesync-handoff-20260907/scope/change-boundary.png b/promotion/evidence/local-livesync-handoff-20260907/scope/change-boundary.png new file mode 100644 index 0000000..91cfe67 Binary files /dev/null and b/promotion/evidence/local-livesync-handoff-20260907/scope/change-boundary.png differ diff --git a/promotion/evidence/local-livesync-handoff-20260907/setup/ffmpeg-version.stdout.txt b/promotion/evidence/local-livesync-handoff-20260907/setup/ffmpeg-version.stdout.txt new file mode 100644 index 0000000..f4f81e3 --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/setup/ffmpeg-version.stdout.txt @@ -0,0 +1,11 @@ +ffmpeg version 6.0-full_build-www.gyan.dev Copyright (c) 2000-2023 the FFmpeg developers +built with gcc 12.2.0 (Rev10, Built by MSYS2 project) +configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-libsnappy --enable-zlib --enable-librist --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-libbluray --enable-libcaca --enable-sdl2 --enable-libaribb24 --enable-libdav1d --enable-libdavs2 --enable-libuavs3d --enable-libzvbi --enable-librav1e --enable-libsvtav1 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libaom --enable-libjxl --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-frei0r --enable-libfreetype --enable-libfribidi --enable-liblensfun --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-d3d11va --enable-dxva2 --enable-libvpl --enable-libshaderc --enable-vulkan --enable-libplacebo --enable-opencl --enable-libcdio --enable-libgme --enable-libmodplug --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libshine --enable-libtheora --enable-libtwolame --enable-libvo-amrwbenc --enable-libilbc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-ladspa --enable-libbs2b --enable-libflite --enable-libmysofa --enable-librubberband --enable-libsoxr --enable-chromaprint +libavutil 58. 2.100 / 58. 2.100 +libavcodec 60. 3.100 / 60. 3.100 +libavformat 60. 3.100 / 60. 3.100 +libavdevice 60. 1.100 / 60. 1.100 +libavfilter 9. 3.100 / 9. 3.100 +libswscale 7. 1.100 / 7. 1.100 +libswresample 4. 10.100 / 4. 10.100 +libpostproc 57. 1.100 / 57. 1.100 diff --git a/promotion/evidence/local-livesync-handoff-20260907/setup/ffprobe-version.stdout.txt b/promotion/evidence/local-livesync-handoff-20260907/setup/ffprobe-version.stdout.txt new file mode 100644 index 0000000..4732aa7 --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/setup/ffprobe-version.stdout.txt @@ -0,0 +1,11 @@ +ffprobe version 6.0-full_build-www.gyan.dev Copyright (c) 2007-2023 the FFmpeg developers +built with gcc 12.2.0 (Rev10, Built by MSYS2 project) +configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-bzlib --enable-lzma --enable-libsnappy --enable-zlib --enable-librist --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-libbluray --enable-libcaca --enable-sdl2 --enable-libaribb24 --enable-libdav1d --enable-libdavs2 --enable-libuavs3d --enable-libzvbi --enable-librav1e --enable-libsvtav1 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libaom --enable-libjxl --enable-libopenjpeg --enable-libvpx --enable-mediafoundation --enable-libass --enable-frei0r --enable-libfreetype --enable-libfribidi --enable-liblensfun --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-d3d11va --enable-dxva2 --enable-libvpl --enable-libshaderc --enable-vulkan --enable-libplacebo --enable-opencl --enable-libcdio --enable-libgme --enable-libmodplug --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libshine --enable-libtheora --enable-libtwolame --enable-libvo-amrwbenc --enable-libilbc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-ladspa --enable-libbs2b --enable-libflite --enable-libmysofa --enable-librubberband --enable-libsoxr --enable-chromaprint +libavutil 58. 2.100 / 58. 2.100 +libavcodec 60. 3.100 / 60. 3.100 +libavformat 60. 3.100 / 60. 3.100 +libavdevice 60. 1.100 / 60. 1.100 +libavfilter 9. 3.100 / 9. 3.100 +libswscale 7. 1.100 / 7. 1.100 +libswresample 4. 10.100 / 4. 10.100 +libpostproc 57. 1.100 / 57. 1.100 diff --git a/promotion/evidence/local-livesync-handoff-20260907/setup/node-version.stdout.txt b/promotion/evidence/local-livesync-handoff-20260907/setup/node-version.stdout.txt new file mode 100644 index 0000000..737cf4c --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/setup/node-version.stdout.txt @@ -0,0 +1 @@ +v22.22.2 diff --git a/promotion/evidence/local-livesync-handoff-20260907/setup/normal-ci-command.json b/promotion/evidence/local-livesync-handoff-20260907/setup/normal-ci-command.json new file mode 100644 index 0000000..c4bca6f --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/setup/normal-ci-command.json @@ -0,0 +1,15 @@ +{ + "name": "normal-ci", + "argv": [ + "C:/nvm4w/nodejs/node.exe", + "C:/nvm4w/nodejs/node_modules/npm/bin/npm-cli.js", + "ci" + ], + "seconds": 7.062, + "timeoutSeconds": 600, + "timedout": false, + "exitCode": 0, + "expectedExitCodes": [ + 0 + ] +} diff --git a/promotion/evidence/local-livesync-handoff-20260907/setup/normal-ci.stderr.txt b/promotion/evidence/local-livesync-handoff-20260907/setup/normal-ci.stderr.txt new file mode 100644 index 0000000..af32c7d --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/setup/normal-ci.stderr.txt @@ -0,0 +1 @@ +npm warn deprecated source-map@0.8.0-beta.0: The work that was done in this beta branch won't be included in future versions diff --git a/promotion/evidence/local-livesync-handoff-20260907/setup/normal-ci.stdout.txt b/promotion/evidence/local-livesync-handoff-20260907/setup/normal-ci.stdout.txt new file mode 100644 index 0000000..84bc4f5 --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/setup/normal-ci.stdout.txt @@ -0,0 +1,12 @@ + +added 185 packages, and audited 186 packages in 7s + +29 packages are looking for funding + run `npm fund` for details + +12 vulnerabilities (2 low, 10 high) + +To address all issues, run: + npm audit fix + +Run `npm audit` for details. diff --git a/promotion/evidence/local-livesync-handoff-20260907/setup/npm-version.stdout.txt b/promotion/evidence/local-livesync-handoff-20260907/setup/npm-version.stdout.txt new file mode 100644 index 0000000..51b288c --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/setup/npm-version.stdout.txt @@ -0,0 +1 @@ +10.9.7 diff --git a/promotion/evidence/local-livesync-handoff-20260907/source-bindings.json b/promotion/evidence/local-livesync-handoff-20260907/source-bindings.json new file mode 100644 index 0000000..821d011 --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/source-bindings.json @@ -0,0 +1,1086 @@ +{ + "schema": "fcs-selected-source-bindings/v1", + "scope": "Selected render/capture/demo/check/metadata owners plus54 native PNGs. No whole repository/dependency/private-source inventory.", + "behaviorProofSourceDigest": "9c0556c9d68195277515242415e7afcac8a8e20e790403aec737dc44a21bbd6e", + "documentationSuccessor": "Only HANDOFF and the README link follow that behavior proof; this optional check binds their actual bytes.", + "files": [ + { + "path": "HANDOFF.md", + "rawBytes": 6005, + "rawSHA256": "7047501dcdd81f3a1a05393adeebd7427f4d3520cc4faca7ac8c3b7c9b0a3b97", + "rawGitBlob": "f42a804e4f607e183f05baa29f74bc30b1c1ee9b", + "canonicalBytes": 6005, + "canonicalSHA256": "7047501dcdd81f3a1a05393adeebd7427f4d3520cc4faca7ac8c3b7c9b0a3b97", + "canonicalGitBlob": "f42a804e4f607e183f05baa29f74bc30b1c1ee9b", + "checkoutNormalization": "crlf-to-lf", + "gitFilterProof": { + "actualRawFilteredBlob": "f42a804e4f607e183f05baa29f74bc30b1c1ee9b", + "CRLFVariantFilteredBlob": "f42a804e4f607e183f05baa29f74bc30b1c1ee9b" + } + }, + { + "path": "README.md", + "rawBytes": 66347, + "rawSHA256": "e81100f8559cd6044d94018c759751d099c3658891eb8bc953ee57045994e8c6", + "rawGitBlob": "f124c7123d79ec6b3daad76969193190c67a6cba", + "canonicalBytes": 64947, + "canonicalSHA256": "04271cf9f6121d28605db79136c32fc4f1663007b1807498059801ae6a5f6c8b", + "canonicalGitBlob": "2e8d4c39470ed0f251c5201e38b0ff64db45684a", + "checkoutNormalization": "crlf-to-lf", + "gitFilterProof": { + "actualRawFilteredBlob": "2e8d4c39470ed0f251c5201e38b0ff64db45684a", + "CRLFVariantFilteredBlob": "2e8d4c39470ed0f251c5201e38b0ff64db45684a" + } + }, + { + "path": "check.mjs", + "rawBytes": 8197, + "rawSHA256": "77160dcea1dbe037e3a66c39d0c67ee37dd667193b52b337132037c248a34552", + "rawGitBlob": "b1b43b2a1b5f7d832dd7f746a96e8d676cf20669", + "canonicalBytes": 8048, + "canonicalSHA256": "1d367e00433c594159ac203173a94fce3fce7748e013c0b1da8a3238547c963c", + "canonicalGitBlob": "8d1d14186be3ad833dc5907f528e51170096e6f9", + "checkoutNormalization": "crlf-to-lf", + "gitFilterProof": { + "actualRawFilteredBlob": "8d1d14186be3ad833dc5907f528e51170096e6f9", + "CRLFVariantFilteredBlob": "8d1d14186be3ad833dc5907f528e51170096e6f9" + } + }, + { + "path": "docs/START_HERE.md", + "rawBytes": 25207, + "rawSHA256": "0c9026ff34afeb52d08e764b932c97b5673d0424fffb98f6adb4072be0b84cdf", + "rawGitBlob": "f354f5c4bd6c3729b3a763d666b99bc10bca5aab", + "canonicalBytes": 24730, + "canonicalSHA256": "370d3f5be07961661b177f0fce4bae6908bc6eacb59c7a78e6ea0904ed660e5c", + "canonicalGitBlob": "8b996536a2f2a3b30e729924f3df139c430384aa", + "checkoutNormalization": "crlf-to-lf", + "gitFilterProof": { + "actualRawFilteredBlob": "8b996536a2f2a3b30e729924f3df139c430384aa", + "CRLFVariantFilteredBlob": "8b996536a2f2a3b30e729924f3df139c430384aa" + } + }, + { + "path": "docs/codebase/INTEGRATIONS.md", + "rawBytes": 5769, + "rawSHA256": "d5fe0d5133c11b83c3994f44540fb124d817657182ccb46954b6cb510add81de", + "rawGitBlob": "7a7154e39fd2731a7324d11f3a6581c7eebbb315", + "canonicalBytes": 5659, + "canonicalSHA256": "b1de9a6c37f6bc56d0516daf9cab150cd55f05a3f0e9adaf42e0ace94dda9631", + "canonicalGitBlob": "754b0234899f55bec8b814ac326c78ac871f15e6", + "checkoutNormalization": "crlf-to-lf", + "gitFilterProof": { + "actualRawFilteredBlob": "754b0234899f55bec8b814ac326c78ac871f15e6", + "CRLFVariantFilteredBlob": "754b0234899f55bec8b814ac326c78ac871f15e6" + } + }, + { + "path": "examples/collab-demo/README.md", + "rawBytes": 4808, + "rawSHA256": "141bc7fad03f45e93f21f42fe718d315a0c461891f650ea383cf70ca322a5e01", + "rawGitBlob": "ad44a1f8dc724d85ea6506584d45b253f85d8bb6", + "canonicalBytes": 4716, + "canonicalSHA256": "2fc330ea1be782f7591adde6073ebd037f6488f63d53e5eb4f8c05ec9a4bf536", + "canonicalGitBlob": "3c36648356bd6a1ff4e16fa230d13a574e7ba84c", + "checkoutNormalization": "crlf-to-lf", + "gitFilterProof": { + "actualRawFilteredBlob": "3c36648356bd6a1ff4e16fa230d13a574e7ba84c", + "CRLFVariantFilteredBlob": "3c36648356bd6a1ff4e16fa230d13a574e7ba84c" + } + }, + { + "path": "examples/collab-demo/server.mjs", + "rawBytes": 11499, + "rawSHA256": "aabbc1d58930081a8110847257de5beed7c62f106340da166d5c20448d1d75fc", + "rawGitBlob": "90323d870e8161caac98275098520bde9f16f738", + "canonicalBytes": 11201, + "canonicalSHA256": "f1bc37e9ebd5bdb4537fa8517844c739fe9f2da1f4248cbff6fe17d6d6375d7d", + "canonicalGitBlob": "3de5d48754446497d552f85aec6c0f4b28aca5ad", + "checkoutNormalization": "crlf-to-lf", + "gitFilterProof": { + "actualRawFilteredBlob": "3de5d48754446497d552f85aec6c0f4b28aca5ad", + "CRLFVariantFilteredBlob": "3de5d48754446497d552f85aec6c0f4b28aca5ad" + } + }, + { + "path": "package-lock.json", + "rawBytes": 109685, + "rawSHA256": "0ac5e892a39160a0b625ab319bd2a949188350e238512ebb41a63addb292cfae", + "rawGitBlob": "78d70f39e3420ce48a4b5f29a37446df39dbee73", + "canonicalBytes": 106747, + "canonicalSHA256": "ea3893c70509be630eb2e7abadd9c4cebe609396c216df1a2fbea5e42fcd8284", + "canonicalGitBlob": "e581cc060e5cc326a305e28268785c52b9530e0e", + "checkoutNormalization": "crlf-to-lf", + "gitFilterProof": { + "actualRawFilteredBlob": "e581cc060e5cc326a305e28268785c52b9530e0e", + "CRLFVariantFilteredBlob": "e581cc060e5cc326a305e28268785c52b9530e0e" + } + }, + { + "path": "package.json", + "rawBytes": 2190, + "rawSHA256": "bd5a8a60201b6b7c9bfe7eaa86300969111edc44d81409811b9eb1495b7209f3", + "rawGitBlob": "23c63eabc67d15718935d7f6ebdb2a009d9f94ba", + "canonicalBytes": 2131, + "canonicalSHA256": "e3ea003670c17e0d8cbd0b0163ddedc0ab8f167072c4a2a000295fd97c31ad2a", + "canonicalGitBlob": "c735540f2b24fea1a0c8347b4f01b6018e3412ab", + "checkoutNormalization": "crlf-to-lf", + "gitFilterProof": { + "actualRawFilteredBlob": "c735540f2b24fea1a0c8347b4f01b6018e3412ab", + "CRLFVariantFilteredBlob": "c735540f2b24fea1a0c8347b4f01b6018e3412ab" + } + }, + { + "path": "public/wt-collab/LiveSync/p0_00.png", + "rawBytes": 236192, + "rawSHA256": "3432eebd1336f92b13502f69fe28b176daf260fc83e76b27f17c3bcdad908e4f", + "rawGitBlob": "af23ae3943d8e2abc489d48e7d49fc13b891a876", + "canonicalBytes": 236192, + "canonicalSHA256": "3432eebd1336f92b13502f69fe28b176daf260fc83e76b27f17c3bcdad908e4f", + "canonicalGitBlob": "af23ae3943d8e2abc489d48e7d49fc13b891a876", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "af23ae3943d8e2abc489d48e7d49fc13b891a876", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p0_01.png", + "rawBytes": 241905, + "rawSHA256": "36b6110a24d5ad3192cd1b013bac6f403aa71444b03f96858406cd4b68f4fd47", + "rawGitBlob": "aa95f4fa3155ff1d4333e386f745d9418ce5bef0", + "canonicalBytes": 241905, + "canonicalSHA256": "36b6110a24d5ad3192cd1b013bac6f403aa71444b03f96858406cd4b68f4fd47", + "canonicalGitBlob": "aa95f4fa3155ff1d4333e386f745d9418ce5bef0", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "aa95f4fa3155ff1d4333e386f745d9418ce5bef0", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p0_02.png", + "rawBytes": 241905, + "rawSHA256": "36b6110a24d5ad3192cd1b013bac6f403aa71444b03f96858406cd4b68f4fd47", + "rawGitBlob": "aa95f4fa3155ff1d4333e386f745d9418ce5bef0", + "canonicalBytes": 241905, + "canonicalSHA256": "36b6110a24d5ad3192cd1b013bac6f403aa71444b03f96858406cd4b68f4fd47", + "canonicalGitBlob": "aa95f4fa3155ff1d4333e386f745d9418ce5bef0", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "aa95f4fa3155ff1d4333e386f745d9418ce5bef0", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p0_03_00.png", + "rawBytes": 208511, + "rawSHA256": "4c6953e1d4f0d2116bb2a4ee03ef47e034bc2f9b8940d36a29503471b15c0db9", + "rawGitBlob": "106a513be50176a859db6f4d700cd6bc6002ea6f", + "canonicalBytes": 208511, + "canonicalSHA256": "4c6953e1d4f0d2116bb2a4ee03ef47e034bc2f9b8940d36a29503471b15c0db9", + "canonicalGitBlob": "106a513be50176a859db6f4d700cd6bc6002ea6f", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "106a513be50176a859db6f4d700cd6bc6002ea6f", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p0_03_01.png", + "rawBytes": 208511, + "rawSHA256": "4c6953e1d4f0d2116bb2a4ee03ef47e034bc2f9b8940d36a29503471b15c0db9", + "rawGitBlob": "106a513be50176a859db6f4d700cd6bc6002ea6f", + "canonicalBytes": 208511, + "canonicalSHA256": "4c6953e1d4f0d2116bb2a4ee03ef47e034bc2f9b8940d36a29503471b15c0db9", + "canonicalGitBlob": "106a513be50176a859db6f4d700cd6bc6002ea6f", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "106a513be50176a859db6f4d700cd6bc6002ea6f", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p0_03_02.png", + "rawBytes": 208511, + "rawSHA256": "4c6953e1d4f0d2116bb2a4ee03ef47e034bc2f9b8940d36a29503471b15c0db9", + "rawGitBlob": "106a513be50176a859db6f4d700cd6bc6002ea6f", + "canonicalBytes": 208511, + "canonicalSHA256": "4c6953e1d4f0d2116bb2a4ee03ef47e034bc2f9b8940d36a29503471b15c0db9", + "canonicalGitBlob": "106a513be50176a859db6f4d700cd6bc6002ea6f", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "106a513be50176a859db6f4d700cd6bc6002ea6f", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p0_03_03.png", + "rawBytes": 208511, + "rawSHA256": "4c6953e1d4f0d2116bb2a4ee03ef47e034bc2f9b8940d36a29503471b15c0db9", + "rawGitBlob": "106a513be50176a859db6f4d700cd6bc6002ea6f", + "canonicalBytes": 208511, + "canonicalSHA256": "4c6953e1d4f0d2116bb2a4ee03ef47e034bc2f9b8940d36a29503471b15c0db9", + "canonicalGitBlob": "106a513be50176a859db6f4d700cd6bc6002ea6f", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "106a513be50176a859db6f4d700cd6bc6002ea6f", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p0_03_04.png", + "rawBytes": 208511, + "rawSHA256": "4c6953e1d4f0d2116bb2a4ee03ef47e034bc2f9b8940d36a29503471b15c0db9", + "rawGitBlob": "106a513be50176a859db6f4d700cd6bc6002ea6f", + "canonicalBytes": 208511, + "canonicalSHA256": "4c6953e1d4f0d2116bb2a4ee03ef47e034bc2f9b8940d36a29503471b15c0db9", + "canonicalGitBlob": "106a513be50176a859db6f4d700cd6bc6002ea6f", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "106a513be50176a859db6f4d700cd6bc6002ea6f", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p0_03_05.png", + "rawBytes": 208511, + "rawSHA256": "4c6953e1d4f0d2116bb2a4ee03ef47e034bc2f9b8940d36a29503471b15c0db9", + "rawGitBlob": "106a513be50176a859db6f4d700cd6bc6002ea6f", + "canonicalBytes": 208511, + "canonicalSHA256": "4c6953e1d4f0d2116bb2a4ee03ef47e034bc2f9b8940d36a29503471b15c0db9", + "canonicalGitBlob": "106a513be50176a859db6f4d700cd6bc6002ea6f", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "106a513be50176a859db6f4d700cd6bc6002ea6f", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p0_03_06.png", + "rawBytes": 208511, + "rawSHA256": "4c6953e1d4f0d2116bb2a4ee03ef47e034bc2f9b8940d36a29503471b15c0db9", + "rawGitBlob": "106a513be50176a859db6f4d700cd6bc6002ea6f", + "canonicalBytes": 208511, + "canonicalSHA256": "4c6953e1d4f0d2116bb2a4ee03ef47e034bc2f9b8940d36a29503471b15c0db9", + "canonicalGitBlob": "106a513be50176a859db6f4d700cd6bc6002ea6f", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "106a513be50176a859db6f4d700cd6bc6002ea6f", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p0_03_07.png", + "rawBytes": 208511, + "rawSHA256": "4c6953e1d4f0d2116bb2a4ee03ef47e034bc2f9b8940d36a29503471b15c0db9", + "rawGitBlob": "106a513be50176a859db6f4d700cd6bc6002ea6f", + "canonicalBytes": 208511, + "canonicalSHA256": "4c6953e1d4f0d2116bb2a4ee03ef47e034bc2f9b8940d36a29503471b15c0db9", + "canonicalGitBlob": "106a513be50176a859db6f4d700cd6bc6002ea6f", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "106a513be50176a859db6f4d700cd6bc6002ea6f", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p0_03_08.png", + "rawBytes": 208511, + "rawSHA256": "4c6953e1d4f0d2116bb2a4ee03ef47e034bc2f9b8940d36a29503471b15c0db9", + "rawGitBlob": "106a513be50176a859db6f4d700cd6bc6002ea6f", + "canonicalBytes": 208511, + "canonicalSHA256": "4c6953e1d4f0d2116bb2a4ee03ef47e034bc2f9b8940d36a29503471b15c0db9", + "canonicalGitBlob": "106a513be50176a859db6f4d700cd6bc6002ea6f", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "106a513be50176a859db6f4d700cd6bc6002ea6f", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p0_03_09.png", + "rawBytes": 208511, + "rawSHA256": "4c6953e1d4f0d2116bb2a4ee03ef47e034bc2f9b8940d36a29503471b15c0db9", + "rawGitBlob": "106a513be50176a859db6f4d700cd6bc6002ea6f", + "canonicalBytes": 208511, + "canonicalSHA256": "4c6953e1d4f0d2116bb2a4ee03ef47e034bc2f9b8940d36a29503471b15c0db9", + "canonicalGitBlob": "106a513be50176a859db6f4d700cd6bc6002ea6f", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "106a513be50176a859db6f4d700cd6bc6002ea6f", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p0_04.png", + "rawBytes": 208511, + "rawSHA256": "4c6953e1d4f0d2116bb2a4ee03ef47e034bc2f9b8940d36a29503471b15c0db9", + "rawGitBlob": "106a513be50176a859db6f4d700cd6bc6002ea6f", + "canonicalBytes": 208511, + "canonicalSHA256": "4c6953e1d4f0d2116bb2a4ee03ef47e034bc2f9b8940d36a29503471b15c0db9", + "canonicalGitBlob": "106a513be50176a859db6f4d700cd6bc6002ea6f", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "106a513be50176a859db6f4d700cd6bc6002ea6f", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p0_05.png", + "rawBytes": 208511, + "rawSHA256": "4c6953e1d4f0d2116bb2a4ee03ef47e034bc2f9b8940d36a29503471b15c0db9", + "rawGitBlob": "106a513be50176a859db6f4d700cd6bc6002ea6f", + "canonicalBytes": 208511, + "canonicalSHA256": "4c6953e1d4f0d2116bb2a4ee03ef47e034bc2f9b8940d36a29503471b15c0db9", + "canonicalGitBlob": "106a513be50176a859db6f4d700cd6bc6002ea6f", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "106a513be50176a859db6f4d700cd6bc6002ea6f", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p0_06_00.png", + "rawBytes": 228274, + "rawSHA256": "63cb5423e4de0b02c181e74cd34a76ee256184d3ef1140c5d13468528ad9a7a8", + "rawGitBlob": "80f16b19f544e8ed88b6ddfb440080889fd43c22", + "canonicalBytes": 228274, + "canonicalSHA256": "63cb5423e4de0b02c181e74cd34a76ee256184d3ef1140c5d13468528ad9a7a8", + "canonicalGitBlob": "80f16b19f544e8ed88b6ddfb440080889fd43c22", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "80f16b19f544e8ed88b6ddfb440080889fd43c22", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p0_06_01.png", + "rawBytes": 231072, + "rawSHA256": "bfca72a2c5d1b6ba019d37c4f3c739ff669dcb1f9dcaa733c59c42a732b97018", + "rawGitBlob": "5898dd848f46da29cde4bf5a2029e52fbcc8ffa7", + "canonicalBytes": 231072, + "canonicalSHA256": "bfca72a2c5d1b6ba019d37c4f3c739ff669dcb1f9dcaa733c59c42a732b97018", + "canonicalGitBlob": "5898dd848f46da29cde4bf5a2029e52fbcc8ffa7", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "5898dd848f46da29cde4bf5a2029e52fbcc8ffa7", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p0_06_02.png", + "rawBytes": 245105, + "rawSHA256": "1cbf02ca4de16400614e522d3be3da4b5924526e25d1480de4025b6c676e0d90", + "rawGitBlob": "dadf819e42bfcc3fc8718c8069accd96e1a9c823", + "canonicalBytes": 245105, + "canonicalSHA256": "1cbf02ca4de16400614e522d3be3da4b5924526e25d1480de4025b6c676e0d90", + "canonicalGitBlob": "dadf819e42bfcc3fc8718c8069accd96e1a9c823", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "dadf819e42bfcc3fc8718c8069accd96e1a9c823", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p0_06_03.png", + "rawBytes": 232967, + "rawSHA256": "554eb8436339ba70bbb0883586e5c54dac5e5ae11ff57c6106c985594281847e", + "rawGitBlob": "1b2518cb705e14df13cf2f5c2d46ae0fa68deff0", + "canonicalBytes": 232967, + "canonicalSHA256": "554eb8436339ba70bbb0883586e5c54dac5e5ae11ff57c6106c985594281847e", + "canonicalGitBlob": "1b2518cb705e14df13cf2f5c2d46ae0fa68deff0", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "1b2518cb705e14df13cf2f5c2d46ae0fa68deff0", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p0_06_04.png", + "rawBytes": 234520, + "rawSHA256": "af3ce9f500e30db33e68d48b67748b7d25783d680f0da8f51b9584f09f9f21c2", + "rawGitBlob": "b6f066922e4a3d9e6f53753278dd561b666723cd", + "canonicalBytes": 234520, + "canonicalSHA256": "af3ce9f500e30db33e68d48b67748b7d25783d680f0da8f51b9584f09f9f21c2", + "canonicalGitBlob": "b6f066922e4a3d9e6f53753278dd561b666723cd", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "b6f066922e4a3d9e6f53753278dd561b666723cd", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p0_06_05.png", + "rawBytes": 236605, + "rawSHA256": "4ba3d4f0da970a6ba9c0e9ca7bc67ba9ae9788dba1eee5d06dda8a59470adcab", + "rawGitBlob": "552b95c351ce4b49a1f3dfeea96244e5bf009fb6", + "canonicalBytes": 236605, + "canonicalSHA256": "4ba3d4f0da970a6ba9c0e9ca7bc67ba9ae9788dba1eee5d06dda8a59470adcab", + "canonicalGitBlob": "552b95c351ce4b49a1f3dfeea96244e5bf009fb6", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "552b95c351ce4b49a1f3dfeea96244e5bf009fb6", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p0_06_06.png", + "rawBytes": 236531, + "rawSHA256": "99960a86896834a060c1695458f7a03b98182d14c482c9962698813679a9da0b", + "rawGitBlob": "440232d6f529fac3ca6fab699da4a76a1e90182e", + "canonicalBytes": 236531, + "canonicalSHA256": "99960a86896834a060c1695458f7a03b98182d14c482c9962698813679a9da0b", + "canonicalGitBlob": "440232d6f529fac3ca6fab699da4a76a1e90182e", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "440232d6f529fac3ca6fab699da4a76a1e90182e", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p0_06_07.png", + "rawBytes": 233304, + "rawSHA256": "40a772e63cdeab75031898e15f2c2694e549321800c70b4a86994100e766e3b2", + "rawGitBlob": "59b1c33c386817e143cd787270cf619432fff571", + "canonicalBytes": 233304, + "canonicalSHA256": "40a772e63cdeab75031898e15f2c2694e549321800c70b4a86994100e766e3b2", + "canonicalGitBlob": "59b1c33c386817e143cd787270cf619432fff571", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "59b1c33c386817e143cd787270cf619432fff571", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p0_06_08.png", + "rawBytes": 233304, + "rawSHA256": "40a772e63cdeab75031898e15f2c2694e549321800c70b4a86994100e766e3b2", + "rawGitBlob": "59b1c33c386817e143cd787270cf619432fff571", + "canonicalBytes": 233304, + "canonicalSHA256": "40a772e63cdeab75031898e15f2c2694e549321800c70b4a86994100e766e3b2", + "canonicalGitBlob": "59b1c33c386817e143cd787270cf619432fff571", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "59b1c33c386817e143cd787270cf619432fff571", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p0_06_09.png", + "rawBytes": 233304, + "rawSHA256": "40a772e63cdeab75031898e15f2c2694e549321800c70b4a86994100e766e3b2", + "rawGitBlob": "59b1c33c386817e143cd787270cf619432fff571", + "canonicalBytes": 233304, + "canonicalSHA256": "40a772e63cdeab75031898e15f2c2694e549321800c70b4a86994100e766e3b2", + "canonicalGitBlob": "59b1c33c386817e143cd787270cf619432fff571", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "59b1c33c386817e143cd787270cf619432fff571", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p0_06_10.png", + "rawBytes": 233304, + "rawSHA256": "40a772e63cdeab75031898e15f2c2694e549321800c70b4a86994100e766e3b2", + "rawGitBlob": "59b1c33c386817e143cd787270cf619432fff571", + "canonicalBytes": 233304, + "canonicalSHA256": "40a772e63cdeab75031898e15f2c2694e549321800c70b4a86994100e766e3b2", + "canonicalGitBlob": "59b1c33c386817e143cd787270cf619432fff571", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "59b1c33c386817e143cd787270cf619432fff571", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p0_07.png", + "rawBytes": 233304, + "rawSHA256": "40a772e63cdeab75031898e15f2c2694e549321800c70b4a86994100e766e3b2", + "rawGitBlob": "59b1c33c386817e143cd787270cf619432fff571", + "canonicalBytes": 233304, + "canonicalSHA256": "40a772e63cdeab75031898e15f2c2694e549321800c70b4a86994100e766e3b2", + "canonicalGitBlob": "59b1c33c386817e143cd787270cf619432fff571", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "59b1c33c386817e143cd787270cf619432fff571", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p1_00.png", + "rawBytes": 235816, + "rawSHA256": "30678a7cf6edc046240ceed8995ca7153e6041c8710849b27970801058da147c", + "rawGitBlob": "84113d73e7c2749798d3ad392e7b597a5835b75c", + "canonicalBytes": 235816, + "canonicalSHA256": "30678a7cf6edc046240ceed8995ca7153e6041c8710849b27970801058da147c", + "canonicalGitBlob": "84113d73e7c2749798d3ad392e7b597a5835b75c", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "84113d73e7c2749798d3ad392e7b597a5835b75c", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p1_01.png", + "rawBytes": 235816, + "rawSHA256": "30678a7cf6edc046240ceed8995ca7153e6041c8710849b27970801058da147c", + "rawGitBlob": "84113d73e7c2749798d3ad392e7b597a5835b75c", + "canonicalBytes": 235816, + "canonicalSHA256": "30678a7cf6edc046240ceed8995ca7153e6041c8710849b27970801058da147c", + "canonicalGitBlob": "84113d73e7c2749798d3ad392e7b597a5835b75c", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "84113d73e7c2749798d3ad392e7b597a5835b75c", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p1_02.png", + "rawBytes": 235816, + "rawSHA256": "30678a7cf6edc046240ceed8995ca7153e6041c8710849b27970801058da147c", + "rawGitBlob": "84113d73e7c2749798d3ad392e7b597a5835b75c", + "canonicalBytes": 235816, + "canonicalSHA256": "30678a7cf6edc046240ceed8995ca7153e6041c8710849b27970801058da147c", + "canonicalGitBlob": "84113d73e7c2749798d3ad392e7b597a5835b75c", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "84113d73e7c2749798d3ad392e7b597a5835b75c", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p1_03_00.png", + "rawBytes": 208019, + "rawSHA256": "c46747b93eb9b8161f3a4e86ec8621bdb3b1bcd933572dc5c6b6d28dfece8db0", + "rawGitBlob": "f226c2e6631c446b63c8a680beed6602b11c3c57", + "canonicalBytes": 208019, + "canonicalSHA256": "c46747b93eb9b8161f3a4e86ec8621bdb3b1bcd933572dc5c6b6d28dfece8db0", + "canonicalGitBlob": "f226c2e6631c446b63c8a680beed6602b11c3c57", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "f226c2e6631c446b63c8a680beed6602b11c3c57", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p1_03_01.png", + "rawBytes": 208019, + "rawSHA256": "c46747b93eb9b8161f3a4e86ec8621bdb3b1bcd933572dc5c6b6d28dfece8db0", + "rawGitBlob": "f226c2e6631c446b63c8a680beed6602b11c3c57", + "canonicalBytes": 208019, + "canonicalSHA256": "c46747b93eb9b8161f3a4e86ec8621bdb3b1bcd933572dc5c6b6d28dfece8db0", + "canonicalGitBlob": "f226c2e6631c446b63c8a680beed6602b11c3c57", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "f226c2e6631c446b63c8a680beed6602b11c3c57", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p1_03_02.png", + "rawBytes": 208019, + "rawSHA256": "c46747b93eb9b8161f3a4e86ec8621bdb3b1bcd933572dc5c6b6d28dfece8db0", + "rawGitBlob": "f226c2e6631c446b63c8a680beed6602b11c3c57", + "canonicalBytes": 208019, + "canonicalSHA256": "c46747b93eb9b8161f3a4e86ec8621bdb3b1bcd933572dc5c6b6d28dfece8db0", + "canonicalGitBlob": "f226c2e6631c446b63c8a680beed6602b11c3c57", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "f226c2e6631c446b63c8a680beed6602b11c3c57", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p1_03_03.png", + "rawBytes": 208019, + "rawSHA256": "c46747b93eb9b8161f3a4e86ec8621bdb3b1bcd933572dc5c6b6d28dfece8db0", + "rawGitBlob": "f226c2e6631c446b63c8a680beed6602b11c3c57", + "canonicalBytes": 208019, + "canonicalSHA256": "c46747b93eb9b8161f3a4e86ec8621bdb3b1bcd933572dc5c6b6d28dfece8db0", + "canonicalGitBlob": "f226c2e6631c446b63c8a680beed6602b11c3c57", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "f226c2e6631c446b63c8a680beed6602b11c3c57", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p1_03_04.png", + "rawBytes": 208019, + "rawSHA256": "c46747b93eb9b8161f3a4e86ec8621bdb3b1bcd933572dc5c6b6d28dfece8db0", + "rawGitBlob": "f226c2e6631c446b63c8a680beed6602b11c3c57", + "canonicalBytes": 208019, + "canonicalSHA256": "c46747b93eb9b8161f3a4e86ec8621bdb3b1bcd933572dc5c6b6d28dfece8db0", + "canonicalGitBlob": "f226c2e6631c446b63c8a680beed6602b11c3c57", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "f226c2e6631c446b63c8a680beed6602b11c3c57", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p1_03_05.png", + "rawBytes": 208019, + "rawSHA256": "c46747b93eb9b8161f3a4e86ec8621bdb3b1bcd933572dc5c6b6d28dfece8db0", + "rawGitBlob": "f226c2e6631c446b63c8a680beed6602b11c3c57", + "canonicalBytes": 208019, + "canonicalSHA256": "c46747b93eb9b8161f3a4e86ec8621bdb3b1bcd933572dc5c6b6d28dfece8db0", + "canonicalGitBlob": "f226c2e6631c446b63c8a680beed6602b11c3c57", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "f226c2e6631c446b63c8a680beed6602b11c3c57", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p1_03_06.png", + "rawBytes": 208019, + "rawSHA256": "c46747b93eb9b8161f3a4e86ec8621bdb3b1bcd933572dc5c6b6d28dfece8db0", + "rawGitBlob": "f226c2e6631c446b63c8a680beed6602b11c3c57", + "canonicalBytes": 208019, + "canonicalSHA256": "c46747b93eb9b8161f3a4e86ec8621bdb3b1bcd933572dc5c6b6d28dfece8db0", + "canonicalGitBlob": "f226c2e6631c446b63c8a680beed6602b11c3c57", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "f226c2e6631c446b63c8a680beed6602b11c3c57", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p1_03_07.png", + "rawBytes": 208019, + "rawSHA256": "c46747b93eb9b8161f3a4e86ec8621bdb3b1bcd933572dc5c6b6d28dfece8db0", + "rawGitBlob": "f226c2e6631c446b63c8a680beed6602b11c3c57", + "canonicalBytes": 208019, + "canonicalSHA256": "c46747b93eb9b8161f3a4e86ec8621bdb3b1bcd933572dc5c6b6d28dfece8db0", + "canonicalGitBlob": "f226c2e6631c446b63c8a680beed6602b11c3c57", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "f226c2e6631c446b63c8a680beed6602b11c3c57", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p1_03_08.png", + "rawBytes": 208019, + "rawSHA256": "c46747b93eb9b8161f3a4e86ec8621bdb3b1bcd933572dc5c6b6d28dfece8db0", + "rawGitBlob": "f226c2e6631c446b63c8a680beed6602b11c3c57", + "canonicalBytes": 208019, + "canonicalSHA256": "c46747b93eb9b8161f3a4e86ec8621bdb3b1bcd933572dc5c6b6d28dfece8db0", + "canonicalGitBlob": "f226c2e6631c446b63c8a680beed6602b11c3c57", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "f226c2e6631c446b63c8a680beed6602b11c3c57", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p1_03_09.png", + "rawBytes": 208019, + "rawSHA256": "c46747b93eb9b8161f3a4e86ec8621bdb3b1bcd933572dc5c6b6d28dfece8db0", + "rawGitBlob": "f226c2e6631c446b63c8a680beed6602b11c3c57", + "canonicalBytes": 208019, + "canonicalSHA256": "c46747b93eb9b8161f3a4e86ec8621bdb3b1bcd933572dc5c6b6d28dfece8db0", + "canonicalGitBlob": "f226c2e6631c446b63c8a680beed6602b11c3c57", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "f226c2e6631c446b63c8a680beed6602b11c3c57", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p1_04.png", + "rawBytes": 208019, + "rawSHA256": "c46747b93eb9b8161f3a4e86ec8621bdb3b1bcd933572dc5c6b6d28dfece8db0", + "rawGitBlob": "f226c2e6631c446b63c8a680beed6602b11c3c57", + "canonicalBytes": 208019, + "canonicalSHA256": "c46747b93eb9b8161f3a4e86ec8621bdb3b1bcd933572dc5c6b6d28dfece8db0", + "canonicalGitBlob": "f226c2e6631c446b63c8a680beed6602b11c3c57", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "f226c2e6631c446b63c8a680beed6602b11c3c57", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p1_05.png", + "rawBytes": 208019, + "rawSHA256": "c46747b93eb9b8161f3a4e86ec8621bdb3b1bcd933572dc5c6b6d28dfece8db0", + "rawGitBlob": "f226c2e6631c446b63c8a680beed6602b11c3c57", + "canonicalBytes": 208019, + "canonicalSHA256": "c46747b93eb9b8161f3a4e86ec8621bdb3b1bcd933572dc5c6b6d28dfece8db0", + "canonicalGitBlob": "f226c2e6631c446b63c8a680beed6602b11c3c57", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "f226c2e6631c446b63c8a680beed6602b11c3c57", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p1_06_00.png", + "rawBytes": 223722, + "rawSHA256": "3eef0bf4826fe4fa5befd88bf338bb864cf133ef3025e625a19ba6878116a2f8", + "rawGitBlob": "e7c3e781c3f93a34ef37dd0a0776572b34fc6e41", + "canonicalBytes": 223722, + "canonicalSHA256": "3eef0bf4826fe4fa5befd88bf338bb864cf133ef3025e625a19ba6878116a2f8", + "canonicalGitBlob": "e7c3e781c3f93a34ef37dd0a0776572b34fc6e41", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "e7c3e781c3f93a34ef37dd0a0776572b34fc6e41", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p1_06_01.png", + "rawBytes": 226594, + "rawSHA256": "ca781679f0d36370950e9381a9a91a7168d1c4b9c6b01c01e8f9aee2a24db20b", + "rawGitBlob": "9e061ab99ca7e726c257055f737a2bf86fae7bfe", + "canonicalBytes": 226594, + "canonicalSHA256": "ca781679f0d36370950e9381a9a91a7168d1c4b9c6b01c01e8f9aee2a24db20b", + "canonicalGitBlob": "9e061ab99ca7e726c257055f737a2bf86fae7bfe", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "9e061ab99ca7e726c257055f737a2bf86fae7bfe", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p1_06_02.png", + "rawBytes": 241175, + "rawSHA256": "9aae7ae4ea32cb5f7d980d3631d754a76e72e225fcfb523f6a54f0b4db195d61", + "rawGitBlob": "4cbe0ce61a135a0f256c6b5d606a0bb07cd8abed", + "canonicalBytes": 241175, + "canonicalSHA256": "9aae7ae4ea32cb5f7d980d3631d754a76e72e225fcfb523f6a54f0b4db195d61", + "canonicalGitBlob": "4cbe0ce61a135a0f256c6b5d606a0bb07cd8abed", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "4cbe0ce61a135a0f256c6b5d606a0bb07cd8abed", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p1_06_03.png", + "rawBytes": 228440, + "rawSHA256": "61dcb99b917b497409ac2727e99c85a2656570c4009905007bd9b2c41365b4f4", + "rawGitBlob": "bb7ddd595c528710f6b425da34759c395f1d6476", + "canonicalBytes": 228440, + "canonicalSHA256": "61dcb99b917b497409ac2727e99c85a2656570c4009905007bd9b2c41365b4f4", + "canonicalGitBlob": "bb7ddd595c528710f6b425da34759c395f1d6476", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "bb7ddd595c528710f6b425da34759c395f1d6476", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p1_06_04.png", + "rawBytes": 229941, + "rawSHA256": "5de3011b5712e736b15927f55cdd70fe3b21207881dcd9a49a2cd11175b7f22a", + "rawGitBlob": "e2b38df1c5ad1fe9a29f77f2b4d11cb1d0de2cbc", + "canonicalBytes": 229941, + "canonicalSHA256": "5de3011b5712e736b15927f55cdd70fe3b21207881dcd9a49a2cd11175b7f22a", + "canonicalGitBlob": "e2b38df1c5ad1fe9a29f77f2b4d11cb1d0de2cbc", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "e2b38df1c5ad1fe9a29f77f2b4d11cb1d0de2cbc", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p1_06_05.png", + "rawBytes": 232160, + "rawSHA256": "fb7a77e748784f8e1109603b1100a9fc72251bc97b46e3a642b343b82b30dab5", + "rawGitBlob": "c736b8492dc42c0f7c61f09c287286de4a760ebe", + "canonicalBytes": 232160, + "canonicalSHA256": "fb7a77e748784f8e1109603b1100a9fc72251bc97b46e3a642b343b82b30dab5", + "canonicalGitBlob": "c736b8492dc42c0f7c61f09c287286de4a760ebe", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "c736b8492dc42c0f7c61f09c287286de4a760ebe", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p1_06_06.png", + "rawBytes": 232087, + "rawSHA256": "84698eef610099bb5f964941e1272a44a12796bf8b4c64b4de4ce9ce0f6a609a", + "rawGitBlob": "39dd4d09f3417b9ab8dd94eae2b9522ef8600f2e", + "canonicalBytes": 232087, + "canonicalSHA256": "84698eef610099bb5f964941e1272a44a12796bf8b4c64b4de4ce9ce0f6a609a", + "canonicalGitBlob": "39dd4d09f3417b9ab8dd94eae2b9522ef8600f2e", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "39dd4d09f3417b9ab8dd94eae2b9522ef8600f2e", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p1_06_07.png", + "rawBytes": 232433, + "rawSHA256": "ab6c81aed2aece48c7830fc2c34583e7547293abab36f2486bc969496b706a8e", + "rawGitBlob": "5aeefe7e7ef5435ce3a9ecab5a6ff95c3f246642", + "canonicalBytes": 232433, + "canonicalSHA256": "ab6c81aed2aece48c7830fc2c34583e7547293abab36f2486bc969496b706a8e", + "canonicalGitBlob": "5aeefe7e7ef5435ce3a9ecab5a6ff95c3f246642", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "5aeefe7e7ef5435ce3a9ecab5a6ff95c3f246642", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p1_06_08.png", + "rawBytes": 232433, + "rawSHA256": "ab6c81aed2aece48c7830fc2c34583e7547293abab36f2486bc969496b706a8e", + "rawGitBlob": "5aeefe7e7ef5435ce3a9ecab5a6ff95c3f246642", + "canonicalBytes": 232433, + "canonicalSHA256": "ab6c81aed2aece48c7830fc2c34583e7547293abab36f2486bc969496b706a8e", + "canonicalGitBlob": "5aeefe7e7ef5435ce3a9ecab5a6ff95c3f246642", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "5aeefe7e7ef5435ce3a9ecab5a6ff95c3f246642", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p1_06_09.png", + "rawBytes": 232433, + "rawSHA256": "ab6c81aed2aece48c7830fc2c34583e7547293abab36f2486bc969496b706a8e", + "rawGitBlob": "5aeefe7e7ef5435ce3a9ecab5a6ff95c3f246642", + "canonicalBytes": 232433, + "canonicalSHA256": "ab6c81aed2aece48c7830fc2c34583e7547293abab36f2486bc969496b706a8e", + "canonicalGitBlob": "5aeefe7e7ef5435ce3a9ecab5a6ff95c3f246642", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "5aeefe7e7ef5435ce3a9ecab5a6ff95c3f246642", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p1_06_10.png", + "rawBytes": 232433, + "rawSHA256": "ab6c81aed2aece48c7830fc2c34583e7547293abab36f2486bc969496b706a8e", + "rawGitBlob": "5aeefe7e7ef5435ce3a9ecab5a6ff95c3f246642", + "canonicalBytes": 232433, + "canonicalSHA256": "ab6c81aed2aece48c7830fc2c34583e7547293abab36f2486bc969496b706a8e", + "canonicalGitBlob": "5aeefe7e7ef5435ce3a9ecab5a6ff95c3f246642", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "5aeefe7e7ef5435ce3a9ecab5a6ff95c3f246642", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "public/wt-collab/LiveSync/p1_07.png", + "rawBytes": 232433, + "rawSHA256": "ab6c81aed2aece48c7830fc2c34583e7547293abab36f2486bc969496b706a8e", + "rawGitBlob": "5aeefe7e7ef5435ce3a9ecab5a6ff95c3f246642", + "canonicalBytes": 232433, + "canonicalSHA256": "ab6c81aed2aece48c7830fc2c34583e7547293abab36f2486bc969496b706a8e", + "canonicalGitBlob": "5aeefe7e7ef5435ce3a9ecab5a6ff95c3f246642", + "checkoutNormalization": "exact", + "gitFilterProof": { + "actualRawFilteredBlob": "5aeefe7e7ef5435ce3a9ecab5a6ff95c3f246642", + "CRLFVariantFilteredBlob": null + } + }, + { + "path": "run-remotion.mjs", + "rawBytes": 8215, + "rawSHA256": "b4afeb635349079e34e317b7dd58017742d98e6dd4001fe0c40c07d8b2e0032f", + "rawGitBlob": "94a8eb2a182ad78e4ea5dbc10f382c9fd3569c74", + "canonicalBytes": 8063, + "canonicalSHA256": "cc9b8c248f2ab356b9122949b6bef12c91b4c05ccab8632fb9f47c859efe7794", + "canonicalGitBlob": "5a66409bb8165c799700f19326f865a362042cc5", + "checkoutNormalization": "crlf-to-lf", + "gitFilterProof": { + "actualRawFilteredBlob": "5a66409bb8165c799700f19326f865a362042cc5", + "CRLFVariantFilteredBlob": "5a66409bb8165c799700f19326f865a362042cc5" + } + }, + { + "path": "src/RoomOsRoot.jsx", + "rawBytes": 619, + "rawSHA256": "02f29ece3a695003b15e04f8736461f93df9b0762b6ace525c32b045c123fcb7", + "rawGitBlob": "e5ac2aff69c44d4cea8a2c905900dd34383ebfa1", + "canonicalBytes": 598, + "canonicalSHA256": "3cb721df0ff1b1b45b1a7adac7dac4399ab8b9fae66b4b9af776eef049f4921b", + "canonicalGitBlob": "3a115a705d6ac1df00844cd577469b02055d7810", + "checkoutNormalization": "crlf-to-lf", + "gitFilterProof": { + "actualRawFilteredBlob": "3a115a705d6ac1df00844cd577469b02055d7810", + "CRLFVariantFilteredBlob": "3a115a705d6ac1df00844cd577469b02055d7810" + } + }, + { + "path": "src/Root.jsx", + "rawBytes": 1422, + "rawSHA256": "144cf50ab6dccad3fb4c5730fac457ee5af7706934c1dc374d4bed941ee92d5d", + "rawGitBlob": "8caa7ed737eb620c3747ea228b7a82f1be1f0653", + "canonicalBytes": 1383, + "canonicalSHA256": "53a75e2e2600848bec73f41b6127c12f2df9775fc9049f2a9734e9a90b11da6d", + "canonicalGitBlob": "fccf576eedc34dcaab8ba2660acf9e7cd3b5afcf", + "checkoutNormalization": "crlf-to-lf", + "gitFilterProof": { + "actualRawFilteredBlob": "fccf576eedc34dcaab8ba2660acf9e7cd3b5afcf", + "CRLFVariantFilteredBlob": "fccf576eedc34dcaab8ba2660acf9e7cd3b5afcf" + } + }, + { + "path": "src/Walkthrough.jsx", + "rawBytes": 11510, + "rawSHA256": "ad3296780fa839817464cc90014b2551f42150f2b94733a1fd04b538f1e5d66f", + "rawGitBlob": "6fbbdfeecc6c5ea6831b72262b0f8614c1006fce", + "canonicalBytes": 11319, + "canonicalSHA256": "c45b9a99e81288cc43ac0660695bdbc8af9b609883ff0900ec8a6b487f754c20", + "canonicalGitBlob": "d77dc92fe972b44c15bab355e35b0af9f75363e5", + "checkoutNormalization": "crlf-to-lf", + "gitFilterProof": { + "actualRawFilteredBlob": "d77dc92fe972b44c15bab355e35b0af9f75363e5", + "CRLFVariantFilteredBlob": "d77dc92fe972b44c15bab355e35b0af9f75363e5" + } + }, + { + "path": "src/Walkthrough2up.jsx", + "rawBytes": 14528, + "rawSHA256": "5c3915bc6311adf33d90edae2c1aea94ee2f5314197db8a7de563ed86fccd192", + "rawGitBlob": "f828279ceeffa093c579463c23ab78d098fb4c2e", + "canonicalBytes": 14298, + "canonicalSHA256": "72075d84c9e4c6476979992a964566653c163f7e7e1a4d2050489e850afb386c", + "canonicalGitBlob": "9b010ab277975fa1171f0f3aada9875acac5c4ab", + "checkoutNormalization": "crlf-to-lf", + "gitFilterProof": { + "actualRawFilteredBlob": "9b010ab277975fa1171f0f3aada9875acac5c4ab", + "CRLFVariantFilteredBlob": "9b010ab277975fa1171f0f3aada9875acac5c4ab" + } + }, + { + "path": "src/WalkthroughGrid.jsx", + "rawBytes": 24261, + "rawSHA256": "956810a428f8e9f7189dd61abd44b1c9f2cbd0c636b8bcd3e0e0186983abc6c6", + "rawGitBlob": "6f62f6f0bd089b3a3a20c72789051794e349e383", + "canonicalBytes": 23531, + "canonicalSHA256": "f75d7128582b6107c521b7c3419248f6f727117278b6fc458bdfd7fae311b8a6", + "canonicalGitBlob": "a31bc4931d93fc4b1a56bebe4c249016066ba46e", + "checkoutNormalization": "crlf-to-lf", + "gitFilterProof": { + "actualRawFilteredBlob": "a31bc4931d93fc4b1a56bebe4c249016066ba46e", + "CRLFVariantFilteredBlob": "a31bc4931d93fc4b1a56bebe4c249016066ba46e" + } + }, + { + "path": "src/index.js", + "rawBytes": 117, + "rawSHA256": "f4d2074bee3d69c7673a211d9e4ed2764d8ee6accd46d9a96dc83b5ecd0519ae", + "rawGitBlob": "c4103a9c320a6ee787f006ca5be6451489a5edf0", + "canonicalBytes": 113, + "canonicalSHA256": "f179c548bb296a1147118065b0cb98739e2ea8967caeaef9d7999c9f5880010e", + "canonicalGitBlob": "122e3bd55a11531cc66e33c895bda2853e74ea3e", + "checkoutNormalization": "crlf-to-lf", + "gitFilterProof": { + "actualRawFilteredBlob": "122e3bd55a11531cc66e33c895bda2853e74ea3e", + "CRLFVariantFilteredBlob": "122e3bd55a11531cc66e33c895bda2853e74ea3e" + } + }, + { + "path": "src/roomos-index.js", + "rawBytes": 119, + "rawSHA256": "b02d89eec0c68a64f7128c48f3a8cc9abe4b47323ad25cbd74770c83d6480676", + "rawGitBlob": "9991e738d3a4cd8b2994e528fe8df51f83272759", + "canonicalBytes": 115, + "canonicalSHA256": "66847b8415e3faa03805107498446938abcd91709f6606fe6c976877f189a04c", + "canonicalGitBlob": "9ca50e518b3fca98d018f3c0f526622e8ff9071a", + "checkoutNormalization": "crlf-to-lf", + "gitFilterProof": { + "actualRawFilteredBlob": "9ca50e518b3fca98d018f3c0f526622e8ff9071a", + "CRLFVariantFilteredBlob": "9ca50e518b3fca98d018f3c0f526622e8ff9071a" + } + }, + { + "path": "src/walkthrough.collab.data.js", + "rawBytes": 61072, + "rawSHA256": "f6bee0827076bb5d08f77eeea81cc6d0ce427fa165128b6b6c279a513a4a06d4", + "rawGitBlob": "a13318afa4bda9f24e5f050e17bf62eed0c979a6", + "canonicalBytes": 61072, + "canonicalSHA256": "f6bee0827076bb5d08f77eeea81cc6d0ce427fa165128b6b6c279a513a4a06d4", + "canonicalGitBlob": "a13318afa4bda9f24e5f050e17bf62eed0c979a6", + "checkoutNormalization": "crlf-to-lf", + "gitFilterProof": { + "actualRawFilteredBlob": "a13318afa4bda9f24e5f050e17bf62eed0c979a6", + "CRLFVariantFilteredBlob": "a13318afa4bda9f24e5f050e17bf62eed0c979a6" + } + }, + { + "path": "src/walkthrough.data.js", + "rawBytes": 2307, + "rawSHA256": "4bb522982217ff452dea69c44e63706650cc1a3558cb461969222d448430d087", + "rawGitBlob": "1de868e83698e95cc3fc397a8bf3f0cabc59e06a", + "canonicalBytes": 2229, + "canonicalSHA256": "5b33c5566681b1853dc756ae8be0a8d80a5f48e05d7b8e683b67de8fc5899b58", + "canonicalGitBlob": "248e43945eb23c43279ed56b0a7d7a6dc5f8c8e4", + "checkoutNormalization": "crlf-to-lf", + "gitFilterProof": { + "actualRawFilteredBlob": "248e43945eb23c43279ed56b0a7d7a6dc5f8c8e4", + "CRLFVariantFilteredBlob": "248e43945eb23c43279ed56b0a7d7a6dc5f8c8e4" + } + }, + { + "path": "src/walkthrough.roomos.data.js", + "rawBytes": 37481, + "rawSHA256": "f193c1b30464274bcbf1a41daa9c092492f45531d90d63f1cc198602f5060941", + "rawGitBlob": "58552b90490990a44c15961841a67edcd9bf9de5", + "canonicalBytes": 36208, + "canonicalSHA256": "7698d275ab3ab4d21e92848d55a1211b857350b2b5ef23e75c5c6ee0fdcb1863", + "canonicalGitBlob": "f08faa12ca72c956729f538a82affead60deb88b", + "checkoutNormalization": "crlf-to-lf", + "gitFilterProof": { + "actualRawFilteredBlob": "f08faa12ca72c956729f538a82affead60deb88b", + "CRLFVariantFilteredBlob": "f08faa12ca72c956729f538a82affead60deb88b" + } + }, + { + "path": "src/walkthrough.visual.data.js", + "rawBytes": 5748, + "rawSHA256": "0241dae69dad76608edea2ee6ed2664c5236107c0fcc0b527eb4b9803c70cff1", + "rawGitBlob": "d51c7052f173a6e0817d053da5e30b82e4e16a95", + "canonicalBytes": 5539, + "canonicalSHA256": "7df11cf7fba8a772c4a12652516c0feb99dd8b4dca873b7d9b34bdc916d52ff3", + "canonicalGitBlob": "8b80dd527dd2249cada41d9c3c2e6f7da52f6605", + "checkoutNormalization": "crlf-to-lf", + "gitFilterProof": { + "actualRawFilteredBlob": "8b80dd527dd2249cada41d9c3c2e6f7da52f6605", + "CRLFVariantFilteredBlob": "8b80dd527dd2249cada41d9c3c2e6f7da52f6605" + } + }, + { + "path": "walkthrough.collab.mjs", + "rawBytes": 18112, + "rawSHA256": "0bdd6f4180fc83f4f160f20c9dd20b63bc567772f3f6fda3ef7955d86add7e2c", + "rawGitBlob": "7f85e28ef2698bfacaf44c356061f58344dfaf7b", + "canonicalBytes": 17776, + "canonicalSHA256": "61b7ec9519be81cb8fdcc6944d64e88cc7e6dd789a03aa4914e8c9b416e15ef3", + "canonicalGitBlob": "27f9b12ec53aeb4834dbe696c3ed50c333154459", + "checkoutNormalization": "crlf-to-lf", + "gitFilterProof": { + "actualRawFilteredBlob": "27f9b12ec53aeb4834dbe696c3ed50c333154459", + "CRLFVariantFilteredBlob": "27f9b12ec53aeb4834dbe696c3ed50c333154459" + } + }, + { + "path": "walkthrough.collab.specs.mjs", + "rawBytes": 5719, + "rawSHA256": "b35a04076067f484820fb668dec105f871d2036542dabec2c05789d5cb3f3ce4", + "rawGitBlob": "9e981a3863d1cfafe4594612ccd41165d6052265", + "canonicalBytes": 5611, + "canonicalSHA256": "c1f07732c1ef584a673cc9e1b724162e61f8b799ac4f3ef2076ec8ed9b19cc10", + "canonicalGitBlob": "40dc57e18bbeefd35f397ec7521a3209fd0eeed2", + "checkoutNormalization": "crlf-to-lf", + "gitFilterProof": { + "actualRawFilteredBlob": "40dc57e18bbeefd35f397ec7521a3209fd0eeed2", + "CRLFVariantFilteredBlob": "40dc57e18bbeefd35f397ec7521a3209fd0eeed2" + } + } + ] +} diff --git a/promotion/evidence/local-livesync-handoff-20260907/verify.py b/promotion/evidence/local-livesync-handoff-20260907/verify.py new file mode 100644 index 0000000..1baf17a --- /dev/null +++ b/promotion/evidence/local-livesync-handoff-20260907/verify.py @@ -0,0 +1,60 @@ +#!/usr/bin/env python3 +"""Check selected evidence bytes and optional source identities; standard library only.""" +import argparse +import hashlib +import json +from pathlib import Path, PurePosixPath + + +def read(path): + return json.loads(path.read_text(encoding="utf-8")) + + +def safe_path(root, relative): + parts = PurePosixPath(relative) + if not relative or "\\" in relative or ":" in relative or parts.is_absolute() or ".." in parts.parts: + raise ValueError("Unsafe manifest path") + candidate = root.joinpath(*parts.parts) + if root not in candidate.resolve().parents: + raise ValueError("Manifest path escapes its root") + return candidate + + +def digest(data): + return hashlib.sha256(data).hexdigest() + + +def main(): + parser = argparse.ArgumentParser(description=__doc__) + parser.add_argument("--source-root", type=Path, help="Optionally verify only the selected source files") + args = parser.parse_args() + root = Path(__file__).resolve().parent + rows = read(root / "manifest.json")["files"] + expected = {row["path"] for row in rows} + if len(expected) != len(rows): + raise ValueError("Duplicate packet paths") + actual = {p.relative_to(root).as_posix() for p in root.rglob("*") if p.is_file() and p != root / "manifest.json"} + if actual != expected: + raise ValueError("Packet file set differs from manifest") + for row in rows: + data = safe_path(root, row["path"]).read_bytes() + if len(data) != row["bytes"] or digest(data) != row["sha256"]: + raise ValueError("Packet bytes differ: " + row["path"]) + checked = 0 + if args.source_root is not None: + source = args.source_root.resolve(strict=True) + for row in read(root / "source-bindings.json")["files"]: + data = safe_path(source, row["path"]).read_bytes() + if row["checkoutNormalization"] == "crlf-to-lf": + data = data.replace(b"\r\n", b"\n") + elif row["checkoutNormalization"] != "exact": + raise ValueError("Unknown source byte policy") + if len(data) != row["canonicalBytes"] or digest(data) != row["canonicalSHA256"]: + raise ValueError("Selected source differs: " + row["path"]) + checked += 1 + print(json.dumps({"status": "PASS", "packetFiles": len(rows), "selectedSourceFiles": checked, + "scope": "Selected bytes only; no runtime, current CI, full repository or full grade certification."})) + + +if __name__ == "__main__": + main() diff --git a/public/wt-collab/LiveSync/p0_00.png b/public/wt-collab/LiveSync/p0_00.png index 91a90c7..af23ae3 100644 Binary files a/public/wt-collab/LiveSync/p0_00.png and b/public/wt-collab/LiveSync/p0_00.png differ diff --git a/public/wt-collab/LiveSync/p0_01.png b/public/wt-collab/LiveSync/p0_01.png index 9c96554..aa95f4f 100644 Binary files a/public/wt-collab/LiveSync/p0_01.png and b/public/wt-collab/LiveSync/p0_01.png differ diff --git a/public/wt-collab/LiveSync/p0_02.png b/public/wt-collab/LiveSync/p0_02.png index 9c96554..aa95f4f 100644 Binary files a/public/wt-collab/LiveSync/p0_02.png and b/public/wt-collab/LiveSync/p0_02.png differ diff --git a/public/wt-collab/LiveSync/p0_03_00.png b/public/wt-collab/LiveSync/p0_03_00.png index a2d2cfd..106a513 100644 Binary files a/public/wt-collab/LiveSync/p0_03_00.png and b/public/wt-collab/LiveSync/p0_03_00.png differ diff --git a/public/wt-collab/LiveSync/p0_03_01.png b/public/wt-collab/LiveSync/p0_03_01.png index a2d2cfd..106a513 100644 Binary files a/public/wt-collab/LiveSync/p0_03_01.png and b/public/wt-collab/LiveSync/p0_03_01.png differ diff --git a/public/wt-collab/LiveSync/p0_03_02.png b/public/wt-collab/LiveSync/p0_03_02.png index a2d2cfd..106a513 100644 Binary files a/public/wt-collab/LiveSync/p0_03_02.png and b/public/wt-collab/LiveSync/p0_03_02.png differ diff --git a/public/wt-collab/LiveSync/p0_03_03.png b/public/wt-collab/LiveSync/p0_03_03.png index a2d2cfd..106a513 100644 Binary files a/public/wt-collab/LiveSync/p0_03_03.png and b/public/wt-collab/LiveSync/p0_03_03.png differ diff --git a/public/wt-collab/LiveSync/p0_03_04.png b/public/wt-collab/LiveSync/p0_03_04.png index a2d2cfd..106a513 100644 Binary files a/public/wt-collab/LiveSync/p0_03_04.png and b/public/wt-collab/LiveSync/p0_03_04.png differ diff --git a/public/wt-collab/LiveSync/p0_03_05.png b/public/wt-collab/LiveSync/p0_03_05.png index a2d2cfd..106a513 100644 Binary files a/public/wt-collab/LiveSync/p0_03_05.png and b/public/wt-collab/LiveSync/p0_03_05.png differ diff --git a/public/wt-collab/LiveSync/p0_03_06.png b/public/wt-collab/LiveSync/p0_03_06.png index a2d2cfd..106a513 100644 Binary files a/public/wt-collab/LiveSync/p0_03_06.png and b/public/wt-collab/LiveSync/p0_03_06.png differ diff --git a/public/wt-collab/LiveSync/p0_03_07.png b/public/wt-collab/LiveSync/p0_03_07.png index a2d2cfd..106a513 100644 Binary files a/public/wt-collab/LiveSync/p0_03_07.png and b/public/wt-collab/LiveSync/p0_03_07.png differ diff --git a/public/wt-collab/LiveSync/p0_03_08.png b/public/wt-collab/LiveSync/p0_03_08.png index a2d2cfd..106a513 100644 Binary files a/public/wt-collab/LiveSync/p0_03_08.png and b/public/wt-collab/LiveSync/p0_03_08.png differ diff --git a/public/wt-collab/LiveSync/p0_03_09.png b/public/wt-collab/LiveSync/p0_03_09.png index a2d2cfd..106a513 100644 Binary files a/public/wt-collab/LiveSync/p0_03_09.png and b/public/wt-collab/LiveSync/p0_03_09.png differ diff --git a/public/wt-collab/LiveSync/p0_04.png b/public/wt-collab/LiveSync/p0_04.png index a2d2cfd..106a513 100644 Binary files a/public/wt-collab/LiveSync/p0_04.png and b/public/wt-collab/LiveSync/p0_04.png differ diff --git a/public/wt-collab/LiveSync/p0_05.png b/public/wt-collab/LiveSync/p0_05.png index a2d2cfd..106a513 100644 Binary files a/public/wt-collab/LiveSync/p0_05.png and b/public/wt-collab/LiveSync/p0_05.png differ diff --git a/public/wt-collab/LiveSync/p0_06_00.png b/public/wt-collab/LiveSync/p0_06_00.png index 033418f..80f16b1 100644 Binary files a/public/wt-collab/LiveSync/p0_06_00.png and b/public/wt-collab/LiveSync/p0_06_00.png differ diff --git a/public/wt-collab/LiveSync/p0_06_01.png b/public/wt-collab/LiveSync/p0_06_01.png index 9cef344..5898dd8 100644 Binary files a/public/wt-collab/LiveSync/p0_06_01.png and b/public/wt-collab/LiveSync/p0_06_01.png differ diff --git a/public/wt-collab/LiveSync/p0_06_02.png b/public/wt-collab/LiveSync/p0_06_02.png index 3557f1f..dadf819 100644 Binary files a/public/wt-collab/LiveSync/p0_06_02.png and b/public/wt-collab/LiveSync/p0_06_02.png differ diff --git a/public/wt-collab/LiveSync/p0_06_03.png b/public/wt-collab/LiveSync/p0_06_03.png index 7fc89b8..1b2518c 100644 Binary files a/public/wt-collab/LiveSync/p0_06_03.png and b/public/wt-collab/LiveSync/p0_06_03.png differ diff --git a/public/wt-collab/LiveSync/p0_06_04.png b/public/wt-collab/LiveSync/p0_06_04.png index 7f65723..b6f0669 100644 Binary files a/public/wt-collab/LiveSync/p0_06_04.png and b/public/wt-collab/LiveSync/p0_06_04.png differ diff --git a/public/wt-collab/LiveSync/p0_06_05.png b/public/wt-collab/LiveSync/p0_06_05.png index d1d367d..552b95c 100644 Binary files a/public/wt-collab/LiveSync/p0_06_05.png and b/public/wt-collab/LiveSync/p0_06_05.png differ diff --git a/public/wt-collab/LiveSync/p0_06_06.png b/public/wt-collab/LiveSync/p0_06_06.png index 740e60d..440232d 100644 Binary files a/public/wt-collab/LiveSync/p0_06_06.png and b/public/wt-collab/LiveSync/p0_06_06.png differ diff --git a/public/wt-collab/LiveSync/p0_06_07.png b/public/wt-collab/LiveSync/p0_06_07.png index 740e60d..59b1c33 100644 Binary files a/public/wt-collab/LiveSync/p0_06_07.png and b/public/wt-collab/LiveSync/p0_06_07.png differ diff --git a/public/wt-collab/LiveSync/p0_06_08.png b/public/wt-collab/LiveSync/p0_06_08.png index 740e60d..59b1c33 100644 Binary files a/public/wt-collab/LiveSync/p0_06_08.png and b/public/wt-collab/LiveSync/p0_06_08.png differ diff --git a/public/wt-collab/LiveSync/p0_06_09.png b/public/wt-collab/LiveSync/p0_06_09.png index 740e60d..59b1c33 100644 Binary files a/public/wt-collab/LiveSync/p0_06_09.png and b/public/wt-collab/LiveSync/p0_06_09.png differ diff --git a/public/wt-collab/LiveSync/p0_06_10.png b/public/wt-collab/LiveSync/p0_06_10.png index 740e60d..59b1c33 100644 Binary files a/public/wt-collab/LiveSync/p0_06_10.png and b/public/wt-collab/LiveSync/p0_06_10.png differ diff --git a/public/wt-collab/LiveSync/p0_07.png b/public/wt-collab/LiveSync/p0_07.png index 740e60d..59b1c33 100644 Binary files a/public/wt-collab/LiveSync/p0_07.png and b/public/wt-collab/LiveSync/p0_07.png differ diff --git a/public/wt-collab/LiveSync/p1_00.png b/public/wt-collab/LiveSync/p1_00.png index bc9cad3..84113d7 100644 Binary files a/public/wt-collab/LiveSync/p1_00.png and b/public/wt-collab/LiveSync/p1_00.png differ diff --git a/public/wt-collab/LiveSync/p1_01.png b/public/wt-collab/LiveSync/p1_01.png index bc9cad3..84113d7 100644 Binary files a/public/wt-collab/LiveSync/p1_01.png and b/public/wt-collab/LiveSync/p1_01.png differ diff --git a/public/wt-collab/LiveSync/p1_02.png b/public/wt-collab/LiveSync/p1_02.png index bc9cad3..84113d7 100644 Binary files a/public/wt-collab/LiveSync/p1_02.png and b/public/wt-collab/LiveSync/p1_02.png differ diff --git a/public/wt-collab/LiveSync/p1_03_00.png b/public/wt-collab/LiveSync/p1_03_00.png index 9ed8114..f226c2e 100644 Binary files a/public/wt-collab/LiveSync/p1_03_00.png and b/public/wt-collab/LiveSync/p1_03_00.png differ diff --git a/public/wt-collab/LiveSync/p1_03_01.png b/public/wt-collab/LiveSync/p1_03_01.png index 9ed8114..f226c2e 100644 Binary files a/public/wt-collab/LiveSync/p1_03_01.png and b/public/wt-collab/LiveSync/p1_03_01.png differ diff --git a/public/wt-collab/LiveSync/p1_03_02.png b/public/wt-collab/LiveSync/p1_03_02.png index 9ed8114..f226c2e 100644 Binary files a/public/wt-collab/LiveSync/p1_03_02.png and b/public/wt-collab/LiveSync/p1_03_02.png differ diff --git a/public/wt-collab/LiveSync/p1_03_03.png b/public/wt-collab/LiveSync/p1_03_03.png index 9ed8114..f226c2e 100644 Binary files a/public/wt-collab/LiveSync/p1_03_03.png and b/public/wt-collab/LiveSync/p1_03_03.png differ diff --git a/public/wt-collab/LiveSync/p1_03_04.png b/public/wt-collab/LiveSync/p1_03_04.png index 9ed8114..f226c2e 100644 Binary files a/public/wt-collab/LiveSync/p1_03_04.png and b/public/wt-collab/LiveSync/p1_03_04.png differ diff --git a/public/wt-collab/LiveSync/p1_03_05.png b/public/wt-collab/LiveSync/p1_03_05.png index 9ed8114..f226c2e 100644 Binary files a/public/wt-collab/LiveSync/p1_03_05.png and b/public/wt-collab/LiveSync/p1_03_05.png differ diff --git a/public/wt-collab/LiveSync/p1_03_06.png b/public/wt-collab/LiveSync/p1_03_06.png index 9ed8114..f226c2e 100644 Binary files a/public/wt-collab/LiveSync/p1_03_06.png and b/public/wt-collab/LiveSync/p1_03_06.png differ diff --git a/public/wt-collab/LiveSync/p1_03_07.png b/public/wt-collab/LiveSync/p1_03_07.png index 9ed8114..f226c2e 100644 Binary files a/public/wt-collab/LiveSync/p1_03_07.png and b/public/wt-collab/LiveSync/p1_03_07.png differ diff --git a/public/wt-collab/LiveSync/p1_03_08.png b/public/wt-collab/LiveSync/p1_03_08.png index 9ed8114..f226c2e 100644 Binary files a/public/wt-collab/LiveSync/p1_03_08.png and b/public/wt-collab/LiveSync/p1_03_08.png differ diff --git a/public/wt-collab/LiveSync/p1_03_09.png b/public/wt-collab/LiveSync/p1_03_09.png index 9ed8114..f226c2e 100644 Binary files a/public/wt-collab/LiveSync/p1_03_09.png and b/public/wt-collab/LiveSync/p1_03_09.png differ diff --git a/public/wt-collab/LiveSync/p1_04.png b/public/wt-collab/LiveSync/p1_04.png index 9ed8114..f226c2e 100644 Binary files a/public/wt-collab/LiveSync/p1_04.png and b/public/wt-collab/LiveSync/p1_04.png differ diff --git a/public/wt-collab/LiveSync/p1_05.png b/public/wt-collab/LiveSync/p1_05.png index 9ed8114..f226c2e 100644 Binary files a/public/wt-collab/LiveSync/p1_05.png and b/public/wt-collab/LiveSync/p1_05.png differ diff --git a/public/wt-collab/LiveSync/p1_06_00.png b/public/wt-collab/LiveSync/p1_06_00.png index 6d099f2..e7c3e78 100644 Binary files a/public/wt-collab/LiveSync/p1_06_00.png and b/public/wt-collab/LiveSync/p1_06_00.png differ diff --git a/public/wt-collab/LiveSync/p1_06_01.png b/public/wt-collab/LiveSync/p1_06_01.png index ef2df80..9e061ab 100644 Binary files a/public/wt-collab/LiveSync/p1_06_01.png and b/public/wt-collab/LiveSync/p1_06_01.png differ diff --git a/public/wt-collab/LiveSync/p1_06_02.png b/public/wt-collab/LiveSync/p1_06_02.png index 24e7b34..4cbe0ce 100644 Binary files a/public/wt-collab/LiveSync/p1_06_02.png and b/public/wt-collab/LiveSync/p1_06_02.png differ diff --git a/public/wt-collab/LiveSync/p1_06_03.png b/public/wt-collab/LiveSync/p1_06_03.png index d481238..bb7ddd5 100644 Binary files a/public/wt-collab/LiveSync/p1_06_03.png and b/public/wt-collab/LiveSync/p1_06_03.png differ diff --git a/public/wt-collab/LiveSync/p1_06_04.png b/public/wt-collab/LiveSync/p1_06_04.png index 3f0f127..e2b38df 100644 Binary files a/public/wt-collab/LiveSync/p1_06_04.png and b/public/wt-collab/LiveSync/p1_06_04.png differ diff --git a/public/wt-collab/LiveSync/p1_06_05.png b/public/wt-collab/LiveSync/p1_06_05.png index 9681a4b..c736b84 100644 Binary files a/public/wt-collab/LiveSync/p1_06_05.png and b/public/wt-collab/LiveSync/p1_06_05.png differ diff --git a/public/wt-collab/LiveSync/p1_06_06.png b/public/wt-collab/LiveSync/p1_06_06.png index 9681a4b..39dd4d0 100644 Binary files a/public/wt-collab/LiveSync/p1_06_06.png and b/public/wt-collab/LiveSync/p1_06_06.png differ diff --git a/public/wt-collab/LiveSync/p1_06_07.png b/public/wt-collab/LiveSync/p1_06_07.png index 9681a4b..5aeefe7 100644 Binary files a/public/wt-collab/LiveSync/p1_06_07.png and b/public/wt-collab/LiveSync/p1_06_07.png differ diff --git a/public/wt-collab/LiveSync/p1_06_08.png b/public/wt-collab/LiveSync/p1_06_08.png index 9681a4b..5aeefe7 100644 Binary files a/public/wt-collab/LiveSync/p1_06_08.png and b/public/wt-collab/LiveSync/p1_06_08.png differ diff --git a/public/wt-collab/LiveSync/p1_06_09.png b/public/wt-collab/LiveSync/p1_06_09.png index 9681a4b..5aeefe7 100644 Binary files a/public/wt-collab/LiveSync/p1_06_09.png and b/public/wt-collab/LiveSync/p1_06_09.png differ diff --git a/public/wt-collab/LiveSync/p1_06_10.png b/public/wt-collab/LiveSync/p1_06_10.png index 9681a4b..5aeefe7 100644 Binary files a/public/wt-collab/LiveSync/p1_06_10.png and b/public/wt-collab/LiveSync/p1_06_10.png differ diff --git a/public/wt-collab/LiveSync/p1_07.png b/public/wt-collab/LiveSync/p1_07.png index 9681a4b..5aeefe7 100644 Binary files a/public/wt-collab/LiveSync/p1_07.png and b/public/wt-collab/LiveSync/p1_07.png differ diff --git a/src/Walkthrough2up.jsx b/src/Walkthrough2up.jsx index 4fb1e22..9b010ab 100644 --- a/src/Walkthrough2up.jsx +++ b/src/Walkthrough2up.jsx @@ -50,13 +50,13 @@ const Ripple = ({ x, y, lf, accent }) => { return
; }; -const Chrome = ({ accent, label, acting }) => ( -
+const Chrome = ({ accent, label, acting, stacked = false }) => ( +
-
+
{label}
@@ -65,7 +65,7 @@ const Chrome = ({ accent, label, acting }) => ( ); // One browser window for a single pane (dimensions passed in, so 2-up and 3-up share this). -const PaneWindow = ({ left, top, paneW, paneH, accent, label, acting, img, prevImg, cursor, cursorOp, click, lf, fadeIn, cam, imgH, framed = true }) => ( +const PaneWindow = ({ left, top, paneW, paneH, accent, label, acting, img, prevImg, cursor, cursorOp, click, lf, fadeIn, cam, imgH, framed = true, stacked = false }) => (
- {framed && } + {framed && }
{/* camera container: img + cursor zoom/pan together so the cursor stays glued to the image */}
@@ -128,9 +128,14 @@ export const Walkthrough2up = ({ wt }) => { // FILL and the surplus height is cropped -- correct here because app content is // top-weighted, which is the same reason `cropVH` exists. const framed = wt.frame !== false; - const MAX_H = framed ? WT2_H - 230 : WT2_H; + const stacked = framed && N === 2 && wt.layout === "stacked"; + const chromeH = stacked ? 48 : CHROME_H; + const gap = stacked ? 20 : GAP; + const columns = stacked ? 1 : N; + // Two 424-pixel windows: y84..508 and y528..952, leaving the caption unchanged. + const MAX_H = stacked ? 376 : framed ? WT2_H - 230 : WT2_H; const margin = framed ? SIDE_MARGIN : 0; - let PANE_W = Math.floor((WT2_W - margin * 2 - GAP * (N - 1)) / N); + let PANE_W = Math.floor((WT2_W - margin * 2 - gap * (columns - 1)) / columns); let PANE_H = Math.round(PANE_W * cropVH / capVW); if (PANE_H > MAX_H) { PANE_H = MAX_H; @@ -139,9 +144,9 @@ export const Walkthrough2up = ({ wt }) => { if (framed) PANE_W = Math.round(PANE_H * capVW / cropVH); } const SCALE = PANE_W / capVW; // uniform cursor-coord scale - const rowW = PANE_W * N + GAP * (N - 1); + const rowW = PANE_W * columns + gap * (columns - 1); const startX = Math.round((WT2_W - rowW) / 2); // center the row horizontally - const winTop = framed + const winTop = stacked ? 84 : framed ? Math.max(116, Math.round((WT2_H - (CHROME_H + PANE_H)) / 2) - 4) : 0; @@ -171,7 +176,7 @@ export const Walkthrough2up = ({ wt }) => { ? { s: (step && step.zoomScale) || 1.9, fx: ps.zoom.x * SCALE, fy: ps.zoom.y * SCALE } : { s: 1, fx: PANE_W / 2, fy: PANE_H / 2 }; const tc = tgtOf(paneStep, cur); - const tp = tgtOf(prevPane, prev); + const tp = stacked && !prevPane ? tc : tgtOf(prevPane, prev); const ce = interpolate(lf, [6, 26], [0, 1], { extrapolateLeft: "clamp", extrapolateRight: "clamp", easing: Easing.inOut(Easing.cubic) }); const s = tp.s + (tc.s - tp.s) * ce; const fx = tp.fx + (tc.fx - tp.fx) * ce; @@ -187,26 +192,27 @@ export const Walkthrough2up = ({ wt }) => { {framed && ( -
+
🌱 -
{wt.title}
-
+
{wt.title}
+
Step {i + 1} / {steps.length}
- {N > 1 &&
· {N} clients, one shared backend
} + {N > 1 &&
· {N} clients{!stacked && ", one shared backend"}
}
)} {Array.from({ length: N }, (_, pi) => { const p = panes[pi] || {}; - const left = startX + pi * (PANE_W + GAP); + const left = stacked ? startX : startX + pi * (PANE_W + GAP); + const top = stacked ? winTop + pi * (chromeH + PANE_H + gap) : winTop; return ( ); })} diff --git a/src/walkthrough.collab.data.js b/src/walkthrough.collab.data.js index 2d94020..a13318a 100644 --- a/src/walkthrough.collab.data.js +++ b/src/walkthrough.collab.data.js @@ -1,12 +1,13 @@ -// AUTO-GENERATED by walkthrough.collab.mjs — do not edit by hand. +// Captured by walkthrough.collab.mjs. LiveSync presentation metadata is authored from the same preserved captures; no recapture. export const COLLAB_WALKTHROUGHS = [ { "id": "LiveSync", - "title": "Live Collaboration", + "title": "Local collaboration demo · fixed text · in-memory state", "accent": "#10b981", "vw": 1280, "vh": 600, - "cropVH": 360, + "cropVH": 264, + "frame": true, "paneLabels": [ "Client A", "Client B" @@ -16,16 +17,25 @@ export const COLLAB_WALKTHROUGHS = [ "caption": "Two clients, one shared board", "hold": 70, "burst": false, + "zoomScale": 1.7, "panes": [ { "img": "wt-collab/LiveSync/p0_00.png", "cursor": null, - "click": false + "click": false, + "zoom": { + "x": 640, + "y": 40.5 + } }, { "img": "wt-collab/LiveSync/p1_00.png", "cursor": null, - "click": false + "click": false, + "zoom": { + "x": 640, + "y": 40.5 + } } ] }, @@ -33,6 +43,7 @@ export const COLLAB_WALKTHROUGHS = [ "caption": "Client A types a new card", "hold": 60, "burst": false, + "zoomScale": 1.7, "panes": [ { "img": "wt-collab/LiveSync/p0_01.png", @@ -40,12 +51,20 @@ export const COLLAB_WALKTHROUGHS = [ "x": 537, "y": 99 }, - "click": false + "click": false, + "zoom": { + "x": 640, + "y": 40.5 + } }, { "img": "wt-collab/LiveSync/p1_01.png", "cursor": null, - "click": false + "click": false, + "zoom": { + "x": 640, + "y": 40.5 + } } ] }, @@ -53,6 +72,7 @@ export const COLLAB_WALKTHROUGHS = [ "caption": "Client A clicks Add", "hold": 54, "burst": false, + "zoomScale": 1.7, "panes": [ { "img": "wt-collab/LiveSync/p0_02.png", @@ -60,12 +80,20 @@ export const COLLAB_WALKTHROUGHS = [ "x": 834, "y": 99 }, - "click": true + "click": true, + "zoom": { + "x": 640, + "y": 40.5 + } }, { "img": "wt-collab/LiveSync/p1_02.png", "cursor": null, - "click": false + "click": false, + "zoom": { + "x": 640, + "y": 40.5 + } } ] }, @@ -73,6 +101,7 @@ export const COLLAB_WALKTHROUGHS = [ "caption": "Client A adds a card → Client B sees it live", "hold": 84, "burst": true, + "zoomScale": 1.7, "panes": [ { "imgs": [ @@ -87,11 +116,12 @@ export const COLLAB_WALKTHROUGHS = [ "wt-collab/LiveSync/p0_03_08.png", "wt-collab/LiveSync/p0_03_09.png" ], - "cursor": { - "x": 834, - "y": 99 - }, - "click": false + "cursor": null, + "click": false, + "zoom": { + "x": 640, + "y": 183 + } }, { "imgs": [ @@ -107,7 +137,11 @@ export const COLLAB_WALKTHROUGHS = [ "wt-collab/LiveSync/p1_03_09.png" ], "cursor": null, - "click": false + "click": false, + "zoom": { + "x": 640, + "y": 183 + } } ] }, @@ -115,16 +149,25 @@ export const COLLAB_WALKTHROUGHS = [ "caption": "Synced — both clients agree", "hold": 78, "burst": false, + "zoomScale": 1.7, "panes": [ { "img": "wt-collab/LiveSync/p0_04.png", "cursor": null, - "click": false + "click": false, + "zoom": { + "x": 640, + "y": 183 + } }, { "img": "wt-collab/LiveSync/p1_04.png", "cursor": null, - "click": false + "click": false, + "zoom": { + "x": 640, + "y": 183 + } } ] }, @@ -132,6 +175,7 @@ export const COLLAB_WALKTHROUGHS = [ "caption": "Client A asks the agent to act", "hold": 56, "burst": false, + "zoomScale": 1.7, "panes": [ { "img": "wt-collab/LiveSync/p0_05.png", @@ -139,12 +183,20 @@ export const COLLAB_WALKTHROUGHS = [ "x": 937, "y": 99 }, - "click": true + "click": true, + "zoom": { + "x": 640, + "y": 40.5 + } }, { "img": "wt-collab/LiveSync/p1_05.png", "cursor": null, - "click": false + "click": false, + "zoom": { + "x": 640, + "y": 40.5 + } } ] }, @@ -152,6 +204,7 @@ export const COLLAB_WALKTHROUGHS = [ "caption": "Server-led agent streams to every client", "hold": 90, "burst": true, + "zoomScale": 1.7, "panes": [ { "imgs": [ @@ -167,11 +220,12 @@ export const COLLAB_WALKTHROUGHS = [ "wt-collab/LiveSync/p0_06_09.png", "wt-collab/LiveSync/p0_06_10.png" ], - "cursor": { - "x": 937, - "y": 99 - }, - "click": false + "cursor": null, + "click": false, + "zoom": { + "x": 640, + "y": 265 + } }, { "imgs": [ @@ -188,7 +242,11 @@ export const COLLAB_WALKTHROUGHS = [ "wt-collab/LiveSync/p1_06_10.png" ], "cursor": null, - "click": false + "click": false, + "zoom": { + "x": 640, + "y": 265 + } } ] }, @@ -196,20 +254,30 @@ export const COLLAB_WALKTHROUGHS = [ "caption": "Every client converges on the same state", "hold": 96, "burst": false, + "zoomScale": 1.7, "panes": [ { "img": "wt-collab/LiveSync/p0_07.png", "cursor": null, - "click": false + "click": false, + "zoom": { + "x": 640, + "y": 265 + } }, { "img": "wt-collab/LiveSync/p1_07.png", "cursor": null, - "click": false + "click": false, + "zoom": { + "x": 640, + "y": 265 + } } ] } - ] + ], + "layout": "stacked" }, { "id": "LiveSync3", diff --git a/walkthrough.collab.mjs b/walkthrough.collab.mjs index 70a0aea..27f9b12 100644 --- a/walkthrough.collab.mjs +++ b/walkthrough.collab.mjs @@ -19,7 +19,7 @@ // src/walkthrough.collab.data.js (consumed by src/Walkthrough2up.jsx) // // # serve the demo app on :8930 first, then: -// node walkthrough.collab.mjs +// COLLAB_ONLY=LiveSync node walkthrough.collab.mjs import { chromium } from "playwright"; import { mkdirSync, writeFileSync, rmSync } from "node:fs"; import { fileURLToPath } from "node:url"; @@ -147,6 +147,10 @@ const run = async () => { // COLLAB_ONLY=NRsync,LiveSync re-captures just those specs and MERGES into the existing data // (iterate one walkthrough without re-running the others). No filter = full run + wipe. const ONLY = process.env.COLLAB_ONLY ? process.env.COLLAB_ONLY.split(",").map((s) => s.trim()) : null; + const invalid = ONLY?.filter((id) => !COLLAB_SPECS.some((spec) => spec.id === id)); + if (invalid?.length) { + throw new Error(`Unknown COLLAB_ONLY selector(s): ${invalid.map((id) => JSON.stringify(id)).join(", ")}. Choose: ${COLLAB_SPECS.map((spec) => spec.id).join(", ")}`); + } const specs = ONLY ? COLLAB_SPECS.filter((s) => ONLY.includes(s.id)) : COLLAB_SPECS; // The unfiltered run used to wipe EVERY capture in the repo with no prompt, so // a mistyped invocation -- e.g. passing the spec id as an argv the script does @@ -172,137 +176,146 @@ const run = async () => { const browser = await chromium.launch({ headless: true }); const out = []; - for (const spec of specs) { - const dir = join(PUB, spec.id); - // Per-spec retries (opt-in via `retries: N`) — each attempt wipes the frame dir and runs in - // FRESH contexts, so a retried capture never inherits a half-driven, poisoned UI on any pane. - const maxAttempts = 1 + (spec.retries || 0); - let steps = []; - for (let attempt = 1; attempt <= maxAttempts; attempt++) { - rmSync(dir, { recursive: true, force: true }); - mkdirSync(dir, { recursive: true }); + try { + for (const spec of specs) { + const dir = join(PUB, spec.id); + // Per-spec retries (opt-in via `retries: N`) — each attempt wipes the frame dir and runs in + // FRESH contexts, so a retried capture never inherits a half-driven, poisoned UI on any pane. + const maxAttempts = 1 + (spec.retries || 0); + let steps = []; + for (let attempt = 1; attempt <= maxAttempts; attempt++) { + rmSync(dir, { recursive: true, force: true }); + mkdirSync(dir, { recursive: true }); - // ONE context per pane => fully independent clients (separate cookies/storage/socket). - const contexts = []; - const pages = []; - for (const pane of spec.panes) { - // deviceScaleFactor is per-spec because it is not free: at dsf 2 in - // headless Chromium, xterm.js's canvas renderer paints NOTHING -- an IDE - // capture ran a real pytest whose output existed in the server-side buffer - // but every frame showed a blank terminal (decorations still drew, because - // those are DOM). Proven by a one-variable A/B: same page, same commands, - // dsf 2 blank / dsf 1 fully rendered. Specs that show a terminal need - // `dsf: 1` and trade away Retina sharpness for text that exists. - const ctx = await browser.newContext({ viewport: { width: spec.vw || VW, height: spec.vh || VH }, deviceScaleFactor: spec.dsf || 2 }); - const page = await ctx.newPage(); - page.setDefaultTimeout(60000); - contexts.push(ctx); - pages.push(page); - } - // Navigate every pane to its own URL. - const attemptRunId = RUNID + (attempt > 1 ? "X" + attempt : ""); // fresh room on EACH attempt - await Promise.all(pages.map(async (page, k) => { - const pane = spec.panes[k]; - if (pane.navDelay) await page.waitForTimeout(pane.navDelay); // stagger (e.g. create-then-join) - await page.goto(pane.url.replace(/__RUNID__/g, attemptRunId), { waitUntil: "domcontentloaded" }).catch(() => {}); - })); - await Promise.all(pages.map((page) => sleep(page, 1200))); + // ONE context per pane => fully independent clients (separate cookies/storage/socket). + const contexts = []; + const pages = []; + let ok = false; + let attemptError; + try { + for (const pane of spec.panes) { + // deviceScaleFactor is per-spec because it is not free: at dsf 2 in + // headless Chromium, xterm.js's canvas renderer paints NOTHING -- an IDE + // capture ran a real pytest whose output existed in the server-side buffer + // but every frame showed a blank terminal (decorations still drew, because + // those are DOM). Proven by a one-variable A/B: same page, same commands, + // dsf 2 blank / dsf 1 fully rendered. Specs that show a terminal need + // `dsf: 1` and trade away Retina sharpness for text that exists. + const ctx = await browser.newContext({ viewport: { width: spec.vw || VW, height: spec.vh || VH }, deviceScaleFactor: spec.dsf || 2 }); + const page = await ctx.newPage(); + page.setDefaultTimeout(60000); + contexts.push(ctx); + pages.push(page); + } + // Navigate every pane to its own URL. + const attemptRunId = RUNID + (attempt > 1 ? "X" + attempt : ""); // fresh room on EACH attempt + await Promise.all(pages.map(async (page, k) => { + const pane = spec.panes[k]; + if (pane.navDelay) await page.waitForTimeout(pane.navDelay); // stagger (e.g. create-then-join) + await page.goto(pane.url.replace(/__RUNID__/g, attemptRunId), { waitUntil: "domcontentloaded" }); + })); + await Promise.all(pages.map((page) => sleep(page, 1200))); - steps = []; - let lastCursorPane = 0; // which pane the most recent `act` touched (the ACTING pane) - let ok = false; - try { - let n = 0; - for (const op of spec.steps) { - if (op.cap && op.burst) { - // BURST: rapidly capture a SEQUENCE on EVERY pane at the same wall-clock ticks so - // the rendered clip shows real cross-client motion — the card painting in A, then - // syncing into B; the agent text streaming into BOTH at once. - const every = op.burst.every || 300; - const count = Math.max(2, Math.round((op.burst.ms || 2800) / every)); - const actPane = op.cursorPane != null ? op.cursorPane : lastCursorPane; - const cur = await cursorOf(pages[actPane], op.cursor); - const zoom = op.zoom ? await Promise.all(pages.map((pg) => focusOf(pg, op.zoom))) : null; - const paneImgs = spec.panes.map(() => []); - for (let b = 0; b < count; b++) { - const bb = String(b).padStart(2, "0"); - // Screenshot all panes as close to the same instant as possible. - await Promise.all(pages.map(async (page, pi) => { - const fn = `p${pi}_${String(n).padStart(2, "0")}_${bb}.png`; - await page.screenshot({ path: join(dir, fn) }); - paneImgs[pi].push(`wt-collab/${spec.id}/${fn}`); - })); - if (b < count - 1) await Promise.all(pages.map((page) => sleep(page, every))); - } - const panes = spec.panes.map((_, pi) => ({ - imgs: paneImgs[pi], - cursor: pi === actPane ? cur : null, - click: pi === actPane ? !!op.click : false, - zoom: zoom ? zoom[pi] : null, - })); - steps.push({ caption: op.caption || op.cap, hold: op.hold || 78, burst: true, zoomScale: op.zoomScale || null, panes }); - console.log(` ${spec.id} burst ${n}: ${count} frames x ${spec.panes.length} panes — ${op.caption || op.cap}`); - n++; - } else if (op.cap) { - const actPane = op.cursorPane != null ? op.cursorPane : lastCursorPane; - const cur = await cursorOf(pages[actPane], op.cursor); - const zoom = op.zoom ? await Promise.all(pages.map((pg) => focusOf(pg, op.zoom))) : null; - await Promise.all(pages.map((page) => sleep(page, 300))); - const panes = []; - for (let pi = 0; pi < spec.panes.length; pi++) { - const name = `p${pi}_${String(n).padStart(2, "0")}.png`; - await pages[pi].screenshot({ path: join(dir, name) }); - panes.push({ - img: `wt-collab/${spec.id}/${name}`, + steps = []; + let lastCursorPane = 0; // which pane the most recent `act` touched (the ACTING pane) + let n = 0; + for (const op of spec.steps) { + if (op.cap && op.burst) { + // BURST: rapidly capture a SEQUENCE on EVERY pane at the same wall-clock ticks so + // the rendered clip shows real cross-client motion — the card painting in A, then + // syncing into B; the agent text streaming into BOTH at once. + const every = op.burst.every || 300; + const count = Math.max(2, Math.round((op.burst.ms || 2800) / every)); + const actPane = op.cursorPane != null ? op.cursorPane : lastCursorPane; + const cur = await cursorOf(pages[actPane], op.cursor); + const zoom = op.zoom ? await Promise.all(pages.map((pg) => focusOf(pg, op.zoom))) : null; + const paneImgs = spec.panes.map(() => []); + for (let b = 0; b < count; b++) { + const bb = String(b).padStart(2, "0"); + // Screenshot all panes as close to the same instant as possible. + await Promise.all(pages.map(async (page, pi) => { + const fn = `p${pi}_${String(n).padStart(2, "0")}_${bb}.png`; + await page.screenshot({ path: join(dir, fn) }); + paneImgs[pi].push(`wt-collab/${spec.id}/${fn}`); + })); + if (b < count - 1) await Promise.all(pages.map((page) => sleep(page, every))); + } + const panes = spec.panes.map((_, pi) => ({ + imgs: paneImgs[pi], cursor: pi === actPane ? cur : null, click: pi === actPane ? !!op.click : false, zoom: zoom ? zoom[pi] : null, - }); + })); + steps.push({ caption: op.caption || op.cap, hold: op.hold || 78, burst: true, zoomScale: op.zoomScale || null, panes }); + console.log(` ${spec.id} burst ${n}: ${count} frames x ${spec.panes.length} panes — ${op.caption || op.cap}`); + n++; + } else if (op.cap) { + const actPane = op.cursorPane != null ? op.cursorPane : lastCursorPane; + const cur = await cursorOf(pages[actPane], op.cursor); + const zoom = op.zoom ? await Promise.all(pages.map((pg) => focusOf(pg, op.zoom))) : null; + await Promise.all(pages.map((page) => sleep(page, 300))); + const panes = []; + for (let pi = 0; pi < spec.panes.length; pi++) { + const name = `p${pi}_${String(n).padStart(2, "0")}.png`; + await pages[pi].screenshot({ path: join(dir, name) }); + panes.push({ + img: `wt-collab/${spec.id}/${name}`, + cursor: pi === actPane ? cur : null, + click: pi === actPane ? !!op.click : false, + zoom: zoom ? zoom[pi] : null, + }); + } + steps.push({ caption: op.caption || op.cap, hold: op.hold || DEFAULT_HOLD, burst: false, zoomScale: op.zoomScale || null, panes }); + console.log(` ${spec.id} cap ${n}: ${op.caption || op.cap}`); + n++; + } else { + // ACTION on a single pane. + const pi = op.pane != null ? op.pane : 0; + lastCursorPane = pi; + await doAct(pages[pi], op); } - steps.push({ caption: op.caption || op.cap, hold: op.hold || DEFAULT_HOLD, burst: false, zoomScale: op.zoomScale || null, panes }); - console.log(` ${spec.id} cap ${n}: ${op.caption || op.cap}`); - n++; - } else { - // ACTION on a single pane. - const pi = op.pane != null ? op.pane : 0; - lastCursorPane = pi; - await doAct(pages[pi], op); } + ok = true; + } catch (e) { + attemptError = e; + // FAILURE FORENSICS: freeze EVERY pane's exact state + a body-text snippet before retry — + // "which client was in which state" ends debugging guesswork. zz-fail-* sorts last and is + // never referenced by walkthrough.collab.data.js. + await Promise.all(pages.map((page, pi) => page.screenshot({ path: join(dir, `zz-fail-p${pi}.png`) }).catch(() => {}))); + for (let pi = 0; pi < pages.length; pi++) { + const bt = await pages[pi].evaluate(() => document.body.innerText.replace(/\s+/g, " ").slice(0, 160)).catch(() => "(unreadable)"); + console.log(` ${spec.id} fail-state pane ${pi}: ${bt}`); + } + console.log(`${spec.id} attempt ${attempt}/${maxAttempts} err: ${e.message.split("\n")[0]}`); + } finally { + for (const ctx of contexts) await ctx.close().catch(() => {}); } - ok = true; - } catch (e) { - // FAILURE FORENSICS: freeze EVERY pane's exact state + a body-text snippet before retry — - // "which client was in which state" ends debugging guesswork. zz-fail-* sorts last and is - // never referenced by walkthrough.collab.data.js. - await Promise.all(pages.map((page, pi) => page.screenshot({ path: join(dir, `zz-fail-p${pi}.png`) }).catch(() => {}))); - for (let pi = 0; pi < pages.length; pi++) { - const bt = await pages[pi].evaluate(() => document.body.innerText.replace(/\s+/g, " ").slice(0, 160)).catch(() => "(unreadable)"); - console.log(` ${spec.id} fail-state pane ${pi}: ${bt}`); + if (ok) break; + if (attempt === maxAttempts) { + throw new Error(`Capture ${spec.id} failed after ${maxAttempts} attempt(s); generated data was not written. Partial/failed PNGs remain in ${dir}. Re-capture successfully before rendering this spec.`, { cause: attemptError }); } - console.log(`${spec.id} attempt ${attempt}/${maxAttempts} err: ${e.message.split("\n")[0]}`); - } - - for (const ctx of contexts) await ctx.close().catch(() => {}); - if (ok) break; - if (attempt < maxAttempts) console.log(` retrying ${spec.id} in fresh contexts`); + console.log(` retrying ${spec.id} in fresh contexts`); + } + out.push({ + id: spec.id, + title: spec.title, + accent: spec.accent, + vw: spec.vw || VW, + vh: spec.vh || VH, + cropVH: spec.cropVH || null, + // This object is a WHITELIST, not a spread: a field the renderer needs but + // that is not copied here is silently dropped, and the symptom is a spec + // change that appears to do nothing after a re-render. `frame` was added + // for exactly that reason -- add new render-time spec fields HERE too. + frame: spec.frame !== false, + layout: spec.layout, + paneLabels: spec.panes.map((p) => p.label), + steps, + }); } - out.push({ - id: spec.id, - title: spec.title, - accent: spec.accent, - vw: spec.vw || VW, - vh: spec.vh || VH, - cropVH: spec.cropVH || null, - // This object is a WHITELIST, not a spread: a field the renderer needs but - // that is not copied here is silently dropped, and the symptom is a spec - // change that appears to do nothing after a re-render. `frame` was added - // for exactly that reason -- add new render-time spec fields HERE too. - frame: spec.frame !== false, - paneLabels: spec.panes.map((p) => p.label), - steps, - }); + } finally { + await browser.close(); } - await browser.close(); // When filtering, MERGE captured specs into the existing data (preserve the others + order). let final = out; diff --git a/walkthrough.collab.specs.mjs b/walkthrough.collab.specs.mjs index ebb4ccc..40dc57e 100644 --- a/walkthrough.collab.specs.mjs +++ b/walkthrough.collab.specs.mjs @@ -23,9 +23,10 @@ import { TRIALSCOPE_IDE_SPECS } from "./walkthrough.trialscope-ide.specs.mjs"; export const COLLAB_SPECS = [ { id: "LiveSync", - title: "Live Collaboration", + title: "Local collaboration demo · fixed text · in-memory state", + layout: "stacked", accent: "#10b981", - cropVH: 360, + cropVH: 264, panes: [ { label: "Client A", url: "http://127.0.0.1:8930/?user=A" }, { label: "Client B", url: "http://127.0.0.1:8930/?user=B" }, @@ -33,33 +34,33 @@ export const COLLAB_SPECS = [ steps: [ // 1) Both clients are looking at the same shared board. { act: "sleep", pane: 0, ms: 600 }, - { cap: "Two clients, one shared board", hold: 70 }, + { zoom: "header", zoomScale: 1.7, cap: "Two clients, one shared board", hold: 70 }, // 2) Client A composes a new card and adds it. { act: "fill", pane: 0, sel: "testid:add-input", value: "Ship the collab demo" }, - { cap: "Client A types a new card", cursor: "testid:add-input", cursorPane: 0, hold: 60 }, - { cap: "Client A clicks Add", cursor: "testid:add-btn", cursorPane: 0, click: true, hold: 54 }, + { zoom: "header", zoomScale: 1.7, cap: "Client A types a new card", cursor: "testid:add-input", cursorPane: 0, hold: 60 }, + { zoom: "header", zoomScale: 1.7, cap: "Client A clicks Add", cursor: "testid:add-btn", cursorPane: 0, click: true, hold: 54 }, { act: "click", pane: 0, sel: "testid:add-btn" }, // 3) The card paints INSTANTLY in A, then syncs into B — captured as a burst on BOTH panes. { act: "sleep", pane: 1, ms: 120 }, - { cap: "Client A adds a card → Client B sees it live", burst: { ms: 2600, every: 260 }, cursor: "testid:add-btn", cursorPane: 0, hold: 84 }, + { zoom: "[data-testid=\"card\"]:first-child", zoomScale: 1.7, cap: "Client A adds a card → Client B sees it live", burst: { ms: 2600, every: 260 }, hold: 84 }, // 4) Settled: both boards now show the same card. { act: "waitText", pane: 1, value: "Ship the collab demo" }, - { cap: "Synced — both clients agree", hold: 78 }, + { zoom: "[data-testid=\"card\"]:first-child", zoomScale: 1.7, cap: "Synced — both clients agree", hold: 78 }, // 5) Client A triggers the server-led agent. - { cap: "Client A asks the agent to act", cursor: "testid:agent-btn", cursorPane: 0, click: true, hold: 56 }, + { zoom: "header", zoomScale: 1.7, cap: "Client A asks the agent to act", cursor: "testid:agent-btn", cursorPane: 0, click: true, hold: 56 }, { act: "click", pane: 0, sel: "testid:agent-btn" }, { act: "sleep", pane: 0, ms: 300 }, // 6) The agent card locks and its text STREAMS into BOTH panes at once. - { cap: "Server-led agent streams to every client", burst: { ms: 3200, every: 300 }, cursor: "testid:agent-btn", cursorPane: 0, hold: 90 }, + { zoom: "[data-testid=\"card\"]:last-child", zoomScale: 1.7, cap: "Server-led agent streams to every client", burst: { ms: 3200, every: 300 }, hold: 90 }, // 7) Done: identical end state across clients. { act: "sleep", pane: 0, ms: 400 }, - { cap: "Every client converges on the same state", hold: 96 }, + { zoom: "[data-testid=\"card\"]:last-child", zoomScale: 1.7, cap: "Every client converges on the same state", hold: 96 }, ], },