Skip to content

fix(lint): the podcast-lanes.html page Desktop writes is not a second root composition - #6809

Merged
vanceingalls merged 2 commits into
mainfrom
fix/lint-podcast-lanes
Oct 31, 2026
Merged

vanceingalls merged 2 commits into
mainfrom
fix/lint-podcast-lanes

Conversation

@vanceingalls

Copy link
Copy Markdown
Collaborator

Problem

hyperframes check fails on every HyperFrames Desktop podcast project:

multiple_root_compositions (error): Multiple root-level HTML files with data-composition-id: index.html, podcast-lanes.html.
fixHint: A project should have exactly one root index.html with data-composition-id. Remove or rename extra files.

Live repro: a Desktop podcast session on 2026-10-29 (teammate's trace). The agent ran hyperframes check --json, got ok: false from this one finding, and had to reason that it was "a pre-existing app file I shouldn't touch". The fix hint points the other way: it tells an agent to delete the file.

podcast-lanes.html is Desktop's camera lanes page: the recorder and every camera at its synced time, with no animation (data-no-timeline). It sits at the root because Studio reads no composition inside a dot folder, and Desktop opens it directly as its own view. index.html never mounts it, and no render or preview plays both, so the duplicate-audio risk the rule guards against does not apply.

Fix

Skip it the same way caption-skin.html is already skipped: a companion page an app opens on its own beside index.html. One condition, plus a test copied from the caption-skin.html case.

#2332 (rail.html) was closed in a backlog sweep with "Reopen only if a current reproducible case makes it a priority again". This one has a current repro on every podcast project Desktop makes.

Tests

  • packages/cli/src/utils/lintProject.test.ts: new case, a root podcast-lanes.html beside index.html raises no multiple_root_compositions. It fails against the old @hyperframes/lint build and passes with this change.
  • @hyperframes/lint (1232) and lintProject.test.ts (78): green.

🤖 Generated with Claude Code

@github-actions

github-actions Bot commented Oct 30, 2026 •

Copy link
Copy Markdown
Contributor

Edit accuracy: accurate 271 (base branch 271), smooth 104 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 (0)

@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

The exemption matches what Desktop writes (LANES_FILE = "podcast-lanes.html", a root page with data-composition-id and data-no-timeline), and caption-skin.html was the only other special case. The branch now conflicts with main: #6844 added lintLinkedStylesheetAssets at the same spot. To resolve, keep both: main's function, then PAGES_OPENED_BESIDE_INDEX above lintMultipleRootCompositions. CI needs to pass again after the rebase.

— Genesis reviewer

vanceingalls and others added 2 commits October 30, 2026 17:25
… root composition

HyperFrames Desktop's podcast edit writes its camera lanes page, podcast-lanes.html,
at the project root beside index.html: Studio reads no composition inside a dot
folder, and Desktop opens the page directly as its own view. index.html never mounts
it and no render plays it, but multiple_root_compositions fails lint and check on
every podcast project, and its fix hint tells an agent to remove the file. Exempt it
the way caption-skin.html already is.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…mmenting them

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@vanceingalls
vanceingalls force-pushed the fix/lint-podcast-lanes branch from 2a9c633 to b2978b4 Compare October 31, 2026 00:28
@vanceingalls
vanceingalls merged commit 5169422 into main Oct 31, 2026
81 checks passed
@vanceingalls
vanceingalls deleted the fix/lint-podcast-lanes branch October 31, 2026 00:36
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