Skip to content

docs: document async generation, optional sign-in, data control and refresh counts - #39

Merged
upgradedev merged 2 commits into
mainfrom
docs/document-async-and-accounts
Jul 29, 2026
Merged

docs: document async generation, optional sign-in, data control and refresh counts#39
upgradedev merged 2 commits into
mainfrom
docs/document-async-and-accounts

Conversation

@upgradedev

Copy link
Copy Markdown
Owner

Summary

Brings the judge-facing docs up to date with the five PRs that landed this
week (#33 through #38: Firebase ID-token verification, async submit + poll
job store and its frontend wiring, optional per-user multitenancy, and the
concurrency load test) and reconciles stale test counts. Docs only, no
source or test changes.

  • README.md: extends the API endpoints list with the four new routes;
    adds "Async generation (submit + poll)" and "Optional accounts (Google
    sign-in)" sections next to Architecture; adds a "Your photos and your
    data" section after PII safety (what leaves the browser in live mode,
    no captioning/vision step, self-service control, provider-retention
    disclaimer); refreshes the Testing & CI counts.
  • frontend/README.md: fixes two now-stale claims ("POST /reels is
    synchronous (no polling)" and the wizard's Generate step both predate the
    async submit+poll wiring) and documents the Authorization header
    attachment.
  • demo/SUBMISSION.md: refreshes the stale 2026-07-24 test counts, adds
    firebase-auth to "Built with", and adds one bullet under Production
    readiness for the async job + accounts work.
  • demo/STATE.md: adds a new canonical dated entry (2026-07-29)
    superseding the 2026-07-24 one (marked accordingly, kept for history),
    and updates the Production Readiness scorecard cell in place (same
    pattern the 2026-07-24 PR used).

Claims verified against code before writing

  • Async submit (202 + job_id) / poll (queued/running/done/failed)
    and the in-process-worker honest limitation: src/cinemory/jobs.py,
    src/cinemory/api.py (create_reel_job, get_reel_job, _run_job).
  • Frontend now submits + polls for every real-photo generation:
    frontend/src/components/steps/GenerateReel.tsx (uses
    useSubmitReelJob + usePollReelJob, not the old multipart upload).
  • Guest-only default, no sign-in UI, Firebase SDK never fetched when the
    four VITE_FIREBASE_* vars are unset: frontend/src/lib/auth.ts
    (isAuthEnabled), frontend/src/components/AuthMenu.tsx (if (!isAuthEnabled()) return null).
  • Backend verifies the Firebase ID token itself (Google's public certs, no
    Admin SDK, no service-account secret): src/cinemory/auth.py; confirmed
    no firebase-admin dependency in requirements.txt / pyproject.toml.
  • Structural per-tenant isolation, /me/library, /me/data, tenant id
    only from the verified token: src/cinemory/api.py
    (get_tenant, _TenantScopedStorage, get_my_library,
    delete_my_data).
  • Concurrency test proving isolation under load:
    tests/integration/test_load.py::test_concurrent_multitenant_isolation_under_load.
  • Photos land in the private B2 bucket and the provider fetches them via a
    1-hour presigned URL (live mode only):
    src/cinemory/adapters/genblaze_provider.py (_external_inputs,
    _INPUT_URL_EXPIRES_SECS = 3600); offline mode never talks to B2 (fakes
    only).
  • No captioning/vision step: src/cinemory/ingest.py builds each prompt
    from a fixed 5-entry rotation of camera-movement phrases blended with the
    occasion preset (occ.style_prompt(prompts[c % len(prompts)])), never
    from photo content; pipeline.py only ever calls the provider with
    Modality.VIDEO. Grepped the whole src/cinemory tree for
    caption/vision/describe/BLIP-style terms; the only hit was an unrelated
    LinkedIn API field (uploadCaptions).
  • Test counts: read from the latest green CI run on main
    (30448211424,
    commit a07c0a3): backend 314 passed + 4 skipped (unit 156+1, integration
    99+3, e2e 59), pen-test 62 passed, frontend 280 vitest tests across 39
    files.

Test plan

  • Verified every claim above against the actual merged code (see list).
  • Confirmed both Mermaid diagrams in README.md are untouched (diff only
    adds new sections around them).
  • Confirmed the three README image references are still git-tracked.
  • Grepped the diff for em-dash / en-dash-as-em in every line I added;
    none introduced (pre-existing dashes in untouched surrounding text
    were left alone).
  • Confirmed scripts/readiness.py (the CI readiness gate) has no
    dependency on README/SUBMISSION/STATE content.
  • CI green on all jobs (polling after opening this PR).

Efthimios Fousekis added 2 commits July 29, 2026 17:16
The new Generate entry introduced an em-dash to match its neighbours. House
style is to avoid them, so the whole list now uses colons and reads the same.
@upgradedev
upgradedev merged commit b2ddf77 into main Jul 29, 2026
12 checks passed
@upgradedev
upgradedev deleted the docs/document-async-and-accounts branch July 29, 2026 14:24
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