Files
hyperframes/.gitignore
T
James Russo 6664e54053 feat(lambda): add SAM template and sample events for AWS deployment (#907)
* feat(lambda): add SAM template and sample events for AWS deployment

Phase 6.2 of the distributed rendering plan (DISTRIBUTED-RENDERING-PLAN.md
§15). Reference SAM template for deploying HyperFrames distributed
rendering on AWS — one Lambda function in three roles, choreographed by
a Step Functions standard workflow with a Map state for parallel chunk
rendering.

Resources created by the template:
  - Lambda function pointing at the Phase 6.1 ZIP
  - Step Functions state machine: Plan -> Map(N) RenderChunk -> Assemble
  - S3 bucket for plan tarballs, chunk outputs, final mp4
  - IAM role for the state machine
  - CloudWatch alarm guarding against runaway chunk invocations

Retry policy: 4 attempts, 2s initial, 2x backoff, max 60s, with the
typed non-retryable error codes from plan §9.3 explicitly opted out.

CodeUri points at packages/aws-lambda/dist/handler.zip; sam deploy
resolves the local path and uploads to a SAM-managed bucket on first
deploy.

Validated: sam validate --lint passes against the template.

This is part of the 8-PR Phase 6 stack; PR 6.2 of 8.

* fix(lambda): address PR 879 review feedback

- Add CloudWatch alarms for Lambda Errors metric (5min window, threshold 1)
  and Step Functions ExecutionsFailed metric. The existing runaway-
  invocations alarm catches too-many-calls but missed silent per-chunk
  failures and retry-exhaustion.
- Document VersioningConfiguration: Suspended tradeoff inline. Adopters
  treating the final mp4 as user-keepable should bump to Enabled.
- Cost-allocation Tags on RenderBucket + Lambda Globals.
- Lambda Tracing: Active so X-Ray spans don't terminate at the SF→Lambda
  boundary (the state machine already had tracing).
- State-machine top-level TimeoutSeconds: 3600 as defensive ceiling on
  the whole choreography — catches Plan-retry storms before they hit
  individual task budgets.
- AssertChunkCount Choice state: if Plan ever returns ChunkCount=0 the
  Map would silently iterate zero times and Assemble would receive an
  empty ChunkS3Uris[] producing an empty output. Fail-fast with typed
  PLAN_TOO_LARGE error instead.
- Architecture comment: explicit x86_64-only constraint from
  @sparticuz/chromium so adopters trying Graviton don't get bitten.

* docs(lambda): drop internal plan-doc refs from SAM example + template
2026-05-16 18:17:25 -04:00

112 lines
2.1 KiB
Plaintext

# Dependencies
node_modules/
# Build output
dist/
*.tsbuildinfo
# Environment
.env
.env.local
.env.*.local
# OS
.DS_Store
Thumbs.db
# Docs media — served from CDN, not committed.
# Regenerate with scripts/generate-{catalog,template}-previews.ts then upload
# with `bun run upload:docs-images`. Add explicit negations below for any
# non-generated assets (logos, svgs) that should stay in the repo.
docs/images/
# IDE
.vscode/
.idea/
*.swp
*.swo
# Test
coverage/
.debug/
# Producer regression test failures (generated debugging artifacts)
packages/producer/tests/*/failures/
packages/producer/tests/distributed/*/failures/
packages/producer/tests/parity/fixtures/hyperframe.runtime.iife.js
# Player perf test results (generated each run, attached as CI artifact)
packages/player/tests/perf/results/
# Rendered output (not test fixtures — those use git LFS)
output/
renders/
!packages/producer/tests/*/output/
!packages/producer/tests/distributed/*/output/
# Composition source media (large binaries)
compositions/**/*.mp4
compositions/**/*.mov
compositions/**/*.MOV
# npm pack artifacts
*.tgz
# Logs
*.log
npm-debug.log*
# Temporary
tmp/
.tmp/
# Generated files
packages/core/src/generated/
packages/producer/src/services/fontData.generated.ts
# Local proof / test artifacts
qa-artifacts/
my-video/
examples/*
# Tracked OSS examples — negations override the blanket `examples/*` ignore.
!examples/aws-lambda
!examples/aws-lambda/**
packages/studio/data/
.desloppify/
.worktrees/
# Playwright MCP browser cache
.playwright-mcp/
# Installed skills (user-specific)
.agents/
.claude/skills/
skills-lock.json
# Skills from other PRs (not managed here)
skills/hyperframes-animation-map/
skills/hyperframes-contrast/
# Capture outputs
captures/
# Legacy test captures at repo root (use captures/ instead)
*-capture/
*-demo/
*-ad/
*-tour/
*-brand/
# Local regression-test and video project scratch directories.
# These hold per-site captures, compositions, narration audio, rendered MP4s.
cursor-tests/
basecamp-video/
launch-video*/
ab-test/
compositions/
video-6-2-patched/
claude-design-hyperframes-video/
.claude/worktrees/
.claude/
docs/superpowers/
.worktrees