Files
hyperframes/docs/docs.json
T
Vance IngallsandClaude Opus 5 df1521a0b6 feat(cli): attach canary cohort to telemetry, harden canary tests, document
Follow-up to the canary primitive.

Telemetry: every event now carries a `canaries` property listing the cohorts
the install is enrolled in, attached in `trackEvent` so it lands on ALL
events rather than renders only — a staged rollout is only as useful as the
ability to split any metric by cohort. Resolved after the shouldTrack guard,
so opted-out installs never pay for it, and omitted entirely (not null or "")
when the install is in no canary, since PostHog treats those as real values.

Test hardening, after validating the shipped code against 60k synthetic and
101 real fleet install ids:

- Pin FNV-1a against canonical vectors, AND assert the shipped canaryBucket
  actually uses that hash. Without the second assertion the first is
  tautological — it would only prove the test's own copy is correct while
  canary.ts drifted to a different hash, silently reshuffling every live
  cohort. Fault-injection confirms only this assertion catches a hash change;
  the distribution tests stay green because a perturbed hash is still
  well-distributed.
- Tighten the share test from a 0.6x-1.4x band to +/-1 percentage point.
  Measured error was 0.16pp at n=60k, so the old band would have passed a
  badly skewed hash.
- Add chi-square uniformity across all 100 buckets (chi2 89.0 vs 148.2
  critical at p=0.001). A lumpy hash yields roughly the right total share
  while overloading some buckets, so the share test alone cannot catch it.
- Assert N concurrent canaries enrol binomially rather than in lockstep:
  8 canaries at 10% put ~43% of installs in none and zero in all eight,
  matching binomial(8, 0.1). Correlated slices would put ~10% in all eight.

Also verified 88,443 of 88,448 fleet install ids are well-formed UUIDs; the
5 that are not fail closed, which is the intended direction.

Docs: docs/contributing/canary-rollouts.mdx, registered in docs.json (an
unregistered page is invisible in the nav).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-30 15:14:35 -07:00

502 lines
16 KiB
JSON

{
"$schema": "https://mintlify.com/docs.json",
"name": "HyperFrames",
"theme": "maple",
"colors": {
"primary": "#0a0a0a",
"light": "#f6f5f1",
"dark": "#0a0a0a"
},
"background": {
"color": {
"light": "#f6f5f1",
"dark": "#0a0a0a"
}
},
"fonts": {
"family": "Inter",
"heading": {
"family": "Inter"
}
},
"appearance": {
"default": "light"
},
"logo": {
"light": "/logo/light.svg",
"dark": "/logo/dark.svg"
},
"favicon": "/favicon.svg",
"contextual": {
"options": [
"copy",
"claude",
"cursor",
"vscode",
"windsurf",
"mcp",
{
"title": "Open an issue",
"description": "Report a bug or request a feature",
"icon": "github",
"iconType": "brands",
"href": "https://github.com/heygen-com/hyperframes/issues/new"
}
]
},
"navigation": {
"tabs": [
{
"tab": "Documentation",
"groups": [
{
"group": "Getting Started",
"pages": [
"introduction",
"changelog",
"weekly-updates",
"quickstart",
"showcase",
"examples",
"launch-videos"
]
},
{
"group": "Concepts",
"pages": [
"concepts/compositions",
"concepts/data-attributes",
"concepts/variables",
"concepts/frame-adapters",
"concepts/determinism"
]
},
{
"group": "Prompt Guide",
"pages": [
"prompting/overview",
{
"group": "Level 1 — Your first video",
"pages": [
"prompting/product-launch",
"prompting/explainers",
"prompting/code-and-prs",
"prompting/captions-and-talking-heads",
"prompting/music-and-slideshows",
"prompting/motion-graphics"
]
},
{
"group": "Level 2 — Control",
"pages": [
"prompting/anatomy",
"prompting/specification-dial",
"prompting/vocabulary",
"prompting/visual-specs",
"prompting/examples"
]
},
{
"group": "Level 3 — Life",
"pages": [
"prompting/motion",
"prompting/transitions"
]
},
{
"group": "Level 4 — Substance",
"pages": [
"prompting/code-blocks",
"prompting/data-and-maps",
"prompting/overlays-and-lower-thirds",
"prompting/captions-catalog",
"prompting/generated-artwork",
"prompting/vfx-and-liquid-glass",
"prompting/runtimes-and-3d"
]
},
{
"group": "Level 5 — Voice and sound",
"pages": [
"prompting/media-and-audio"
]
},
{
"group": "Level 6 — Scale",
"pages": [
"prompting/design-systems",
"prompting/variables-and-templating",
"prompting/storyboards",
"prompting/editing-existing-videos",
"prompting/iterating",
"prompting/recreating-references",
"prompting/rendering-and-output",
"prompting/remotion-migration"
]
},
{
"group": "Level 7 — Capstone",
"pages": [
"prompting/capstone"
]
},
{
"group": "Appendix",
"pages": [
"prompting/rules-and-anti-patterns"
]
}
]
},
{
"group": "Guides",
"pages": [
"guides/pipeline",
"guides/skills",
"guides/authentication",
"guides/video-components",
"guides/color-grading",
"guides/media-effects",
"guides/media-overlays",
"guides/html-in-canvas",
"guides/website-to-video",
"guides/figma",
"guides/antigravity",
"guides/copilot-cli",
"guides/claude-design",
"guides/claude-design-send-to-hyperframes",
"guides/open-design",
"guides/hyperframes-vs-remotion",
"guides/gsap-animation",
"guides/keyframes",
"guides/rendering",
"guides/remove-background",
"guides/hdr",
"guides/4k-rendering",
"guides/performance",
"guides/timeline-editing",
"guides/video-editor-cheatsheet",
"guides/common-mistakes",
"guides/troubleshooting",
"guides/feedback"
]
},
{
"group": "Deploy",
"pages": [
"deploy/cloud",
"guides/deploy",
"deploy/aws-lambda",
"deploy/gcp-cloud-run",
"deploy/templates-on-lambda",
"deploy/migrating-to-hyperframes-lambda"
]
}
]
},
{
"tab": "Catalog",
"groups": [
{
"group": "Code Animations",
"pages": [
"catalog/blocks/code-3d-extrude",
"catalog/blocks/code-shader-dissolve",
"catalog/blocks/code-particle-assemble",
"catalog/blocks/code-morph",
"catalog/blocks/code-snippet-flight",
"catalog/blocks/code-typing",
"catalog/blocks/code-diff",
"catalog/blocks/code-highlight",
"catalog/blocks/code-scroll"
]
},
{
"group": "Captions",
"pages": [
"catalog/components/caption-clip-wipe",
"catalog/components/caption-editorial-emphasis",
"catalog/components/caption-emoji-pop",
"catalog/components/caption-glitch-rgb",
"catalog/components/caption-gradient-fill",
"catalog/components/caption-highlight",
"catalog/components/caption-kinetic-slam",
"catalog/components/caption-matrix-decode",
"catalog/components/caption-neon-accent",
"catalog/components/caption-neon-glow",
"catalog/components/caption-parallax-layers",
"catalog/components/caption-particle-burst",
"catalog/components/caption-pill-karaoke",
"catalog/components/caption-texture",
"catalog/components/caption-weight-shift"
]
},
{
"group": "HTML-in-Canvas",
"pages": [
"catalog/blocks/ios26-liquid-glass",
"catalog/blocks/liquid-glass-context-menu",
"catalog/blocks/liquid-glass-media-controls",
"catalog/blocks/liquid-glass-notification",
"catalog/blocks/liquid-glass-widgets",
"catalog/blocks/macos-tahoe-liquid-glass",
"catalog/blocks/vfx-iphone-device",
"catalog/blocks/vfx-liquid-background",
"catalog/blocks/vfx-liquid-glass",
"catalog/blocks/vfx-magnetic",
"catalog/blocks/vfx-portal",
"catalog/blocks/vfx-shatter",
"catalog/blocks/vfx-text-cursor"
]
},
{
"group": "Social Overlays",
"pages": [
"catalog/blocks/instagram-follow",
"catalog/blocks/macos-notification",
"catalog/blocks/reddit-post",
"catalog/blocks/spotify-card",
"catalog/blocks/tiktok-follow",
"catalog/blocks/x-post",
"catalog/blocks/yt-lower-third"
]
},
{
"group": "Lower Thirds",
"pages": [
"catalog/blocks/lower-third-bild",
"catalog/blocks/lt-accent-underline",
"catalog/blocks/lt-bold-block",
"catalog/blocks/lt-clean-bar",
"catalog/blocks/lt-color-block",
"catalog/blocks/lt-dark-card",
"catalog/blocks/lt-kicker-name",
"catalog/blocks/lt-mask-reveal",
"catalog/blocks/lt-side-rule",
"catalog/blocks/lt-soft-pill",
"catalog/blocks/lt-stack-bars",
"catalog/blocks/news-ticker"
]
},
{
"group": "Shader Transitions",
"pages": [
"catalog/blocks/chromatic-radial-split",
"catalog/blocks/cinematic-zoom",
"catalog/blocks/cross-warp-morph",
"catalog/blocks/domain-warp-dissolve",
"catalog/blocks/flash-through-white",
"catalog/blocks/glitch",
"catalog/blocks/gravitational-lens",
"catalog/blocks/light-leak",
"catalog/blocks/ridged-burn",
"catalog/blocks/ripple-waves",
"catalog/blocks/sdf-iris",
"catalog/blocks/swirl-vortex",
"catalog/blocks/thermal-distortion",
"catalog/blocks/whip-pan"
]
},
{
"group": "CSS Transitions",
"pages": [
"catalog/blocks/transitions-3d",
"catalog/blocks/transitions-blur",
"catalog/blocks/transitions-cover",
"catalog/blocks/transitions-destruction",
"catalog/blocks/transitions-dissolve",
"catalog/blocks/transitions-distortion",
"catalog/blocks/transitions-grid",
"catalog/blocks/transitions-light",
"catalog/blocks/transitions-mechanical",
"catalog/blocks/transitions-other",
"catalog/blocks/transitions-push",
"catalog/blocks/transitions-radial",
"catalog/blocks/transitions-scale"
]
},
{
"group": "Showcases",
"pages": [
"catalog/blocks/app-showcase",
"catalog/blocks/apple-money-count",
"catalog/blocks/blue-sweater-intro-video",
"catalog/blocks/north-korea-locked-down",
"catalog/blocks/nyc-paris-flight",
"catalog/blocks/ui-3d-reveal",
"catalog/blocks/vpn-youtube-spot"
]
},
{
"group": "Data",
"pages": [
"catalog/blocks/data-chart",
"catalog/blocks/spain-map",
"catalog/blocks/us-map",
"catalog/blocks/us-map-bubble",
"catalog/blocks/us-map-flow",
"catalog/blocks/us-map-hex",
"catalog/blocks/world-map"
]
},
{
"group": "Effects",
"pages": [
"catalog/components/grain-overlay",
"catalog/components/grid-pixelate-wipe",
"catalog/components/parallax-unzoom",
"catalog/components/parallax-zoom",
"catalog/components/shimmer-sweep",
"catalog/components/vignette"
]
},
{
"group": "Text Effects",
"pages": [
"catalog/components/caption-blend-difference",
"catalog/components/morph-text",
"catalog/components/texture-mask-text"
]
},
{
"group": "Blocks",
"pages": [
"catalog/blocks/flowchart",
"catalog/blocks/flowchart-vertical",
"catalog/blocks/logo-outro"
]
},
{
"group": "Code Snippets",
"pages": [
"catalog/blocks/code-snippet-apple-terminal-basic",
"catalog/blocks/code-snippet-apple-terminal-clear-dark",
"catalog/blocks/code-snippet-apple-terminal-clear-light",
"catalog/blocks/code-snippet-apple-terminal-grass",
"catalog/blocks/code-snippet-apple-terminal-homebrew",
"catalog/blocks/code-snippet-apple-terminal-man-page",
"catalog/blocks/code-snippet-apple-terminal-novel",
"catalog/blocks/code-snippet-apple-terminal-ocean",
"catalog/blocks/code-snippet-apple-terminal-pro",
"catalog/blocks/code-snippet-apple-terminal-red-sands",
"catalog/blocks/code-snippet-apple-terminal-silver-aerogel",
"catalog/blocks/code-snippet-apple-terminal-solid-colors",
"catalog/blocks/code-snippet-dark-2026",
"catalog/blocks/code-snippet-dark-modern",
"catalog/blocks/code-snippet-dark-plus",
"catalog/blocks/code-snippet-high-contrast",
"catalog/blocks/code-snippet-high-contrast-light",
"catalog/blocks/code-snippet-light-2026",
"catalog/blocks/code-snippet-light-modern",
"catalog/blocks/code-snippet-light-plus",
"catalog/blocks/code-snippet-monokai",
"catalog/blocks/code-snippet-solarized-light",
"catalog/blocks/code-snippet-visual-studio-dark",
"catalog/blocks/code-snippet-visual-studio-light"
]
}
]
},
{
"tab": "Packages",
"groups": [
{
"group": "Packages",
"pages": [
"packages/core",
"packages/parsers",
"packages/lint",
"packages/studio-server",
"packages/sdk",
"packages/engine",
"packages/player",
"packages/producer",
"packages/shader-transitions",
"packages/aws-lambda",
"packages/gcp-cloud-run",
"packages/studio",
"packages/cli"
]
}
]
},
{
"tab": "SDK",
"groups": [
{
"group": "Overview",
"pages": [
"sdk/overview",
"sdk/quickstart"
]
},
{
"group": "Guides",
"pages": [
"sdk/guides/querying-and-editing",
"sdk/guides/timing-and-animation",
"sdk/guides/undo-redo-and-patches",
"sdk/guides/persistence",
"sdk/guides/embedded-override-mode",
"sdk/guides/canvas-integration",
"sdk/guides/editing-affordances"
]
},
{
"group": "Reference",
"pages": [
"sdk/reference/open-composition",
"sdk/reference/composition",
"sdk/reference/edit-operations",
"sdk/reference/types",
"sdk/reference/adapters",
"sdk/reference/utilities"
]
}
]
},
{
"tab": "Reference",
"groups": [
{
"group": "Reference",
"pages": [
"reference/html-schema"
]
},
{
"group": "Contributing",
"pages": [
"contributing",
"contributing/catalog",
"contributing/release-channels",
"contributing/changelog-process",
"contributing/testing-local-changes",
"contributing/canary-rollouts",
"contributing/studio-manual-dom-editing"
]
},
{
"group": "Community",
"pages": [
"community/adopters"
]
}
]
}
]
},
"footer": {
"socials": {
"github": "https://github.com/heygen-com/hyperframes"
}
},
"redirects": [
{
"source": "/guides/prompting",
"destination": "/prompting/overview",
"permanent": true
}
]
}