Inspiration

AI storyboard tools are fast, but the creative decision trail is fragile. Approved frames, rejected experiments, exact prompts, and model details often end up scattered across folders and chat history. When a worker fails or a teammate asks why a frame changed, there is no reliable answer. Continuity Forge turns that ambiguity into an auditable workflow.

What it does

Continuity Forge gives a storyboard team one durable source of truth for generated frames. A creator defines a canon pack, submits a frame, reviews its full manifest, approves or rejects it, and forks new variations from an explicit parent. Every asset keeps its prompt, provider label, SHA-256 digest, review state, and lineage. The system can survive a killed worker, avoid duplicate assets after retries, export a contact sheet, and rebuild its disposable Postgres index from the storage event log.

Why it matters

For small studios and independent creators, a wrong or untraceable frame can waste hours of regeneration and review. Continuity Forge makes the human decision visible: what was approved, what drifted, where a variation came from, and whether the pipeline recovered cleanly. It does not pretend an algorithm can decide canon. It gives people the evidence to decide together.

How we built it

The web experience is Next.js and TypeScript. Postgres is a rebuildable query projection, Redis and BullMQ drive durable jobs, and a separate worker produces assets and derivatives idempotently. Storage is behind one content-addressed interface with an AWS SDK v3 adapter for Backblaze B2 and a deterministic local fixture backend. A FastAPI bridge wraps the open-source Genblaze Python SDK. The OpenAI path uses DalleProvider, and the event path uses the official genblaze-gmicloud GMICloudImageProvider with seedream-5.0-lite. A matching fixture provider keeps credential-free evaluation clearly labeled. Sharp creates thumbnails, pdfkit exports contact sheets, and structured logs carry correlation IDs across the pipeline.

Backblaze B2 and Genblaze

The production B2 adapter writes generated assets, immutable manifests, project events, reviews, and derivatives through B2’s S3-compatible API. The rebuild command paginates those event objects and reconstructs the relational projection. The Genblaze bridge normalizes provider requests and responses so generation evidence is committed through the same durable workflow. The GMI path emits the official request-queue contract, carries the upstream request ID, validates downloaded image bytes, and stores only a hash and host instead of a signed asset URL.

Evidence boundary: the recorded demo and included 20-operation lab run with the application’s clearly labeled local fixture generation and fixture-storage backends because this environment has no B2 or provider credentials. The production B2, Genblaze OpenAI, and official Genblaze GMI adapters are implemented and contract-tested in the public repository. A scoped GMI key authenticates successfully, but the account remains at $0 and no B2 credentials are available, so this submission does not claim a live provider or B2 account run. Five live B2 contract tests are intentionally skipped without credentials.

Challenges

The hardest part was making provenance a real recovery mechanism rather than decorative metadata. We fixed retry races, tenant-isolation risks in content-addressed deduplication, stale queue state, signed-URL expiry behavior, and worker restart handling. We also made the demo evidence reproducible: the same Playwright journey records the raw browser footage, while test-generated timestamps drive the edit.

Accomplishments

  • 159 passing unit/integration tests (88 TypeScript and 71 Python), plus a real Playwright golden path; 5 live B2 cases are credential-gated and skipped
  • 20/20 failure-lab operations passing
  • Real process kill and restart with exactly-once asset completion
  • Cross-tenant authorization denial and duplicate-delivery protection
  • Isolated wipe-and-rebuild from storage events with zero invariant failures
  • Hand-timed captions, original synthesized music, and a custom thumbnail

What we learned

Durable media systems need to treat prompts, reviews, and lineage as first-class data, not labels added after generation. We also learned that a convincing demo must separate application evidence from provider evidence; fixture mode is useful only when it is unmistakably disclosed.

What is next

The next release step is an activated Backblaze B2 account and GMI credits, followed by one bounded live Genblaze-to-B2 proof run and a stable judge-accessible deployment. Provider support requests are pending. After that: project retention controls, provider safety policy, richer search across provenance, and video/audio asset support.

Built With

Share this project:

Updates