Skip to content

feat(cli): carry the motion blur summary on the @hf-result line - #7468

Merged
vanceingalls merged 1 commit into
mainfrom
feat/hf-result-motion-blur
Nov 9, 2026
Merged

vanceingalls merged 1 commit into
mainfrom
feat/hf-result-motion-blur

Conversation

@vanceingalls

Copy link
Copy Markdown
Collaborator

What

A piped, non-quiet CLI render's @hf-result line now carries the render's motion blur summary, so a host that runs the CLI as a subprocess can read it. HyperFrames Desktop is that host: it sees only the exit code, @hf-progress lines and stderr, so it cannot report motion_blur_failed_frames for the blur default-on rollout gate.

@hf-result {"version":1,"operation":"render","reference_background":{...},"motion_blur":{"tier":"filter","movers":77,"failed_frames":0,"fingerprint":{...14 counts...}}}

Content-free

motion_blur is built by renderMotionBlurResult in telemetry/renderMotionBlur.ts: tier narrowed to capture/filter, and non-negative integers for movers, failed_frames and the 14 fingerprint counts (snake_case, the names the telemetry payload already uses). No reasonCode, path, selector or composition text can reach it; a test sets those on the summary and asserts the line does not contain them.

Behaviour

  • Only the piped, non-quiet, successful local render prints the line, as before. --docker still prints none.
  • The line is absent of motion_blur when the render has no blur summary, so a film without blur is byte-identical to today.
  • The early return now fires only when there is neither a measured background nor a blur summary; the local render path always has both.
  • Version stays 1: the README already tells consumers to ignore unknown fields, and I found no @hf-result consumer in this repo or in hyperframes-internal. README documents the new field.
  • The fingerprint carries zero counts too; telemetry drops them. Easy to drop here if a consumer wants parity.

Tests

renderResult.test.ts (present for a blur render, absent without a summary, no free text, existing background cases unchanged) and execute.test.ts (the summary reaches the line from a local render): 30 tests across the three relevant files pass. Test reachability, comment ratchet, comment citations and tsc --noEmit in packages/cli exit 0.

Next

A release, then Desktop parses the line and bumps its pin (separate PR in hyperframes-internal).

🤖 Generated with Claude Code

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Nov 9, 2026

Copy link
Copy Markdown
Contributor

Edit accuracy: accurate 267 (base branch 267), smooth 94 of those

The gate passes.
Smoothness is reported in the artifact, not gated. A case fails only if it fails 2 of 3 runs.

Quarantined, measured but not gated (8)

Unstable (2)

  • seqplainkeys-none-px-r0-root-z100: tracking 0.06, pressJump 0, drop 0, reload 0, render 0.03, renderKey -, undo true, teleport true / tracking 0.06, pressJump 0, drop 0, reload 0, render 0.03, renderKey -, undo true, teleport true / tracking 0.06, pressJump 0, drop 0, reload 0, render 0.03, renderKey -, undo true, teleport true
  • seqrepeat-none-center-r0-root-z100: tracking 0.05, pressJump 0, drop 0, reload 0, render 0.02, renderKey -, undo true, teleport true / tracking 0.05, pressJump 0, drop 0, reload 0, render 0.02, renderKey -, undo true, teleport true / tracking 0.05, pressJump 0, drop 0, reload 0, render 0.02, renderKey -, undo true, teleport true

@heygengenesis heygengenesis Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Verdict: APPROVE · 0 blocker · 0 important · 0 nits · head 31d1eb7

The content-free guarantee holds. renderMotionBlurResult builds every key from constants (MOTION_BLUR_FINGERPRINT_FIELDS through snake), never from the page object. tier passes an explicit two-value check. Every value goes through count(), and reasonCode/readEvents are never read. Docker returns { renderTimeMs }, so no line is printed, and batch rows are unchanged.

Scope

Traced the page values from readPageMotionBlur → summarize → aggregateMotionBlur → executeLocalRender → renderMachineResult. The values are integers, but the page supplies them and nothing bounds them: a composition that overrides window.__hfMotionBlur can choose any integer up to 2^53 for each field. Telemetry already carries those same values, so this PR doesn't change exposure. The motion-blur-only branch (no reference_background) can't be reached in production because referenceBackgroundResult always returns the field. CI is green; CodeQL and Windows render verification were still running when I posted.

— Genesis

SanHsien added a commit to SanHsien/hyperframes that referenced this pull request Nov 9, 2026
…ve more; advance watermark

Twelve commits, PRs 7453-7468, issues 7457-7465 and eleven pin moves are
recorded with their evidence in the continued ledger, DECISIONS and UPSTREAM.
Adopted: heygen-com#7338, heygen-com#7459, heygen-com#7463, heygen-com#7454, heygen-com#7456 and the heygen-com#7439 docs; heygen-com#6732 was
already ported. Deferred: heygen-com#7455, heygen-com#7437. Not applicable: heygen-com#7453, heygen-com#7269, heygen-com#7464.
The watermark moves to 9e346f9, PR heygen-com#7468, issue heygen-com#7465; four new PRs are
pinned and the eleven moved pins re-pinned at their current heads. FORK.md
records the fork-only differences in the heygen-com#7338 port; the roadmap tracks the
standalone scripts that keep a bare mkdtemp and issue heygen-com#7458.

Co-Authored-By: Claude Sonnet <noreply@anthropic.com>
@vanceingalls
vanceingalls added this pull request to the merge queue Nov 9, 2026
Merged via the queue into main with commit 651de1d Nov 9, 2026
84 checks passed
@vanceingalls
vanceingalls deleted the feat/hf-result-motion-blur branch November 9, 2026 23:57
@vanceingalls vanceingalls mentioned this pull request Nov 10, 2026
3 of 4 tasks
SanHsien added a commit to SanHsien/hyperframes that referenced this pull request Nov 10, 2026
…nce watermark

Seventeen commits, PRs 7469-7493, issues 7473 and 7486 and twelve pin moves
are recorded with their evidence in the continued ledger, DECISIONS,
UPSTREAM and ROADMAP. Adopted: heygen-com#7466, heygen-com#7479, heygen-com#7482, heygen-com#7490 and the heygen-com#7441 and
heygen-com#7440 docs. Deferred: heygen-com#7469, heygen-com#7471, heygen-com#7476, heygen-com#7480, heygen-com#7468, heygen-com#7487, heygen-com#7491.
Not applicable: heygen-com#7470, heygen-com#7351, heygen-com#7475, heygen-com#7483. The watermark moves to
61e720b, PR heygen-com#7493, issue heygen-com#7486; thirteen new PRs are pinned. FORK.md
records the subComposition test differences. The core packed-size roadmap
row trigger is not met.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant