Skip to content

fix(render): make the manifest's complete flag mean something - #141

Open
ringoliRob wants to merge 1 commit into
StarTrail-org:mainfrom
ringoliRob:fix/manifest-reports-truncation
Open

fix(render): make the manifest's complete flag mean something#141
ringoliRob wants to merge 1 commit into
StarTrail-org:mainfrom
ringoliRob:fix/manifest-reports-truncation

Conversation

@ringoliRob

Copy link
Copy Markdown

complete was written as a literal True on every capture, so nothing in tiles.json could ever distinguish a full page from one viewport of it. The signal that would have revealed the difference — a measured page height equal to the emulated viewport (i.e. the tile height) — was neither warned about at render time nor recorded in a form a later consumer could check, since the tile height itself never made it into URL manifests.

This is independent of any particular truncation bug: the same silence held for the height formula #131 fixed and will hold for whatever causes the next one.

  • page_metrics.truncation_reason() states the rule once, next to the shared measurement JS, so the standard and turbo backends agree on what a manifest means whichever Chrome the capture ran on.
  • Both backends log a warning and write complete: false when the probe fell back or the height came back at exactly one viewport. The tiles are still captured and written — only the claim about them changes.
  • URL manifests now record tile_height and viewport_width, so a consumer can redo the comparison instead of being told the geometry out of band.
  • The standard path now treats a zero/negative measured height as a probe failure, matching the turbo path; it used to tile nothing and report success.
  • pixelbrowse's SKILL.md reads tiles.json instead of guessing: the "do not run ls, just read tile_0000.jpg" rule made a truncated capture indistinguishable from a short page, and a failed render indistinguishable from an empty one.

Note for the index pipeline: complete: false makes the embed stage skip a tile directory, so an affected page is now dropped from an index build rather than indexed as a fraction of itself.

`complete` was written as a literal `True` on every capture, so nothing in
tiles.json could ever distinguish a full page from one viewport of it. The
signal that would have revealed the difference — a measured page height equal
to the emulated viewport (i.e. the tile height) — was neither warned about at
render time nor recorded in a form a later consumer could check, since the
tile height itself never made it into URL manifests.

This is independent of any particular truncation bug: the same silence held
for the height formula StarTrail-org#131 fixed and will hold for whatever causes the next
one.

- `page_metrics.truncation_reason()` states the rule once, next to the shared
  measurement JS, so the standard and turbo backends agree on what a manifest
  means whichever Chrome the capture ran on.
- Both backends log a warning and write `complete: false` when the probe fell
  back or the height came back at exactly one viewport. The tiles are still
  captured and written — only the claim about them changes.
- URL manifests now record `tile_height` and `viewport_width`, so a consumer
  can redo the comparison instead of being told the geometry out of band.
- The standard path now treats a zero/negative measured height as a probe
  failure, matching the turbo path; it used to tile nothing and report success.
- pixelbrowse's SKILL.md reads tiles.json instead of guessing: the "do not run
  `ls`, just read tile_0000.jpg" rule made a truncated capture indistinguishable
  from a short page, and a failed render indistinguishable from an empty one.

Note for the index pipeline: `complete: false` makes the embed stage skip a
tile directory, so an affected page is now dropped from an index build rather
than indexed as a fraction of itself.
@vercel

vercel Bot commented Aug 10, 2026

Copy link
Copy Markdown

@ringoliRob is attempting to deploy a commit to the andylizf's projects Team on Vercel.

A member of the Team first needs to authorize it.

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