Release checklist
Plotthirst official production / launch checklist
November1 WAN input frame timestamps (local)
87204a1 is live; owner reproduced the same file rejection directly on Atlas and supplied its precise degenerate-frame-timestamps error. New WAN/Prime saved-input check repairs malformed/VFR timing in a temporary copy before upload. Healthy sources stay unchanged. Source duration, held ending, sound presence/end alignment, picture dimensions and phone rotation are verified; original Library file and all approved generation settings remain. Failed repair stops before generation. Long signed URLs are removed before error display compaction so the rejection reason stays visible.223 distinct Python checks pass including real damaged MP4s, VFR/fractional/audio/rotation cases and actual Atlas status parsing. Exact customer file/paid provider acceptance remains unverified. Final syntax/static inventory/readiness and deployment follow; extra repair compute is platform-funded and old price contracts are unchanged. Existing movie-cost reviews remain open.
October31 Atlas saved-video handoff (local)
Prior7292400 release is confirmed live and successful. New Solo source error exposes signed S3 video inputs bypassing the existing Atlas media-transfer path. Repair resolves only configured-bucket saved media, reads it through existing deletion guards and transfers bytes to Atlas before render; external URLs/Seedance preparation remain compatible. Read/oversize/transfer failures stop with stage-specific messages; no trim, model/timing change or automatic render retry.201 Python checks pass including actual saved-key reading with expired fixture signatures, closed streams, foreign-bucket isolation, generation refusal after failed transfer and WAN/Prime/Seedance/Multi/split compatibility. Static billing inventory unchanged, transfer repair overhead is platform-funded without changing old approved credits. Exact customer's failure cause/file remains unverified because Atlas supplied no suffix, AWS session expired and Chrome binding timed out twice. Final checks/publication pending; six pre-existing movie-cost reviews remain open.
October30 source-dialogue preparation repair (local)
04eff4f and c43de4b releases both succeeded. New reported dialogue failure exposed quoted metadata being treated as speech and a dialogue check outside the automatic correction loop. Protected original speech now expands literally before review/counting; missing speech is checked within the existing correction opportunity. Typed/timed speaker lines, replacement wording, typography and repeated/cross-portion speech are covered. Existing1900–1950 target,3000 review cap, timing/order and final submission guards remain. New quote bounds include protection context; legacy approvals and existing two-call/one-allowance settlement are preserved. Owner-only read-only setup recovery can revalidate complete false-positive dialogue failures, without paid work; this specific customer's prompt/job has not been recovered or tested live.141 Python checks plus Node preparation regression pass. Final checks/publication/hosted build verification remain; six prior cost reviews remain open.
October30 AI draft target and recovery follow-up (local)
c43de4b import repair is live; workers report ready and deployment logs confirm both services stable. Owner permits slightly longer AI drafts: target1900–1950, one automatic correction, then full valid draft retained for review up to3000 instead of failing on count alone. Timing/dialogue/order/final submission limits remain checked; repeat prompts remain1900–1950. Owner-only Load data for new run can recover complete saved length-only failures without another AI call, charge or job mutation. Real worker checkpoint-key recovery is tested.114 Python checks, Node UI/action tests, TypeScript/build, syntax/static billing/readiness pass; publication pending. No live recovery of the named customer job or paid test performed. Six earlier cost reviews remain open; CI resilience configuration logged existing permission denials separately from stable app rollout.
October30 preparation endpoint server repair (local)
c9b0260 UI release is live; workflow41095326605 succeeded. Local browser preview verified visible controls, explicit cost review/cancel and390px layout without overflow. Owner's new sys error was reproduced through the real authenticated HTTP dispatcher and fixed by initializing its local import at entry. Ten endpoint regressions and30 planner/storage/reuse checks pass; UI action/syntax/static billing checks pass. Server follow-up publication and hosted verification pending. No paid preparation/video or customer balance/job retry performed; six pre-existing cost reviews remain open.
October30 Quick Solo prompt-preparation interface repair (local)
b0068c8 is confirmed live and both prior workflows succeeded. New local fix makes “1. Prepare edit prompts” visible directly below edit instructions even without a prepared plan; saved retry controls remain discoverable with an explanation. Both main actions now open the existing AI preparation cost review when prompts are missing, rather than sending the video quote that produced the dead-end message. Preparation still needs separate approval and never directly starts video. New Node render/action regressions, final TypeScript/build,30 focused Python checks, source syntax, billing and readiness checks pass. Publication pending; no paid AI/video acceptance. No operation/price changes; six old cost-review fingerprints remain open.
October30 local: source duration and optional prompt splitter
Release76d6bc8 is pushed and rolling via workflow41078309402 (worker then web). Final fresh-login follow-up restores completed AI plans, including all100 prepared prompts and the exact long input, through Load data for new run; planner-only dispatch cannot enter video generation.158 distinct Python checks including the final30-test planner/storage/reuse suite pass. Same existing quote bounds and billing signatures. Check live build/CI before claiming deployed acceptance; browser connection remains unavailable.
New WAN editor submissions restore the15s source ceiling and explicitly request source-based output length; fractional video/audio is matched before delivery. Optional OpenAI timed conversion/idea planning accepts500000 characters and100 prompts/25min, with1900–1950 characters per reviewed output. Repeat mode has the same short submitted-body limit. Existing generation pipeline is reused after separate AI-cost approval and user review. Large text is owner-scoped outside job records; fresh-load prompt/setup recovery is tested.156 distinct Python tests, final TypeScript/build, source syntax, reviewed static billing inventory and readiness-panel checks pass. No paid render/AI plan or hosted UI acceptance. Previous e54a478 deployment succeeded but its30s experiment is superseded by this local correction. Final checks, correction deployment and real browser/paid acceptance remain distinct. Six existing movie-cost fingerprints remain stale; broader operating-cost gaps remain open.
Reconciled September 6, 2026 against the master handoff, Session D evidence, current repository and latest user decisions. This is the current bounded launch checklist. Older checklist text is preserved in PLOTTHIRST_LAUNCH_CHECKLIST_HISTORY_2026-09-06.md.
Whole-product coverage is tracked in PLOTTHIRST_WHOLE_SITE_FUNCTION_CHECKLIST.md. This release checklist alone is not a complete acceptance audit of every site function. Every exposed launch function needs evidence or deliberate gating.
The whole-site checklist also records the September 15 input-to-output workflow map (corrected September 16): four owner-reported tested journeys, one untested journey, the requested direct idea-to-screenplay-to-video path, and two future video-to-writing ideas. Those reported results do not replace launch acceptance evidence.
Status is based on recorded verification, not a new live audit today. June-era security/scale documents are audit prompts, not proof every unchecked item is still broken. Do not reopen a passed feature without a reproducible failure.
Recorded complete: do not repeat the repair work
September 18 local character-development repair: active Story Writer preflight, checkpointed targeted profile repair, separate starting snapshot with continued in-story updates, and richer performance handoffs implemented. Mocked-provider and related regression tests run locally; not deployed or accepted through a paid end-to-end generation. Historical/imported sample enrichment and acting-quality acceptance remain open. See app-repair/docs/CHARACTER_DEPTH_HANDOFF_AUDIT_2026-09-18.md.
September 16 local admin troubleshooting trial: password-free Open as user with expiry, banner and audit. Explicit draft edits and quoted admin-paid Quick Solo video/video-edit tests implemented; full Ultimate/batch/publishing support is still pending. 37 focused tests and frontend build passed. Not deployed and no paid test generation run. Sandbox browser verified Open as Plotthirst, read-only banner, and Return to Michelangelo admin without a password reset. Full live account impersonation acceptance remains open.
September 16 local recovery refinement (not deployed): email now includes the username with the reset code; login labels/help explain email-or-username access and forgotten login details. Existing identifier matching supports both. All 16 auth/recovery tests passed; live verification of the revised email remains open.
- Recorded evidence: History index/permission repaired; website/plugin history found the original production. Original delivery package recovered; package error cleared.
- Recorded evidence: Mixed named-reference preservation repairs deployed. Ten provider-free routes completed; 45 sampled authenticated downloads passed. This is not visual proof of a newly generated production using the requested reference sheets.
- Recorded evidence: Live one-time credit purchase succeeded: $5 / 500 credits added once; signed webhook and duplicate reconfirmation verified. Direct card entry worked on phone.
- Recorded evidence: Checkout 502 traced to web memory pressure; settings read repaired and web memory increased. Subsequent checkout returned clean JSON and purchase succeeded.
- Recorded evidence: Recurring checkout choices deployed: off, weekly, every two weeks, monthly. Configuration and local tests passed; actual paid renewal not verified live.
- Recorded evidence: Business receipt received with matching receipt #1786-5633, $5 gross, $0.45 processing fee and $4.55 net. Payment details support masked card details when available; the observed Link payment did not supply ordinary card last four.
- Recorded evidence: AWS SES production access, domain DKIM, incoming forwarding to owned Gmail, support/billing/hello send-as identities, password reset and support contact verified. Bounce/complaint simulator feedback received.
- Recorded evidence: Billing audit policy, 52-entry inventory guard and monthly review created. These are review safeguards, not completed runtime cost repairs.
Last recorded runtime deployment: bfb8b6e, GitHub run 34024138059 SUCCESS, 610 tests at that checkpoint. HEAD e140158 adds audit docs/tooling only.
Local work awaiting release and acceptance
- Referral attribution remains local; rewards are OFF. Persistence on real account creation and profile updates still needs release acceptance.
- Admin Workflow Viewer now exposes source steps, operation groups, Story Writer internals and copyable review packets. It is a planned-process inspector; a full per-job expected/actual call trace and run comparison remain outstanding.
- Ultimate now separates fresh Start from an existing Screenplay controller and offers a sample project only when there is no real screenplay. Real saved-project reopening and phone acceptance remain outstanding.
- Developer menu grouping and shared headers/bounding boxes are local UI work.
- Sample project now sits beside Dashboard for fresh projects and opens the sample screenplay controller directly. Real screenplay projects keep their own controller. This is a preview; importing is still a separate action. Local UI acceptance only.
- A 635-test suite passed at the deep-inspector checkpoint. Later checks included 13 focused blueprint tests, 10 Ultimate entry assertions, TypeScript checks and a frontend build. Subsequent UI edits have narrower checks; this is not a full regression of the latest combined working tree.
These local changes are not evidence of a new production deployment.
Required before charging public customers at launch
Priority escalation: submission reliability and Ultimate process visibility
Latest user reports: intermittent 5xx across website/MCP/mobile, service disruption, Ultimate not starting or not finishing, and worse plans than earlier productions. Investigate representative records before attributing these to the browser or the previously repaired checkout OOM. Add an admin inspector of configured process, actual per-call planning/merging/validation trace, dependencies and run comparison. See ULTIMATE_ADMIN_PROCESS_INSPECTOR_REQUIREMENTS.md. This is a launch priority; existing child-tree/progress views are a foundation, not proof of full visibility.
1. Close known operating-cost coverage gaps
- Acceptance open: Use consistent backend operating-cost coverage across offered operations and entry points; image/video/music/upscale paths currently omit the shared allowance that the frontend estimates. Preserve deliberate word-priced/fixed-price rules.
- Acceptance open: Implement projected monthly action volume with site-wide minimum 1,000 and daily/hourly adjustment; current divisor is static and clamps at 1.
- Acceptance open: Freeze accepted quote inputs; retries must not double debit and stitching must not add an already included allowance again. Preserve own-key platform costs.
- Acceptance open: Reconcile Admin actual AWS bills with estimated costs without adding the same expense twice. Recorded live allowance is $100, not the remembered $250.
- Acceptance open: Check margin after discounts, bonus credits, payment/Billing fees and service commitments. A 1.8 multiplier alone does not prove coverage across all paths.
Evidence: OPERATING_COST_ALLOCATION_AUDIT.md and app-repair/docs/BACKEND_COST_AUDIT_POLICY.md. No retroactive customer debits.
2. Finish production-workflow acceptance
- Acceptance open: One separately authorized paid reference/generation test: supplied subjects produce distinct requested official angle/reference packs and remain recognizable in outputs. Include mixed character/prop/location inputs without a two-item limit. Distinguish explicitly specified subjects from optional automatic inventory of an arbitrary image. Do not rerun all providers just to check the shared workflow.
- Acceptance open: Run the customer journey through the website and installed plugin, with an explicit phone/mobile check: submit, review quote/plan, start, leave/reopen, history, library, completed outputs and download. Backend-only tests do not replace this.
- Acceptance open: Verify representative retry/failure/cancel behavior without duplicate paid work or lost credits. Keep the existing passing provider-free results.
- Acceptance open: Resolve the known saved-project public-ID mismatch with a targeted correction.
3. Deploy and verify referral attribution
- Acceptance open: Deploy the prepared code/owner attribution changes and verify persistence on actual account creation and later login/profile saves. New no-code accounts attach to the Plotthirst system root, not the owner's personal account.
- Acceptance open: Retain one parent link per account; derive descendants from those links. The local tree-index builder passed a 5,000-person chain test. No public tree UI exists.
- Acceptance open: Preserve existing attribution; flag unknown historical origins rather than guessing. Referral tracking must work with rewards inactive and lifetime accounts.
Rewards remain OFF. Turning them on later requires monthly-fee eligibility, activation date, refund/cancellation rules and a deduplicated rewards ledger. Historical links do not automatically authorize retroactive rewards. See app-repair/docs/REFERRAL_ATTRIBUTION.md for implementation limits.
4. Finish payment acceptance for the options being offered
- Acceptance open: Close current unpaid/cancelled/failed-payment acceptance and refund-to-credit reconciliation. One-time paid delivery and duplicate reconfirmation already passed.
- Acceptance open: If recurring purchases remain available at launch, verify the first payment, renewal, cancellation and failed renewal end to end before calling them accepted. Do not create a paid subscription or charge the owner without authorization.
- Acceptance open: Keep the Apple Pay verification issue separate: direct card payment works, but Apple Pay remains unverified. Decide whether to offer it based on acceptance.
5. Close the remaining email checks
- Acceptance open: Verify current SES custom MAIL FROM status; last observed PENDING with working default fallback. Recheck inbox placement without promising universal delivery.
- Acceptance open: Inspect password-change alert and final root-production notification delivery.
- Acceptance open: Verify individually composed billing/hello outbound mail if those reply identities are part of launch support. Their sender identities are verified.
Password reset, support forwarding and the actual paid receipt are already verified. Marketing is outside launch scope unless separately implemented.
6. Public access and operations sign-off
These are verification gates, not assertions that all underlying controls are absent.
- Acceptance open: Verify current tenant isolation: a regular user cannot access another user's projects, jobs, media, billing or admin endpoints. Internal files/secrets remain inaccessible through public routes. Cover website and API/plugin authorization.
- Acceptance open: Verify login/reset/job-submission abuse limits and authoritative credit holds, including concurrent requests. Existing process-local locking alone is not proof of cross-replica safety.
- Acceptance open: Confirm backup/restore and rollback procedures, web/worker failure monitoring, queue/DLQ handling, spend alerts and emergency provider/job disable controls.
- Acceptance open: Verify persistence across refresh, device switch and deploy for the supported customer journey; confirm the public hostname and representative media delivery.
- Acceptance open: Review the customer-facing prices, recurring purchase explanation, support and refund process, and published terms/privacy information for the actual launch offer.
- Acceptance open: Record launch mode: current accounts are admin-created; public self-signup is disabled. For an invite-only launch, test that onboarding path. Before open signup, implement server-side signup and atomic invite claims/duplicate prevention across replicas. Referral preparation alone does not implement open registration.
Deferred unless required by the launch offer
- Narrated movie/video recap: upload a completed video/movie or select a completed Plotthirst production; produce a shorter, full-story explainer with precisely matched narration and source clips (e.g. 120 minutes to about 10). Preserve plot twists, key events and ending. Planned, not implemented. See MOVIE_RECAP_FEATURE_REQUIREMENTS.md.
- Owner 5% allocation as credits or cash; basis and reserves are not finalized.
- Stripe Connect second-account transfers, founder funding recovery payouts.
- Referral reward activation, tree visualization and advanced network reporting.
- Automatic customer price reductions/profit-pool spending.
- Employee payroll/expense-account payments.
- Social marketplace/public publishing features needing their own moderation and payout controls; do not expose incomplete features as part of the launch offer.
- Additional clients/providers beyond explicitly accepted launch coverage, automatic full image-subject inventory, automatic Ultimate 4K postprocessing and broad redesigns.
Work order and stop rule
1. Repair known pricing/cost coverage; include prepared referral tracking in a reviewed release once its checks pass. 2. Close security/operations/onboarding gates; fix verified failures only. 3. Perform the bounded customer acceptance journey and remaining payment/email checks. 4. Record build, evidence and launch mode; freeze scope when required gates pass.
Keep optional work separate. No claim of error-free operation, arbitrary concurrency capacity or fully tested external clients follows from a passing local suite.
Local follow-up: Sample preview now has Exit sample beside Dashboard; Dashboard also exits to the original project dashboard. Exiting preserves the user setup. Frontend build/typecheck and sandbox navigation verification apply; not deployed.
Local Start ordering: project type (Story video, Music video, Comic book, Character Mini Showcase) now precedes title and prompt, then creation/source settings. Reset is below the creation settings. Existing mode handlers are unchanged. This UI ordering is local; production workflow acceptance remains open.
September 7 sample segment audit (local): sample preview was a separate simplified panel, not the full saved-project controller. Added selectable segment cards and an inspector identifying source/page context, missing segment planning, references, storyboard and takes. Existing sample contains no generated clips or segment action breakdowns. Do not call it a fully produced sample. A representative planned and partially generated sample plus parity with the saved-project controller remains an explicit acceptance gap. No paid generation was run in this pass.
September 7 navigation follow-up: sample now exposes Screenplay, Lens, Input Ref, Media, Workflow, Video, Audio, Cost and Submit tabs. Non-screenplay tabs are explicit read-only guides, not saved settings or executable operations. Sample parity with a real populated project remains open. No paid jobs or deployment.
September 7: interactive sample settings prototype added inside segment inspector. Project defaults -> page -> segment overrides, field provenance/reset, step controls, batch copy of explicit overrides and effective-settings review. In-memory preview only; no backend persistence, pricing, capability validation or execution wiring. Production inheritance remains to implement and verify after design review.
September 7 sample design revision: removed global numbered sample steps; scoped settings retain their internal steps. Added visual segment-batch-clip-approval board with reversible placeholder take approvals and requests for changes. Explicit demo only: no actual clips, generation, saved approvals or assembly. Real media approval and backend settings inheritance remain open acceptance/implementation work.
September 7 local UI: Ultimate right sidebar moved into top Production overview button view (current mode, progress, last run). Workspace uses full width; Back to workspace restores it without unmounting draft/sample state. No production deploy.
September 7: admin explicitly authorized 120 seconds total sample generation, 60s overall and 60s focused scene. Prepared SAMPLE_TWO_MINUTE_ACCEPTANCE_PLAN.json. MCP admin connection verified (340329 credits at check); no paid jobs submitted. Canonical sample import currently awaits live website admin login. Model proposal: Grok Imagine Video Reference, 720p, 16:9, 10s clips, pending authoritative quote.
Sample sequence correction: add segments across pages into one screenplay-ordered sequence, deduplicate stable range IDs, label page/segment/time/layout on every entry and take, and configure take count per segment. Existing demo takes/reviews are preserved. Focused duplicate/cross-page/take tests pass. Local prototype only.
Local playback: Play movie loads saved screenplay segments, ordered by page/time, using selected or first playable take per segment, independent of batch selection. Separate in-memory custom playlist supports reorder/omit; durable playlists remain open. Sample shows no-real-clips message and its own Production overview, not the underlying project run. Real-media playback acceptance remains pending.
Local UI: permanent Playlists toolbar entry beside Play movie in all Ultimate contexts. Empty state keeps creation visible but disabled until clips are loaded, and explains reorder/omit behavior. Custom playlists still in-memory only.
Local playback UX: movie/playlists now open in a focused modal view with native focus isolation, Close and Escape, preserving the underlying workspace. No inline player panel. Real clip playback and saved playlists remain acceptance gaps.
Local playlist preview now selects stable screenplay segments with or without clips. Missing media plays timed title/source cards; actual selected takes use video metadata duration and ended events without trimming/padding to planned time. Sample cards explicitly show page context, not invented segment-specific actions. Playlist persistence and real mixed-media acceptance remain open.
Local player now includes whole-playlist elapsed/total/remaining time and a progress bar alongside segment progress. Totals use planned lengths until a take loads, then use its actual duration, keyed by segment and take URL. Pause/restart/next update the combined timeline. Real mixed-media timing still needs acceptance.
Local player layout: whole-playlist timing now sits immediately below the existing clip timer/progress during playback, rather than above the player.
Local navigation consolidated into one always-visible Player button; movie order and custom playlist actions remain inside. Current playback loads one clip URL at a time in native video, not a stitched/HLS continuous stream. Prefetch, signed URL refresh, buffering transitions and real/mobile long-play acceptance remain open.
September 7 continuous pre-stitch preview: local HLS engine and independent per-take preparation added; no combined movie render. Synthetic Chrome movie/reverse/omit/ 400ms-delayed-fragment tests passed with one video element and no boundary stalls. One 26ms startup wait occurred. Actual project descriptors are not wired yet; production remains on per-clip fallback. Authenticated preparation/delivery, URL refresh, exact timestamps/audio, mobile and long-play/recovery acceptance remain open. See app-repair/docs/PRE_STITCH_STREAMING.md. No paid generation or deploy.
September 7: sandbox website Player now offers a clearly labeled synthetic continuous-playback demo, with the same movie/custom playlist controls and Return to project playlist. Fixtures are local-only and excluded from git. Real project media integration remains open. Build and browser loading verified; no deployment or paid generation.
September 7: screenplay sample segment cards, details and production sequence labels now show planned whole-movie mm:ss and absolute seconds beside page-relative seconds. Cards use cumulative preceding block durations; canonical sequence IDs use the sample's fixed 60-second pages. Actual take playback timing remains separate. Local UI change only.
September 7: sample settings enforce frame shape at Project defaults only, including effective review values; page/segment edits cannot override it. Provider/model free text replaced with available catalog choices and stable provider:model values. Production capability validation and backend enforcement remain acceptance work; this change is the sandbox sample workbench.
September 7: sample provider/model dropdown now requires explicit ultimateEligible=true AND reference-to-video/multi-reference-to-video capability, an available model and a provider not marked Ultimate-unready. Generic text/image-only and coming-soon models excluded. Local sample selector correction; full production selector/backend eligibility audit remains open.
September 7: sample page/segment model selector shows Project default when inherited, with the resolved model underneath. An explicit page override is labeled Page default for its segments. Selecting the inherited option clears the local override. Only approved Ultimate reference models remain selectable. Local preview only.
September 7: sample project initializes an actual eligible model from current website admin defaults through a narrow read-only bridge; removed Choose approved placeholder. Ineligible defaults fall back to eligible same-provider then canonical Atlas reference model. Project default model label always visible in teal during overrides. Admin default controls already exist; global default was not changed. Sample changes remain temporary; saved-project integration remains open.
September 7: sample settings show one teal Project default value per field, including shape/resolution; model labels omit provider prefixes. Resolution starts at 720p and choices use model supportedSizes, or clearly labeled provider-level catalog fallback where model metadata is absent. Unsupported retained preferences are flagged rather than silently changed. Frame-shape warning now precedes its control; per-page/segment lock remains. Backend capability validation remains open.
September 7: sample Lens now receives actual fresh-start saved preset checkbox choices; Audio receives actual mapper/layer options and current defaults, with Audio map/location/event/bridge checkboxes and the active ambience-only restriction. Creative notes are textareas. References exposes an empty disabled asset selector instead of implying text supplies images; actual sample assets remain missing. Review resolves these fields and states missing plans/references/quote. Whole-song settings remain project-level. This is sample UI parity work, not durable settings or backend submission integration.
September 7: removed Event sounds and Bridge sounds controls from fresh-start Ultimate and sample screenplay settings per user request. Location sounds remains. Both removed flags are now fixed false in frontend estimates/drafts/submissions; old draft flags cannot reactivate them. No backend operation added. Local only.
September 7: screenplay-led planner audit found page-level screenplay/dialogue/visualPlan fallback in timing-range conversion, including empty-dialogue inheritance; materialization copies into clip boards. Repetition risk remains OPEN; historical MCP causation unverified. Proposed ownership, validation, admin prompt trace and mixed generated/ungenerated sample acceptance in app-repair/docs/SCREENPLAY_LED_VIDEO_PLANNING.md. No runtime planner changes or paid jobs.
September 7: first screenplay-source repair removes page action/dialogue/visualPlan fallback from timing ranges, preserves explicit silence, blocks unassigned segment generation and removes book substitution in segment planning. Runtime prompt packet uses screenplay text when enabled; missing screenplay raises instead of book fallback. Book and direct-idea routes retained. Five new source-contract tests and 24 existing segment tests pass; billing inventory unchanged. tools/export_screenplay_prompt_packet.py exports a local preflight packet without provider calls. Full downstream rewrite/cache audit and admin final-provider-prompt UI remain OPEN; no deployment or paid jobs.
September 7: shared source-contract guard now prioritizes screenplay, then enabled Story Writer, then explicit direct idea. Missing book excerpt blocks idea fallback. English/Chinese video and storyboard renderers use the same source; English scripted dialogue preserves exact wording. Nine source tests plus 24 existing segment tests passed. Admin sample panel exports page context and explicit missing assignment/reference/take/final-prompt status; CLI export includes deterministic prompt before provider adaptations. Remaining: persisted source/revision fingerprints and cached prompt invalidation, downstream paid rewrite acceptance, real sample planning/assets/takes and live admin final-provider-prompt generation. No paid calls or deployment.
September 7: Dashboard now has top-level Switch project via existing run lookup (active-run lock preserved). Sample cost overview shows spent=0 sample credits, segment/page/project quote-required states, override counts, and selected-batch take count/quote state. Server ledger/quote integration and numeric gauges remain OPEN; design in docs/SCREENPLAY_PRODUCTION_BUDGET.md. No guessed prices or paid work.
September 7: admin sample prompt tools moved inside This segment above settings tabs. Explicit Show prompt creation plan toggle, Copy review packet, and disabled Generate prompt entry explain missing assignments; final prompt generation remains unwired. Connected MCP admin account verified. Sample assets may be imported for visual demonstration but cannot substitute for backend reference/storyboard acceptance. Own-key prompt-review variant deferred per user. No paid jobs submitted.
2026-09-07 — Sample HD Pro reference library
- Local sample reference gallery and project/page/segment preview checkboxes added for 6 characters, 7 locations and 5 props. Each uses the actual backend canon production-pack prompt, multiple angles and continuity DNA. Generated with built-in Codex/ChatGPT; no Plotthirst API charge or user job.
- Assets and exact generation prompts: app-repair/static/sample-references/quiet-signal-v2/. Original canon retained separately from generated visual elaborations. Packs are prepared for review, not automatically approved as production locks.
- Remaining acceptance: visual continuity review (including Mara belt prism versus standalone prism, exact counts/geometry and Archive Threshold upward light), segment assignments, admin final-prompt review, then storyboards and approved video generation. Reference selection remains a preview; production import/assignment and deployment are not claimed complete.
- Typecheck and frontend build passed; local sandbox gallery verified visible. Existing bundle-size warning remains.
2026-09-07 — Menu portraits and alternate casting
- Local sample: separate sheet-derived single-angle menu portraits for all 18 references; click opens original full pack. Display URLs excluded from prompt review reference packets; production reference URL remains unchanged. Built-in Codex/ChatGPT generation, no Plotthirst API image charges.
- Planned: rehire/recast character, location or prop via upload/regeneration, analyzed candidate DNA, immutable versions, scope selection, impacted segment/prompt review, invalidation and new takes. Preserve all old take provenance. Full specification: app-repair/docs/MENU_PORTRAITS_AND_CASTING.md.
- General backend thumbnail automation and alternate casting are NOT implemented/deployed. Local sample verification recorded separately.
- Menu portrait verification: all 18 files served HTTP 200; full-sheet SHA256 hashes unchanged; typecheck, build, syntax and diff checks passed. Sandbox portrait/link UI verified. Corrected Rook/Threshold counts and duplicate prop views.
- Local sample reference gallery and reference settings now expose Replace / recast. Click shows Not implemented yet; no asset mutation or generation request. Casting backend remains planned.
- Production reference worker menu portraits implemented locally: character/location/prop sheet -> one display portrait, persisted status/source version and estimated platform expense. Main production reference stays unchanged. Resume avoids repeating completed/failed/uncertain thumbnail attempts; failure does not discard usable sheet. Canon and screenplay menus prefer portraits and retain full-sheet access. Seven mocked menu tests + nine source tests passed; billing inventory unchanged. Not deployed/live-provider verified; recasting remains placeholder. Included platform-funded menu artwork cost exception documented; no extra debit/reservation change.
2026-09-07 — Segment reference scope
- Removed entire project reference library from sample per-segment review packet and global/page settings. Segment panel/packet now contains only its explicit selections; library is inside Add reference. No fabricated assignments for sample timing slots without individual scene plans.
- Sample additions support existing library + per-reference scene direction, or named/typed local image staging (PNG/JPEG/WebP up to 10 MB). Upload is disabled until name/type/direction are supplied. Uploaded data remains local and is excluded from JSON packets; metadata is analysis-required. No production upload/analysis endpoint or auto-generation claimed.
- Shared storyboard/video collector honors an explicit referenceAssignments allowlist, including empty; deduplicates, reports missing assets, and carries sceneDirection into prompt details. Screenplay fallback inference reads local screenplay only, not global idea/neighbor continuity. Legacy explicit board need fields still supported and need validation when importing old jobs.
- Validation: 21 unit tests (5 scoped-reference, 7 menu, 9 source), typecheck/build and local UI acceptance. Remaining: durable segment-edit API, uploaded-subject analysis/DNA/approval and integration into saved production assignments. No deployment.
- Future references and menu portraits: pure black presentation backgrounds. Characters/props have black backdrops; locations retain natural scene/sky, with black outside image bounds and in sheet gutters. Applied to normal, safe-retry and saved-prompt worker submissions. Existing images unchanged; local code not deployed.
- Local sample screenplay: consolidated duplicate page segment grids into one Screenplay segments list. Keeps checkbox batch selection, timing, inspect/settings, active inspection marker and previous/next navigation.
- Restored sample References settings tab with scoped segment assignments/additions inside it. Scope order is Segment, Page, Project; Segment selected initially. Page/project reference tab directs users to segment scope, preventing global reference inheritance.
- 2026-09-07: Customer-paid reference portraits supersede the earlier platform-funded exception for NEW reference jobs. Quotes reserve sheet + one square sheet-derived portrait per character/location/prop; stored unit pricing feeds worker debit. Browser Ultimate and backend continuation estimates include portraits. Full portraits are collected into delivery ZIP alongside sheets (not tiny menu previews). Older saved jobs retain original terms; unversioned parent reservations require a new quote, never silent expansion. 26 mocked reference/source tests passed (including quote totals and old-reservation protection); frontend typecheck/build passed; live billing, parent workflow end-to-end and downloaded ZIP acceptance still pending. No deployment or paid generation. Existing shared AWS overhead coverage gap remains in the billing audit.
- Sample provenance confirmed: scripts/build_screenplay_default_sample.py constructs both story chapters and screenplay from hardcoded CHAPTERS beats, adds repeated prose transitions, and stamps completed statuses. This sample is not verified output of the production Story Writer/screenplay workflow. Do not treat its completed markers as launch acceptance. Preserve existing canon/reference assets; replacement needs genuine production text planning with saved provenance before storyboard/video generation. No sample files removed or paid jobs started during this inspection.
- 2026-09-07 local preparation: Ultimate retains existing character/location/prop and use-as-is/HD-pack controls; added linked headshot/menu-portrait upload, setup persistence and backend preservation into canon/display/delivery, excluded from generation inputs. Supplied portraits suppress portrait generation/debit. Prepared sample-production/quiet-signal-v3/STORY_BIBLE.md (4,346 words) and ultimate-input.json with 18 named/typed existing sheets + portraits, all use-as-is. These are input artifacts, NOT submitted or verified Story Writer outputs. 28 reference/source tests, syntax checks, billing inventory and frontend typecheck pass. Port4188 is UI-only preview (POST returns409); port4180 full backend is unavailable. Need restore local provider-enabled worker setup before genuine text run; current shell lacks provider configuration. No website run, paid generation, public-sample replacement or deployment performed. Full upload roundtrip/live acceptance remains pending.
- Full local server restored on loopback4180 with local JSON backend; latest React bundle copied to static/react. Sandbox Admin sign-in verified in browser; no-provider durable worker smoke job completed. Default workflow worker started hidden; logs/PIDs in local-runtime. 4188 remains separate UI-only preview. See docs/LOCAL_FULL_SITE.md. Before authentic sample submission, repair/verify long story-bible preservation: creative brief planning currently truncates raw brief at6000 characters. No genuine text generation submitted or provider readiness claimed.
- Dedicated Story Bible input implemented locally: paste or TXT/Markdown,100000 UTF-16 character units, reject oversize without truncation, preserve full source+SHA256 in Story Writer database. Separate from supplied-book ingestion and6000-character lens brief. Initial canon-list/main-story provider requests receive full source in explicit field; later chapter requests retain source hash and existing developed-canon/handoff machinery. Prepared sample moved bible into dedicated field. 26 targeted tests pass and build/typecheck pass; full local server/worker restarted4180. No actual provider configured in current local backend; no genuine story/screenplay generated. Long-input live quality and cost coverage remain acceptance blockers; do not mark launch-ready.
- Pricing investigation: backend_estimate_story_writer_provider_text_cost passes aggregate review tokens across48 requests into per-request long-context pricing helper. This incorrectly triggers GPT5.5 surcharge on the aggregate estimate. Standard-rate comparison for12x1250 words and short idea: approximately7.51USD GPT5.5 reviews,3.42USD Terra reviews,0.97USD Luna reviews, keeping4.1-mini drafting fixed; excludes screenplay/new reasoning-token behavior/retries and additional bible input. Read-only hypothetical calculation; no model changed or run submitted. Must repair per-call estimator and verify model compatibility before relying on a budget. Current official Luna rates0.20/1.20 and Terra2/12 USD per million input/output tokens verified.
- 2026-09-07 local model review: Story Writer compact-draft and final-chapter review defaults changed to gpt-5.6-terra, independently of planningModel; explicit reviewModel overrides remain honored and new runs pin the review model. GPT-5.5 planning/canon/addendum/ending/screenplay defaults remain unchanged pending quality evaluation. The active GPT-5.4 default found in server.py is the operational AI auditor, not chapter continuity. Corrected wholesale estimate to apply long-context rates per review request, not aggregate tokens across48 reviews; added Terra rates. 34 focused tests passed without provider calls. About $3.42 baseline for12x1250 words excludes extra bible input, screenplay, retries and unmeasured reasoning; not a guaranteed full-run quote. Flat customer-credit pricing/shared-overhead gaps unchanged. No paid generation or deployment.
- 2026-09-07 LOCAL TERRA TRIAL ONLY: User expanded migration to all current GPT-5.5 operation defaults: Ultimate/lens/planning/canon/addendum/ending/prompt rewrite, reference/image analysis, screenplay, comic reading, Quick Create and worker fallback; browser request builders now send Terra. Historical pricing and explicit saved model overrides preserved. Added Terra browser prices and fixed React story-review estimate to price individual requests like backend. 65 focused Python tests and frontend typecheck pass. User requires evaluation before official website migration; DO NOT DEPLOY this experiment as accepted. Track these source/default/pricing changes for eventual production release after quality and budget review. No paid provider run. Existing saved jobs/overrides and AWS environment model pins must be checked at deployment; they can retain GPT-5.5. Public sample remains ungenerated; full story/screenplay/vision acceptance pending.
- Local sample FORM REVIEW, unsubmitted: loaded full account setup into browser4180. Verified12x1250 words,31246-character bible,120-minute screenplay target,18 named/typed sheets marked use-as-is +18 separate menu portraits, stop after screenplay, music generation/audio mapper disabled. Headshots excluded from reference-analysis source count; only full sheets are analyzed. Fixed setup-draft normalization dropping headshotUrl/headshotName and subjectDescription;18 reference/bible tests pass. Prepared input/script corrected from2500 to1250 words/chapter. User now requests form review before submission; DO NOT start paid work pending review. No provider calls or official deployment. Saved review input and pre-edit draft in sample-production/quiet-signal-v3. Local server reloaded; worker must reload latest code before future run.
- Sample form review: removed all18 sheet paths and18 portrait paths from the Story Bible and its preparation script. Bible now28019 characters; named visual canon retained,18 sheets+18 portraits remain attached separately. Updated saved form/input, unsubmitted.
- Cost form review: React calculated Terra Story Writer tokens but reconstructed the displayed story row from flat credits, falsely showing$5 provider cost instead of~$3.42 baseline. Now uses the actual Story Writer estimate row while retaining flat customer/admin package prices. Fixed-price-derived values (including screenplay$2.67) explicitly labeled provisional allowances, not model/API quotes; focused totals labeled mixed estimates. Extra bible input/reasoning/retries still excluded, so full$12 budget not yet verified. No submission/deployment. Frontend typecheck passed.
- LOCAL cover input/version upgrade: Start form accepts multiple cover image files (PNG/JPEG/WebP <=8MB each), selects exactly one default with radio controls, retains earlier uploads, and previews default on Dashboard before any run. Saved draft and new workflow payload carry selected cover and versions separately from scene references/headshots. Project creation retains them; cover canon/delivery preserve variants, automatic reference generation does not replace uploaded cover. Added5 focused tests (23 with portrait/bible suites). Backend cover prompt default now requests exact project title, short tagline, A PLOTTHIRST STORY footer per user. Generated3 covers via Codex image tool, no API balance used: first freeform concept, then old no-title production prompt, then current titled production prompt. Saved source/prompt provenance in sample-production/quiet-signal-v3. Current titled cover selected. Existing regenerate/variant selection for generated projects remains; prompt-image editing path still pending, not claimed implemented. No workflow submission/deployment. Upload images are already-made assets; no generation debit on upload, and later explicit regeneration retains normal credits. Full live upload-to-worker/delivery acceptance pending.
- PC-only key bridge implemented behind PLOTTHIRST_LOCAL_BROWSER_KEYS=1 and loopback/admin/local-storage/local-queue guards; AWS execution rejected. Browser OpenAI key passes directly to local runtime, not assistant logs/files/job records; worker inherits process environment. Hosted request behavior unchanged. Two initial sample submissions stopped before provider generation: static reference URL validation, then missing server key.18 source sheets re-uploaded via the real local /api/upload-media endpoint. Headshots/covers separate. Local bridge tests passed; live provider/sample acceptance still pending. Do not present failed submissions as generated sample outputs.
- PC sample execution update: queued Story Creation previously built files before uploaded-reference analysis. Canceled partial run ultimate_5f91691eff774e177d / swr_b0365696b3704f498d; partial text incurred API usage and is NOT official sample output. Worker now analyzes source sheets before database creation, checkpoints each result, requires usable source-matched analyses, and reuses them downstream/retries. Headshots and covers remain excluded. 22 focused tests pass (ordering/failure, retry reuse, local-only guards, story review/source contracts, cover preservation); billing inventory unchanged. This reorders existing ancillary analysis, adds no independent debit; provider usage is retained in analysis records, while exact full-run quote/own-key operating-cost coverage remains pending. Video-key preflight now permits stops before video generation, including screenplay. Corrected LOCAL run ultimate_6ab3224780358d55fe / story-creation_9ead055f373833f668 is running reference analysis with gpt-5.6-terra; stop after screenplay, no storyboard/video generation. No hosted deployment or completed-sample acceptance yet.
- Local sample stopped: ultimate_6ab3224780358d55fe / swr_a66e00c4f5364d3393 failed at Chapter_002 final draft gate after three structural reviews. All18 reference analyses succeeded; Chapter1 has expanded prose, Chapter2 is unapproved, screenplay not started. Inspection found overlapping 85-word chapter coverage anchors from Main Story 001 imposed as binding windows; saved Chapter1 and Chapter2 focus instructions both require Elias verification/test response/Prism custody/Sato contact. Reviewer correctly catches the repetition, while repair is constrained by conflicting coverage instructions. Boundary/continuity repair and regression tests remain pending; do not blindly retry or bypass gate. User requested monitoring: existing monthly audit heartbeat temporarily checks progress every5minutes, stays quiet on this known failure, and must restore original monthly automation from app-repair/local-runtime/monthly-audit-automation-backup.toml when monitoring ends. No paid retry on this inspection.
- Follow-up source audit: local is shared application code with undeployed bible/model/worker changes, NOT verified byte-identical to production. Live /api/build-info request timed out; local reports commit=local. Coverage-guard implementation matches committed HEAD e140158, so it was not introduced by the PC bridge. Failed run generated Main Story001 of964 words (6489 chars; requested mainStoryTargetWords3500). Reconstructing Chapter2 provider payload confirms storyBibleSource hash only, generated Main Story and one prior summary; full bible is first-pass input only. CRITICAL: reviewed form bible28019 chars became20015 chars in durable ultimatePayload and Story Writer database, ending midway through Chapter8 with literal ... [truncated]. creative_video_secretless_value truncates strings at20000. This invalidates full-bible acceptance and must be repaired across queued handoffs before another paid run. Overlapping85-word coverage anchors remain a separate conflict; do not conclude bible size or model quality alone caused the failure. No retry or production changes during inspection.
- 2026-09-07 local integrity repair: actual durable truncation source also found in plotthirst_job_backend.compact_value (not only recovery sanitizer). Both now preserve complete text/lists, fail on excessive nesting, retain credential redaction; durable inline-image data requires uploaded media instead of silent omission. DynamoDB existing size guard fails with artifact guidance. Recovery preserves prose content fields. Added real local create/read roundtrip test for bible and450 entries, explicit overflow/depth failures. Chapter coverage uses exclusive whole-sentence assignments and anchors confined to each assignment; no paid planning call added.17 focused tests pass; billing inventory unchanged; deployment and full-run quality remain pending. Display/history preview limits elsewhere are not claimed removed.
- Authorized fresh run submitted through local browser: ultimate_9b66a50d2f50f17c71 / bootstrap ultimate-bootstrap_4d12035c8ed8d9a7ec / story-creation_e3e4252e830f00cb55. Queued child bible28018 chars is EXACT reviewed28019-char input after trailing-newline removal, no text cut off; old storyWriterRunId absent; stopStage=screenplay. Uses existing uploaded sheets/portraits/covers, fresh analysis and story development; prior paid analyses were not transplanted into this fresh browser submission. Monitor this replacement run. Do not promote earlier truncated-bible outputs. No production deployment.
- LOCAL continuation prompt repair approved after joint review: shared rules now classify completed/ongoing/new events and put established prior state above conflicting focus/situationalAwareness instructions. mustAppearInPublicProse means reader comprehension, not replay. Planner/focus/initial writer/repair/draft and expanded reviewers distinguish inherited state, continued activity, signposted recap, ambiguous tense and actual re-enactment. Review asks for current excerpt plus prior evidence and smallest specific correction; repair may override stale plan while preserving new developments. Existing rejection gate is unchanged. Added provider-boundary interception tests covering initial writer, awareness and repair with conflicting prior-state/plan fixture;11 focused tests pass; no provider calls or paid retry. Added prompt tokens only, no new operation/debit; billing inventory unchanged; complete cost quote validation remains outstanding. Current stopped job and saved outputs unchanged; updated code needs runtime reload before future execution. Five-minute monitoring is OFF; original monthly audit restored. Prior chapter full-text handoff and summary/state compaction remain separate unresolved work, not claimed fixed. No deployment.
- LOCAL situationalAwareness intent correction: user clarified this is character decision analysis (objectives, motives, knowledge/beliefs, constraints, options and reasons for a next choice), not a binding scene/bridge checklist. New schemaVersion2 purpose=character-decision-analysis requests characterDecisions and advisory writerGuidance; removes requiredBridge, mustAppearInPublicProse, causalChecklist and prospective stateTracking from requested output. Planner distinguishes actual facts/beliefs and proposed consequences, and avoids giving characters future knowledge. Initial writer, repair, expansion and both review stages treat awareness as advisory; legacy mandatory-looking flags do not require replay or public inner exposition. Review evaluates actual actions and cause/effect, not compliance with every suggestion. New-schema presence checks support characterDecisions.14 focused tests pass including intercepted provider request schemas and legacy flag handling; billing inventory unchanged. Existing failed job and source files remain intact; no paid calls, retries, runtime restart or deployment. Prompt/schema correctness verified locally, model behavior still needs an approved test. Prior chapter full-text/summary compaction issues remain separate.
- LOCAL awareness clarification applied: user wants reasoning to DIRECT upcoming scenes, not passive advice. schemaVersion3 purpose=motivated-scene-direction keeps character objectives/motives/options and adds sceneDirections with ID, prior evidence, completed/ongoing/new status, starting state, actionToWrite, reason and intended change. Writer follows selected valid new/continuing actions; completed events remain inherited history. mustAppearInPublicProse applies to chosen new/continuing actions, not private deliberation or replay. Review/repair checks missing selected actions by ID, distinguishes unchosen alternatives, and overrides only documented conflicts with prior state/source scope. Expansion follows directions within its existing source unit.15 focused mocked provider-boundary tests passed; syntax and billing inventory checks passed. No paid generation, restart, deployment, or change to saved failed run. Model behavior remains unverified. Prior advisory-only notes are superseded by this directive-with-continuity contract.
September 8 local continuation trial — in progress
Resumed swr_d5f53cb43f6842abb0 at chapter_002_awareness (file 24), preserving full bible, reference analysis and Chapter 1. Reconstructed database from saved outputs before that step and verified Chapter 1 prose/state and bible equality; original run backed up in app-repair/local-runtime/story-before-awareness-retry.json. This was a manual local recovery; generic step-back does not yet roll back database mutations.
PC Lab step-back now initializes the guarded local browser-key worker and requests a new selected-step result. Existing local-runtime and continuation prompt tests: 8 passed; frontend typecheck/build passed before final status-text correction. No deployment.
New awareness output is schemaVersion 3 with character decisions and scene directions. It recognizes the assembled team and active Rook, but marks ongoing directions new; initial Chapter 2 draft still restarts arrivals/activation. Review/repair is running. Full story and screenplay acceptance remain pending. Keep recent-summary behavior, advisory readiness and tolerant length goals; duplicate coverage cleanup deferred. No scheduled five-minute monitor.
Trial update: the reviewer caught the replay, and draft 2 now begins with the network remaining sealed and Rook already operating. A further repair is running; full acceptance still pending. Final frontend build, eight focused tests, syntax checks, billing inventory check and checklist sync passed (existing chunk-size/line-ending warnings only).
September 8 — Overall Story Awareness (local implementation)
Added story_overall_awareness.py: a distinct story-wide question-ledger function, rebuilt from prior final chapter reviews on the active route. Separate from character situationalAwareness; chapter.overallStoryAwareness stores reader understanding and per-issue decisions. Planning explicitly considers motives, knowledge, reader evidence, reveal/advance/deliberately hide/defer/investigate, credible scene opportunities and revisit triggers. Plans do not close questions or become completed canon. Later review updates must cite an exact public-prose excerpt for progress/closure. Ending review considers important unresolved items and deliberate open endings. Legacy continuity/plot findings are imported as questions, not proven contradictions. Draft-review failures are not imported as persistent final-story issues.
Connected to focus/awareness/writing packets, exact packet compaction and final review output. Existing provider calls are reused; no new call, reservation or debit path. Additional context/output tokens still cost money within existing usage accounting; estimate recalibration for large accumulated ledgers remains pending. Ledger is not silently truncated. Nine focused tests passed; provider-boundary test confirms separate overall/character fields. Billing inventory, Python/JS syntax checks passed. Local code only: the already-running worker was not restarted or its active sample rewritten. A fresh or safely resumed worker must load this code for a real acceptance run; no deployment or generated-story acceptance claimed.
Deferred: lightweight production progress tracking
- Acceptance open: Design a compact progress endpoint for website, mobile and MCP: run status, current stage/chapter, completed/total work, last activity, revision and actionable error only; fetch detailed files/output separately on demand.
- Acceptance open: Reconcile parent/child progress after resume so an active Story Writer cannot remain hidden behind stale failed Ultimate status. Distinguish historical errors from current failures.
- Acceptance open: Evaluate adaptive polling, unchanged-response handling, hidden-tab backoff, and stopping at terminal state. Verify request/payload costs and recovery from lost connections before release. User requested future work; not implemented or enabled for the current run.
September 8 — Story Writer and lightweight progress implementation
Local implementation complete for review: overall story awareness remains separate from character reasoning, carries final-review questions across chapters, evaluates reader knowledge versus private/proposed reasons, and chooses motivated reveal/advance/hide/defer opportunities. Closure needs actual prose evidence. Corrected omitted issue status updates so they retain previous status rather than reopening automatically. No new paid generation was run.
Added authenticated GET /api/v1/progress using exact known IDs and linked-child traversal (bounded at 100 visited jobs), per-record ownership/shared-access checks, compact fields and unchanged revision responses. Dynamo summary projection includes child links rather than full output. Separate read-only Story Writer cache uses local file modification time or a ten-second cloud-index cache; it never mutates execution state. Existing monolithic local/index storage still has read cost and should later migrate to per-run compact snapshots; no claim of zero AWS work. Current local sample response measured 2024 JSON characters for four jobs; unchanged reply contains only revision/status flags. Polling never resumes/retries jobs.
Production overview and Lab now have independent job progress panels, overall parent state, stale-parent warning when a linked child is active, current step/chapter, last activity, current failure only, adaptive 5–30 second polling, hidden-tab 30 second delay, request-error backoff up to 60 seconds, abort on unmount and stop at terminal state. Manual refresh supports later resume. No invented combined percentage: parent percentage is explicitly its reported overall status; child work uses its own denominator. This makes child work visible without pretending orchestration synchronization is repaired. Discovery follows recorded child links and loaded tree IDs; orphan/unlinked-job indexing and full durable parent resynchronization remain release follow-up.
Verified: twelve focused tests, frontend typecheck/build, Python/JS syntax and billing inventory guard. Browser Lab visibly shows swr_d5f53cb43f6842abb0 failed at chapter_009_expand, 78%, 123/158, OpenAI credit_balance_exhausted; polling stopped. Sandbox updated on 4180; no production deployment, no new API spend. Worker stopped intentionally and will load current code on next authorized resume via local key bridge. Existing prior parent failure remains historical; no job status falsified. Review existing broader whole-site acceptance separately.
September 8 production release — rollout checkpoint
User explicitly authorized publishing current build and current sample assets, leaving replacement sample continuation for later. Release 54f11cb contains website/workbench, Story Writer awareness and compact progress changes, 18 reference sheets, 18 menu portraits and three covers. Sample gallery now exposes titled default cover and alternate versions. Local runtime/sample-production directories and Story Writer run database excluded from Git and Docker. No credential-pattern matches in staged text. 462 Python tests passed, frontend typecheck and three Node test suites passed.
First workflow 34200562325 failed during npm clean install before updating services (picomatch lock mismatch). Corrected using npm 10.9.8 to match Docker; actual clean install, typecheck and build passed. Follow-up a0951c7 pushed; workflow 34200964232 build and serverless deployment succeeded. AWS production /api/build-info now reports a0951c7; all 39 sample PNG endpoints verified HTTP 200 with PNG signature, and frontend bundle contains cover gallery/progress UI. ECS service-stability step still pending at this checkpoint. Custom-domain check from this PC timed out in TLS; www lookup failed. Do not claim a new paid generation acceptance; saved local sample run remains stopped for exhausted provider credit.
Final deployment result
Workflow 34200964232 completed SUCCESS for a0951c7 (web/worker services, serverless operations and resilience checks). Live AWS-hosted build and all 39 sample images verified as above. This supersedes the pending rollout checkpoint. Updated replacement sample remains local and stopped at Chapter 9 expansion; continue later with provider balance and deliberate checkpoint selection. Custom-domain verification limitation remains as recorded.
September 8 sample asset navigation and phone layout correction
User screenshot exposed two release defects: assets existed but SampleReferenceGallery was not mounted in Ultimate, and shared full-width input styling plus narrow two-column cards squeezed segment labels. Added visible References & cover button to sample navigation; it mounts the open gallery with three covers and all 18 reference portraits/full-sheet links. Phone cards now use one column, explicitly sized nonshrinking checkboxes, wrapping labels and reduced nested borders/padding. At 390px sandbox width verified no document overflow, six one-column cards, 18px checkbox and readable labels; gallery DOM includes cover and typed reference links. Typecheck/build and diff check passed. Correction pending deployment; earlier asset HTTP checks did not prove UI discoverability.
September 8 mobile header and synthetic player demo
Mobile utility row now wraps inside the screenplay header; checked at 390px with References & cover visible. Synthetic demo was localhost-only and its assets excluded from Git. Player now offers Try synthetic playback demo on the website, with the existing 12.4-second synthetic test-pattern/missing-card fragments bundled (about 2.3 MB). Clearly separate from project clips; no generation/debit. Frontend typecheck/build passed. Deployment and real iPhone playback acceptance remain pending; this does not establish production streaming readiness for generated project takes.
September 8 — versioned MediaConvert clip previews (local, not enabled)
User approved preparing lower-bitrate streaming copies once per generated take while preserving original-quality downloads. New local MediaConvert preview module uses a durable conditional submission record and an encoding-specific filename/reuse identity. Profile includes H.264, 720p, 30fps, target 2000kbps/maximum 3000kbps, AAC128kbps, HLS, encoding version and actual frame dimensions (1280x720, 720x1280 or 720x720). Owner, source key and immutable source version also participate in reuse identity. Different bitrate, shape or encoding version cannot overwrite/reuse an incompatible preview. Existing takes retain their saved profile; changing defaults must not automatically recharge old takes.
Verified locally: 27 preview/serverless tests pass, including duplicate submission, uncertain submission suppression, event reconciliation, bitrate/shape isolation and old-record preservation; Python compilation and diff whitespace checks pass. No MediaConvert conversion was submitted, no customer charge occurred and this feature is not deployed/enabled.
- Acceptance open: Finish runtime integration before enabling: player must retrieve prepared previews and handle mixed/missing clips, authenticated access and expired URLs.
- Acceptance open: Finish financial acceptance: all parent quotes/reservations and child debits must include the same saved preparation quote exactly once; failures need durable recovery/refund and accurate handling of platform-covered reservation overages. Non-reservation debit paths and recovered take metadata still need alignment. Billing inventory guard currently flags the new quote function; do not accept the inventory until this review passes.
- Acceptance open: Validate actual MediaConvert settings, silent-input behavior, completed fragments, source immutability and a paid pilot; verify EventBridge/Lambda deployment and permissions before enabling the feature flag. Never describe existing placeholder playback as this acceptance.
- Acceptance open: Verify current frontend deployment separately and test real iPhone playback. Repeated-download fees remain a future policy decision, not an implemented charge.
September 8 — future website advertising and evidence
- Acceptance open: Develop website/ad copy from PLOTTHIRST_MARKETING_NOTES.md, preserving future additions. Position the integrated movie workflow and segment/batch control; do not claim exclusivity or universal lowest price.
- Acceptance open: Document founder-reported compressed-movie results: little editing, mainly approximately 20–25% scene/material removal. Confirm scene count versus runtime and measure future runs before publishing quantitative performance claims. Scene removal is not a retake rate. Full-length acceptance remains outstanding.
- Acceptance open: Review evidence, released features and current pricing before publishing marketing copy or a demonstration. Notes and draft wording saved only; no public advertising published.
September 8 — sample resumed after OpenAI balance replenishment
User authorized resuming the authentic sample after replenishing OpenAI. Backed up Story Writer and durable jobs to app-repair/local-runtime/sample-resume-backup-20260908-082803. Verified no queued/running durable jobs before enabling the existing loopback browser-key bridge; key remained in process memory and was not printed or saved to files. Resumed swr_d5f53cb43f6842abb0 via the existing resume endpoint. Observed running at chapter_009_expand, paragraph 4 of 6, 123/158 steps complete, lastError cleared; provider job swp_d878d0f757f64e8781 started. Completed chapters/planning/drafts retained, no reset or fresh run. Saved Ultimate stopStage remains screenplay; no image/video generation authorized by this resume. Completion and screenplay output still pending. Remaining provider steps can use current writer updates; completed outputs do not retroactively test the new awareness rules.
September 8 — completed Story Writer recovery signal
- Recorded evidence: Local sample swr_d5f53cb43f6842abb0 finished all 12 chapters / 164 steps. Reconciled stale Chapter 2 execution failure on Story Creation and Ultimate to review-ready, preserving the original error in a completion receipt. No generation or paid retry performed.
- Recorded evidence: Added completion callback and completed-run resume reconciliation. Passing completion audit requeues the existing child for its normal packaging/idempotent handoff; active workers and canceled workflows are not restarted. Conditional requeue guards duplicate signals (local and AWS).
- Acceptance open: Resolve/review three main plot records still marked unresolved: Encounter with The Witness; Warning and Divergent Choices; Divided Realities and the Choice. Final review describes a resolved central ending, but structured completion audit fails. Do not flip flags blindly. Chapter 12 also needs location clarity for Rook's broadcast (Aster Peak versus ship displays) and has minor thematic repetition.
- Acceptance open: Review missing structured origin records separately from uploaded visual reference profiles. Origin warnings remain intact.
- Acceptance open: Automatic callback is patched on disk, not deployed; running local server needs reload before future runs use it. Current saved jobs were reconciled directly with the new code. Screenplay child has NOT been queued while audit remains blocked. End-to-end successful handoff remains to be tested after audit passes.
September 8 — balanced action and reader engagement defaults (local)
- Recorded evidence: Extended existing draft, repair, expansion and chapter review prompts with shared preference-aware engagement guidance. Default favors meaningful action and consequences balanced with quiet scenes; explicit user style overrides defaults. No per-chapter action quota and no readiness failure solely for low action.
- Recorded evidence: Review stores engagementAudit and considers the preceding three available chapter summaries (not falsely described as full prose review). Targeted recommendations preserve canon, motives, quiet scenes and chapter scope. Existing review/repair passes reused; no additional provider call or automatic final-prose rewrite cycle added. Additional prompt tokens remain part of existing calls; no pricing change or new debit path.
- Recorded evidence: Three context tests and nine completion-signal tests pass; Python compilation and JavaScript syntax pass.
- Acceptance open: Live generation acceptance pending: test contemplative and action-heavy user overrides plus sustained dullness versus purposeful quiet. Changes not deployed and completed sample prose unchanged. Existing MediaConvert billing inventory gap remains; billing check is not a pass.
September 8 — actual screenplay adaptation, local implementation / NOT enabled
- Recorded evidence: Replaced the Ultimate timing-map-only readiness path with a checkpointed screenplay adapter: whole-movie spine -> all segment plans -> page writing with nearby planned segments and preceding actual segments -> page reviews with actual previous/next pages and +/-3 segments -> whole-movie actual-purpose/state/dialogue ledger review. Every segment needs purpose, action state, entry/exit state, verified book evidence, scene references, action and explicit dialogue/silence.
- Recorded evidence: Reject missing/duplicate timing slots, fabricated source quotations, identical adjacent prose without an explicit reprise, missing speakers and overlong dialogue. Semantic repetition/continuation, early reveals and pacing are reviewed by the model against actual context; these are not guaranteed by structural checks. Future plans are labeled as plans. Canon and user preferences take priority; preserve quiet scenes.
- Recorded evidence: Save each request result/usage, script and reviews outside the job item; completed requests reused on resume. Uncertain requests require reconciliation rather than blind retries. Worker cancellation checks and lightweight step counters added. No extra image/video calls.
- Recorded evidence: Only a ready adaptation receipt satisfies the worker's reusable screenplay checkpoint. Script populates existing segment/page workspace; selected clip media is protected from replacement. Existing generated maps need an explicit new revision, not an overwrite.
- Acceptance open: Paid runtime intentionally remains OFF (PLOTTHIRST_SCREENPLAY_ADAPTATION_ENABLED). Existing four-credits-per-minute estimate is NOT accepted coverage for these added calls. Need revised provider/AWS quote, reservation/debit/own-key handling and retry accounting before enabling; do not set the flag merely to unblock a sample. Current pipeline uses 3*pages+2 calls; consider batching after acceptance without losing neighbor context. Static billing audit misses this injected provider path and still flags unrelated MediaConvert quote; no inventory acceptance claimed.
- Acceptance open: Live model quality, long-book context sizing/semantic reduction, concurrency-safe checkpoint claims, admin editing of failed review and revised-source version workflows remain acceptance work. Provider requests are not submitted here. Local server process and website have not been restarted/deployed with this change.
- Acceptance open: Quiet Signal remains saved after chapter 12 with audit review required; no screenplay or video generated on this turn. Resolve the saved ending metadata/location issue before paid adaptation acceptance. Prior sample/reference/cover assets preserved.
September 8 — completed three-page screenplay pilot (local own-key)
- Recorded evidence: Generated a provisional 120-page whole-movie plan and actual pages 1–3 (18 ten-second segments) using shared Adaptation engine v2. Both page-context and scoped ledger model reviews returned ready with all 18 IDs checked; this is pilot readiness, not full-film approval.
- Recorded evidence: Estimated OpenAI cost from returned usage: $1.045524 total, including two earlier non-script review responses ($0.234788). $3 local ceiling retained across those revisions. No Plotthirst credit debit, AWS conversion, image, storyboard or video generation. Source story/audits unchanged.
- Recorded evidence: Initial live feedback exposed overly restrictive adaptation authority; clarified that timing/staging/dialogue may dramatize existing facts. A later live response exposed structured visualPlan output; parser now preserves its shots/lighting/sound/performance without a paid rewrite. Saved plan/page results reused on resume.
- Recorded evidence: Grouped planning/review into three-page requests: full schedule 202 calls vs 362; pilot used 8 successful calls plus the two earlier review attempts. Pages remain independently written with prior actual context. Future pages outside the pilot are explicitly plans.
- Recorded evidence: Local own-key funding and resume safeguards: conservative token admission reserves, actual-usage estimates replacing reserves, retained uncertain reservations, atomic JSON writes, exclusive process owner, persisted provider IDs for retrieval-only recovery. Tests cover limits, duplicate owners, stale locks, caching, scope, continuity schema and rich visual plan preservation.
- Acceptance open: Human review: local-runtime/screenplay-pilot/swr_d5f53cb43f6842abb0/review.md. Opening is quiet analytical tension followed by the dish reroute and its immediate result. Check whether pacing is compelling enough before extrapolating.
- Acceptance open: Whole-book question retained: Kade's later survival is established but its mechanism is not explained. Sabotage questions also remain in provisional plan. Do not label these resolved merely because the opening pilot passes.
- Acceptance open: Production AWS distributed checkpoint claims, full quote/reservation/debit acceptance and full screenplay generation are still pending. Public production adaptation flag remains disabled. Local server reloaded for pilot endpoint only; no website deployment. Production workflow stays review-ready; sample package is not replaced by this pilot.
September 8 — accepted screenplay and clip planning approach
- Recorded evidence: User selected complete screenplay plus a default ten-second segment plan upfront. Narrative chronology metadata is a future Story Writer-to-screenplay enhancement; do not retrofit or regenerate this sample for it.
- Acceptance open: Implement and verify scoped duration replanning: preserve required action/dialogue, expand the affected window when necessary, show revised timing/cost before generation, and preserve existing takes/settings. Current fixed-slot adapter does not establish this capability.
- Acceptance open: Opening/zooming into segments must only read existing plans, never trigger paid writing. Detailed video prompts and storyboards remain explicit preparation/generation work on demand.
- Acceptance open: Full screenplay still pending: local runner is explicitly a three-page pilot with a $3 ceiling. Completing 120 pages requires a separately costed full-run path; do not silently remove the pilot limit or treat the pilot receipt as full-film acceptance.
September 8 - Luna comparison pilot
- Recorded evidence: Local admin pilot variant isolates Luna checkpoints/results and preserves Terra originals. Reuses identical Terra whole-movie plan; Luna handles segment planning/writing, Terra handles page and scoped whole review. Same prompts, source, timing, and validators. No production model default change.
- Recorded evidence: Model-specific local own-key accounting: Luna standard input/output $0.20/$1.20 per million, same long-context multipliers; verified official model page September 8. Independent $3 pilot ceiling within user's $5.66 remaining budget, persisted response recovery and exclusive owner retained.
- Recorded evidence: Paid three-page comparison completed; see results below. No image/video generation or deployment.
September 8 - completed Luna comparison (not accepted for production)
- Recorded evidence: Same three pages/18 ten-second segments generated with Luna planning/writing and Terra reviews, reusing Terra movie spine. Total token-derived provider estimate $0.208224: Luna $0.042458; Terra reviews $0.165766. Original Terra pilot preserved; no auto repair, video handoff, images, or deployment.
- Recorded evidence: Both Terra reviews returned not ready: Luna pulled page-5 power surge into page 3, contradicted page-3/page-4 states, introduced unsupported surviving display, and risked repeating page-2 analysis on page 1. Cheap readable prose does not establish full-film continuity reliability.
- Recorded evidence: Initial source validation failure was only curly versus straight apostrophe. Shared validator now normalizes typographic quotation marks while preserving exact words; cached response resumed without regenerating. 22 focused tests pass, Python compile/node syntax/diff whitespace checks pass. Billing inventory retains unrelated clip-preview quote gap; no production billing acceptance claimed.
- Recorded evidence: Review artifacts: local-runtime/screenplay-pilot-luna/swr_d5f53cb43f6842abb0/review.md and comparison.md.
- Acceptance open: Recommended next evaluation, not started: Terra segment plan with Luna writing and Terra review, to isolate cheaper drafting from scene allocation. Current pilot comparison alone does not justify replacing all Terra operations.
September 8 - Terra plan / Luna writing comparison
- Recorded evidence: User authorized same three-page hybrid test. Separate hybrid directory preserves both previous pilots. Reuses exact completed Terra whole-movie and segment-plan checkpoints; Luna writes, Terra reviews, with identical source/prompt/timing validation.
- Recorded evidence: Model routing/storage tests pass (23 focused tests). Local own-key $3 admission ceiling retained, no production routing change. Previously paid plans reused with no new planning charge; fresh deployment pricing must still include planning cost.
- Recorded evidence: Test completed; see hybrid findings below. No automatic repairs, images, video, or deployment.
September 8 - completed Terra plan / Luna writing comparison
- Recorded evidence: All 18 segments written. New provider cost $0.181726: Luna writing $0.0279022, Terra page review $0.098276, Terra scoped ledger review $0.055548. Reused plans were paid earlier; this incremental test cost is not a fresh-project quote.
- Recorded evidence: Major previous failure absent: no premature surge/damage; broader ledger review ready=true. Page review ready=false flags visualPlan warning lighting in P0002-S005/S006 before reroute. Human inspection: S005 explicitly says acquisition warning, which may mean ordinary tracking loss rather than detection; S006 is ambiguous. Clarify warning type or remove warning staging and re-review rather than automatically accepting/rejecting reviewer interpretation. Current status remains review-required.
- Recorded evidence: Original Terra and Luna-plan variants preserved. Saved hybrid review/comparison under local-runtime/screenplay-pilot-hybrid/swr_d5f53cb43f6842abb0/. No automatic repair, paid continuation, video handoff, deployment, or default model switch. 23 focused tests passed.
September 8 - adaptation-aware forward review v3 (local, unpaid verification)
- Recorded evidence: Shared screenplay adapter permits small consistent connective reasons, dialogue and beat adjustments; records adaptationChoices per segment and carries them to later writing/review. Major facts, outcomes, knowledge and consequential reveals remain protected. Review distinguishes acceptable adaptation, clarification, intentional mystery and story blocker; acquisition warnings are not automatically detection warnings.
- Recorded evidence: Reviews now interleave after each batch before subsequent writing (three pages in production configuration). Persistent openIssues and issueHistory carry questions forward; resolution requires evidence in an actually written segment. No forced next-page explanation or automatic backwards Story Writer rewrite. Real blockers pause dependent writing with partial output preserved. Future neighbor is explicitly planned, not falsely presented as actual; final ledger checks full state progression.
- Recorded evidence: Adapter version 3 and production checkpoint identity updated: old pilot outputs remain unchanged; changed prompts cannot silently reuse v2 paid responses. Runtime model defaults/production enable flag unchanged. Hybrid full-run model routing and user-approved spending must be selected explicitly; local endpoint is still a pilot, not a full-film runner.
- Recorded evidence: 27 focused tests pass, Python compile, app.js syntax and diff whitespace checks pass. Static billing audit still reports pre-existing clip-preview quote gap; not accepted or fixed by this work. No new provider calls or deployment.
- Acceptance open: Live acceptance of v3 before full run; assess deferred issues/continuity and cost with actual outputs. Full local run entry point and budget controls need completion before spending; AWS distributed claims and quote/debit acceptance remain pending.
- Estimate for 120 pages / 720 ten-second segments, conservative fresh v3 run: Terra whole plan $0.21, Terra 40 planning batches $3.42, Luna 120 written pages $1.12, Terra 40 reviews $3.93 = $8.68 before larger final ledger review, added issue context and repairs. Budget allowance $10-$12, not guaranteed. Based on measured pilot usage extrapolation, not a new provider price quote. Two comparison tests consumed $0.38995; user's previously stated $5.66 implies about $5.27 remaining absent other usage. Excludes images, storyboards, clips, AWS and customer markup.
September 8 - ten-page reviews and final video-planner advisory (v4 local)
- Recorded evidence: User selected review interval of ten screenplay pages, independent of three-page segment planning. Full 120-minute schedule: 40 planning calls + 120 writing calls + 12 batch reviews + whole-plan/final-review calls = 174 calls. Partial final batches are reviewed. No paid per-segment reviews or automatic review/replan loops.
- Recorded evidence: Batch review sees upcoming plan slots and may target one future segment with a bounded clarification instruction. It cannot target written work; writer instructed to preserve facts, knowledge, timing, purpose/outcome and reveal boundaries. Stable issue IDs and offered markers prevent repeated directives; actual resolution still requires evidence in written output. If it cannot fit safely it stays unresolved.
- Recorded evidence: Final whole-movie review saved as advisory, not a screenplay rewrite trigger. Its findings/open questions are retained in adapter result, runtime segment review context, segment-to-board materialization and video media-prompt packet. Prompt policy forbids treating advisory as permission for story changes or repeating unresolved explanations in every clip. Major contradictions still need explicit review before affected production.
- Recorded evidence: Versioned checkpoint identity includes separate reviewBatchPages. Production progress counts updated. 31 focused tests pass; Python compile and billing audit run. Billing audit retains unrelated clip-preview quote gap. No production deployment, runtime enable/model default change, provider calls or modification of saved sample outputs.
- Acceptance open: Measure live ten-page review cost before quoting savings. Prior three-page review $3.93 extrapolation is obsolete for this schedule; fewer calls do not imply proportional token savings. Full own-key run launcher, approved spending limit and live v4 acceptance remain outstanding.
September 8 - remove final review; retain issue ledger (v5 local)
- Recorded evidence: User rejected the whole-movie review as unwanted interference/cost. Removed that paid call from shared adapter; no final-review prerequisite child is created. Full schedule now 173 calls: 1 movie plan, 40 segment plans, 120 writing calls, 12 ten-page reviews.
- Recorded evidence: Completed screenplay retains structured issueLedger with openIssues and evidence-backed resolution history from existing batch reviews. No automatic semantic-resolution claim: offered/attempted clarification remains unresolved until evidence is checked. Existing model reviews perform meaning checks; programmatic ledger records state.
- Recorded evidence: Runtime no longer puts all open issues into every segment. Only explicit target assignments not already offered can enter that segment's context. Unassigned unresolved issues remain in project ledger, not unsolicited instructions to every clip.
- Recorded evidence: 31 focused tests pass including absence of final review calls; updated counts and versioned checkpoint identity. Existing pilots and public sample unchanged; no deployment or provider spend.
- Acceptance open: Video planner shared assignment/claim and evidence-backed resolve write-back (including concurrent batches, retries, rejected takes and revisions) still requires implementation. Current scoped context does not itself provide atomic shared resolution. Do not claim this is complete or enable blind per-clip auto-resolution.
September 8 - original-version-only issue scope (local)
- Recorded evidence: User-approved boundary: automatic issue assistance belongs to original Plotthirst screenplay, not user-altered continuity. User edits remain authoritative; do not silently repair, rereview, or charge for validation. Broader edit validation is a future separately priced opt-in feature.
- Recorded evidence: Added sourceRevision and generated-workspace content fingerprint. Video media-prompt issue context requires matching complete workspace baseline and current selected board text. Changes elsewhere also disable baseline suggestions; missing/unverified baseline disables safely. Selection/take metadata does not invalidate story content; baseline is never resealed over edits. No edits to the source book or saved original ledgers.
- Recorded evidence: 37 focused tests pass, Python compile, JS syntax and diff whitespace checks pass. No provider calls/deployment.
- Acceptance open: Shared planner claim/resolve write-back remains pending. Future scene/book-edit branches must retain explicit provenance and use this eligibility gate on all planner entry points before enabling automatic issue resolution. Existing legacy/unverified work receives no automatic suggestions; no blanket claim of complete editor branch support.
September 8 - versioned known-issue checks and minor resolver core (local only)
- Recorded evidence: Added screenplay_issue_versions.py: immutable screenplay/issue snapshots, edit branch with needs-edit-check states, revert active pointer preserving all versions, known-issue comparison packet, informational review-result application (newly resolved/earlier payoff/reopened/uncertain/unchanged), evidence requirement and preservation of later scenes. Old book and takes are not changed.
- Recorded evidence: Added local atomic screenplay_issue_store.py with exclusive writer and full-store etag check; rejects stale saves and removal/overwrite of snapshots. Runtime persists initial issueVersions with completed adaptation. This is not distributed AWS conditional-update acceptance.
- Recorded evidence: Resolver core requires an eligible open issue, one plan/segment claim, at most two seconds explicitly available timing, and at most six added dialogue words within speech budget; default allowance zero, no silent/music-lip-sync override or new speaker. Only visual_detail/brief_dialogue proposals; locked scene hash, exact accepted-proposal hash/text and existing plan continuity acceptance required before resolved-in-plan. It is not rendered-resolution proof. Discard releases claim/reopens issue. Structural guards do not replace semantic continuity validation.
- Recorded evidence: Minor-resolution policy included in video media prompt packet. Staged screenplay editor request now preserves book/takes and all versions by default; no automatic addendum, take remap or paid known-issue review. Editor remains staged, not a completed customer editing workflow.
- Recorded evidence: 46 focused tests pass; Python compile, frontend TypeScript check, JS syntax and whitespace check pass. Frontend build succeeded with --configLoader runner after default config bundler hit a sandbox parent-directory read error. No paid provider calls or deployment. Billing inventory retains unrelated clip-preview quote gap.
- Acceptance open: Remaining integration before release: connect customer version/revert controls and known-issue review quote/reservation/provider/debit path; activate checked-version ledger scope; wire real planner claim/accepted-plan/discard events through AWS conditional updates and verify concurrent batches, retries and rejected takes. Existing original-baseline guard remains fail-closed for unverified edited work until this is wired. No automatic resolutions enabled merely because core functions exist.
September 8 - locked original book and future adaptation-to-book option
- Recorded evidence: User requirement: original Story Writer book is locked and must never be overwritten by screenplay edits, reviews, issue resolutions or video planning. Screenplay is a separate adaptation, like a film adaptation of an author's published work.
- Acceptance open: Screenplay changes that intentionally depart from the book must carry explicit versioned adaptation-override notes: source passage/fact, replacement in this screenplay version, scope/affected segments and user intent. Downstream planning must follow the selected screenplay override rather than restoring the conflicting book fact; source provenance remains available. This is a requirement to integrate with the pending editor/ledger flow, not a claim that all override paths are complete.
- Acceptance open: FUTURE ONLY - adapt the finished movie/screenplay back into a new book edition. Use accumulated accepted changes, clarified motives, continuity decisions and review outcomes to produce a more worked-out book. Offer voice, chapter count and word-count controls again, or a separate proposal for revising a copy of the existing book. Preserve original book and prior editions. User explicitly said to note this option, not implement it now.
September 8 - full sample screenplay preparation (local, not deployed)
- Recorded evidence: Added local admin/owner-scoped full-screenplay preflight and start endpoint. Preflight verified HTTP 200 without provider calls: 120 pages, 720 ten-second segments, 173 scheduled calls; Terra planning/review and Luna writing; review every ten pages; no final whole-movie review or image/video generation.
- Recorded evidence: Full runner uses the shared adaptation pipeline, a versioned output directory, explicit spending ceiling, persisted costs and response IDs, and exclusive ownership. Admission denial before submission is budget-paused, not an uncertain paid request. Completed calls are reused on resume; source book is unchanged.
- Recorded evidence: Local version core records screenplay edit overrides with source evidence, before/replacement text, segment scope and user intent. Known-issue review receives those overrides; checks retain them and revert restores the selected version. Customer editor and distributed planner integration remain pending as listed above.
- Recorded evidence: Full output includes readable source chapter numbers/titles, initial issue versions, review text and outstanding issue report. Existing sample and pilot artifacts are retained.
- Acceptance open: Paid full sample run and quality acceptance remain pending. Provisional $6-$8 estimate is not a guarantee; ten-page review cost has not been measured. Last known balance after comparison tests is about $5.27, so no paid full run started. No production enablement/deployment this turn.
- Acceptance open: Existing unrelated clip-preview quote billing inventory gap remains; billing audit is not a clean pass.
- Verification: 50 offline tests pass (47 focused plus 3 full-run tests). Full simulation covers 720 segments, 173 calls, twelve reviews, resume without repeated provider calls and unchanged source book. Python compile, JS syntax, diff whitespace and local HTTP 200 checks pass. No paid provider requests were used by these tests.
September 9 - full sample screenplay started locally
- User authorized the full run. Started source swr_d5f53cb43f6842abb0 with an $8 ceiling, Terra planning/review, Luna writing, ten-page reviews and no final whole-movie review. Local endpoint returned HTTP 200; first whole-movie provider response ID persisted. Output: app-repair/local-runtime/screenplay-full/v5/swr_d5f53cb43f6842abb0.
- Acceptance open: Run is in progress, not accepted or published. Check status.json and costs.json before any resume; do not duplicate submission. No image/video generation or deployment was started.
September 9 - adaptation field compatibility and resume
- Recorded evidence: Paused after two completed calls ($0.343716): provider adaptationChoices used choice/reason instead of description/rationale. Added lossless alias normalization retaining provider fields; conflicting values still fail. No source text or saved provider response was rewritten. 23 adaptation tests pass, including aliases/conflicts; Python compile passes.
- Acceptance open: Resumed the same local full screenplay with unchanged $8 ceiling and cached completed calls. Live result acceptance remains pending.
September 9 - provisional writer resolution claims (local)
- Recorded evidence: Page writer can emit per-segment issueResolutionClaims with issueId and evidence from actual segment text. Claims require a known, assigned, not-yet-attempted issue; invented evidence and unassigned claims fail. Ledger records writerResolution=pending-review while issue remains open. Ten-page review confirms through resolvedIssues or leaves it open with unconfirmed writer claim. Offered markers prevent repeatedly instructing later segments to resolve it.
- Recorded evidence: No additional provider call or final whole-movie review. Final free checks validate assembled segments/coverage/timing/source evidence/dialogue structure and adjacent duplicate prose; readiness also checks existing batch review results and movie-plan blocking flags. This does not establish semantic quality beyond those reviews. Nonblocking unresolved questions may remain.
- Recorded evidence: 50 focused tests pass; Python compile and JS syntax pass. Writing/review prompt changes do not affect this paused run's five cached planning calls; future calls use updated prompts after local server reload. No paid calls or deployment this change. Run remains paused on source-evidence validation at plan-10-12, recorded cost $0.722078. Do not silently bypass that separate unresolved check.
September 9 - citation warnings, ledger-aware resume, sequel continuity note
- Recorded evidence: Nonverbatim source quotes now become sourceEvidenceWarnings rather than stopping all work. Missing/unknown source chapters and empty quotes still fail. Warnings retain original quoted text and meaningVerified=false; ten-page review receives both planning/writing warnings and full source chapters to distinguish wording mismatch from unsupported story facts. Final saved output preserves warnings, not a false assertion of verbatim verification.
- Recorded evidence: 52 focused tests pass, including warning propagation, source omission failures and review rejection of unsupported events; Python compile and JS syntax pass. Local server reloaded and same sample resumed with $8 ceiling and five saved responses ($0.722078 before continuation). No new whole-movie review or paid repair call added.
- Acceptance open: Accept actual full-run output after completion; this is not deployment or semantic-quality acceptance. Existing unrelated clip-preview billing audit gap remains.
- Acceptance open: FUTURE: allow a book-two/screenplay-two/movie-two planning stage to optionally import the selected prior version's ending state, established outcomes, confirmed resolutions and unresolved questions. Distinguish pending writer claims from confirmed facts, preserve source version/provenance, and let user direction decide which threads carry forward. No sequel generation or automatic changes to the original book implemented. Final check itself remains free validation; the saved ledger is the reusable continuity artifact.
September 9 - automatic missing-segment recovery (local)
- Recorded evidence: Shared planner/writer now retains valid returned segments and automatically requests omitted slots in one-page completion packets, at most two rounds per original call. Accepted segments are locked context, never regenerated or substituted. Stable recovery call IDs/hashes and persisted provider responses allow resume without repeating paid calls. Unknown/duplicate IDs, invalid structures, story blockers and uncertain submissions still pause rather than inventing output or blindly retrying.
- Recorded evidence: Recovery uses the existing stage/model, provider cost ledger, conservative pre-submit budget admission and $8 full-run ceiling. No separate review loop. Recovery calls are counted in progress totals. This local own-key run has no Plotthirst debit or AWS compute; production remains feature-gated pending reservation/debit and distributed recovery acceptance.
- Recorded evidence: 55 focused tests pass, including partial planning/writing, locked completed text, bounded exhaustion, unexpected IDs and recovery resume without repeated calls. Compile/JS checks pass. Billing audit retains the unrelated clip-preview quote gap; no inventory acceptance was claimed.
- Acceptance open: Live sample resumed from five-dozen planned pages plus saved page 61; recovery fills omitted pages 62 and 63 before ordinary planning continues. Starting cost $2.903758. Verify live completion and output quality; no deployment. Budget/provider failures and semantic blockers are not promised to recover automatically.
September 9 - user disables ten-page review; forward-only sample
- Recorded evidence: User explicitly requested reviews off for now and completed segments locked. Run-scoped run-options.json disables ten-page review without changing website defaults or spending ceiling. Adapter records the policy change, preserves prior inputs/cached calls, and permits this transition before any completed batch review. Re-enabling on that branch requires a new revision; no backwards automatic rewrite.
- Recorded evidence: Each fully written page is saved immediately; segment hashes lock completed content and detect altered cached segments. Missing-slot recovery still preserves valid segments. With reviews off, final status is completed-unreviewed and qualityReviewed=false, never a claim of semantic-review acceptance. Free final structural checks remain; no final AI review.
- Recorded evidence: 56 focused tests pass including pre-review pause -> disabled-review resume, no duplicate writing calls, unchanged completed text, persistent policy and mutation rejection. Python compile passes. Same sample resumed with 10 pages / 60 segments retained, cost $6.2206798 before continuation, unchanged $8 ceiling. Verify live completion. No deployment or website default change.
- Acceptance open: Without batch reviews, new reviewer-discovered issues and confirmations are unavailable. Existing writer resolution claims remain provisional. Any future sequel continuity import must preserve that distinction. Existing unrelated clip-preview billing inventory gap remains.
September 9 - automatic planned speaker cast completion
- Recorded evidence: Writer validation automatically fills omitted cast metadata only for speakers explicitly assigned in the same locked segment plan's character list or dialogue (speaker/character schemas). Adds provenance in castMetadataRepairs, preserves scene text/dialogue/timing, and does not invent identities, reference assets or speakers. Unplanned speakers still fail. Repeated normalization is idempotent; raw provider records remain intact.
- Recorded evidence: 58 focused tests pass. Checked actual saved page 37: all previously omitted speakers can be accounted for from its plan, without rewriting prose/dialogue or another AI request. Python compile/JS syntax pass. Resumed same run, reviews off and $8 ceiling unchanged; prior locked segments retained. No production deployment.
- Acceptance open: Supporting-role reference assets are a later production prerequisite, not fabricated by this metadata repair. This resolves the specific repeatable omission class, not a promise of zero possible failures.
September 9 - extra-output and duplicate segment handling
- Recorded evidence: Shared segment acceptance now validates only explicitly requested slot IDs. Unrequested output is retained intact in raw provider responses and segmentOutputExceptions; it does not advance a future page or overwrite completed work. Identical duplicates are accepted once with provenance; conflicting versions are all set aside and only the disputed slot enters existing bounded recovery. Invalid identities still fail. No text truncation or silent extra-scene acceptance.
- Recorded evidence: 61 focused tests pass covering excess output, unchanged requested prose, no repeat calls on resume, identical duplicates without spend and conflicting-duplicate recovery limited to its slot. Python compile and JS syntax pass. Actual saved page 57 had six valid requested segments and three extras; validated extraction preserves its text without another provider call.
- Acceptance open: Same sample resumed with reviews off and $8 ceiling unchanged, starting recorded cost $6.8094562. Verify live continuation and final output. No deployment. Recovery remains under existing own-key admission/cost accounting; existing unrelated clip-preview billing inventory gap remains.
September 9 - equivalent speaker nicknames
- Recorded evidence: User confirmed Apparition and Illusion represent the same speaker. Added reusable approved nickname groups rather than a page-specific correction. Same-segment uniquely assigned identical dialogue anchors the mapping; record suppliedLabel/plannedLabel in speakerAliasMappings and fill cast metadata. Dialogue words and story actions do not change, raw provider response stays intact. This is a deterministic approved-alias vocabulary, not an unrestricted semantic synonym detector or merger of named characters.
- Recorded evidence: 62 focused tests pass including unique-line match, ambiguous-speaker refusal and differing-line refusal. Resumed page 65's saved output under unchanged $8 ceiling and reviews disabled. No paid regeneration for the nickname correction; no website deployment.
September 9 - speech tolerance and requested progress monitoring
- Recorded evidence: User approved 20% tolerance over the 2.5 words/second speech estimate: ten-second segments allow up to 30 words. Above-baseline accepted segments retain speechTimingWarning with actualAudioTimingVerified=false; larger excess still fails. Dialogue/timing unchanged. 63 focused tests pass at 25/26/30/31 words; local server resumed saved page 98 under $8 ceiling, reviews off.
- Recorded evidence: Created checked progress snapshot and refresh script in thread visualization directory (screenplay-progress.html, refresh-screenplay-progress.py), reading small status.json only with no provider calls. Inline display is a timestamped snapshot, not a live API connection.
- Acceptance open: Five-minute scheduled monitoring is NOT enabled. New heartbeat creation rejected because this task already has a monthly cost audit attached. Attempt to temporarily update that heartbeat was rejected by automatic approval review as an unrequested consequential schedule change with insufficient restoration protection. Existing monthly automation remains unchanged. Need explicit user approval for temporary replacement; do not bypass using cron or shell scheduler. Original settings copied read-only to monthly-audit-automation-restore.json for review/restoration.
September 9 - full sample screenplay completed; mobile progress display
- Recorded evidence: Full local sample result.json exists: completed-unreviewed, 120 pages, 720 unique segments / 7,200 seconds, all 720 segment locks retained, no ten-page reviews. Final provider spend $7.858175, below $8 ceiling. review.md exists. This is generated output with structural validation, not semantic quality approval or published sample replacement.
- Recorded evidence: Removed the nonworking mobile Check now follow-up button and incorrect five-minute-monitor label from the inline progress snapshot. Refresh by sending check in chat. No new monitoring automation exists; monthly cost audit unchanged. Completed display now says Screenplay saved.
- Acceptance open: Next: user review of completed screenplay and controlled sample-package integration with existing references/cover; not deployed or silently substituted into public sample.
September 9 - independent finished-screenplay editorial review
- Recorded evidence: Read complete spine/coverage, scanned all 720 segments for drafting artifacts and exact dialogue repeats, closely read key sequences through the ending and compared source-book chapters 4/10/12. Findings: app-repair/docs/QUIET_SIGNAL_SCREENPLAY_EDITORIAL_REVIEW_2026-09-09.md. No provider spend, screenplay/book mutation, or deployment. Targeted review, not exhaustive semantic acceptance.
- Acceptance open: Discuss bounded corrections: Elias ship/causeway continuity, four human bodies versus Rook membership, graph-overlay aging causality, two leaked drafting directions. Separate pacing decision: 27-minute observatory opening, page-43 launch and only two minutes for Earth defense/ending. Known spine issues absent from final issue ledger need handoff verification. Kade survival mechanism and saboteur are inherited limitations; no invented automatic resolution.
September 9 - approved screenplay corrections and bounded final review pipeline
- Recorded evidence: Created separate editorial-2026-09-09 sample revision: eight corrected segments, all 720 segments / 7,200 seconds retained, original result bytes unchanged, zero provider calls. Corrected Elias location transitions, physical human count, graph/aging causality and leaked drafting prose; corresponding directions/dialogue synchronized. Pacing and inherited mysteries unchanged. See app-repair/docs/SCREENPLAY_FINAL_REVIEW.md.
- Recorded evidence: Implemented shared bounded Terra review -> optional Luna assigned corrections -> Terra focused verification, max three logical calls, no repair loop; immutable revision provenance, protected timing/source fields and explicit project selection. Local admin own-key API actions reuse existing ownership/loopback gates; saved responses, uncertain-submission protection, persisted ceiling and conservative admission. 75 focused tests pass; Python/JS syntax and diff whitespace checks pass.
- Acceptance open: Local API restart/live acceptance, customer UI and production quote/debit/operating allowance integration remain pending; no paid final-review call or deployment. Conservative preflight reservation can exceed token-based expected cost and pauses without silently increasing authorization. Billing audit still reports only the existing unrelated clip-preview quote inventory gap. Corrected sample remains a separate version pending public sample integration.
September 9 - corrected sample sandbox and customer pricing reconciliation
- Recorded evidence: Packaged the actual completed book and approved corrected screenplay as sample v3: 120 pages, 720 segments, 7,200 seconds; original generation/revision files preserved. All 21 manifest file hashes verified. Saved segment plans and only their named matching reference packs are shown; 718 segments have an existing matching sheet. Missing subjects remain explicit, never substituted with the entire library. Menu portraits link to full sheets; existing cover/gallery retained. No provider generation spend.
- Recorded evidence: Updated sample segment review packets, plan/direction/dialogue views, playlist placeholder descriptions and direct sandbox review navigation. Sample header reports sample totals and suppresses unrelated fresh-start credit quote.
- Acceptance open: User sandbox review, public sample upload/deployment and production acceptance still pending. Additional named entities without dedicated sheets remain outstanding; no new clips generated.
- Acceptance open: Mandatory automatic final review/corrections and customer quote/debit wiring remain pending; bounded engine exists, not a user-optional policy. Reconcile operating allowance across billable actions. Priced 120-minute Seedance 2.0 720p customer subtotal $3,824.75–$3,826.55 at 1.8x excludes unpriced prompt/analysis/delivery and shared allowance; see app-repair/docs/FULL_MOVIE_CUSTOMER_ESTIMATE_2026-09-09.md. Do not label it an all-in checkout quote.
September 9 - Admin movie cost monitor and restored sandbox
- Recorded evidence: Added Admin > Admin Controls > Movie cost monitor: dated customer subtotal/breakdown, unpriced scope, currently loaded billing settings and copyable review. Generated from the cost report, with tracked source fingerprints and --check stale detection. AGENTS.md requires updates/re-audit after relevant changes; not a live automatic quote or scheduled monitor.
- Recorded evidence: Local sandbox was stopped (connection refused on4180); restarted with local storage/backend, job auto-start off. HTTP site/sample endpoints200. Browser verified Admin panel and samplev3: 120 pages/720segments; first segment references Mara Venn/Aster Peak Observatory/Signal Prism. Both tabs marked to remain open. Sample has no generated video; missing dedicated sheets remain explicit. No production deployment.
- Recorded evidence: Browser loaded sandbox allowance is $140.0154826191 with1000 estimated actions, distinguished from earlier empty standalone import and hypothetical$250. No billing settings changed. JS/Python syntax and both generated-panel consistency checks pass.
September 9 - contribution visibility defaults
- Recorded evidence: Personal Settings > Profile now has independent Show my name to group members / Show my name publicly checkboxes. Saved in attributionPreferences through user normalization and the authenticated non-admin user-update allowlist. Missing older-client values preserve existing preferences. Only literal booleans accepted; no hide-from-admin option. Defaults off for previously unset preferences.
- Recorded evidence: Added contribution_attribution.py audience projection contract: admins, owner, authorized manager and contributor see identity plus both preferences; group/public flags independent. Four combinations, privilege rules, invalid values and update filter verified. This helper still requires integration at publishing boundaries; client-supplied roles must never grant access.
- Acceptance open: Per-take override UI, trusted creator capture for every generation/upload route, manager review, server-filtered group/public releases and public sample publishing remain pending. Account defaults alone are not end-to-end attribution enforcement. Revenue rights are deferred; identity is not an earnings agreement.
- Acceptance open: Ambience work discussed earlier is NOT implemented yet: reusable location assets, exactly-once generation/retry protection, explicit sub-clip start/end and fades, dominant clip, player checkbox/now-playing, pause/seek alignment and shared stitch map. Current mapper still makes per-board layers. No claim of completed ambience repair.
- Recorded evidence: Pricing review: only profile preferences/attribution metadata changed; no paid operation/rate or quote/debit changed. Refreshed server fingerprint after this scoped review. Sandbox restart loads new profile persistence; no production deployment.
September 9 - correction: attribution is per contributor per project
- Recorded evidence: Removed mistaken account attribution checkboxes. New My project attribution in Ultimate toolbar stores independent group/public preferences in the signed-in contributor's projectAttributionPreferences[projectId]. Project switch remounts controls; two projects can disagree. Old account-wide flags are not migrated into projects. Sample controls demonstrate choices but do not persist public-sample membership. Saved real project required; browser save queues normal authenticated account sync.
- Recorded evidence: Added active-take Created by display to ordinary and continuous movie players, consuming viewer-filtered creatorCredit. Missing data says not recorded; hidden credit says contributor prefers attribution hidden. No guessed project-owner attribution.
- Acceptance open: Trusted creation identity capture, server audience projection wiring and manager view, publication/group permissions and earned-rights ledger are still pending. The current player does not yet receive creator credits from saved take summaries. Project preference UI is not a claim of complete publishing enforcement. Ambience changes remain pending as previously recorded.
- Recorded evidence: Build and source syntax verified; project preference isolation/strict boolean/stale-client checks pass. No provider cost or debit logic changed; reviewed and updated the server fingerprint. Local only.
September 9 - visible screenplay cover
- Recorded evidence: Added selected project cover and project title above the screenplay workspace content. Sample uses its existing titled Quiet Signal cover; real projects use selected cover fields only, never an arbitrary reference image. Artwork opens full-size, contained without cropping; missing cover has an explicit empty state. Sample title no longer uses unrelated fresh-start title. Local UI-only change, no generation/cost changes or deployment.
2026-09-09 — Admin segment prompt workbench preview
- Local sandbox: visible admin prompt workbench above sample segment settings, readable/raw views, stage selections, copy packet and saved source loading. Source/storyboard/video stage descriptions are explicitly previews, not an execution trace.
- Still pending: authenticated persistent worker stage request/response capture, cost validation, selected-stage execution and production project association. Run controls disabled; no paid calls or generation. No pricing/backend operation change.
- Validation: frontend TypeScript and Vite build passed; static runtime bundle refreshed. Not deployed.
- 2026-09-09 local prompt workbench: each stage checkbox now has a fixed 18px size and top-left anchor beside its heading, independent of shared form input sizing. Vite build passed; execution wiring remains pending.
- 2026-09-09 local admin prompt workbench selections now enforce a prefix: selecting later includes prerequisites; deselecting the last explicit endpoint restores earlier selection; clearing an interior stage invalidates that dependent branch/history. Clear all clears memory. Outputs unaffected. Verified transition cases, TypeScript and Vite build; local bundle refreshed. Execution wiring still pending.
- 2026-09-09 local player: duration-proportional clip-availability timeline (teal available / striped not generated), click-to-position and accessible whole-movie seek slider in both segment player and continuous HLS preview. Segment playback accepts subclip seek offset; actual loaded take lengths replace estimates. TypeScript and Vite build passed; static bundle refreshed. Mobile device playback acceptance remains pending. No paid operations or price changes.
- 2026-09-09 local player sizing: fixed viewport-relative dialog height and equal responsive media/placeholder heights. Long ungenerated segment headings/descriptions scroll inside the bounded stage; timer remains outside the text scroller. Normal video and continuous video use contain scaling. TypeScript/build passed, local assets refreshed; device visual acceptance pending. No billing changes.
- 2026-09-09 correction: replaced timed-preview description scrolling with measured auto-fit typography. Full title/description retained; font size recalculates for text, window size and loaded fonts within the fixed stage. No textual truncation. TypeScript/build passed; local bundle refreshed. Long passages become smaller; device readability acceptance pending.
- 2026-09-10 local player mobile optimization: full viewport dialog at phone/short landscape sizes, safe-area padding, 44px touch controls and seek slider, compact spacing, collapsed labeled Playlist options & synthetic demo panel. Stable media height shared with streaming; complete placeholder text still auto-fits. TypeScript/build passed; refreshed local JS/CSS. Actual phone portrait/landscape acceptance pending; no deployment or pricing changes.
- 2026-09-10 phone preview: tools/phone_preview.py read-only public-asset proxy listening on 192.168.40.67:4181 (session 35875), upstream existing loopback4180. LAN192.168.40.0/24 and Host checks, public allowlist, all writes/auth/private/local-key routes blocked; no forwarded credentials. Public sample GET200 and path protection tests passed. Scoped Wi-Fi firewall installation requested via Windows UAC; user phone connectivity acceptance pending. Stop process and remove named firewall rule to disable. IP may change with DHCP. No production change.
- Phone preview follow-up: firewall confirmed enabled using netsh (scoped4181/LAN). Replaced normal guest shell at LAN root with direct Ultimate sample mount and visible connection/loading status; normal shell depended on blocked session services. Verified browser loads720-segment sample and opens player through4181. Preview process now session1037. Phone retry still required; not yet confirmed from actual device.
- 2026-09-10: Remote mobile sandbox setup: official ngrok 3.39.11 installed under ignored local-runtime; separate tools/remote_sandbox.py loopback password gateway prepared. Unauthenticated routes and traversal/local-only exclusions checked. No public tunnel yet: credential handling requires user authorization after automatic review blocked it. Full remote login/mobile acceptance pending; official website unchanged.
- 2026-09-10 remote access update: user explicitly approved ngrok credential handling; credential saved through loopback form without chat disclosure. ngrok session 16342 serves https://awoke-squatter-decrease.ngrok-free.dev through password gateway session 42729 (4183); sandbox session 89368 (4180). External HTTP tests PASS: password protects API/root; login reaches HTML; sample JSON/CSS 200; private source and local-runtime/login bypass routes 403. Chrome free-ngrok first-visit notice renders blank (cdn.ngrok.com error.js / notice 6024), so actual mobile/browser acceptance remains pending. Setup password is displayed only on local Chrome setup-result tab. No paid generation or official-site deployment. Processes must stay running; automatic startup not installed.
- 2026-09-10: Admin segment workbench now exposes Generate selected sequence above the collapsed panel, Select through final prompt, stop-stage/count, and per-stage run-through controls. Source-only sequence works locally; selecting later stages explicitly stops at the unconnected Video planner with no provider call or charge. This is UI progress, NOT completed worker integration or a generated final prompt. Persisted project binding, exact worker request/response capture, estimates/reservation and stage execution remain required before acceptance.
- 2026-09-10: Admin sample prompt sequence now calls authenticated local-only /api/v1/admin/sample-prompt-sequence, reusing production media-packet, video-prompt, policy-format and storyboard-source compiler functions. It uses server canonical segment/reference data plus displayed resolved settings, saves owner-scoped idempotent preflight traces under ignored local-runtime, and exposes raw/readable function input/output. Reference edits/timing mismatches fail instead of silently falling back. This is deterministic preflight, NOT AI planner execution or provider-final validation. Paid adaptation, quotes, durable production-job/media stages remain unconnected and stop explicitly. Nine sequence smoke tests plus nine source contract tests pass (18 total), including HTTP admin deny/allow. No provider calls or debit; admin local inspection cost exception only. Billing inventory still flags existing plotthirst_clip_preview_runtime.py quote path; not caused or suppressed by this work.
2026-09-10 - Sample clip entry and production handoff (sandbox)
- Added top Generate sequence · Admin shortcut beside Player, opening the prompt workbench.
- Renamed unbilled compiler action to Prepare selected prompts; added Open clip production to import the saved sample and focus the chosen segment in the real project controller.
- Import preserves all 720 segment assignments, full production reference sheets and menu-only headshots. Validates the 21 delivered artifacts without inventing intermediate writer/review history. Unrelated missing references no longer block a segment.
- Validation: 23 Python smoke/source-contract tests pass; TypeScript and production bundle build passed. Browser handoff verification underway. No paid clip generated, no official deployment. Preview settings are not carried into the production copy; paid worker/stage audit, quote and sample publication acceptance remain outstanding.
- Browser testing found and fixed sample-import receipts being checked as nonexistent worker jobs, which cleared the loaded project. Production shortcut imports are now idempotent per account/sample version. Paid worker execution remains unverified; no clip has been charged/generated.
- Browser smoke verified: top Generate sequence shortcut expands the workbench; Open clip production successfully imports and opens Segment 1 with its exact saved excerpt, start/end continuity and three reference sheets. Story/Screenplay/References all show ready, and Create this segment is enabled. No paid button was pressed; end-to-end generation/quotes and public sample publishing are not accepted yet. Sandbox server session 16872 serves the latest code.
2026-09-10 - Selection save and video defaults
- Open clip production now saves the inspected segment into the sequence before opening it, preserving other checked segments.
- Checkbox changes show immediately, roll back on save failure, and show pending/error messages inside the segment modal. Generation remains disabled while a save is in progress.
- Project video model, resolution and frame shape now persist per account/sample version on the server and apply to the sample production copy. Page/segment overrides remain preview-only. Existing take settings are retained.
- 28 regression/smoke tests pass, including selection save/reload/uncheck without losing screenplay readiness, account isolation and video defaults persistence. Browser verification pending. No paid generation or website deployment.
- Live browser reproduced WinError 2 from concurrent shared temporary app-state files; fixed unique temp files plus serialized replacement. Video defaults now have a dedicated small per-account record. Concurrent-save regression and all other tests pass: 29 total. Existing global app-state whole-document last-writer behavior is not redesigned in this patch.
- Final live browser check passed: Video defaults saved to your account and production copy; Open clip production arrives with Include this segment checked and Create this segment enabled. No paid generation submitted. Latest sandbox server session: 71368. Existing billing inventory gap remains plotthirst_clip_preview_runtime.py quote -> backend_billable_cost, unchanged by this task.
2026-09-10 - Compact account key-source indicators
- Removed the obstructing browser-key banner. Account box shows O (OpenAI), G (Grok), A (Atlas) key badges only when own-key mode is selected; blue is effective own key, green is platform mode. Accessible labels explain missing-own-key fallback. Saved inactive overrides do not trigger indicators. No credential routing, pricing or paid operations changed. Local sandbox only; mobile account-box visibility follows existing header constraints.
2026-09-10 - Screenplay cover carousel and inline references
- Removed References & cover toolbar toggle. Merged unique reference information at the screenplay top with an inline expandable reference gallery, no popup. Removed duplicate gallery cover images/links.
- Added fixed-size cover carousel with previous/next controls, version count, names and default marker. Includes all three sample covers and available project cover versions. Browsing does not modify saved default selection. Typecheck/build passed and served assets updated. Live browser verified removed toolbar button, inline references, and Next cover changing 1/3 titled/default to 2/3 artwork without title. Official deployment not performed.
2026-09-10 - Mouse-responsive project reference carousels
- All sample character, location and prop references now appear in animated horizontal carousels instead of a static card grid. Mouse proximity to either edge controls glide speed; center/leave stops. Hover lifts cards. Touch swipe, keyboard arrows, Previous/Next controls and reduced-motion support retained.
- Full-sheet links, canon DNA, and recast placeholder retained. Gallery starts expanded at screenplay top. Typecheck and frontend build passed; served sandbox assets updated. No pricing, reference generation or default selection changes. Mobile physical-device acceptance and official deployment pending.
2026-09-10 - Three-position reference carousel
- Replaced scrolling reference strips with rotating center/left/right cards: center larger and clickable, side references smaller and angled in depth, remaining cards hidden. Mouse edges rotate with wraparound; buttons, keyboard and touch swipe supported; reduced motion disables automatic hover rotation and transitions. Names immediately below portraits.
- Character introductions use saved role profile text instead of visual DNA. Full-sheet details and recast option retained. Typecheck/build passed; sandbox browser confirmed center-only full-sheet link and Next rotation from Mara to Elias with correct role summary. Physical mobile gesture/visual acceptance remains pending. No provider/cost changes.
2026-09-10 - Reference carousel portrait flicker
- Fixed center/side wrapper replacement that remounted each portrait while rotating. Anchor/image now remain mounted with only link/tab eligibility changing. Eager loading retains portraits ahead of rotation; removed visibility toggling and animated brightness filters, added compositing/backface hints for mobile.
- Typecheck and build passed, served sandbox assets refreshed. Physical iPhone flicker acceptance pending. Existing original PNG menu portraits are approximately 2MB each; first-load transfer cost is unchanged and lighter delivery derivatives remain a possible follow-up. No image regeneration or provider billing changes.
2026-09-10 - Reference carousel auto rotation and side selection
- Side portraits are mouse/touch/keyboard controls that center the selected reference without opening a sheet. Stable image elements retained.
- Each carousel defaults Auto rotate on, advancing every five seconds at rest. Manual changes reset the timer. Unchecking stops both timed and mouse-edge rotation; explicit arrow/swipe/side selection still works. Timer cleanup and quiet screen-reader announcements during automatic motion included.
- Typecheck/build passed; served sandbox assets refreshed. No pricing or generation changes; mobile acceptance pending.
2026-09-10 - Continuous hover rotation and lightweight portraits
- Manual arrows moved below center image. Hover uses fractional position animation: zero at center line, opposite signed rotation either side, progressively increasing to a two-card/second maximum beyond outer images. Timed auto rotation pauses during hover; leaving snaps to nearest card.
- Added 18 480px WebP display derivatives: 482,410 bytes versus 39,828,405 original PNG bytes. Original headshots/full sheets remain unchanged. Stable mounted portraits and visible failed-image Retry retained. All 18 derivatives decoded and HTTP-served with matching bytes. Typecheck/build passed. Physical iPhone motion/loading acceptance pending; no official deployment or pricing changes.
2026-09-10 - Carousel direction and playback control
- Reversed mouse-proportional rotation direction. Replaced auto checkbox with centered accessible play/pause icon button above manual arrows. Icon/action label change with playback state; default on and five-second interval retained. Typecheck passed. Sandbox-only UI change, no cost impact.
2026-09-10 - Visibility-independent portrait fetch/decode
- Each mounted carousel portrait explicitly fetches its display file and decodes an Image before exposing a retained object URL. Loading no longer relies on transformed offscreen img visibility. Object URLs are revoked only on source/retry/unmount; cancelled loads cannot update unmounted components. Loading/error placeholders and external Retry control remain.
- Typecheck/build passed and sandbox assets refreshed. User-reported external-browser/iPhone issue still needs physical-device verification; do not mark accepted from code alone. No provider requests or source image changes.
2026-09-10 - External portrait transport diagnosis and fix
- Reproduced ngrok ERR_NGROK_6024 warning text returned with HTTP 200 for iPhone-UA image fetches. Localhost checks had missed this. Added ngrok-skip-browser-warning only for same-origin ngrok-free.dev portrait requests; gateway authentication remains required.
- Server sends previews as application/octet-stream; loader now validates RIFF/WEBP bytes and constructs image/webp blobs, rejecting non-image responses.
- All 18 authenticated external portrait requests using iPhone UA and tunnel header matched local bytes and decoded successfully. Typecheck/build passed; sandbox served assets updated. Physical Safari rendering confirmation still pending. No website deployment or cost changes.
2026-09-10 - Portrait cache isolation and diagnostic build v4
- Changed frontend asset version to 20260910-portrait-loader-v4; portrait requests now use explicit loader version plus no-store. Added request/response/decode/display error details with v4 marker and ignored image errors before a ready source is set.
- Typecheck/build passed; sandbox assets refreshed. External Chrome showed old unavailable placeholders before reload. Reload performed, but further inspection blocked by an open browser-extension UI. External rendering remains unaccepted until verification; no claim of resolved mobile issue.
2026-09-10 - Portrait HTTP 503 recovery (v5)
- User reported 503 for later portraits. An 18-request external burst passed from the PC; the browser-specific upstream failure remains unconfirmed. Added shared maximum-two transfer queue, up to four attempts for transient HTTP/network failures, bounded exponential delay honoring Retry-After, cancellation and queue recovery. Ngrok error codes retained in final messages.
- Cache-busted loader v5; tests cover 503 then success, nonretryable 403, repeated 503 limit/error code, concurrency cap across 18 requests, abort and recovery. Typecheck passed. Mobile acceptance pending; this mitigation is not proof the upstream failure is resolved. No provider operations/cost changes.
2026-09-10 - Hold-to-rotate mobile reference carousel
- Added 300ms touch hold to activate proportional left/right rotation using the mouse speed curve. Lift/cancel stops and snaps nearest card. Pending holds cancel after movement so ordinary vertical scrolling/quick swipes remain available. Held gestures suppress tap-through/context menu and pause automatic rotation; release restarts its five-second countdown when enabled. Touch guidance and active outline included.
- Typecheck/build passed; physical mobile touch/scroll acceptance pending. User confirmed previous portrait request-queue fix resolved loading in all browsers. Source imagery and paid generation unchanged.
2026-09-11 — Segment production selection (local, acceptance pending)
- Added three-page row browser, alternating page shading, movie-wide navigation and persistent sample selection handoff.
- Added review-before-apply prompt suggestions, count/duration bounds, ungenerated-only candidates, explicit keyword fallback disclosure.
- Added selected-project video defaults editor; saves future model/resolution without changing existing takes.
- Run selected now queues clips-only continuation (storyboards then clips, no implicit stitch) and shows returned job progress nearby.
- Local admin browser-key setup is reused for segment production; optional Atlas/xAI credentials remain process-memory-only under existing loopback guards. Hosted key management remains separate.
- Focused selection/defaults/local-runtime tests: 10 passed. Typecheck/build passed. Broader screenplay suite has three pre-existing stale sample/reference assertions (version 2 vs 3, all-project reference expectations).
- Paid provider execution, mobile physical-device acceptance and full seven-stage real-provider inspector remain unverified. Inspector is still compiler preflight; production button routes to durable worker.
- Billing audit still reports the existing clip-preview quote inventory gap. No billing baseline refreshed to suppress it. Existing focused-selection provider call pricing/operating coverage remains a known gap; no new paid test.
Browser verification: the sample's first three exact ranges transfer to production as 3 selected / 30 seconds; saved Seedance 2.0 Mini / 480p shown. Pages 4–6 and back preserve selection. Added expanded selector to avoid nested-header/modal obstruction, explicit checkbox dimensions, adjacent production audit/progress and early missing-video-key guard. No paid media submitted. Cost monitor remains visibly stale for server.py/sample_video_defaults.py pending broader pricing re-audit; numeric prices were not changed.
2026-09-11 local clip recovery
- Reconciled first three Quiet Signal clips from verified existing child artifacts (3 storyboards, 3 videos); no generation or additional debit. Parent completion restored with original failure retained in recovery evidence.
- Local durable jobs now serialize cross-process transactions and use unique temporary files with bounded Windows replace retries. Three-process/36-job preservation test passed.
- Progress can discover storyboard/video children independently; terminal progress refreshes segment media and replaces stale queue text.
- Verified sandbox segment list shows three completed takes and player plays sequentially; local only, not AWS deployment.
- 2026-09-11 local: project switcher now lists server-saved projects independently of Ultimate run history; projectId links load an authorized screenplay map in fresh browsers. Typecheck/build passed; verified in user Chrome through ngrok: 3 clips available, video readyState 4, playback time advancing (9.52/10.08s). Mobile uses the same projectId link; physical phone confirmation remains user-side.
2026-09-11 — Personal preview merge to shared sample (local)
Completed the first merge of three existing Seedance Mini 480p clips. Added explicit Merge to project · Sample in production preview. Authenticated contributors may merge only their own current-sample source revision; exact segment identity/timing/prose checks preserve screenplay. Existing takes/default selection remain; duplicate merge adds zero. Published immutable media copies and allowlisted public metadata are separate from private contribution audit records. Group/public visibility flags are independent; public player receives filtered credit. No generation/provider call/debit. Local filesystem publication only; S3 publish adapter, multi-account group/manager UI, selectable published primary takes, attribution preference edits and official deployment remain unaccepted. Two focused tests pass; typecheck/build and syntax checks pass. Sample GET now revalidates; MP4 byte ranges added for Safari. Cost impact: additional local copy of three existing files, no new provider work; hosted storage/transfer coverage remains a deployment prerequisite. Existing billing inventory clip-preview gap and cost-monitor stale source hashes remain, not suppressed.
Verification update: four sample merge tests pass (idempotence/credit preservation, primary-take preservation, edited-prose mismatch, path containment, foreign-project denial and hosted-adapter guard). Chrome through ngrok sample=1 shows 3 clips available and advanced from clip 1 to clip 2; segment cards show published takes. Local unauthenticated sample media serves valid 206 prefix/suffix ranges and 416 invalid ranges. Physical iPhone playback remains user confirmation.
2026-09-11 sandbox auto-merge / mobile playback: explicit per-owner/project administrator opt-in saved server-side, enabled for admin-michelangelo project 99420d8d-a9ae-44b6-a449-266068c33e63. Server daemon checks every30s, file-mtime gate skips unchanged clip jobs. Reuses authorized/idempotent sample publication, stores errors without regenerating; browser may close. Manual merge retained. Five tests and typecheck/build pass; actual first auto tick reports zero new takes (three already published). Local-only cost exception unchanged, no provider operation/debit. Hosted S3/group acceptance outstanding. Mobile cause reproduced with iPhone Safari user agent through ngrok: native MP4 request returns HTTP200 text/html ERR_NGROK; identical request with ngrok-skip-browser-warning returns206 video/mp4. Sample player now fetches tunnel clips with bypass header into short-lived object URLs, aborts/revokes on segment change, shows loading and supports retry. Production/non-ngrok URLs retain native streaming. Physical iPhone confirmation pending. Existing billing/cost monitor gaps remain reported.
- 2026-09-11 local reference handoff repair: bundled sample image bytes now load through the image normalizer with path containment and size checks. OpenAI storyboard generation stops on unreadable/over-limit references or rejected image edits, without text-only fallback; Seedance 2.0 reference submission rejects dropped images. 12 focused tests pass. Player buffers one adjacent tunnel clip without re-encoding and adds fading centered play/pause for clips and timed placeholders. 21:9 added to project controls. New paid 21:9 batch and mobile acceptance still pending; not deployed to AWS.
- 2026-09-11 follow-up: original-cast 21:9 retry is processing locally as screenplay-segment-production_cbb03fbbc3ff47f895, map production-map_b97ba8d9362dc243, first three 10s segments only, Seedance Mini 480p, stop after clips. Actual normalized reference counts verified 3/3, 2/2, 2/2 before submission. Provider visual acceptance remains pending. Original bitrate retained.
2026-09-11 — Secondary sample takes and SFX-only retry
- Local sandbox: preserved original first-three sample clips as old/secondary; replacement takes become primary automatically on merge. UI labels retained versions.
- Explicit native audio policy travels through video prompt sources (English/Chinese), the planner packet and final submission after rewriting. This sample batch uses SFX/ambience only, no music or speech; no provider operation added.
- Three 21:9 replacement storyboards completed with canonical references. Video handoff resumed after the old parent was stopped to load the policy. Clip completion and mobile playback still require verification; no official deployment.
- Verification: 12 focused publication/audio/reference tests passed, TypeScript check and Vite build passed.
- Accepted resume: `screenplay-segment-production_e63b019cc4854e65a7`, processing dependencies. Previous stopped parent `screenplay-segment-production_cbb03fbbc3ff47f895` had a Windows app-state replacement failure; completed 3/3 storyboard artifacts preserved and reused. Local runtime restarted after confirming no active provider jobs.
2026-09-11 — Completed clips auto playlist
- Local player adds a visible Completed clips only mode, omits missing segments and preserves current clip identity when publication updates. Small sample publication manifest polled every 15 seconds while player is open; no full-project polling. Primary published takes only. At end, newly published clips can continue without replaying finished clips.
- Six focused playlist checks passed: missing/placeholder exclusion, prepared clip inclusion, stable current position, newly inserted/appended clips after completion and no repeats while waiting. TypeScript check and Vite production build passed; physical mobile playback not yet accepted.
2026-09-11 — Location reference viewpoint isolation
- Shared storyboard/video planner packet and English/Chinese video source prompts now separate interior/exterior reference views by shot, prohibit duplicating the enclosing building through its own window, and preserve explicitly established wings/reflections and multi-room cuts. Prompt compaction is instructed to retain these spatial relationships.
- Verification: 8 focused location/audio/reference tests passed. Existing clips are unchanged. Current long-lived local server/worker require a reload before using this change; a new paid generation has not been performed to validate provider adherence.
- No added provider stage or retry; existing prompt input grows slightly. Known billing inventory/cost-baseline gaps remain; no prices or baseline hashes refreshed.
2026-09-11 — Prompt-only spatial prevention across media stages
- Added shared location-reference sheet guidance for normal creation and existing policy-safe retry, plus single-view selection guidance for location menu images. Separate panels/rooms, presentation-only adjacency, consistent geometry and plausible window sightlines; no duplicate enclosing building or invented filler rooms. Existing shared storyboard/video spatial guidance retained. Applies across generators; no crop workflow or model-specific switch added.
- Nine focused reference/storyboard/video/audio tests passed. Existing assets remain unchanged. Running server/worker still require reloading before future generation uses the edited source; provider adherence is not yet verified in a fresh paid run.
- 2026-09-11 clarification: explicitly permit interior and exterior views together on reference/storyboard sheets. Spatial restrictions apply within each panel/shot; gutters are presentation boundaries, not scene geometry. Preserve planned exterior/interior cuts and continuous camera moves. Four focused location-prompt tests passed. Runtime reload and fresh provider validation remain pending.
2026-09-11: AI playlist planning
Implemented in the local build: player prompt, whole-segment duration control, full-screenplay selection, saved personal playlists, free quote and explicit maximum-credit confirmation. One GPT-4.1-mini call; no video generation. Settlement uses actual returned tokens plus one operating allowance, account multiplier/discount and configured buffer. Local own-key mode excludes provider wholesale from site credits. Duplicate submissions cannot rerun the provider; failed invalid output releases the hold. Uncertain settlement is retained for reconciliation, not automatically retried. Seven focused billing/selection tests pass; frontend typecheck/build passes. No paid provider validation or website deployment for this feature yet. Existing unrelated billing inventory/cost-monitor gaps remain open.
2026-09-11 playlist production (local): Player now offers a one-minute trailer preset, reviewable selected segment list and Generate this playlist with a separate production confirmation and inline job progress. Canonical sample segment IDs now map into player clips; generation maps exact whole ranges into the existing sample production project and rejects incompatible layouts. Existing planner/storyboard/video pipeline and saved project defaults are reused, completed media preserved, stopAfterClips enabled; no automatic stitch or extra planning debit. AI playlist fee is separate from existing video production charges. Existing production overhead/quote gaps remain: this change does not certify an all-in video quote. TypeScript and local bundle build pass. No paid trailer/clip run or deployment performed; end-to-end paid acceptance remains pending.
2026-09-11 authorized Terra playlist comparison: same complete 720-segment input and unchanged trailer prompt as mini. One completed gpt-5.6-terra Responses call, medium reasoning, 71801 input tokens (71798 cache-write tokens), 380 output tokens. Estimated provider cost $0.184061 including cache-write premium, direct browser own-key diagnostic; no additional site debit and no video generation. Saved separately in personal playlist index as Terra test - Signal Beyond the Sky. Selected P0001-S003, P0002-S004, P0005-S001, P0029-S006, P0041-S005, P0043-S005: valid six whole segments, 60 seconds. Rationale matches actual selections, but coverage remains first 43 minutes of 120, so this proves a better setup teaser, not a strong full-movie action trailer. Default planner remains mini pending user decision. Temporary diagnostic pages removed after recording the result.
2026-09-11 Terra playlist default: user approved switching selector to gpt-5.6-terra. Trailer preset now invites slight reveals from later scenes that raise questions without explaining outcomes. Quotes include model identity; execution honors saved quote model. Terra uses Responses medium reasoning directly with no fallback duplicate call, a reasoning output allowance, normalized usage and reported cache-write/cache-read pricing. Existing playlists preserved. Local UI rebuilt and idle server restarted; paid run of revised preset not performed. Existing unrelated cost monitor and billing inventory gaps remain.
2026-09-11 playlist editorial directions v3: requires early/middle/late comparison without coverage quotas, explicit intended playback order, one grounded reason per selected ID and concise category-level exclusions (including reasons for excluding broad movie portions). New results validate reasons and retain response order; player displays reasons/exclusions. Old saved playlists remain readable. Original source context still drives generation. Eight focused tests pass. Additional response text uses the existing single quoted call, with typical output allowance increased; no new review/debit/stage and no paid run. Existing broader cost-audit gaps remain.
Local Windows save recovery — 2026-09-12
- Added bounded atomic replacement retry for Windows access/sharing errors in app-state saves; preserves the previous file on permanent failure and does not retry provider calls.
- Verified: five focused tests passed, including a real Windows reader denying delete sharing and concurrent-save coverage. Applied to local runtime; production deployment not verified. Resumed existing six-clip trailer parent after its failed save; generation/player acceptance remains pending.
Storyboard reference capacity correction — 2026-09-12
- Local OpenAI storyboard default now matches the existing 16-image adapter limit, replacing an artificial four-reference cap. Explicit lower limits and fail-on-pruning behavior remain intact. Selected trailer scenes need up to eight references; original assets preserved.
- Eight focused tests passed (reference capacity, overflow/explicit limits, Windows atomic saves). Same failed trailer parent resumed; final clip/player verification pending. No production deployment in this change.
- Existing image estimate and execution use selected reference count. No additional generation operation or duplicate parent charge introduced. Existing cost-monitor stale-review and billing audit gaps remain open.
Local provider readiness follow-up — 2026-09-12
- Runtime status now reports provider-presence booleans without exposing credentials. Resumed automatic workers and additional takes now check the selected video provider before new storyboard work. OpenAI browser restoration now includes session storage. Three local runtime tests passed.
- Atlas key not recovered from localhost/127.0.0.1 ports 4180/4181 in this session; six storyboards remain saved and video batch is not requeued without Atlas. Additional-take two-mode behavior documented in docs/ADDITIONAL_TAKE_MODES.md; explicit UI/rebuild contract remains pending.
Shared trailer playlist and dialogue audit — 2026-09-12
- Published The Route Opens playlist with six canonical segment IDs in original AI order (page 110 before page 87); added visible saved-playlist control and selection reasons to sample player. All six IDs match published clips. No provider call. Mobile acceptance pending.
- Read-only audit: P0045-S003 screenplay says Mara: The route is opening. Final Chinese compressor translated spoken line and added subtitle instruction despite its system rule against changing dialogue. No clip or prompt regenerated. Needs validation of dialogue language/text after compression, not merely another language instruction.
2026-09-12: Final video dialogue preset (local)
- Python appends English-only speech negatives and the exact assigned dialogue after translation/repair, including saved prompts. Explicit spoken-language settings override English; silent/SFX-only boards stay silent. UTF-8 overflow raises without truncating the suffix.
- No new provider call, debit, or retry added. Four focused unit tests cover suffix replay, silence, language overrides, and byte limits. Live generated-audio acceptance and deployment remain pending; prompting is not audio-language verification.
2026-09-12: Player fullscreen and H3 retake
- Added fullscreen toggle with expanded mobile fallback, shared by movie, trailer and synthetic playback. Typecheck and production build passed; sandbox assets refreshed. Mobile acceptance pending.
- Requested P0045-S003 standard MiniMax H3 retake (not Developer), 21:9, preserving existing take. Submission awaits local provider credentials; no new paid clip submitted.
2026-09-13: Windows local credential persistence
- Local opt-in worker restores provider keys from Windows Credential Manager scoped to this checkout/current Windows user. Atlas Save in loopback Access Keys persists directly; worker configuration saves OpenAI/provider keys too. No credential files in project/deployment. Hosted AWS remains excluded.
- Five runtime tests pass; real Windows dummy credential write/read/delete verified. Actual Atlas re-entry and subsequent generation remain pending. Remove persistent entries through Windows Credential Manager (Plotthirst/local); browser-only Clear does not delete Windows entries yet.
- Sample merge still copies local public MP4 assets plus publication.json; hosted S3 merge adapter is disabled and remains separate work.
2026-09-13 local update: Samples now opens a gallery, retaining the existing Quiet Signal URL. Admins may publish/update a snapshot of their own saved project screenplay, selected clips and cover, or remove its listing. Public snapshots allowlist fields and exclude prompts, settings and credentials. Local immutable media copies and hosted S3 objects are supported; hosted permissions/concurrent publishers still need live acceptance. Twelve focused catalog/credential/dialogue tests pass; 94 additional regression tests and three JS smoke tools pass; frontend typecheck/build pass. No new AI review or generation fee for catalog publication; admin publishing storage/transfer is a site-owned expense. H3 replacement P0045-S003 job_5556035a1f484953af submitted standard minimax/h3/reference-to-video, 768p,10s,21:9,seven references, $1 provider estimate; provider result pending. Found two Windows listeners on4180, consolidated to one, confirmed Windows key persistence and added exclusive socket binding to prevent duplicate listeners. Website deployment pending sample replacement and UI verification. Existing cost monitor stale hashes and backend billing coverage gaps remain explicit.
2026-09-13 follow-up: H3 job job_5556035a1f484953af completed1/1; selected sample take vid-14c2c09ebb20, prior take retained secondary. Verified H264/AAC,10.125s,1536x672 returned for21:9 request,7 references. Samples gallery public and admin controls rendered in browser on isolated4197. Main4180 updated after completion; one listener and persisted credentials verified. Production push pending.
2026-09-13 deployment evidence: Production workflow 34756682961 succeeded (commit 118406a). The live version API confirmed that revision. The Samples API returned The Quiet Signal, with H3 take vid-14c2c09ebb20 selected and the older take retained. The MP4 served a valid 206 video/mp4 byte range; the cover returned 200 image/png. A signed-out browser check exposed a navigation restriction. Five authorization assertions pass for the correction in a6bc4f5; workflow 34757224129 is deploying it. Admin gallery controls were verified locally. Publishing an additional live user project has not been exercised.
2026-09-13 final web verification: Live build 09896e4 opens Samples while signed out, confirmed in browser with no admin publication controls. The gallery link opens the existing Quiet Signal sample. The replacement H3 media and cover were verified on production. Final workflow 34757877190 may still be completing worker stabilization; the web revision is verified live.
2026-09-13 — Player take selection and fullscreen
- Local verified: visual-stage-only fullscreen survives clip advance; sample gallery opens the screenplay without reloading the site; compact generator/resolution specs; selectable retained takes.
- Explicit scope: project default follows existing project permissions (shared sample requires admin); playlist-only overrides persist per account and playlist title/order, with Follow project default to clear. No takes deleted.
- Provider-free settings operations; no provider invocation, reservation, debit, or generation. Small JSON storage/read cost remains site operating overhead, not a new AI charge.
- Tests: frontend typecheck/build, three scoped persistence/authorization tests, public route checks, Python compilation, browser save/reopen/follow-default/project-save and video fullscreen/clip-advance smoke. Existing billing audit gap and movie-cost baseline staleness are not resolved by this UI update.
- Deployment pending; physical iPhone native-fullscreen acceptance remains to verify.
2026-09-13 player deployment verified: live revision 2a604d4, sample playback API returns nine slots and H3 default preserved. Signed-out live browser opens Samples directly into screenplay and shows retained takes with model/resolution. Local 390px specs measured one line (337px content within337px width). AWS workflow34768380604 may still stabilize workers; web revision is live. Production write probe was declined by automatic approval review; local permission tests passed.
September 13, 2026 — shared project contribution workflow (local)
Implemented Explore projects with All / Samples / Community, independent visibility and contribution settings, account-restricted Plotthirst branding, admin sample labeling, and New project navigation from screenplay. Quiet Signal uses one shared project ID. Per-account production work remains unpublished until Approve to project; first published take is default and later takes are alternatives. Management can inspect contributor identity and unpublished takes. Legacy copy/merge endpoints are retired.
Verification: TypeScript checks and production build; 12 focused permission/default/publication tests; local browser discovery, owner settings and preserved nine published segments. No paid generation performed. Not deployed in this change. Remaining acceptance: two-account hosted contribution/publication, S3 conditional-write concurrency, mobile owner settings, historical personal sample-copy migration, and production handoff latency (local state file is approximately 484 MB). Existing legacy copies are retained. Screenplay multi-segment UI remains an incremental refinement area.
Cost review: discovery/access/default settings invoke no provider. Publishing reuses existing video bytes; storage/request/transfer remain site operating expenses, with no new generation charge. Generation continues through existing quotes/reservations. Existing billing audit and movie-cost baseline gaps remain explicit; no pricing fingerprints refreshed without a full review.
Live website follow-up — hosted multi-account publishing
- Acceptance open: Verify hosted multi-account publishing on the live website: two separate contributor accounts, private unpublished takes, direct approval to the same project, first-published default under concurrent submissions, retained alternative takes, manager/admin visibility, and playback from a second device. Deferred live acceptance; not marked verified.
- Player refinement: playlists, creation, trailer selection, ordering and playlist generation grouped in one expandable Playlists menu. Clip takes and project details collapsed below playback. Local UI/build verification only; no paid generation or hosted release in this change.
September 14 — Seedance 2.5 inputs (local)
- Shared resolution catalog now includes Original, SR and ESR variants; Quick Solo groups the three families and supports Auto duration/ratio. Video Edit uses one source, adaptive ratio and duration -1. Other generators do not inherit the new ESR choices.
- Verification: 28 contract/routing tests; frontend build/typecheck. No paid generation. See docs/SEEDANCE_25_OPTIONS_2026-09-14.md for estimated pricing basis and remaining reconciliation limits.
- Acceptance open: Live acceptance: upload one 4–30 second video, estimate then edit with Seedance 2.5, verify selected resolution, Auto duration, source aspect ratio, actual output and billing on another device.
- 2026-09-14: Seedance 2.5-only release `7d83fc5` pushed to live; build-info, Original/SR/ESR catalog, Auto duration and source-shape frontend verified. 28 release tests/build/typecheck passed. No paid generation performed; real upload/output acceptance remains open. AWS workflow 34814775713 final stability pending. Community publishing changes remain sandbox-only.
- 2026-09-14 Lambda packaging repair: missing shared/seedance25-options.json fixed in deployed function. Repair run 34816180712 succeeded and downloaded the deployed ZIP to verify seedance25 imports and all 11 resolutions. Permanent packaging/import guard pushed in 4a4b758. No generation invoked; user retry acceptance remains open.
- 2026-09-14 LOCAL: automatic Seedance input pixel-size preparation implemented; 35 checks and real source conversion pass. Original/duration/audio preserved. User supplied a phone-download-ready copy through existing sandbox. No deployment; hosted worker FFmpeg acceptance and preparation cost allocation remain open.
- 2026-09-14 LOCAL: Quick Solo source video previews now include playsInline, authenticated same-origin /media/ fallback, error/retry UI, and object URL cleanup across edit/extend/upscale. No tokens sent to external URLs. TypeScript and Vite build passed. Real iPhone/private-upload playback acceptance remains open; not deployed.
- 2026-09-14 LOCAL: WAN 3.0 and Prime (six modes) plus resolution-aware estimates; Quick Solo standard creation/editing now quotes credits before confirmation. 44 tests/build/typecheck pass. WAN real generation and separate Extend/Loop quote flow remain acceptance work. Not deployed. Details: docs/WAN3_QUICK_SOLO_2026-09-14.md.
- 2026-09-14 LOCAL: production reference/storyboard canvas lock and actual-image ratio validation; preserve canon and existing versions. See app-repair/docs/PRODUCTION_FRAMING_2026-09-14.md. Pending real image/identity and internal-panel review; not deployed.
- 2026-09-14 LOCAL WAN acceptance: P0110-S004 generated using a 1916x821 scene frame built from five canon sheets; WAN3 I2V 480p/10s returned 978x418 H.264/AAC. Published as first/default sample take with attribution audit. No live deployment. Audio quality still requires review. Quick Solo own-key server-key guard and full browser localStorage remain open; this authorized administrative test used the existing own-key route and session storage. See docs/PRODUCTION_FRAMING_2026-09-14.md.
WAN follow-up local test (2026-09-14): P0112-S005 and P0114-S003 completed as WAN 3.0 I2V 480p, 978x418, 10.03s H.264/AAC files. Dedicated 21:9 first frames preserve original reference inputs. Strong no-music/English dialogue prompts submitted; actual soundtrack verification remains pending because automatic approval review requires explicit approval to transmit audio to OpenAI. Neither new take is published as a project default yet. Originals retained without automatic trimming. User observed repeated cube catch in 110/4: first-frame/action-state mismatch is a candidate cause, not proof all I2V needs trimming. Local/ngrok review artifacts only, no live deployment. Provider video estimate $0.40-$0.50 per clip, exact charge unverified; no automatic retries or Plotthirst credit debit.
Adaptive ambience playback (2026-09-14)
Clip-relative start/end/source offsets now drive TypeScript player audio against the media clock. Pause, seek, buffering, rate, volume, mute, clip/take change and close stop or resynchronize layers. Missing clips remain silent; baked-in cues are excluded. Continuous playlists remap boundaries in selected order. Separate checkbox and playing labels included. Workspace passes saved mapped ambience URLs without private prompts. No new provider call or playback charge; browser decode plus existing storage/transfer costs remain. Music-off no longer disables mapper; missing historical flags enable planning only, not new paid generation. Explicit false remains honored; clip-only recovery preserves mapper enabled state in plan mode.
Limitations: sample has no generated ambience to exercise live. Durable once-per-location generation, timed placement authoring beyond legacy whole-clip maps, and publishing private ambience assets into shared project storage still require end-to-end acceptance; no claim those are completed. No historical jobs restarted or extra audio generated. Dedicated WAN test clips remain unchanged. Existing billing/operating allowance gaps and stale whole-movie pricing audit remain visibly flagged.
Local verification: 55 backend regressions, TypeScript and bundle passed. Live rollout pending.
Live web verification 2026-09-14: app.plotthirst.com/api/v1/version reports d7322f5; frontend bundle includes Mapped ambience and WAN 3; public project catalog returns one project; sample playback retains nine published segments. GitHub run 34851896662 still rolling out ECS services at this checkpoint. Local tests: 55 backend + 8 community + 4 take tests; TypeScript, build and cue-boundary/loop tests pass. No new provider generation in this change. Audio-map asset generation/publication and mobile audio acceptance remain pending.
Deployment completion: GitHub production workflow 34851896662 succeeded for d7322f5, including web/worker rollout and serverless packaging. Existing nine live sample clips preserved.
2026-09-14 WAN sample media release: add first/default takes for P0110-S004, P0112-S005 and P0114-S003, preserving every existing take/default. 12 published segments, up from9. Three H.264/AAC assets total33,278,152 bytes; no new provider calls or credit charges. Existing hosting/storage/download costs apply; no new pricing assumptions. Public contributor-name privacy retained; private creator evidence retained in local-runtime/wan-live-publication-audit.json. Audio remains unverified. Release asset paths and selected-take IDs checked; live verification pending.
WAN sample media live verified: playback endpoint reports12 completed segments. P0110-S004, P0112-S005 and P0114-S003 selected-take media all return206 video/mp4 byte ranges with valid MP4 headers and matching file sizes. Existing takes preserved. Release7ce2490; audio review still unverified.
2026-09-14 screenplay Lens menu (local): create a titled lens inline and save through existing account preset API. New lenses appear unchecked in existing scope-aware checklist; checking one also enables lens application in that scope. Dynamic presets inherit defaults correctly. Empty Additional lens direction field is hidden; existing nonempty notes remain visible for manual migration without loss. Save failure retains form text and does not claim an account save. No new provider calls, charges or pricing changes. TypeScript and production build pass; live deployment not performed for this change.
2026-09-14 player menu local update: completed-clips auto playlist is selected by default, including opening the playlist menu. Auto playlist and whole movie (with missing segments) controls sit outside the collapsed See more playlists section. Custom/AI playlists remain inside. TypeScript and production build pass. No provider calls, billing changes or live deployment.
Playlist downloads and reuse — 2026-09-14 (local, not deployed)
- Player now offers direct stitched video, stitch plus original clips ZIP, and original clips ZIP for the loaded playlist/order/takes. Missing clips block export with an explanation.
- Owner/project/content-version/order/take/audio/format fingerprints reuse unexpired artifacts. Persistent conditional claims prevent duplicate starts/debits; expired outputs require a new build quote. Source clips are never marked temporary or deleted.
- Reuses 14/7/3-day export retention and tags new stitch checkpoints. Source permissions and revisions checked before quote/start/cache access/worker execution. Community media uses its authorized saved asset rather than an HTTP/tunnel wrapper.
- Verification: ten focused unit tests and real disposable FFmpeg smoke for all three formats with timed/looped/faded ambience; exact ZIP order and original-byte preservation. TypeScript/build pass. Refreshed ngrok browser shows 12 clips, default completed-clips playlist, all three download buttons. Actual sample quote verification in progress; no paid export started.
- Costs: fixed approved build estimate via existing worker/request/shared allowance, buffer and account pricing; 1000-action floor; no provider call; own keys still pay platform work. Cache hit has no rebuild debit. Storage/egress/repeated download costs remain Plotthirst-owned, not claimed fully recovered. See app-repair/docs/PLAYLIST_EXPORTS_2026-09-14.md. Hosted IAM/lifecycle/concurrency acceptance and local expired-file cleanup remain pending. No live deployment for this update.
Playlist export final local acceptance 2026-09-14: ngrok Chrome shows the refreshed12-clip auto playlist, all three download actions, and a successful actual playlist clips-ZIP quote of1 credit. No paid export started. Eleven focused tests now include durable worker completion without invoking the whole-project package child. Disposable real-media tests pass for all three formats. A dedicated local playlist-exports worker is running; it cannot consume existing generation/stitch queues. Hosted workers retain the normal video-stitch queue. Export builds still require the user's displayed quote action. Community asset handoff tested through the real browser quote. Production deployment and hosted lifecycle/IAM acceptance remain outstanding.
September 15 sandbox menu refinement (not deployed)
- Recorded evidence: One Projects menu contains saved projects and samples/community; fresh projects hide Production overview.
- Recorded evidence: Removed top-bar and Start attribution controls. Non-owner contributors choose group/public credit per unpublished clip, with an optional project default; owner controls stay hidden. Server retains creator identity and sanitizes visibility flags.
- Acceptance open: Live deployment and mobile contributor/owner acceptance remain pending the next combined release. Local TypeScript/build and eight community tests pass.
September 15: Grok / Seedance Quick Create audit
- Recorded evidence: Completed local source/API input audit for all twelve offered Seedance 2.0/2.5 endpoints and current Grok reference/voice support. Evidence: app-repair/docs/GROK_SEEDANCE_INPUT_AUDIT_2026-09-15.md. No paid generation or deployment.
- Acceptance open: Repair Quick Create multimodal controls and handoff, Seedance 2.0 video forwarding, and Grok 1.5 reference/preset-voice routing; verify costs and exact outbound contracts before acceptance. Custom Grok audio remains account-gated.
- Recorded evidence: September 15 local Grok/Seedance input repair: shared endpoint controls, video/audio/voice handoff, draft persistence, Auto/ratio/resolution validation; release candidate passed 73 unit tests and TypeScript/build checks.
- Recorded evidence: September 15 deployed 30320c2: GitHub run 34992255801 succeeded; web revision 634 and worker revision 593 reached stable state. Public build endpoint and live form bundle verified. 81 unit tests plus worker-handoff/browser smoke checks passed; no paid provider generation.
- Acceptance open: Deployment infrastructure follow-up: rollout could not configure autoscaling, queue alarms/DLQ and worker-crash metric filter with the current permissions. Generation operating-cost baseline remains separately open.
Ultimate project navigation — 2026-09-17 (local, not deployed)
- Login recovery reduced to a small `(forgot password?)` link beside Log In; explanatory login prose removed.
- Fresh Ultimate opens Start. Dashboard is available only for completed non-screenplay project jobs; Player is restricted to the screenplay menu.
- Start selects an existing project or creates one from the subject, with a project number, title and optional description. Existing project identity is preserved across jobs; New job retains the selected project.
- Saved projects support non-screenplay completed-job dashboards. Dashboard job actions load the selected job. History currently shows up to the latest 200 Ultimate jobs per project; older jobs remain available through run lookup.
- Verified locally: TypeScript, Vite build, nine Python project/cover tests, ten workbench assertions, billing inventory check, JS/Python syntax, HTTP 200, and browser Start view showing project selector without Dashboard/Player.
- Pending: hosted deployment and end-to-end acceptance with multiple newly completed jobs under one project. No paid generation was run.
Suno menu simplification — 2026-09-17
- Recorded evidence: Local source menus retain v6, v6 Wild and v6 Mini. Fenix historical builder/routing archived under docs/provider-archives/suno-fenix for restoration; owner requested hiding older choices. No generated audio deleted.
- Acceptance open: Verify the rebuilt and deployed three-page music menus; source changes are not evidence of a live release.
Combined pending release — 2026-09-17
- Recorded evidence: Local validation: 93 focused tests pass for Suno/batch/audio pricing, password recovery, restricted admin support sessions, Ultimate project jobs and routing; TypeScript and production Vite build pass. Removed-model saved drafts choose a current option.
- Acceptance open: Production deployment and public smoke verification pending. Full-movie aggregate cost review remains stale; do not treat it as a fresh all-in quote.
Quiet Signal character addendum (local September 18): six characters enriched from chapter evidence; existing sample workspace handoff verified in final-prompt dry run. 18 tests passed; no paid generation/deployment. Backend reload and a newly planned clip's acting review remain pending. Existing saved prompts must be rebuilt to use the addendum.
Ultimate menu cleanup (local September 18): idea character count (no fixed input cap), experimental Actions label, browsable live image options with upload/submission guards retained, native dropdown contrast, view status beside toggles, Plotthirst provider branding in platform-key submit summary, and source coverage versus screenplay duration clarification. Showcase Explore projects link removed. TypeScript check and frontend build passed; live deployment and mobile acceptance pending.
Showcase cleanup: removed Start an Idea button and its navigation handler alongside Explore projects. Local only; live deployment pending.
Static early-access landing deployed September 18, 2026: https://plotthirst.com serves the approved PLOTthirst BETA signup from versioned S3 via CloudFront E1T5VWWIBDGWEZ. CloudFormation plotthirst-early-access CREATE_COMPLETE; HTTPS certificate attached; apex A switched to CloudFront. Live API returned 200, a consistent DynamoDB read verified pending persistence, and the browser form showed signup success (including duplicate submission). Synthetic deployment-check-20260918@example.invalid record is marked test-excluded, not an invitation candidate. Mobile-width browser form verified. Original index, version metadata, CloudFront and DNS backed up privately in CloudShell ~/landing-backup-20260918. App and email DNS unchanged. Invitation batches/account activation and dedicated GitHub landing deployment workflow remain future work; no emails sent. AWS usage is paid by Plotthirst.
September 18 waitlist update: live root copy now supports one scene, a sequence, or queuing an entire movie. Free Cloudflare Turnstile configured for plotthirst.com; CloudFormation UPDATE_COMPLETE; missing-token API request rejected 400 and real browser signup succeeded with persistent confirmation. No signup notification emails. Read-only DynamoDB Scan permission on only plotthirst-early-access approved and applied to existing ecsTaskExecutionRole. Admin viewer source 849e4b3 pushed; rollout 35371185881 still in progress at this checkpoint, signed-in admin UI acceptance pending. Viewer counts non-test signups and pages 50 emails; caches 60 seconds; AWS scan/compute are Plotthirst admin overhead, no customer debit. Eleven tests, TypeScript typecheck/build and billing inventory audit passed.
Deployment completion September 18: GitHub run 35371185881 succeeded; live API build 849e4b3 and unauthenticated admin waitlist 403 verified. Signed-in admin UI check remains pending login. Mobile Turnstile changed to compact; no horizontal overflow in 355px browser viewport. Canonical www redirect deployed on CloudFront E1T5VWWIBDGWEZ using plotthirst-canonical-host; Route53 www A/AAAA INSYNC, existing certificate covers www. HTTPS www returns 301 to https://plotthirst.com then 200. CloudFront function/request costs are Plotthirst operating overhead; no customer debit or AI calls.
September 18 Ultimate/Quick Multi UI (local, not deployed): creation dropdown now names Story (Movie) video, Music (Story) video, and Story to video with screenplay off and Story Writer on. Idea to video deferred with reference-planning requirements in docs/ULTIMATE_MODE_MENU_2026-09-18.md. Fresh extra lens textarea removed; legacy notes preserved for preset migration. Video focus marked experimental. Quick Multi copy animation/Copied feedback browser-verified, live file inputs and batch start disabled; Ultimate story-bible upload guarded. TypeScript/build passed; no paid generation. Production/mobile acceptance pending.
September 18 follow-up (local): screenplay choices ordered first and Story stays first in both Movie/Music labels. Idea to video exposed using existing direct-idea backend (optional references, no book/screenplay); selection and effective payload force video-map/Story Writer off. Earlier deferral superseded by owner request. Existing pricing/execution reused; no new provider operation or paid generation. Live deployment pending.
September 18 Ultimate/Quick Multi release: f17ecd0 pushed to production; public version API returned f17ecd0 at 18:04 UTC and the live JavaScript SHA-256 exactly matched the tested local production build. Includes screenplay-first Story labels, direct Idea to video with optional references, saved lens workflow, experimental Video focus, copy feedback and live preview upload/submission guards. GitHub rollout 35377271191 still completing at this checkpoint. Final signed-in/mobile browser acceptance remains pending Chrome login; no paid generation performed. Existing cost-monitor drift remains open; no baseline hashes refreshed.
Release completion September 18: GitHub Actions run 35377271191 succeeded for production commit f17ecd08eb3bf26fc5ad72407e7a2489934bbdad, including ECS app/worker and resilience steps. Public build and exact frontend artifact were verified. Signed-in/mobile UI acceptance remains pending user login, not a failed test.
September 18 waitlist follow-up: owner reports admin 503 and missed signup confirmation. AWS table read succeeded with one pending and one excluded test record; app role has table Scan permission. Root cause unresolved; AWS browser connection dropped. Local persistent confirmation and safe error-category logging prepared, not deployed. Three confirmation tests plus eleven Python tests pass. No emails sent. See docs/WAITLIST_TROUBLESHOOTING_2026-09-18.md.
Waitlist follow-up completion checkpoint: persistent landing signup confirmation deployed and real browser duplicate excluded-test submission verified success; no emails. One-off production-image reader returned count 1 and stopped exit 0, matching allowed IAM simulation. Admin HTTP503 not reproduced/fully diagnosed; phone retry pending. Server logging change local only. See waitlist troubleshooting notes.
September 18 welcome emails deployed: owner approved restricted SES send-from support@plotthirst.com and confirmation state writes. CloudFormation UPDATE_COMPLETE; browser simulator signup succeeded, SES receipt/state stored, duplicate prevented. Existing one pending signup also sent welcome confirmation with persisted SES receipt; inbox arrival awaits recipient confirmation. 19 Python and 3 frontend tests pass, billing inventory unchanged; SES/AWS costs Plotthirst overhead, no customer debit. See docs/WAITLIST_WELCOME_EMAILS_2026-09-18.md.
Missing signup investigation — deployed correction
Consistent DynamoDB read found one real signup and two excluded tests; the real record has confirmationState sent. Prior logs cannot identify the reported friend's attempt. Found a false-success path: a populated hidden website field returned HTTP 200 without saving. Autofill is a possible cause, not proven for this report. Now returns an explicit HTTP 400 and retry instructions; frontend shows the server message. Outcome-only logs contain no personal data. Bot checks remain enabled. Deployed CloudFormation UPDATE_COMPLETE and versioned S3 landing.js X4Tt9OgvKaySx7hz8PnxY.W.tyjhSzy_; CloudFront invalidation I75W44AIT4OTMHNBO1WQ739L19. Public JS matches source exactly. Live negative test returned HTTP400 autofill_or_bot_field, with no record or email created. 19 Python and three Node tests passed before deployment. Missing signup not recovered; friend should retry and wait for persistent saved confirmation and welcome email. Admin503 root cause remains unconfirmed. No new IAM permissions or billing paths.
September 19 — Admin organization (local only)
Early-access signups and User Management are now separate first and second boxes. All 12 top-level Admin boxes use native whole-box details/summary controls, closed on fresh page load; legacy panel toggles skip native details. Existing inputs/actions preserved. HTML structure verified, app.js syntax passes, local root HTTP200. Browser verification encountered the existing site loader and has not confirmed interactive UI. Not deployed. Waitlist withdrawal currently requires replying to support@plotthirst.com for manual handling; no self-service unsubscribe implementation exists.
September 19 — Waitlist unsubscribe (local, pending AWS login)
Secure email-body unsubscribe link and dark branded email prepared; 23 intake and three admin tests pass. Browser email preview checked. Confirm-button POST suppresses early-access emails, keeps suppression record, excludes it from active admin count. No new IAM access or customer charges. Deployment, live smoke test and authorized resend pending. See docs/WAITLIST_UNSUBSCRIBE_2026-09-19.md.
September 19 — Unsubscribe deployed, email resent
CloudFormation and static unsubscribe page deployed and publicly verified. Live negative-token, valid removal, and replay tests passed against an excluded test record; no test email sent. Authorized welcome resend to the single real pending signup returned sent. Dark branded HTML includes a visible gold body link; recipient inbox appearance still needs user check. Admin active-list exclusion rollout 35444322694 is in progress for commit 60e131b. No new IAM access or customer charges. AWS Agent Toolkit banner inspected only, not installed/configured.
September 19 — Email delivery and opt-out confirmation verified
Signup success includes spam/junk guidance. One-time dark branded unsubscribe thank-you deployed; opt-out remains saved on email failure. SES simulator verified send receipt and repeat protection. Corrected bounce-domain MX typo; SES DKIM and MAIL FROM both SUCCESS. Inbox placement is not guaranteed. No user was unsubscribed during testing. See docs/WAITLIST_UNSUBSCRIBE_2026-09-19.md.
Final rollout: GitHub Actions 35444322694 completed SUCCESS for 60e131b; admin unsubscribe exclusion deployed. Public landing.js and unsubscribe.html byte-for-byte match final goodbye package. Existing autoscaling/queue alarm permission warnings remain outside this email change; deployment itself succeeded.
September 19 — Ultimate Start cleanup (local preview)
- Start screenplay setup now shows target movie length and first-production intent. New setups stop at screenplay by default; users can choose a shorter adaptation. Existing saved setup settings remain loadable.
- Removed the expanded resize/source-window panel from Start; preserved controls under collapsed Screenplay editing and advanced production in the project screenplay view.
- Shorter adaptation is labeled as retelling, separate from trailer selection and screenplay rewriting. Output seconds stay independent of screenplay minutes; source bounds update with the screenplay target.
- Cover and story-bible inputs collapse by default. No backend/provider/billing code changes or paid runs.
- Verified TypeScript/build and isolated browser duration check (90-minute screenplay with 180-second video). Not deployed; paid workflow and real-project resize acceptance remain pending.
Production update: commit 17f27f0 pushed to main; GitHub deployment 35478065478. Public frontend SHA-256 9C9CF85DF791DE39DE746B4266F2FBBBF2929C48FF6DAB28E8E45A25C7EB6FF4 exactly matched the isolated release build and contains the new Start controls. The version API still returned 60e131b; full ECS rollout was still running at verification. Do not infer failure or completion from that stale build label. No paid generation.
September 20 - Compact screenplay navigation (local/ngrok preview)
- Moved production overview, takes, contribution, admin generation and view settings into the project overflow menu. Kept Projects, new-project plus and Player immediately available.
- Carousel descriptions now use a fixed-height scrollable area, with reserved title and retry space to prevent rotation changing page height.
- Verified TypeScript/build, JavaScript syntax, Python compilation and diff whitespace checks. Browser verified compact menu and overflow actions; corrected mobile overflow placement. Phone acceptance remains pending. Not deployed to live app.
- Started existing protected sandbox/ngrok launcher successfully; no provider calls or paid generation.
Deployment update: requested production push completed as b1750adf0e54a3bccf6dc8737bf18fb21152b2ba. Isolated release changed only UltimateOmega.tsx, ReferenceCarousel.tsx and reference-carousel.css; TypeScript and Vite release build passed. GitHub rollout 35521222659 is in progress; production verification pending. Release JS SHA256 56323B9C8F0525851C081A3E28512D5B73C966B3BC74C25CA2655288BC418F81; CSS 7466A7DD49C7991DB4B8F2323A5F00E7D93AD2A67C72ED2E8A96ADEEE14965C1.
Production asset verification: public JavaScript and CSS for b1750ad both matched the isolated release SHA256 fingerprints on September 20. New menu and fixed carousel/mobile styles are being served by app.plotthirst.com. GitHub rollout 35521222659 still in progress at this check; full AWS stabilization is not yet confirmed. Phone acceptance pending.
September 20 - Direct sample segment generation (local only)
- Replaced placeholder sequence/take previews with Select undone, Select all, Clear, and Generate selected beside the segment checkboxes. Selections persist across pages and map by exact timeline ranges into the existing production endpoint.
- Admin menu now navigates to the actual batch board. Full automatic pipeline uses existing generation pricing/credit validation; no new backend billing path or duplicate debit. Existing cost-policy component overhead gaps remain unchanged.
- Reapplies account-saved video defaults to existing contribution drafts before opening production or submitting a sample playlist/batch. Step-by-step entry preserved; obsolete copy wording removed.
- Inline submission errors and job progress; duplicate submissions blocked while the displayed job runs. Prompt diagnostic now includes auth headers, a timeout, visible hosted/local limitation, and stable component identity so settings updates do not erase status.
- Verified TypeScript/build, sample selection tests, batch component harness (whole page, cross-page, errors, progress, busy/duplicate guards), JS syntax, Python compilation and billing audit with no inventory changes. No paid provider generation performed. Live deployment and paid end-to-end acceptance pending.
Browser verification: local sample loaded saved defaults; Select all on this page enabled Generate selected (6), with all six checkboxes selected. Restored the original empty selection afterward. No production submitted. Available on the running sandbox/ngrok; not live yet.
Direct generation release pushed: c296815cd7508e800811dc638248157b7da499b5; GitHub rollout 35525008697 in progress. Five-file isolated release includes four frontend components and batch smoke test. Release typecheck/build and batch/selection tests passed. Expected JS SHA256 34D5184EC6E3268F4ECF8A4A6A65EE0F07D6107655718DD62B138EA449E2283F; CSS 9D10752C7C074927EF91FFF259B1A84C34E48D31D524388233A2BBA06A91AE19. No paid batch submitted. Live asset verification pending.
Live verification: app.plotthirst.com now serves JavaScript and CSS matching c296815 release SHA256 fingerprints above. Generate selected UI is deployed; pipeline 35525008697 still finishing ECS rollout at verification. No paid generation was run; real provider batch acceptance remains pending.
September 20 - Canonical sample integrity repair
- Root cause: manifest SHA256 values described Windows CRLF bytes while Git/deployment shipped LF bytes. This prevented opening a contribution workspace before provider submission (including page 6).
- Production commit 61d17fdd76e8f84d4aa4dab5c07fe425ade549cf normalizes sample files to LF with .gitattributes, updates reviewed byte counts/hashes, and adds exact integrity validation to Docker build. Runtime checks are unchanged and never bypassed.
- Verified all 21 release artifacts and rejected a deliberately modified chapter in a temporary copy. Local enriched sample independently verified all 22 artifacts. JS/Python syntax and release whitespace checks passed.
- Pushed; GitHub rollout 35531307511 in progress. Live file endpoint verification pending; no paid generation started.
Live verification complete: all 21 deployed canonical sample files returned successfully and matched exact expected SHA256 hashes and byte counts. The previous story-database integrity request changed from HTTP 404 to HTTP 200. No paid generation submitted. GitHub service rollout was still finishing when file checks passed.
2026-09-22 Page 6 live production repair
- Local fixes: persist original lens selection and compiled lens direction to account and project fields; project canvas overrides conflicting preset ratios. Preserve opened shared screenplay workspace/selection rather than clearing it during hydration.
- Automatic segment worker now registers missing named subjects from selected screenplay context and reuses the existing reference-image child, then validates before storyboards and clips. Only missing selected assets are targeted; existing media are preserved. Manual readiness errors name the actual missing references.
- Verification: TypeScript/build, 13 focused Python tests, batch UI and selection smoke tests, 21-file canonical integrity check and billing inventory check pass. Three legacy screenplay tests still assert v2/project-wide blocking/pre-reference import behavior; unchanged expectations are not accepted as current requirements.
- Live acceptance pending deployment and Chrome page 6 generation. No new paid run yet.
Validation follow-up: all 38 focused Python tests now pass after correcting legacy assertions to the already-deployed v3 delivered-file contract and selected-subject readiness. Added a reference quote regression verifying one selected missing sheet plus portrait is billed once and excludes unrelated/existing sheets. Build/typecheck and smoke tests pass. Existing release checkout reproduces the same six stale whole-movie monitor fingerprints; they are retained, with a focused scope/cost review recorded rather than refreshing hashes.
2026-09-23 live acceptance: deployment d6efd7c succeeded, original lens survives refresh. Six-segment live submission reaches HTTP504; generation status not established, no repeated Generate click. Follow-up background submission fix prepared to remove gateway timeout while preserving dedupe. Live acceptance remains open.
Page 6 live acceptance follow-up — 2026-09-23
Chrome verified original-only lens persistence and all six selections in production with Mini/480p/21:9. Generation returned 504; zero completed clips confirmed. Durable submission fix cd7be12 pushed (56 focused tests passed), but pipeline success disagrees with public build d6efd7c. AWS rollout diagnosis awaits sign-in. Deployment revision guard prepared locally; acceptance remains open.
Page6 memory failure — 2026-09-23
Build1b5c181 verified live. Website submission created serverless-operation_0020da74a055447eb9aeab5c07c64d2b; Lambda ran out of1GB memory at11:27UTC before durable production handoff. Targeted current-project reads/saves and bounded stalled-operation reporting prepared;59 tests/typecheck/billing audit pass. Original data and recovery path retained. Still no page6 clips confirmed. Deployment verifier corrected to use PRIMARY deployment revision for Express services.
Page6 key handoff — 2026-09-23
Memory fix6c37df2 verified live; website submission progressed to a specific Atlas-key preflight error. ECS worker already has Atlas secret wiring; Lambda coordinator intentionally does not. Fix moves key requirement to worker before paid reference work and limits async route to automatic submission.60 tests pass; retry/player acceptance outstanding.
Page6 build5f5eeca is live. Website Generate selected(6) created screenplay-segment-production_1855e92f3ea34172bf, processing references (6/8 observed). Original lens / Mini480p21:9 retained. Progress display GET route500 reproduced and local import fix tested; deployment deferred during paid work. Six finished clips/player acceptance remains outstanding.
Page6 follow-up: all8 missing references and6 storyboards completed; worker killed by OOM12:37:16UTC preparing clips. Scoped screenplay draft repair extended through video clip creation and serial/parallel runtime. Progress fix67a02c2 queued with this fix. Still zero confirmed new clips; do not regenerate saved reference/storyboard outputs.
Web772bd54 now served. Worker deployment paused after old worker resumed paid clips; first page6 take verified playing in Chrome,10.08s,992x432,no decode error. Second take saved by continuation (four remaining observed). Worker task432a23418e5648f290f3b449f1ba9fd8 protected for60min against deployment replacement. Direct registration unavailable to signed-in IAM user; normal CI retained. Selector now opens on first selected page group (typecheck/build passed).
2026-09-23 acceptance: production parent screenplay-segment-production_1855e92f3ea34172bf reached completed/clips-complete on deployed2c18714 (web650,worker607). All6 page6 clips generated usingMini480p21:9/original lens. First4 shared takes verified published; final2 publishing/playback verification in progress. New worker completed last2 without restart. Eight references and six storyboards reused through recovery.79 Python tests and frontend typecheck/build passed.
Page6 acceptance COMPLETE: all6 generated takes published through website Approve to project as first default takes. Shared sample completed playlist now18clips and containsP0006-S001 throughS006. Played first3 transitions andsharedS004/S005/S006; video decoded with noerror. Parent completed/clips-complete. Functional release2c18714,web650/worker607,CI35864966914 succeeded. See docs/PAGE6_LIVE_ACCEPTANCE_2026-09-23.md for evidence and remaining historical-job/billing reconciliation boundary.
2026-09-23 mobile menu follow-up: user confirmed pages 119/120 were selected on mobile but only the three-dot navigation item was pressed, not Generate selected. Live fd21854 menu action reproduced as navigation only, with dropdown left open. Local fix closes the dropdown and labels it Open segment generation controls; typecheck, node syntax, Python compile and diff checks pass. Not deployed; no new batch submitted or claimed.
2026-09-23 LOCAL ONLY (user requested no push): Three-dot Generate selected segments now invokes the same SampleBatchBoard submit handler, closes menu and reveals feedback. Shared lock prevents duplicate menu/page submits; empty selection and pending settings show feedback. Sample generation no longer uses the separate production-copy defaults pending flag; its own settings guard and server-loaded defaults remain. Screenshot established actual mobile readiness failure; paid 119/120 batch has not been retried. Typecheck/build, component/guard regression harness, JS syntax, Python compile, billing inventory and diff checks pass. Await deployment and live multi-page acceptance.
2026-09-23 LOCAL progress fix: empty backend summaries created phantom story-writer unknown0 rows for media children. Reject mismatched/empty IDs, include reference job lookup, identify media types; link completed canonical Story Writer import and verified screenplay artifacts from authorized same-project compact index. Unknown progress is not presented as measured zero. Storyboard batch range corrected20-38 (was5-38 after references5-20).82 Python tests pass. No deployment during active batch screenplay-segment-production_70d717ff6398448f94; no job reruns or billing backfills. Previous menu release38cdde7 CI35896743859 confirmed success.
LOCAL contribution UX: My takes has per-take checkboxes, Select all unpublished, Publish selected, partial-error reporting. Sample and community batch selectors offer optional auto-contribution (off by default); durable worker uses existing approval checks and only current child-job takes, preserving first defaults and private historical takes. Publication failure cannot rerun paid generation. Three-page selector explains its optional role. No deployment or publication of current119/120 takes performed.
2026-09-23 — publication failure and contribution navigation
- Live Chrome build 1c6af23: nine unpublished takes on pages 119–120 returned HTML instead of JSON during publication; UI reports zero published from that attempt. Root HTTP status/cause not yet captured. Do not regenerate clips.
- Contribute clips opened successfully through community/open (HTTP 200); the existing expanded actions/My takes menu obscured the resulting production workspace. Three-page selector is present after closing it.
- LOCAL ONLY: close actions menu when opening contribution controls, clarify button label, expose HTTP status for malformed responses, retain failed bulk selections. Publication retry awaits explicit confirmation after automatic approval review blocked the diagnostic publish. No deployment or backend resolution claimed.
- 2026-09-24 live Chrome retest, explicitly authorized single publication: after closing the expanded segment selector that intercepted the first click, community/approve returned HTTP 200 and mine returned HTTP 200. UI confirmed first default take published; unpublished count decreased from 9 to 8. Original bulk HTML-response failure did not reproduce in this single retry; root cause remains unconfirmed. No further publications or paid generation were performed.
- 2026-09-24 LOCAL player transition fix: reset tap overlay when advancing clips; ignore outgoing play promise rejection; use persistent expanded stage on browsers without container fullscreen instead of native per-video fullscreen controls. Mobile Safari acceptance and deployment remain pending. iPhone fallback fills browser viewport; browser chrome may remain visible.
- 2026-09-24 mobile user confirmed fullscreen transition fix worked. LOCAL submission UX: keep-page-open notice throughout sample import/defaults/queue submission, nested beforeunload guard cleared in finally, leave-safe text only after successful automatic generation response with job ID. Browser warnings cannot prevent mobile OS suspension. Specific missing runs await page/segment/time identification; no paid run replayed. Deployment pending.
- 2026-09-24 LOCAL My takes performance: videos are not mounted or assigned media URLs until Load preview is clicked. One preview at a time; closing the panel, refreshing, or changing contributor scope clears it. Existing select-all/publish flow needs no preview. Full-workspace server listing latency remains unprofiled; deployment/mobile acceptance pending.
- My takes additionally defaults to Unpublished only, with visible count and an all-published empty state; unchecking restores all takes. Filter changes close loaded preview. Client-side filter; backend request unchanged.
- 2026-09-24 LOCAL project navigation isolation: My takes panel remounts per project ID; community menu requires matching active project metadata. Leaving sample for saved/community/run production clears sample URL flags, player and overview. Removed the redundant Back to my setup / Start a new project button from the screenplay controller; the header plus remains the new-project action. Header Projects/actions menus close each other, on outside pointer and Escape; destination actions close menus. Exact standalone screenplay link still awaiting identification. Build, type, syntax and diff checks passed; browser project-switch acceptance pending; not deployed.
- 2026-09-24 LOCAL assigned tester generation: sample main/menu and playlist generation controls now permit role test/isTestUser in Testing mode, rather than requiring Admin view. Existing server authorization, contribution access and credit billing remain unchanged. Ordinary/live preview accounts remain blocked. No test account promoted and no paid job started. Deployment and signed-in tester acceptance pending.
- 2026-09-24 RELEASE GAP: automatic screenplay selected-segment generation queues production without a customer-visible cost quote/approval. Existing child billing is not advance consent. Before releasing pending tester-generation UI, add a server-owned batch quote covering missing references/planning/storyboards/video and any requested stitching, reused outputs excluded; bind confirmation to selection/settings, show credits/balance and enforce approval at queue creation. Exact-once cost and reservation review required. No fix or paid test claimed. Quick Create has separate numeric estimate confirmation; do not claim all entry points lack it.
2026-09-24 — generation estimate review (LOCAL, not deployed)
- Added a shared mobile-friendly credit review dialog to screenplay generation (including sample/menu/player and manual stage calls), Quick Solo, Quick Multi, and Ultimate submission. Shows estimate, balance, included work, cancel, and explicit confirmation; invalid estimates cannot start through these UI paths.
- Screenplay uses a server calculation before materialization/queueing, current billing helpers, unique missing references plus portraits, missing storyboards/clips, optional streaming previews and stitch. Existing clips are reused unless another take is requested. Manual calls quote the next stage. Selection/settings/price changes require re-review; available balance is checked again before queue. Approved forecast is saved in the automatic job request. Parent adds no reserve/debit; existing children retain billing ownership.
- Ultimate uses its existing server estimate endpoint for final review; Quick Multi retains saved-quote validation and now includes available balance. Extend/Loop gains a no-provider-work estimate but explicitly labels the existing initial video reservation as a SUBTOTAL, excluding later finishing costs.
- Validation: 11 focused Python estimate tests (no provider calls, no estimate reserve/debit, missing/stale confirmation, balance recheck, reused assets, reference deduplication, stage scope, saved quote); 36 existing screenplay/access tests and 19 batch/serverless tests passed. Dialog cancellation/approval/insufficient funds/Escape/focus tests, sample batch and submission-warning harnesses passed; TypeScript passed.
- Remaining acceptance: browser/live mobile review and deployment, all-in Extend/Loop finishing quote, full ancillary planning/operating-cost reconciliation, legacy/individual retry entry audit. Existing server worker continuation is not interrupted for browser confirmation. Forecast is not a maximum-spend contract; no retroactive or new parent fee was introduced. Keep the earlier full-cost release gap open pending those financial checks; do not claim all billing entry points audited or release tester enablement as accepted yet.
2026-09-24 — screenplay workspace steps (LOCAL, not deployed)
- Existing screenplay projects open on Project (cover/references), followed by Segments, Settings, Generate, Takes. Compact five-column navigation has Back/Next, small labels and 44px navigation targets; Player remains in the header. Fresh Ultimate's initial workflow stays separate.
- Sample selection/page navigation, settings and review share mounted components to preserve selection, saved settings and queued-job state. Page/source text and timing are collapsed; direct page picker added. Review selection goes directly to Generate without forcing a settings visit. Settings initially targets project defaults; page/segment overrides remain available. Prompt workbench remains under advanced details.
- Saved-project three-page selector now renders within the workflow and no longer opens fullscreen automatically. Takes is moved to its step; publication state persists across steps and previews close when leaving. Private-project takes remain reviewable/default-selectable in Player. Advanced saved-project controls remain available rather than being deleted.
- Validation: TypeScript/build passed before final text polish; batch harness covers selection surviving the step switch and Review selection not starting production. Actual React nav/batch components inspected in an isolated 375px browser fixture: select all -> review retained all three selected clips and fit the width. This is component/mobile-layout verification, not a live end-to-end account or paid-production test. Final production build, TypeScript, selection harness and diff checks passed. Live deployment/account acceptance remain pending; no push or paid generation performed.
2026-09-25 — Retire Sora video generation (local)
Removed Sora 2 / Sora 2 Pro from shared video and routing catalogs, legacy menus and TypeScript fallback options at owner request. Historical clip/spec data remains. Saved retired selections fail with a choose-another-model error before provider dispatch and new cost quotes. No replacement provider is silently selected and no new rates or billing operations were added. Live deployment remains pending after the prior ECS alarm rollback; full-cost audit gaps and existing stale baseline remain open.
2026-09-25 — Rollback diagnosis and approved alarm correction
Failed run 36079214204 used combined target 4xx+5xx rollback math. CloudWatch 00:53-00:57 UTC recorded 7 client errors per populated minute on both target groups and no 5xx datapoints; application log contained only startup, so exact client-error endpoints are not established. User explicitly approved changing rollback to 5xx-only, retaining the 1% threshold, evaluation timing, notification actions and ECS task-health rollback. Applied and read-back verified in signed-in Chrome CloudShell. tools/repair_ecs_rollback_alarm.py documents an idempotent guarded repair (dry-run default), with preservation tests. Temporary read-only Actions diagnostic lacked DescribeAlarms permission and was removed; no IAM access expanded. Release includes prior screenplay/cost/takes/navigation/tester work and Sora retirement. Deployment verification pending.
- 2026-09-25: Local mobile Generate auto-contribute checkbox alignment fix prepared; not pushed. iPhone live acceptance pending.
- 2026-09-25: Local logout navigation fix removes anonymous Ultimate sample access, resets logout URL and revalidates restored history/cross-tab logout. Not pushed; live mobile acceptance pending.
September 25 — MCP Quick Multi package handoff (local verified; deployment pending)
MCP 1.5.16 adds account-bound image uploads, checksum/image verification, batch import retrieval, and durable batch estimates. Quick Multi accepts one ZIP with a prompt TXT and reference images, retains filenames and original prompt text, validates reference mapping, and exposes the imported package to the same connected account for 24 hours. Settings are displayed for review; imports never generate media. A confirmed saved quote reuses its exact setup and deterministic submission ID on retries. Existing integrations with valid estimate IDs remain supported.
Local evidence: 35 Python MCP tests, 2 TypeScript ZIP import tests, TypeScript typecheck/build, Python compile, app.js syntax and whitespace checks passed. Plastic Samurai's six prompt blocks validate against the production parser with all eleven image names resolved. Paid provider generation and hosted ZIP/browser acceptance remain pending. No paid generation submitted.
Cost review: quote/start reuse existing Quick Multi authoritative provider/stitch estimates, reservation/debit and idempotency paths; no new generation surcharge or parent debit. Image upload/verification and short-lived import metadata use the existing Plotthirst-funded upload/support convention; storage/request overhead is not separately charged here. Existing operating-allowance gaps in BACKEND_COST_AUDIT_POLICY remain open. Billing inventory check found no changed entry points. Movie cost monitor remains stale for existing catalog/sample/preview sources plus server.py; baseline was not refreshed to silence it.
September 25 hosted test: release 5d88a14 served the ZIP import UI. The first upload exposed a local sys-import shadowing error in the real API dispatcher before any transfer. Fixed with a scoped import and regression test compiling the actual handler; 36 Python tests pass. Corrective deployment and hosted acceptance pending. No paid generation.
September 25 hosted upload follow-up: S3 rejected the new conditional upload because the legacy client presigned it with Signature V2. New immutable MCP/ZIP uploads now explicitly request s3v4 while existing callers retain their defaults. Added an offline real-botocore signer test asserting AWS4-HMAC-SHA256 and signed checksum/If-None-Match headers. Hosted retest pending deployment; no provider generation.
September 25 hosted acceptance on 743a00a: Chrome ZIP upload succeeded for Plastic Samurai, preserving six prompts and all eleven verified reference images. After explicitly selecting Seedance 2.0 Mini, 1080p-SR, 21:9 and 15 seconds, the live website quote returned 2,703 credits for six clips plus stitching. No generation started; customer approval requested. Imported human model labels did not initially match provider IDs; added exact label-or-ID matching with ambiguity/missing-model and unsupported-resolution guards (3 TS tests pass). Matching correction deployment pending; existing live import and quote are verified. MCP v1.5.16 account status and public new-tool schemas verified, but this chat client still caches its old tool list; new-tool connector acceptance remains pending refresh. Signed-out import/API access correctly rejected.
September 25 final hosted UI acceptance: d3f3792 is serving live. A fresh Chrome import of the original Plastic Samurai ZIP completed with 6 clips and 11 verified images, and automatically selected Seedance 2.0 Mini / 1080p-SR / 21:9 / 15 seconds. Prior live quote at these settings was 2,703 credits including stitching; refreshed quote also returned 2,703 credits and enabled Approve and start batch. 37 backend tests (using current boto3 in a temporary test dependency directory), 3 ZIP/model-matching tests, TypeScript typecheck and production build passed. New tool schemas and connected MCP version verified; refreshed-client new-tool invocation and paid-provider completion still await acceptance. GitHub rollout 36181391923 is still completing worker checks at this checkpoint; 36179698039 completed successfully. No paid generation submitted. Browser left at Quick Multi for approval.
September 25 recovery follow-up (local fix verified, not deployed): Plastic Samurai initial batch dafb49bc7a11e46fec355d49 produced clips 1,2,6; Atlas returned error 1010000 "reference asset(s) are still being prepared" with zero inference for 3,4,5. Recovery batch 0f9d3c67ec7369f55601c1af recovered clip 3, with the same preparatory error for 4,5; second recovery 54c60e3c05d10ff17fc5fc31 is running for only those two. Original completed media preserved. Corrected partial batches to a failed terminal transport status with a partial stage/message (compatible with existing job lifecycle), skip incomplete master stitching, and sort resumed successful clips before assembly. Download ZIP no longer navigates to a returned filename. 15 batch tests, TS typecheck/build, syntax and billing inventory checks passed. No new charges or pricing changes; existing reservation release remains once per job. Automatic provider preparation retries, stale Mini pricing, and suspicious per-batch debit deduplication require further audit; do not treat recorded credits as reconciled provider cost. Final six-clip assembly remains pending at this checkpoint.
September 25/26 recovery checkpoint: the second retry 54c60e3c05d10ff17fc5fc31 produced no clips; 4 and 5 remain blocked by Atlas asset preparation. Four originals (1,2,3,6) are safely copied to CloudShell /tmp/plastic-recovery/clips and remain in S3. All are H.264/AAC, 24fps, 2200x944, approximately 15.04 seconds. /tmp/assemble-plastic.py refuses assembly until all six exist, then verifies lossless stream-copy output before upload. /tmp/recover-plastic-direct.py is prepared but NOT launched: automatic approval review rejected direct provider execution outside normal billing safeguards; explicit user approval requested and pending. No credentials displayed. Local partial-status, complete-only ordered stitch, stitch-failure, and ZIP-navigation fixes pass 16 batch tests plus TS checks/build. Fixes not deployed; no pricing or ledger corrections performed. Do not claim movie complete or rerun completed clips.
September 26: User declined direct Atlas recovery; do not run the prepared script. Packaged original missing clips 4/5 prompts and six unchanged references in deliverables/Plastic_Samurai_Clips_4_and_5.zip. Only import headers renumbered with explicit original mapping. User requested deployment of all pending fixes. Four clips exist (1,2,3,6); full movie remains incomplete. Pricing and ledger concerns remain open.
September 26: Corrected Seedance 2.0 Mini reference/image output estimate rate from $0.00672 to $0.0012 per thousand video tokens using observed Atlas charges. Future quotes require deployment; existing completed debits remain unreconciled pending a separate audit.
September 28: Quick Solo Suno target seconds is editable before lyrics or Instrumental are selected, accepts 0 (Auto) or 10–360 seconds, and preserves valid planned durations. Verified locally; deploy pending.
October 3: Admin credit balance follow-up: deployed e16493b introduced BatchGetItem while the deployment's billing role policy lists GetItem only. Added an AccessDenied-specific fallback that reads authoritative accounts with existing GetItem permission; does not adjust balances or expand IAM access. Eleven focused billing tests, Python compile, JS syntax and diff checks pass. Guntolga's completed jobs/actual ledger remain unverified because Chrome tab input/capture failed; do not infer noncharging from the 5,000 profile fallback. Corrective deployment and live account acceptance pending.
October 3 Chrome live acceptance (19e7808): refreshed the signed-in Admin page and selected Guntolga; Credits now displays 4,711. Read-only AWS DynamoDB console query of plotthirst-user-billing confirms ACCOUNT credits 4,711, reservation res_86098116a87946db9b reserved/spent 289, remaining/released/overage zero. Reserve ledger changed 5,000 -> 4,711; spend consumed the reservation without a second balance debit. Queried plotthirst-jobs userId-updatedAt-index and confirmed quick-create-omega_b6291a8daa574b748a (title Test, video, 15 seconds Seedance 2.0 text-to-video) completed at 2026-10-03T03:02:38Z with 100% progress and empty error. This is one completed media job plus its serverless start receipt, not two generations. Public account number 03699340357289 differs from internal user UUID 2265adc9-5b08-4d57-abf7-2ecf462858f1; use the actual select option value for database queries. No generation submitted or balances edited during this check. Admin troubleshooting session ended and browser left on Guntolga's admin record. Screenshot: ../guntolga-live-credits-2026-10-03.jpg. Follow-up issue: Recent creations in read-only support mode is rejected with support_restricted; the UI also reports No recent creations. Do not interpret that empty list as no jobs. The profile-based Credit Ledger panel still showed the starting grant but omitted the DynamoDB reservation/spend rows; its full ledger reporting remains a separate issue.
October 3 Quick Solo update: fixed the HD Pro angle-pack checkbox with scoped flex styling, an 18px nonshrinking input and wrapping text. Chrome layout preview at 390px confirms both checked and unchecked labels remain beside the checkbox without horizontal overflow; smaller breakpoint acceptance recorded separately below. Added WAN 3.0 and WAN 3.0 Prime reference-to-video choices to Video Edit via video-editing capability and matching canonical video-edit offerings, retaining Wan 2.7/defaults. Official Atlas WAN 3.0 page documents instruction/reference editing via existing reference input: https://www.atlascloud.ai/models/wan-3.0. Edit source videos remain limited to five, totaling 15 seconds; output remains 2–30 seconds or Auto. Existing WAN resolution rates, quote/reserve, once-per-output debit/release and own-key rules are reused; no new fee or duplicate input-video fee added. Backend routing tests verify video references reach the actual reference-to-video endpoint and edit quote wholesale matches existing WAN rate for standard/Prime. Existing unpriced shared allowance and movie monitor source-review gaps remain open. Local TS typecheck/build and 27 WAN/provider tests passed; billing inventory unchanged. No paid generation performed. Deployment/live dropdown acceptance pending. October 3 additional local acceptance: at both 320px and 390px, Chrome DOM measurements confirmed each angle-pack label begins to the right of its 18px checkbox and ends within the viewport. Screenshot saved to ../quick-solo-mobile-checkbox-fixed.jpg. Movie monitor was rerendered with existing stale source-review warning retained; --check reports the preexisting six-source re-audit requirement, so no baseline fingerprints were refreshed.
October 3 WAN duration clarification: Chrome live build ef8ddfb accepts 30 seconds for WAN 3.0 Video Edit. The 15-second helper describes total uploaded reference-video duration, not generated output; official documentation confirms this distinction (https://www.atlascloud.ai/models/wan-3.0). Clarified Quick Solo WAN duration label and source helper copy. No duration, input validation, or pricing behavior changed. Local TypeScript typecheck/build, Python compile, JavaScript syntax and whitespace checks passed; updated-copy deployment pending. WAN 3.0 Prime also retained 30 seconds when selected in live Chrome; screenshot ../wan3-live-30-seconds.jpg. No generation submitted.
October 3, 2026 — WAN Video Edit and longer split edits (local)
Single WAN 3.0/Prime Video Edit now limits output to 2–15 seconds or Auto, with source videos totaling at most 15 seconds. Ordinary WAN generation retains 2–30 seconds. Quick Solo adds a reviewed split → edit → stitch option for one account-owned source of 2–1,500 seconds (25 minutes); 14.9-second planning ceiling leaves encoder padding headroom. Balanced contiguous windows cover the entire source; maximum 101 portions, no silent trimming. Optional account-owned images are used as-is; separate audio/voice references, angle-pack generation, own-key mode and multiple variations are explicitly rejected in this first release.
Global instructions repeat; explicit timed lines map to local portion time, with editable prompts and a mandatory review checkbox. This is deterministic preparation, not a hidden AI interpretation/rewrite. Relative/narrative instructions require manual review. Independent edits may have visible or audible joins; no paid provider fidelity/continuity acceptance is claimed.
Backend start binds the reviewed plan hash and the confirmed maximum credit reservation. The quote includes all unfinished edits plus one preparation/assembly fee, and the account discount. Each edit reserves its existing WAN 15-second unit; measured output prorates that frozen approved unit with upward credit rounding. Unused reservation is released by the existing worker. Source ownership and support payer are independent; approved admin support billing uses the payer's profile. A pending provider request is polled by saved ID; confirmed failures need a separately approved retry, limited to one new submission per reservation. Ambiguous submission outcomes are not blindly resubmitted. WAN reference-asset preparation HTTP 400 rejections are recorded as confirmed non-rendering failures for an approved retry; WAN payload fallbacks cannot drop references. Completed parts and their debit IDs are retained; retries deduplicate by originating failed job, then assemble in order. Worker failure/cancellation now preserves split progress and the retry setup; no unquoted automatic AI-title call is made for this operation. Split editing requires the durable DynamoDB billing backend; the legacy local ledger cannot guarantee event deduplication and is rejected before provider work.
58 focused local tests passed, including real FFmpeg source splitting with audio, contiguous planning beyond 30s, partial failure/resume, saved request-ID reuse, uncertain-outcome suppression, once-per-attempt retry, frozen discounted units, pre-reservation review/hash/price guards, single-part delivery, worker failure preservation and a bounded 25-minute quote. Existing WAN, Quick Solo audio/comic/extension, account discount and worker heartbeat tests passed. Chrome exercised the actual compiled TypeScript component with offline HTTP fixtures: a 60s source produced five reviewed 12s portions, timed prompts mapped correctly, discounted cost confirmation could be canceled, and Recent creations → failed job → Retry restored its model/source/prompts even from Audio mode. Logical viewport measured 355px without horizontal overflow; checkbox labels began to the right of their 18px inputs. Screenshot: ../split-video-edit-mobile-preview.jpg. Fixture preview media was intentionally unavailable; that 404 is not a live upload finding. No paid generation, account balance change or live split edit was performed. Deployment and physical iPhone/provider/long-source final stitch/download acceptance remain pending.
October 3, 2026 — Split-edit durable settlement repair
User reported live job quick-create-omega_5af2c070aba8403292 failing after a video downloaded with `unsupported operand type(s) for *: 'decimal.Decimal' and 'float'`. Reproduced the exact failure locally with a DynamoDB-shaped quote (integral credits and fractional metadata hydrated as Decimal) and an unsettled saved 14.35s output. Split settlement now converts the frozen integral credit ceiling to int before duration multiplication. No rate, reservation, discount or fee changes. The regression verifies 180 reserved credits settle to 173 for 14.35s; the cached video is reused without another provider submission/download, its stable debit event is retained, and a subsequent replay does not debit again. Existing successful parts and approved retry behavior remain intact.
59 focused tests pass, including real source splitting, saved output settlement, partial resume and provider request checkpoints. Local repair verified; deployment/live retry, final second-part generation and joined-output acceptance remain pending. No paid retry was submitted by the agent. Existing WAN promotion/list-rate reconciliation and movie-cost baseline gaps remain open.
October 3, 2026 — Split retry review flow repair
Retry unfinished portions now fetches the current free estimate using the original failed job ID, restores the saved instructions and valid plan together, and scrolls/focuses the review section. The plan has a review checkbox and an adjacent Review retry cost button. Missing-review submissions focus the checkbox; repeated restoration preserves an unchanged prior review. Retry instructions remain read-only to match the backend's immutable resume contract. Loading a regular saved setup explicitly clears retry state even when its inputs match. New edits whose portion prompts change require Update edit plan before review. If the server returns a changed plan during submit, that plan is now displayed and can be reviewed instead of leaving the user on the stale plan.
TypeScript typecheck and production build pass. Chrome tested compiled UI at a logical 355px width with offline HTTP fixtures: Image mode → Recent creations → failed job → Retry automatically loaded its plan; missing review focused the checkbox; reviewed retry reached cost confirmation and an accepted offline submission with original resumeSplitEditJobId, true review flag, exact plan hash and approved ceiling. Repeated retry preserved unchanged review; modified prompts could update, review and continue without a loop. Preview screenshot: ../split-edit-retry-preview.jpg. No provider request, live account balance change or paid retry. Existing billing calculations unchanged; free quote calls do not duplicate provider work. Production deployment and the user's live retry remain pending.
October 4, 2026 — Upload previews, Library and safe continuation (local)
- Private reference images now resolve fresh authorized previews through a shared React component across Solo, Multi, Ultimate and Library, plus a legacy-panel fallback. Expired previews can refresh; canonical files and permissions remain intact.
- Direct and inline upload completion catalogs images/video/audio/documents in the account Library. Historical media index runs in resumable metadata batches on Library open, includes audio/documents and legacy account paths, and does not download/copy media or rescan after completion. Media is not loaded until selected for review.
- Split editing automatically retries confirmed non-rendering preparation rejections and temporary interruptions with a known saved request/output, preserving the same approval/reservation and successful portions. Failed renders or unknown submissions are not automatically resubmitted.
- 69 focused backend tests and frontend checks pass. Offline Chrome mobile preview demonstrated expiry recovery and lazy uploaded-item review; synthetic reference only, no paid run. Deployment, real account historical completeness, Safari and paid recovery acceptance pending.
- Future Choose from Library picker is documented, not shipped in this repair. Details: docs/UPLOAD_PREVIEWS_AND_LIBRARY_2026-10-04.md. Existing pricing/operating gaps remain explicit.
October 4 — Support and ACH credit purchases (local)
- Recorded evidence: Separate TypeScript Support Plotthirst page explains service-tip purpose, fees/net amounts, total and card/bank timing before checkout; no credits/membership from support.
- Recorded evidence: One-time credit purchases offer ACH, with pending status and no spendable credits before verified success. Existing card/subscription pricing and payout account retained.
- [x]72 provider-free payment regression tests pass: unpaid/failure no credits, success/replay once, purpose/owner/amount validation and owned status recovery.
- Acceptance open: Confirm Stripe ACH availability and subscribed async success/failure/expiry events; complete hosted test-mode pending/paid/failure/browser-closed acceptance. No real payment authorized or performed.
- Acceptance open: Close existing refund/chargeback/late bank-return credit reconciliation policy before public financial acceptance; no claim payment success is irrevocable.
- Acceptance open: Deployment and physical iPhone acceptance remain pending; local compiled phone-width preview recorded separately.
Review: docs/SUPPORT_AND_BANK_PAYMENTS_2026-10-04.md. Fees/control storage are Plotthirst-funded; no added customer surcharge or generation. Existing movie-cost baseline gaps retained.
October 4 local payment UI acceptance: TypeScript typecheck/build, JS/Python syntax, billing inventory and readiness guard pass. Chrome compiled-component offline preview at logical355px shows wrapped radio labels without horizontal overflow, bank fee/net disclosure and pending credits explicitly not spendable. Screenshots: ../support-payments-mobile-preview.png and ../bank-credits-pending-preview.png. This is fixture UI evidence, not hosted Stripe/payment acceptance. Stripe live inspection confirms ACH Direct Debit is disabled; existing signed endpoint already subscribes to completed/async-success, but failure/expiry are missing. Exact live activation/update approval requested after automatic review rejection. Movie monitor rerender preserves its six preexisting stale-source warnings; baseline hashes not replaced. No customer/provider spend.
October 4 Stripe activation follow-up: owner explicitly approved the live changes. Chrome confirmed ACH Direct Debit Enabled. Existing active signed payment webhook now listens to14 events, adding checkout.session.async_payment_failed and checkout.session.expired while preserving its original12 (including completed/async-success and subscriptions). Endpoint/secret/API version and payout bank unchanged. No real payment or credit mutation. Configuration acceptance complete; hosted/test-mode/real asynchronous settlement and existing refund/late-return policy acceptance remain open. Proof: ../stripe-ach-enabled.png and ../stripe-bank-webhook-configured.png. Application code remains7598662; this follow-up changes dashboard configuration and documentation only.
October4 — Quick Solo edited-frame continuity (local)
- Recorded evidence: WAN3.0 is the fresh Video Edit default. All edit models preserve reference shape/proportions by default; source-shape checkbox opts in.
- Recorded evidence: Existing WAN/Prime split edits append the previous EDITED output's final frame to each later portion, with an explicit appearance/lighting role. Private checkpoints and successful portions reuse on retry; uploaded refs never dropped.
- Recorded evidence: New options bind to plan review; historical approvals retain original hashes/prompts/fees. Extra local frame preparation joins the existing one-time service estimate.61 focused tests, TypeScript build/typecheck, syntax and billing inventory pass.
- Acceptance open: Hosted paid continuity/joins, physical iPhone and actual operating/billing reconciliation remain open. Other edit models have the proportion policy; split support remains WAN/Prime.
October 5 — Test early preview pages (local)
- Library moved out of Developer Focus into a collapsed Test early preview pages folder and matching page-picker group. Only authenticated admins/test accounts can enter; Live experience and regular/signed-out accounts blocked. Empty groups hidden.
- Library API authorization now rejects unauthorized reads and all six writes before storage work. No change to ordinary uploads/downloads or stored files.
- Library first loads on an authorized visit, preserving its current view across menu changes. Local role/navigation/logout checks and 13 Python checks pass; TypeScript typecheck/build and syntax verified. No paid calls. Hosted/mobile acceptance remains open; see docs/TEST_EARLY_PREVIEW_PAGES.md.
October 6 — Reuse saved reference files (local)
- Shared saved-reference picker connected to Solo image/edit/video/edit/extend/upscale/comic-page inputs and compatible audio references, Multi named image pool, Ultimate input references and both song controls, and screenplay segment references. Canonical files reused without another upload/copy.
- Subject/name/type and filename/tag search, multi-subject selection,24-row pagination, explicit previews, older-index continuation and Name subject are present. Drafts persist known subject/duration metadata. Live may browse/index its own file metadata; write/selection/generation restrictions retained. No provider details in picker data.
-40 focused backend checks and JS reuse/count/subject checks pass. Typecheck/build, syntax/billing/readiness checks pass. Chrome fixture at355px verified search/reuse of image/video/audio with zero media elements on browse and no horizontal overflow. Proof: saved-reference-picker-mobile-preview.png. Hosted/physical Safari acceptance pending; production push not yet approved.
October 7 — Original prompt backup after fresh browser load (local)
- Preserve original user inputs/job links on media re-save and stale browser app-state merges; keep full text through terminal job compaction and Library delivery reads.
- See prompt in Solo, Multi, Ultimate and Library retrieves account-owned saved inputs, including lyrics/lens/action text. Older linked records recover once from their exact durable job; the manual whole-catalog recovery continues in bounded12-record requests. Rewritten provider prompts are excluded.
- Fresh backend-instance and browser-runtime tests plus closed/reopened local Chrome fixture verify retrieval without the original form/session cache. No paid jobs or production customer-data changes. Hosted/iPhone acceptance and actual historical coverage remain pending; originals that no longer exist cannot be invented. See docs/USER_INPUT_BACKUP_2026-10-07.md.
October 8 — Media titles, paging and prompt Copy (local)
- Durable original/recovered/AI media titles survive partial and stale re-saves; Library Rename preserves the submitted prompt. Missing titles use one account-owned background naming receipt with no customer debit or repeated paid attempt. New naming uses bounded metadata only and suppresses email. Historical/provider unknowns stay explicit.
- Recent Solo/Multi now list summaries only,5 default/10 selectable and cursor Next; details fetched on opening one job. Library and saved references use5/10 ranges with correct Next offsets. Automatic full historical upload indexing removed from Library open; explicit Find older files retained. Original prompt/lyrics/music/lens/action Copy controls have brief feedback.
-56 focused backend checks and Node metadata/reuse/prompt checks pass; TypeScript/build and required checks pass. Local Chrome mobile fixture verified5->next5,10 selection, rename, zero media elements while browsing, no overflow and exact original prompt/lyrics clipboard text. Screenshot media-prompt-copy-mobile-preview.png. Production, physical Safari, real AI title and old-account completeness acceptance remain pending. No live customer records/prices/balances were changed.
October 8 — Uniform small image/video previews (local)
- Library browse cards and the shared saved-reference picker now display separate 320 x 180 JPEG derivatives, with padding to preserve portrait/landscape shapes. Originals remain unchanged and load only in explicit full review. New registered uploads/generated outputs queue preview preparation; older visible records prepare in batches of at most five, rather than downloading full media in the browser.
- Durable account/file receipts and conditional worker claims prevent duplicate preparation. Private download authorization remains in place; no provider call, new customer reservation/debit, notification email, or price/balance change. Full originals remain usable if a thumbnail fails. Derivatives are excluded from saved-reference and historical Library listings.
-52 focused Python checks pass, including actual image/video encoding, worker dispatch, receipt repair, stale re-save preservation, bounded retries and cross-account denial. Chrome synthetic fixture at390 x844 verifies5/10 paging, equal frame sizes, no horizontal overflow, and zero original-media requests/video elements while browsing. Proof: media-thumbnails-mobile-preview.png. Real hosted S3/Safari and older-account coverage remain acceptance items; this update is not pushed. See docs/MEDIA_THUMBNAILS_2026-10-08.md.
October 8 — Saved-reference search timeout repair (local)
- Reproduced the live Michelangelo saved-image GET returning HTTP504; the gateway HTML caused Chrome JSON errors and the iPhone pattern message. A500-file synthetic search performed1000 whole-database copies through per-file ownership lookup, taking8.543seconds.
- Saved-reference search and subject-description updates now use one authenticated account snapshot with exact owner/ID boundaries, rather than repeated user-database copies. Same500-file test returned five results in0.0475seconds with zero extra database reads; legacy folders and cross-account denial remain covered. Five/ten paging, filters and media URLs retained.
- Saved-reference requests report gateway/login/network/malformed-response failures clearly, stop waiting after45seconds, and send JSON for older-file indexing. Chrome fixture verifies504 warning -> Find retry -> Characters result -> reuse, with no uploads/provider generation or horizontal overflow at355CSS pixels.54 focused Python checks, expanded Node API checks and TypeScript/build pass. Hosted repaired-search verification remains pending. See docs/SAVED_REFERENCE_SEARCH_TIMEOUT_2026-10-08.md.
October9 — Blank Library thumbnail repair
- Reproduced live Buildb4617b2: Library header present, React root empty; Chrome logs TypeError reading includes from an undefined thumbnail URL. The earlier fixture omitted the backend's empty thumbnail object, so that catalog shape was missed.
- Validate thumbnail object/URL/dimensions/version before using it; missing/empty/null/malformed thumbnails keep a safe placeholder and continue preparing. Original files are never substituted into automatic browsing previews. Types now represent incomplete thumbnail objects.
- Library render boundary shows a reload control instead of a silent blank page for unexpected render failures. Node rendering checks cover the real empty object and malformed values. TypeScript/build pass; Chrome355CSS-pixel fixture renders5/10 items, no original-media requests/overflow, and verifies boundary recovery after a synthetic error. Hosted repaired-build acceptance pending. Original setup reuse requested by user is next work.
October9 — Original setup reuse (local, not deployed)
- Added Load setup for new run to Solo recent creations, Multi recent batches and the selected Library delivery. It restores original submitted text/settings and account-owned saved references into the matching form; it never starts generation, uploads duplicate files or replaces the account's manually saved setup.
- Exact owner-checked job read returns only normalized form fields. Original prompt/lyrics override worker rewrites; Multi retains the complete prompt file/order/reference bindings. Extension jobs map their saved action/source; split edits keep instructions but clear run/resume IDs and review/quote approvals. New cost review is required. Unsupported/missing older setups report a clear message without replacing the form. Uploaded-only entries explain that they have no generation setup.
- Ten backend reuse regressions pass;36 combined reuse/upload/title checks pass. Node API/thumbnail checks and TypeScript/build pass. Chrome synthetic UI restores Library audio to Solo with Suno Auto0 and original lyrics, restores full video batch/ref/stitch to Multi, and exercises both recent lists after reload.341CSS-pixel viewport has no horizontal overflow; request log has no quote/start/upload. Screenshot: ../setup-reuse-mobile-preview.png. Hosted and physical-iPhone acceptance pending. Blank Library fix is included in the prepared update; the owner explicitly approved pushing both repairs on October9. Deployment and hosted acceptance remain pending.
October 10 — Permanent Library media deletion (local)
- Separate Delete permanently confirmation beside Review actions; Remove from library still hides only. File title, project/setup warnings, irreversible checkbox, active-work blocking, Cancel and interrupted retry are explicit.
- Owner-only exact original/thumbnail/sidecar and all S3-version removal; canonical/legacy aliases included, neighboring objects untouched. Durable receipts/catalog tombstones stop stale registration, cached download/source reuse and preview recreation. No live customer deletion, credit/provider/price or IAM change.
- 100 focused Python checks, frontend API/typecheck/build and synthetic Chrome mobile checks pass. Cancel sent no delete; partial failure/retry and blocked active-work UI verified. Screenshot ../permanent-delete-mobile-preview.png. Hosted S3 permissions/version/retention and physical Safari acceptance pending; code is not pushed. Details: docs/PERMANENT_MEDIA_DELETION_2026-10-10.md.
October10 release authorization: user requested the production push. Local checks remain passed; hosted permanent deletion/S3 permissions, retention and physical Safari acceptance remain unverified. No real files or IAM permissions changed.
October 10 — Account Discord button in Settings (local)
- Join Plotthirst Discord is its own44px button directly in Settings, separate from Support and Customer Support. No public landing/main-menu invite. Existing Community placeholder uses the same path.
- Signed-in visibility plus server browser-session/account lookup gates invite disclosure; expired/deleted/signed-out and API-key-only requests denied. No paid membership requirement, generation, payment or automatic Discord join. Shared invites are still usable outside the site; strict Discord membership verification is not implemented.
- Eight account/auth tests, TypeScript typecheck/build and Chrome355CSS-pixel preview pass; no overflow and expired-session message verified. Local only, not pushed; real Discord/physical Safari acceptance pending. See docs/ACCOUNT_DISCORD_LINK_2026-10-10.md; screenshot ../settings-discord-mobile-preview.png.
October 10 — Quick Solo private output playback repair (local)
- Solo generated videos/audio now share Library Review's authorized SourceVideoPreview. Canonical saved file is retained for signing recovery when a direct delivery URL expires/fails. Native inline playback, visible retry and output-specific messages; thumbnails remain browsing previews.
- Node checks cover video/audio recovery, denied access, bounded failures and no external token forwarding. Chrome actual Solo fixture -> Recent -> Open outputs recovered deliberately broken delivery URLs, loaded3s MP4/MP3 at readyState4 and played both with native controls.341CSS-pixel layout has no horizontal overflow. No paid job or live customer media accessed.
- Local only, not pushed; Settings Discord changes remain pending in the same checkout. Hosted/iPhone acceptance open. See docs/SOLO_OUTPUT_PLAYBACK_2026-10-10.md and ../solo-video-playback-mobile-preview.png.
October 10 release authorization: owner requested pushing the prepared Solo playback recovery and account-only Settings Discord button together. Local tests/build passed; hosted playback, physical iPhone and Discord acceptance remain unverified.
October 10 — Saved reference menus at every creation input (local)
- Shared compact picker keeps5 default/10 selectable metadata and small previews, subject/filename/tag search, collapsed filters,44px controls, one open picker and close/confirmation after reuse. No re-upload or paid work.
- Existing Solo/Multi/Ultimate/segment pickers retained; added Ultimate covers, portraits and comic pages; legacy idea/Story Writer/DNA/canon/standalone inputs and timeline video/image/sound; dynamic reference/storyboard restore supports saved/local choices. Source URL and subject metadata stay intact; type/count/owner/Live guards and analysis/rights/cost approvals remain. Separate manuscript/ZIP/CSV/public-showcase inputs are not references.
- Node API/legacy-host checks and27 Python regressions pass; Chrome synthetic actual Solo, replacement, pagination, single-open menu, audio and modal reuse verified at355px without overflow, uploads or generation. TypeScript/build pass. Local only, not pushed; hosted historical completeness and physical Safari acceptance open. See docs/REFERENCE_MENUS_SITEWIDE_2026-10-10.md; screenshot ../saved-reference-menus-mobile-preview.png.
October10 reference-type follow-up (local, not pushed): image-only inputs offer saved images only; mismatched catalog rows are filtered and selection rejects incompatible media before metadata loading or form mutation. Legacy destinations independently enforce their allowed types. Solo closes/cancels open saved selections on mode/model changes; zero-capacity source/image inputs hide their chooser and disable upload. Existing generation/backend validations remain. Node guards pass; actual Solo Chrome fixture excludes injected audio from image search and removes the image picker when switching to Audio. No upload or paid work; build/typecheck verified locally. Longer-source duration checks remain separate from media-type filtering.
October10 locked chooser follow-up (local, not pushed): shared saved-reference chooser now uses a native modal dialog in the top layer. Background menus/form controls are inert and body scrolling is locked; selection is staged until explicit OK, while Cancel/Escape discard it. Header/footer stay outside the scrolling results so Cancel/OK stay visible on mobile. OK is disabled without a compatible candidate or while loading; during the brief confirm/save, cancellation is disabled to avoid claiming a committed selection was cancelled. Failed selection stays in the dialog with a visible error. Closing restores scroll and trigger focus; account/mode cleanup invalidates stale selections. Dynamic local image choice also requires OK; its saved-file path uses the same confirmed modal. Chrome actual Solo fixture verified a background Audio click left Image active, candidate staging did not add a reference, Cancel preserved the form, and OK added the canonical image with subject details.355px layout/footer fit without horizontal overflow. No real media/account writes or paid job. Screenshot ../locked-reference-chooser-mobile-preview.png. TypeScript/build and existing type/owner/count guards pass; hosted/physical Safari acceptance remains open.
October 10 release authorization: user requested pushing the site-wide saved-reference menus, compatible-media guards and confirmed modal chooser. Local tests, TypeScript build and mobile Chrome checks passed. Hosted historical-file completeness and physical Safari acceptance remain open; no live rollout check requested.
October 12 — Generator families across model menus (local)
- All existing model dropdowns now use Generator → Version/model: Solo (all eight modes and own-key), Multi video/music, Ultimate image/video/song/audio mapper, screenplay/project defaults and scoped segment overrides; 13 legacy setup/admin/batch/standalone controls and dynamic Story Writer video mapping. Groups include Wan, Seedance, MiniMax, Suno, GPT Image and other catalog families. A family is a presentation label, never a substituted route/provider.
- Browsing a family does not alter a saved model or quote. Choosing its enabled version calls the existing handler with the exact model value. Mode/model eligibility, disabled/coming-soon options, own-key filters, inherited defaults, read-only locks and dependent resolution/duration/reference controls remain. Programmatic restores synchronize both levels; redraw removes old legacy roots. Removed obsolete Ultimate text promising Wan 3.0 only in a future release.
- Local Node regression preserves73 catalog routes and covers grouping, disabled/outside-family rejection, unchanged quotes while browsing and restored values. Chrome actual Solo checked all8 modes; Wan→Seedance edit updates source limits and Auto duration, Multi music shows Suno versions, all13 legacy destinations preserve routes, lock/restore and dynamic redraw pass, inherited segment override returns to Project default.355CSS-pixel viewport has no overflow,44px controls; no API requests/generation/account writes in this synthetic fixture. Screenshot ../generator-groups-mobile-preview.png.
- TypeScript/build and required syntax/readiness checks are recorded below when completed. Local only, not pushed. Physical iPhone and hosted all-page acceptance remain open. See docs/GENERATOR_GROUPS_2026-10-12.md.
- Previous task remains partial: live Solo active job reopened at61% after closing its tab; signed out for a fresh-login test but password autofill was empty. Fresh login not completed. Screenplay segment progress ID recovery uses tab sessionStorage and needs a separate repair.
October12 generator-group validation completed: Node grouping regression, TypeScript typecheck, production build, node syntax check, server.py compile, static billing inventory and readiness render/check all pass. git diff --check passes. Existing six movie-cost review fingerprints remain stale and were not reset. Chrome355px verified no overflow, correct mode-dependent settings, locks/restores, one dynamic menu after redraw and Project default inheritance. No paid jobs or real-account edits. Local only, not pushed.
October12 release authorization: user requested pushing the verified generator-family menus across all existing model dropdowns. Local tests, build and mobile Chrome checks passed; hosted and physical Safari acceptance remain open. No live rollout check requested.
October 12 — Automatic generator defaults and video input modes (local)
- Choosing a generator family now applies its latest enabled stable model immediately; version/model is optional. Normal video defaults prefer Text-to-video among matching versions; edits and screenplay production keep their eligible reference routes. Existing saved models and inherited project/page defaults remain explicit.
- Quick Solo Auto uses no images → text, one → image-to-video, two or more → reference-to-video; attached video/audio/voices select reference mode. One-image appearance-reference override is available where a distinct supported route exists. Generic routes without separately wired one-image reference behavior are blocked rather than mislabeled. Own-key choices retain eligible provider filtering.
- Quick Multi checks each clip’s References line, not the shared upload pool. New Auto estimates persist each clip’s concrete model, input mode, Grok image/reference parameter and applicable aspect ratio. Workers use that approved plan; mode changes invalidate quote hashes. Old jobs without the flag retain their existing routes. Frame/keyframe-only routes are excluded from normal Multi and use Extend/Loop.
- Input mode/help explain starting-image animation versus appearance references, with an Open Extend/Loop shortcut. Existing Extend/Loop extracts endpoint frames from video clips; accepting two still-image inputs is not implemented in this update. No reference images are silently dropped and incompatible retained inputs stop submission.
- Verification: 73-route Node regression, 33 focused Python tests, TypeScript typecheck, Vite build and JS/Python syntax checks pass. Chrome actual Solo/Multi fixture verified latest Wan 3.0 Text default, saved-image selection switching to Image, one-image manual Reference override, two-image Auto Reference, mixed batch mode, Suno v6 and MiniMax Music3.0 defaults, WAN3.0 editor default, Extend/Loop shortcut and 355CSS-pixel layout without overflow (44px controls). Fixture mocks reference lookup; no live jobs, provider calls, customer edits or charges. Screenshot ../generator-defaults-mobile-preview.png.
- Static billing inventory is unchanged. Manual review: existing model-specific unit estimates feed the original parent reservation and existing child debits; no added planning calls or rates/allowances, no parent generation debit duplication, existing stitch/packaging paths retained. Own-key Solo uses the same exact selected route at quote/start. Existing final-settlement/pricing policy gaps remain outside this UI change; no claim of full financial acceptance.
- Pending: push/deployment, physical Safari, live paid generation and provider-side behavior verification, plus existing six stale movie-cost fingerprints (not refreshed). Existing production bundle size warning remains.
October12 automatic-default release: user authorized production push. Existing build, focused routing regressions and mobile-width Chrome evidence remain current. Hosted rollout and paid-provider acceptance are not verified by this push.
October 13 — Solo image references and Library removal repair (local)
- Quick Solo OpenAI image/edit and angle-pack requests retain the canonical saved reference until the image reader reads bytes; URL-based image/video providers still receive signed delivery links. Reference objects prefer durable mediaUrl over expiring previews, and same-origin absolute /media URLs resolve through saved storage. External hosts and traversal are rejected; unreadable references still stop before provider submission.
- Library removal and permanent deletion open a native modal immediately, outside the clipped page panel. Cancel, irreversible acknowledgement, active-job blocks, loading, check failures and deletion failures are visible in the popup. Empty/mismatched hide responses cannot report success. Confirmation requests are bounded to 30 seconds; no deletion happens from merely opening the popup.
- Older job deliveries can be deleted without manually indexing first, after exact job/owner/output validation. Library controls preserve deletion tombstones and historical upload-index state. Removal and deletion now require a successful durable account write; a rejected storage write cannot report success or alter the local account cache. Existing exact-file/version purge, receipts and idempotent recovery are retained.
- 58 focused Python checks, deletion-client Node regression, TypeScript check and production build pass. Synthetic Chrome phone-width checks: visible modal/no horizontal overflow, Cancel sends no removal, hide refreshes range, review failure remains visible, active work blocks deletion, failed deletion requires fresh acknowledgement and retry succeeds. No live media deletion, paid generation, credential/IAM/price or balance changes. Browser live tab was signed out; hosted storage permissions and physical Safari acceptance remain unverified.
- Billing inventory unchanged; manual cost review: no added paid provider calls or rates; image requests retain original quote/debit path, free account media-management work remains Plotthirst operating expense. Existing six movie-cost review fingerprints remain stale; not reset. Existing large-bundle warning remains. Repairs are local, not pushed.
October13 Library simplification: removed the hide-only Remove from Library button and its dialog branch. The sole removal action is Delete permanently, retaining Cancel, explicit irreversible acknowledgement, plan review, active-work blocking and durable deletion. Existing backend hide records/API are retained for compatibility; no existing files or visibility records were changed. Local only, not pushed.
October13 release authorization: user requested pushing the image-reference repair and Library simplification. The final interface offers only Delete permanently; confirmation/Cancel and failed/blocked handling remain. TypeScript check, deletion API regression, production build, syntax/diff checks and readiness render/check pass. Existing 58 Python checks and synthetic mobile confirmation evidence apply to the repairs. Hosted rollout, real-account deletion/storage permissions and physical Safari remain unverified; no live account media was deleted.
October 15 — Reference removal, ordering and saved multi-select (local)
- Quick Multi uploaded/imported/saved reference cards now offer Remove and 44px Up/Down controls; staged uploads can be reordered too. Removal affects this setup only, preserves the Library file and invalidates the previous estimate. Any clip still naming a removed reference remains explicit and fails the existing missing-name validation until repaired; no references are silently discarded.
- Moving Multi references also orders existing References lines to match the pool, retaining every clip's selected names, unknown/missing names and prompt bodies. Users are told to review numbered @Image tags. Solo image, video and audio references, Ultimate source references and segment references have ordering controls; existing comic-page and Extend/Loop order controls remain.
- Shared modal has checkboxes, Select all on this page, Clear chosen, chosen counts and an ordered basket; selections persist across metadata pages/searches. One OK resolves every selected file before a collection update. Solo/Multi/Ultimate/segment inputs append in one batch; legacy inputs preflight fresh counts/duplicates before using the bridge. Single-file/replacement inputs stay single. Media-type/count/owner/Testing guards, Cancel, inert background and metadata-only 5/10 pagination remain. No uploads or generation are started by choosing saved files.
- Three Node reference suites, 33 Python batch/upload-library checks, TypeScript and production build pass. Synthetic Chrome actual Multi/Solo and shared chooser checks cover cross-page three-file addition, basket and applied order, named clip lines/prompt preservation, removal surviving reload, Cancel, select-all/clear, single-file replacement, two audio files, no partial form addition on metadata failure, and 355px layout without horizontal overflow/hidden footer. No real account/media writes, uploads, deletion or paid generation. Screenshots: ../reference-multiselect-mobile-preview.png and ../reference-order-remove-mobile-preview.png.
- Billing inventory unchanged. This repair adds no paid backend work/rates/reservations/debits; existing final quotes use current references and Multi edits invalidate estimates. Shared saved-file metadata/thumbnail/setup requests remain existing Plotthirst operating work. Existing six movie-cost fingerprints remain stale and were not reset; existing large-bundle warning remains.
- Local only, not pushed. Hosted full-mode and physical iPhone acceptance remain open.
October15 release authorization: user requested the production push for reference removal/reordering and saved multi-select. Existing Node, Python, TypeScript/build, syntax and mobile Chrome evidence remains current. No live account files, jobs, prices or balances were changed during tests. Hosted rollout and physical iPhone acceptance remain unverified.
October 16 — Stitched playback and video timing (local, not pushed)
- Quick Multi final stitch was already saved separately in result.stitch; its TypeScript results screen only exposed the ZIP. Added Play preview / Close preview and Download final video beside that completed master, including batches reopened from Recent. No master/player is advertised for incomplete stitches. The player is mounted on demand, uses canonical account media, and reuses signed-link recovery for expired delivery URLs; opening results does not load the full master.
- Audit found legacy fixed ETA strings and Ultimate's hardcoded zero similar-timing count. Added durable per-request video observations and bounded, rolling per-model/options profiles at shared Atlas/xAI/OpenAI submission/status boundaries, xAI extension, Atlas upscaling and the separate native xAI batch path. Future model identifiers enter profiles automatically. Options include resolution, shape, duration, input counts/mode, source length, audio and applicable upscale options; a future new option field still needs explicit addition to the signature. No prompts, media URLs or keys are saved in timing records.
- Preparation/submission, accepted-to-terminal waiting and explicitly observed/reported rendering boundaries are distinct. Generic processing never proves rendering or an empty external queue. Cross-worker same-provider/key leases mark overlapping site requests, with separate low-contention/concurrent sample selection. Unknown submission/status outcomes conservatively retain leases; unknown external queue time stays unknown. Successful samples deduplicate by request, failures do not train successful ETA, and exact-key conditional profile saves prevent lost concurrent updates. Keep at most40 samples per signature with90-day sample eligibility, and bounded active leases. Call records carry a90-day ttl; physical DynamoDB expiry requires job-table TTL support and remains unverified. Existing job queued/started timestamps remain the local worker-queue evidence; no claim of external global queue visibility or of isolated live benchmarks.
- Solo, sequential Multi and split edits forward provider timing through the existing progress callbacks. Their estimated bars advance between polls, hold lower provider updates, cap below100 until confirmed completion, and preserve per-account/job browser high-water progress across reload. Backend request high-water values also persist. Ultimate and screenplay progress show current per-video timing snapshots; whole-workflow non-video ETA remains stage defaults and is labeled accordingly. Legacy clip progress uses the shared observed estimate and no longer substitutes65% for a real zero.
- Telemetry is operational work inside existing jobs, not a new billable generation or provider request. No price, approved quote, reservation, debit, balance or live setting changed. New exact-key timing reads/writes and tiny records are additional shared operating work; no second overhead fee was added. Existing overhead coverage gaps remain. Static billing inventory unchanged; existing six movie-cost fingerprints must remain stale rather than reset.
- Local validation: focused timing/replay/concurrency/queue/hold tests and existing batch, split-edit, compact progress and Extend/Loop checks; TypeScript, Node delivery/progress/private-playback checks, production bundle and syntax checks. The old Anaconda ffmpeg cannot run the existing real-media tests; rerun with the installed imageio_ffmpeg4.2.2 binary passes. Synthetic Chrome checks: saved batch reopened, zero players before Play, private-link renewal, decoded three-second final video, no horizontal overflow at341px observed mobile width,22% hold against1%, later82% hold against1%, and82% retained after reload. Screenshots: ../stitch-preview-mobile.png and ../estimated-progress-mobile.png. No paid generation, real account media writes/deletes or live deployment.
- Acceptance still open: deployed DynamoDB/IAM/storage playback, physical iPhone and real-provider queue/render signals, sample collection and ETA accuracy. An absence of tracked site overlap does not prove the provider is globally idle, nor account work submitted outside Plotthirst. Current profiles begin learning after deployment; missing historical submission boundaries are not invented.
October16 release authorization: user requested the production push for stitched-master preview/download and video timing observations/estimated progress. The focused53 Python tests, TypeScript, production build, Node delivery/progress/private-playback checks and synthetic Chrome evidence apply. No paid provider test or live account/media/financial changes were performed. Hosted rollout, job-table TTL, real-provider timing accuracy and physical iPhone acceptance remain unverified. Existing six cost-monitor review fingerprints remain stale; no baseline was reset. Live rollout is not checked as part of this push.
October 17 — Quick Multi single video and original final prompts (local)
- A fully completed one-video batch uses its existing video as the final delivery, with or without the stitch option. It skips encoding and the optional stitch estimate; partial multi-video batches and music are not promoted to a final movie. The ZIP reuses the downloaded clip locally instead of fetching it twice. Existing accepted reservations/debits are not rewritten.
- Final video now has See prompt and Copy prompt, resolved from the owned saved job rather than the current form. It shows the complete raw submitted batch when retained, or the saved original per-clip prompts in order for older work. Terminal compaction preserves raw batch text. Individual media buttons still return only their own original prompt, including when the single clip and final share one file. ZIP prompts.txt retains the full original batch and its line endings; provider rewrites are never substituted.
- Older terminal one-clip stitch failures can expose the proven completed video without resubmitting work or changing historical job status. Requires one original input, one matching completed video output and no failed clip. Completed counts fall back to the saved items when older jobs lack aggregate counts. Empty References lines no longer consume the following Prompt header.
- Verification: 46 focused Python regressions; Node final-delivery, single-video fallback and prompt API checks; TypeScript typecheck, production build, Python/JavaScript syntax, static billing inventory and diff checks passed. Synthetic Chrome actual Multi: saved two-prompt batch survives an unrelated current draft and fresh reload, final Copy works, individual prompt stays clip-only, single video decodes, and older failure displays one completed clip with its final delivery. At 341 CSS pixels there is no horizontal overflow. Screenshot: ../batch-final-prompts-mobile.png. No paid generation, real-account writes/deletes or live financial changes.
- Local only, not pushed. Hosted fresh-job/older-job acceptance and physical iPhone remain open. Existing bundle-size warning and six stale movie-cost fingerprints remain; no review baseline was reset.
October17 release authorization: user requested pushing the verified Quick Multi single-video delivery and whole-batch prompt fixes. The existing 46 Python checks, Node regressions, TypeScript build and mobile-width Chrome evidence remain current. No paid provider run, account/media mutation or financial adjustment was performed. Hosted rollout, fresh/older live-job acceptance and physical iPhone remain unverified; no live rollout check is included in this push. Existing six movie-cost fingerprints remain stale and were not reset.
October 17 — Quick Solo Suno duration typing (local)
- Repaired the target-seconds input: values below 10 were rendered as 0 on every keystroke, preventing ordinary digit-by-digit entry such as 120. The control now displays its actual editing value, uses a numeric mobile keyboard and keeps 0 as Auto. Entering Audio or loading an older setup normalizes legacy sub-10 defaults to Auto; valid saved targets remain intact. Cost check/Create explain incomplete or fractional targets instead of silently using Auto; accepted targets remain whole seconds from 10 to 360.
- Synthetic Chrome actual Solo checks: typed 1 then 20 and retained 120; v6 cost request contained 120, Wild Auto contained 0, Mini maximum contained 360; 9 was rejected before another estimate request. Save setup then fresh reload/Load saved restored 360. Mobile341px showed editable120 without horizontal overflow. Other Solo audio generators currently have no target-seconds input; no new duration capability was invented. Screenshot ../solo-audio-duration-mobile.png. TypeScript typecheck, production build and syntax/diff checks passed; existing large-bundle warning remains.
- Frontend repair only: no provider route/rate/limit, backend operation, quote/reservation/debit, account or payment setting changed. Existing audio targets are sent to the existing estimate/start paths. All browser requests used synthetic local data; no paid generation or live account changes. Local only, not pushed. Hosted and physical-iPhone acceptance remain open; existing six stale movie-cost fingerprints were not reset.
October17 audio-duration release authorization: user requested pushing the verified Quick Solo Suno input repair. Existing TypeScript/build, syntax/diff and synthetic Chrome typing, Auto/maximum, saved-setup and mobile evidence remains current. No paid generation or account/financial change was performed. Hosted rollout and physical iPhone remain unverified; no live rollout check is included. Existing six movie-cost fingerprints remain stale and were not reset.
October 17 — Solo Audio Instrumental checkbox layout (local)
- The Instrumental checkbox inherited the global 100%-width input rule, pushing its label to the edge/off-screen. Added a scoped fixed18px checkbox,10px gap, flexible wrapping text and44px row height, retaining the existing bordered card and native label toggle. The label stays inside its card without colliding with Variations. Stylesheet URL version is refreshed so a cached earlier CSS file cannot conceal the fix. Audio state/generation behavior is unchanged.
- Verified actual Solo synthetic Chrome UI at341px and685px observed widths: checkbox18px, text10px beside it and inside the card, no horizontal overflow. Clicking Instrumental text checked its checkbox. TypeScript typecheck, production build and syntax/diff checks pass; existing bundle-size warning remains. Screenshot ../solo-instrumental-mobile.png. No paid jobs or live account writes.
- Local only, not pushed. Hosted and physical-iPhone acceptance remain open. No backend operations/pricing/credit changes; existing six movie-cost review fingerprints remain stale and were not reset.
October17 Instrumental-layout release authorization: user requested pushing the verified Solo Audio checkbox/label repair and stylesheet cache refresh. Existing TypeScript/build, syntax/diff and mobile-width Chrome layout/toggle evidence remains current. No live account or generation changes were performed. Hosted rollout and physical iPhone remain unverified; no live rollout check is included. Existing six movie-cost fingerprints remain stale and were not reset.
October 18 — Isolated Admin Activity (local, not deployed)
- Supersedes the first shared-job-table draft. Admin Activity stays collapsed and loads only on request. Replaced the all-account dropdown/copy with explicit case-insensitive name-prefix search (minimum2 letters, maximum10 matches). Site-wide sample and named-account focus include names, modes/media types, statuses, times and batch request counts; prompts/titles/media/provider details are excluded. Role/mode filters and5/10-row pagination reuse loaded records. Counts explicitly describe a bounded sample, not whole-site/lifetime totals.
- Reporting now requires separate activity storage:16 hash-sharded queries limited to7 metadata rows each (at most4 concurrently, at most100 returned); focused account queryLimit100; one bounded name BatchGet. No source job/history/profile scan, no job-backend hook, no fallback to jobs storage. Root job status observation comes from DynamoDB Streams, with idempotent conditional writes and progress/child exclusion. Coarse support-session-excluded check-ins queue sanitized name/role metadata independently; the2,048-key hourly throttle may resend after eviction, with deterministic storage keys preventing duplicate check-ins; shutdown/full queue can omit check-ins, so this is not an audit/financial ledger.
- Added60-second/64-scope cache, two uncached reports per process, distributed12 uncached requests/admin/minute, guarded429/Retry-After and503, one-attempt1s SDK connect/read limits and15s browser abort. Scope/access changes clear rows/names; missing infrastructure shows reporting unavailable. Dedicated table/threeGSIs, encrypted queues, capped consumers, retries/DLQ and lag/failure alarms are prepared in infrastructure/admin-activity.yaml with ingestion disabled by default. No role broadening is automatic; scoped roles, stream/reader checks, local AWS validators, offline metadata seed and later live acceptance remain deployment gates (docs/ADMIN_ACTIVITY_ROLLOUT.md).
- Focused Python checks include privacy, real route role/view guards, auth failure isolation, bounded queries/cache/rate limits, partial batch retry/replay, isolated package/import invariants and synthetic100,000-account +100,000-activity indexed queries. Final42 focused Python checks passed. With100,000 synthetic accounts and100,000 activity records, the latest indexed search/global/focused sequence took0.0248s (first measured run0.006s); these are local evidence, not AWS/site capacity certification. Final TypeScript typecheck, production build, Python/JavaScript syntax and static billing inventory passed; inventory has no changed signatures. Project-specific infrastructure invariants pass, but cfn-lint/Guard are awaiting tool-install approval and are not represented as passed. Existing large bundle warning and six stale movie-cost fingerprints remain.
- Chrome mobile-width local fixture now works and verifies no initial/open fetch, username search, All-users and Alice focus, local paging/filtering, one Multi request for six clips, stale-result clearing,503 without falsezero,429 backoff and sign-out clearing. The15-second timeout cleared results and restored controls, then normal loading recovered. Narrow-screen geometry had no element/document overflow; screenshot ../admin-activity-isolated-mobile.png. Temporary viewport was reset. All data is synthetic; no paid jobs, real user history inspection, account/payment/balance/media mutation, live AWS operation, historical export/import or push. Wider legacy auth/Admin User Management still uses full account data; this feature does not certify the whole site for100,000 users/concurrent requests.
October 18 — Many completed jobs per account (local, not deployed)
- Corrected the capacity acceptance scope to account count multiplied by per-account job history, separately from live arrival rate and concurrency. Added a real indexed in-memory SQLite fixture with100,000 accounts and200,000 completed metadata rows, including100,001 rows owned by one account. Both global and focused reads remain capped at100; name search remains capped at10. Index plans are checked. Four indexed reads completed in0.0025s in the recorded run; in-memory synthetic timing is not an AWS/disk/production benchmark. Larger AWS read-budget contract fixtures cover1,1,000 and100,000 jobs per owner, asserting fixed query/item counts, no scan, no cursor walk and bounded profile hydration; these are mocked contracts, not materialized giant cloud datasets.
- Repaired extra observer work discovered during review: compare encoded old/new statuses before deserializing progress-only updates. For a changed status, decode only selected metadata fields; never walk saved results, prompts, references or batch item contents. Batch requested count uses list length; parent/child exclusion and partial retry/idempotency remain. Source stream images still have wire/service cost; no zero-cost or unlimited-throughput claim.
-48 focused Python checks passed. After strengthening mocked partition/unique-ID assertions, all6 targeted stream/read-budget checks passed again. No UI change or frontend rebuild is needed for this backend-only refinement. No paid generation, customer-account/media/balance change, live history inspection, cloud resource change or push. AWS role/setup, cfn-lint/Guard approval/validation, offline seed and live concurrency/backlog acceptance remain open. Wider legacy auth/Admin User Management and other job/library history routes require their own capacity checks; this activity change does not certify the whole site for100k users with deep histories. Existing six stale movie-cost fingerprints remain.
October 18 — Approved local infrastructure validators (not deployed)
- User approved installing cfn-lint1.57.2 and guardpycfn0.1.0. Installed exactly those two packages in ../.activity-tool-cache/validation-1.57.2 with existing system dependencies visible; no global/production dependency change. The original infrastructure/admin-activity.yaml passed cfn-lint with zero findings; no production template change was needed. No AWS API, account inspection or deployment was performed.
- Added repeatable offline tools/validate_activity_infrastructure.py and13 unchanged AWS registry rules pinned to7f7340c26ae5d5e8874651dbffeb12e0e9f505b6 with hashes/license, plus six project Guard rules. Baseline:4PASS/6SKIP; three strict rules FAIL on six known resources and remain explicitly reported with scoped assessments (SSE-SQS/service log encryption instead of customer KMS; source-mapping failure destination/redrive instead of Lambda async DLQ). Project encryption/retention/caps/exact failure bindings/default-off/no-suppression checks PASS. This is scoped policy acceptance, not universal AWS compliance. Guard input uses CFN-aware canonical JSON to preserve !Ref/!GetAtt semantics without changing the source. Engine success is distinguished from actual PASS; a required negative control and mutations reject unsafe edits.
-58 focused Python checks passed, including heavy histories, real routes, concurrency/notification regressions and ten native Guard validation tests. Local validation report: test-artifacts/activity-validation/latest.json. Detailed assessments, official sources and repeat command: docs/ADMIN_ACTIVITY_ROLLOUT.md. AWS role/policy completeness, existing stream/reader quota, initial offline metadata seed, account-aware change-set validation and live load/backlog/iPhone acceptance remain deployment gates. Nothing pushed/deployed; existing six stale movie-cost fingerprints remain, and no review baseline was reset. October18 activity readiness follow-up (not deployed): AWS CLI2.36.49 is installed but STS returned NoCredentials and Chrome AWS reached Sign In. Login confirmation is pending. Live stream, existing readers, role permissions and concurrency remain unverified; no production change or push. Local58-test/validator evidence remains current; authentication and exact-resource bootstrap checks precede deployment.
October18 login authorization received: remote CLI login started and opened in Chrome; no saved sign-in was filled. Owner sign-in is needed before completing credentials and read-only checks. No production resources, IAM permissions, accounts or jobs changed; no deployment/push.
October18 IAM readiness findings (not deployed): CLI now verified as plotthirst-codex, not root. Live web720/worker676 are running; both use plotthirst-jobs and the shared ecsTaskExecutionRole, with no activity env configured. Jobs table has no stream enabled; Lambda configuration shows400 total/397 unreserved concurrency and one existing operations SQS mapping. IAM role-inspection reads denied; prepared exact-role, four-action read-only proposal in .github/iam/activity-readiness-read.json, not attached. No durable CloudTrail trail verified by DescribeTrails; other audit systems not audited. Live policies, source stream activation, scoped-role bootstrap, audit logging and later functional/load acceptance remain gates. No live records, IAM/resource/settings changes, deployment or push; local58 tests remain the implementation evidence. Details: docs/ADMIN_ACTIVITY_ROLLOUT.md.
October18 root-approved follow-up: scoped PlotthirstActivityReadinessRead user policy is now applied and verified; Chrome remains root as requested. Existing runtime-role policies reviewed, still no new activity-resource access. Local template now separates preparation, mapping creation and ingestion; parameter/Guard rules block missing stream, missing mappings/notifications and broken toggle coupling.62 Python checks pass; cfn-lint zero findings and scoped Guard pass with existing explicit assessments. No reporting resources, source stream, runtime permissions, customer records or deployment changed. IAM runtime generator remains incomplete; owner response to manual-review workflow exception is pending. Live setup, complete policies, audit logging and hosted/load/iPhone acceptance remain open. See docs/ADMIN_ACTIVITY_ROLLOUT.md.
October18 authorized manual Activity IAM review (not deployed): complete scoped draft now owns two dedicated Lambda roles and prepares unattached web/import policies without broadening the shared ECS role. All six proposed documents passed AWS Access Analyzer (zero findings);33 root CloudShell custom simulations returned30 expected decisions and three unresolved required-positive denials. Unrestricted logging diagnostic controls also fail for the specific ARN, so no cause or simulator exemption is assumed. Scopes/expected results were not weakened. Raw reports/diagnostics saved locally.71 focused Python checks passed in17.04s; cfn-lint zero findings and seven project Guard rules pass with unchanged explicit vendor-rule assessments. Resolve simulations before any runtime grants/stack creation, then require isolated invocation, source-stream/audit/seed and hosted/load/iPhone acceptance. Only earlier approved four-action user inspection policy is live; no reporting resources, source stream, customer data or deployment/push changed. See docs/ADMIN_ACTIVITY_IAM_REVIEW.md and docs/ADMIN_ACTIVITY_ROLLOUT.md. This supersedes the earlier pending manual-review request.
October19 UTC Activity follow-up (not deployed): prepared an isolated runtime permission probe because simulations still reject source-function matching and log-stream resources. Original scopes/failed expectations unchanged.84 focused Python tests pass, including13 probe checks; cfn-lint zero findings and scoped probe Guard pass with eight unsafe mutations rejected. AWS template/pre-deploy checks passed for an unexecuted preview with nine new test resources and no modifications/removals. No runtime grants or test resources provisioned; no customer records/provider calls or website push. A specific approval is required to execute the private synthetic probe and clean it up; proposed Plotthirst-funded test budget up to$1. Production setup/ingestion and hosted acceptance remain open. Owner requires final testing through actual PC Chrome signed into Plotthirst as admin; physical iPhone acceptance stays separate. See docs/ADMIN_ACTIVITY_IAM_REVIEW.md.
October19 UTC approved Activity runtime test completed (production not deployed): all five real synthetic Lambda invocations passed using the reviewed restricted policies. Exact-key reads verified queued/completed transitions, unchanged replays, expected profile/check-in metadata and absence of the synthetic prompt text. Both test functions delivered their expected CloudWatch markers. All nine disposable test resources reached DELETE_COMPLETE with no failed events; raw evidence was downloaded and independently checked. Original simulator failures remain preserved, with their cause unresolved. No customer data, production stream/runtime permissions, prices/balances or website push changed. Existing84-test local evidence remains applicable; the current consumer package matches reviewed source. Next gates are wider ingestion/failure/load checks, production setup/audit/metadata seed, then owner-required actual PC Chrome admin viewer and physical iPhone acceptance. See docs/ADMIN_ACTIVITY_IAM_REVIEW.md and docs/ADMIN_ACTIVITY_ROLLOUT.md.
October19 UTC full Activity ingestion test prepared (production not deployed):106 combined local tests pass, including22 new fixture checks and14 unsafe security mutations. Prepared a separate synthetic source/stream, check-in and failure queues, real consumer mappings, private reporting/permission checker and inert-recipient alarms with original retry settings. AWS schema/pre-deployment checks pass for an unexecuted18-add preview, no existing-resource modifications; both mappings default disabled. No new runtime grants/resources or customer/provider work has run. Next approval covers only this bounded private test and disposable cleanup, with proposed Plotthirst-funded allowance up to$1. Production activation, historical seed, durable audit logging and actual PC Chrome/admin plus iPhone acceptance remain open. Original simulator failures are preserved. See docs/ADMIN_ACTIVITY_INGESTION_TEST.md.
October19 UTC approved Activity ingestion acceptance completed (production not deployed): all real isolated AWS healthy transitions, sanitized check-in, prefix search, global/focused reports and caching passed. Eight prohibited operations were denied; the real distributed quota allowed12 and rejected the13th. Both malformed-message recovery paths passed with original retry settings and healthy metadata unchanged. All three log markers arrived; the failure alarm entered ALARM, with notification actions intentionally absent.26 synthetic writes,6 direct reader calls,15 known-key reads and17 failure receives stayed within approval limits. Both mappings were independently observed disabled before20minutes. All18 explicitly disposable resources were deleted with zero failed creation/deletion events; raw evidence was downloaded and independently checked. This is functional acceptance, not whole-site100k-user or production throughput certification. The up-to-$1 test allowance is not measured AWS spend; no customer debit/provider/production change or push occurred. Existing106 local checks remain current. Remaining gates: production audit/artifact/source/exact-policy/metadata-seed/API setup review, actual PC Chrome admin viewer plus ordinary/test-user denial and physical iPhone acceptance. Legacy full-account auth/User Management scaling and the original failed simulator result remain recorded. See docs/ADMIN_ACTIVITY_INGESTION_TEST.md.
October19 Activity production rollout underway (website not deployed): owner approved the complete scoped rollout and signed into the live admin interface. Private immutable code storage and operations notifications are provisioned; notification subscription confirmation is verified. All14 initial tracker resources passed exact physical configuration, encryption, policy, code and alarm verification. The approved shared runtime report/check-in policy is attached; only the jobs table has its new stream enabled. Both consumer connections are provisioned and verified Enabled after a reviewed two-mapping update, with16tracker resources complete, no historical scan/import or paid generation. One extra preview entry was verified as propagation of the unchanged function role identity, with no code/permission scope expansion beyond the reviewed source stream grant.135 combined focused checks pass, including deployment configuration and worker/role preservation. CI now reads bounded non-secret tracker outputs directly; existing SSH deployment access works. Activation is complete after confirmed alerts; hosted build/admin viewer, regular/test-user denial and physical iPhone acceptance remain unfinished. Persistent AWS resources are operating commitments, separate from the earlier disposable-test allowance. No customer financial or provider-generation settings changed. See docs/ADMIN_ACTIVITY_PRODUCTION_PLAN.md.
October19 Activity first hosted acceptance: build ec7c769 is live, and website and worker deployments are stable on the exact commit image with intended configuration/roles preserved. PC Chrome admin report loading, real check-in/name, lowercase prefix search, one-letter validation, account/period clearing, focused reports and local role/mode/5-or10 controls passed. Opening the panel and changing local filters sent no Activity requests; explicit loads/searches returned HTTP200. 390pixel emulation had no horizontal overflow; emulation was reset. User View cleared/hid records; existing regular/test QA identities were checked in admin's read-only troubleshooting sessions and could not open admin reports. These were not independent credential logins. Both support sessions ended; original owner admin/selection restored, no account/credit/provider changes or paid generation. Direct API browser navigation was client-blocked, so hosted403 auth evidence is not claimed; local actual-route guard and isolated AWS denials remain separate. Physical iPhone, direct credential-login and authorized real-generation-event acceptance remain follow-up gates, without a whole-site100k capacity claim. One misleading access notice after returning to admin is repaired in this follow-up update; final hosted notice verification is pending deployment.
October19 Activity rollout completed on build00badd2: both website and worker are stable on the exact commit image, intended configuration and existing roles verified. Live Chrome returning from User View now restores normal guidance, keeps prior records cleared and issues no Activity request until explicitly loaded; that load returned HTTP200. Owner admin is restored and the report is left open. Final AWS records were downloaded and independently checked; ingestion is enabled, confirmed alert subscription retained and all three alarms healthy. No paid generation or account settings changed. Earlier support-session versus direct-login, physical iPhone, real generation-event and capacity limits remain explicit; this completes the approved deployment and PC Chrome admin UI work.
October19 requested historical Activity backfill completed on existing live build00badd2. The separate operator utility queried the existing account/date index for the11 current accounts within90-day retention, evaluating9,205 records in389 small pages and importing235 unique generation snapshots. Stored totals independently matched160 completed,67 failed and8 canceled requests; internal/child records were excluded, with zero malformed records. Source read consumption was19,737.5 units; actual AWS dollar charges were not measured. This is a Plotthirst-funded administrative exception with no provider generation or customer debit. Normal browsing still queries isolated reporting storage, never source history. Runtime IAM/configuration/retention and site build are unchanged. PC Chrome verified Guntolga's3 requests (2 completed/1 failed), site-wide Last30Days sample100 rows and real Next/Previous plus5/10-row display; counts remain sampled, not lifetime totals. Earlier jobs outside90 days and deleted/absent accounts were not queried. Operator utility and43 focused passing checks are local maintenance source; no website deployment was required. See docs/ADMIN_ACTIVITY_ROLLOUT.md.
October19 Activity failure detail repair prepared locally: failed entries now show an authored cause summary and expandable admin-only configured/reported provider/model, stage, HTTP status and whitelisted duration/resolution/shape/audio options. Attribution is explicitly recorded, inferred (labeled likely) or unknown. No raw error text, prompts, credentials, signed URLs or filenames are returned. Existing indexes already project the status attribute; a backward-compatible string-or-map reader carries the bounded diagnostics without replacing indexes or adding report queries/IAM grants. New consumers must follow the website reader deployment. A separate operator tool enriches the67 retained older failures through exact job-key reads only; not on browsing and not a second source-history scan. Metadata update/publication/enrichment remain pending until actual deployment/Chrome acceptance.96 focused backend/compatibility/operator/infrastructure/deployment checks pass; frontend typecheck and523-module production build pass, existing bundle-size warning only. This is Plotthirst-funded admin reporting/maintenance, with no generation/customer charge. See docs/ADMIN_ACTIVITY_ROLLOUT.md.
October19 Activity failure diagnostics deployed and accepted on build9cea796: website724 and worker680 are stable COMPLETED on the exact commit image with original roles/configuration. Actual PC Chrome admin report shows failure reasons, configured/reported provider and model, saved options, and recorded/likely/unknown failure source. Enrichment independently verified67 retained failed root jobs:28 specific reason matches,39 unclassified by this matcher;12 likely Plotthirst,3 likely provider,52 unknown. This does not prove unknown original errors have no useful details, and does not fix underlying generation failures. Both Lambda consumers match reviewed immutable numeric-safe package;2 mappings Enabled and3 alarms OK/actions enabled. Runtime IAM/indexes/query budgets/caching are unchanged.97 focused tests, frontend typecheck/build pass; emulated390px diagnostics have no overflow, physical iPhone untested. Exact-key one-time reads consumed268.0 source and19.0 reporting units; actual AWS dollar cost unmeasured, no customer debit or paid generation. Earlier auth/capacity gates remain explicit. Final screenshot activity-failure-details-live.png; details in docs/ADMIN_ACTIVITY_ROLLOUT.md. Post-release acceptance notes remain local for the next planned push.
October19 Activity follow-up prepared: actual Chrome verified Abimes's settled October17 purchase +5,250 credits (5,000 to10,250) but focused Activity empty. Tracking began October19; historical import covered generation only. Added nonblocking successful-authentication and settled-purchase metadata hooks through the existing queue, deterministic hashed event IDs, replay dedupe, and admin-only purchase/sign-in display. New per-job allowlisted settings and explicit submitted/started/finished timestamps use existing projected status map for every root status; elapsed queue/processing/total times derive only from recorded fields, never updatedAt. Mode-irrelevant default settings omitted. Same-status late finish timestamps now ingest, progress-only writes still skip. No source reads on report browsing, runtime IAM/index/cap/cache unchanged. One-time exact-key enrich utility supports existing indexed root jobs of all statuses. Explicit-account recovery utility reads at most two bounded existing account/session objects, never saves raw profiles/ledger/tokens, imports only settled ledger purchases or retained actual session createdAt within90days; no manufactured sign-ins. No balance, financial fulfillment, quote, provider or ETA algorithm change. Existing separate provider timing records rendering only when explicit evidence exists and distinguishes overlap; Activity total job duration must not feed pure rendering samples. Local tests/build pass; deployment and historical recovery still pending.
October19 Activity follow-up verified live on50d11bf: Abimes's original October17 retained sign-in and settled +5,250credit/$50 purchase now display in Admin/Activity/Last30Days/AllModes. Earlier reporting began October19 and historical import only included generation; successful-login and settled-purchase hooks now enqueue safe metadata without blocking authentication/fulfillment or changing balances. Completed jobs also show provider/model, applicable saved settings, submitted/start/finish and queue/processing/total elapsed times.235 already-indexed root jobs enriched and independently verified with all three actual timestamps;0missing/changed.868.0 source read units,23.0 reporting enumeration and117.5 verification units; account recovery preview/apply read four S3 objects total. No source scan/search-time hydration, new runtime permission/index/resource, paid generation, price/balance/quote or ETA algorithm change. Job total duration remains separate from provider rendering/queue cohorts.199 focused tests, frontend typecheck/build pass. Actual Chrome completed-video example verified301seconds total;390px emulation gave344px card/no overflow and was cleared. Physical iPhone and a new live login/payment not induced. Screenshots activity-abimes-live.png and activity-job-timing-mobile.png inspected. Two consumer codes verified;3 alarms OK/2 mappings Enabled. Web725 stable on exact commit, worker681 new image stabilizing. Broader capacity/auth acceptance limits and six old cost-monitor stale fingerprints remain explicit. Final acceptance notes local for the next planned source push.
October19 final50d11bf release: web725 and worker681 both stable COMPLETED on exact image/original roles. Live Chrome acceptance and235-job/account-event recovery above complete. No observer/emulation/dev server remains. Post-release notes local for next planned source push; no further deployment needed for documentation.
October19 original ETA comparison prepared: owner approved freezing the estimate and asked whether this helps the existing automatic estimator. Confirmed VideoTimingTracker already learns successful accepted-to-terminal video-call durations by options signature (new model/version/options automatic),40 samples/90days, matching-overlap cohort when3 examples exist, mixed fallback explicitly flagged. Retains queue/render distinction, failures excluded, progress high-water holding unchanged. Added immutable original estimate/range/basis/sample count/cohort at acceptance, completion-observed time and error against the original. Current forecasts can keep learning while the original stays fixed. Success samples now retain original expected duration/error for future evaluation; estimator input remains actual successful provider-call total, never whole-job elapsed. Older call records never receive invented originals. New pure plotthirst_eta_comparison module validates/strips scalar metadata and derives finishes/errors, bounds10 recent comparisons per durable job. Existing backend result/progress writes capture original and finish; no extra request/job lookup is added. Quick Solo/Multi emit accepted/final timing even if the first poll is terminal; optional reporting cannot lose receipt or duplicate submission. Existing pending timing paths are captured where present; whole-workflow/image/audio forecasts are not invented. Activity carries comparisons inside existing status projection, ingesting only changes to original/final comparison metadata, not every progress tick. Admin UI shows initial duration/range/finish, actual, difference, basis, scope and unknown old estimates. No provider identity is newly exposed through ordinary timing responses. Three-module consumer package now includes pure comparison helper; no runtime IAM/index/resources/prices/balances change.213 focused tests pass21.22s; typecheck and static billing inventory unchanged pass. Local Chrome simulated240second estimate/150second actual/-90second difference and390px mobile336px card/no overflow verified. One CUA call unexpectedly took1692seconds but returned success; do not imply that delay was app ETA or a paid generation. Deployment, final consumer verification and live old-record unavailable-state acceptance pending.
October19 ETA source pushed: b588d97afff12b1398212b0e7339a1aa7155c49c is on production/main. Website/worker CI rollout has not been observed; Activity consumer update is not uploaded or applied. Chrome explicitly blocks automation because another extension UI is open; user asked to dismiss that popup and reply ready. No repeated browser attempts, new auth mechanism or IAM change. Local Vite session51048 stopped. The own local preview tab may still have390x844 CDP emulation, which must be cleared after user dismisses the popup; do not claim it reset.213 focused tests passed, final27 ETA tests passed after terminal guard, typecheck/build/syntax/billing inventory/readiness checks passed. Movie check preserves exactly the same six prior stale fingerprints. Latest own transport test-artifacts/activity-eta.zip is17252bytes SHA256cc6b943f23c4c94d11da47604d002183af0e64a612a1b8881cf1f8cb24f76e95 (consumer.zip + release_eta.py); consumer SHA256470163ed0bc0e61cb497d016449e0c26e4815c7c5c0ae7d44a807eea22340a41. Consumer exactly3 modules matches source bytes. Watch deadline1800s. After browser control resumes: guarded plan/inspect exact2LambdaCode changes/execute/verify existing stack, observe exact website+worker commit with original roles, check live admin old-job ETA-unavailable state and health; no paid generation or old-job ETA backfill. Last known live50d11bf web725/worker681. No release-complete claim yet. Post-push continuity notes stay local for next planned push.
October19 ETA release completed: b588d97afff12b1398212b0e7339a1aa7155c49c is live. Exact website task726 and worker682 target images are stable (sole primary COMPLETED, running equals desired, pending0); original ecsTaskExecutionRole task/execution roles match the saved pre-update baseline. Guarded CloudFormation change set activity-coverage-b588d97/153edf3c-3c48-4d11-97f0-2b03f82e1500 was inspected AVAILABLE/CREATE_COMPLETE: exactly IdentityFunction and StreamFunction Modify/Code, ReplacementFalse. Executed once. Stack UPDATE_COMPLETE; both deployed Lambda codes match consumer SHA256470163ed0bc0e61cb497d016449e0c26e4815c7c5c0ae7d44a807eea22340a41, Active/Successful/Python3.12/30s/256MB. All3 existing Activity alarms OK/actions enabled; both mappings Enabled. No IAM/index/resource/quote/price/balance change, historical ETA backfill or paid generation. Root operator evidence persists under /home/cloudshell-user/activity-eta-20261019-b588d97/{plan,change-reviewed,consumer-verified,release-verified,health-verified}.json. The bounded observer finished normally (shell Done); no observer remains running. Actual AWS dollar cost was not measured. Live PC Chrome buildb588d97/adminMichelangelo accepted focused Guntolga Last30Days/AllModes:3requests/2complete1failed. Completed video disclosure shows recorded provider/model/options and actual submitted/start/finish/elapsed, plus Original ETA: Not recorded. Older estimates are not reconstructed. This is actual older-job acceptance, not an invented new comparison. The new-comparison numeric example remains a simulated local test; no current-turn paid-job authorization was assumed. Screenshot ../activity-eta-live-desktop.jpg saved/inspected before consumer execution; post-consumer ../activity-eta-live-mobile.jpg saved/inspected at390x844, card344px/content390px/no overflow. Temporary emulation on the final task tab cleared; normal943px/content943px/no overflow confirmed, buildb588d97 present. Earlier Chrome11 disconnected during a display check; documented discovery found Chrome3. Legacy user admin tab320870166 then reported Debugger unattached. Recovered using a fresh task tab, not a separate browser or hidden control mechanism. Do not claim to have successfully controlled that legacy tab afterward. Current Chrome3 final admin tab320870203 is marked Deliverable with the report open; own CloudShell320870201 uses existing terminal355682d1-cab2-42ef-8b16-f81b1df450c2; unrelated terminal94d8f056-a64c-48d9-ac4f-a1ad731f98be and user's root security/settings tabs untouched. No local dev server remains. User root sign-in completed normally; no new credential or permission was created. Source functional changes already pushed; these post-release notes/readiness HTML stay local for the next planned push, with no second rollout just for notes.
October 20 — Permanent Library deletion live verification FAILED before confirmation
- Actual PC Chrome3, ownerMichelangelo/admin, live buildb588d97. Website menu -> Test early preview pages -> Library worked. Uploaded only a new synthetic512x288 PNG5651bytes through Quick Solo Reference images; no generation/cost confirmation/Create was used. Original empty Solo form restored by Remove reference1 (form removal, not stored deletion). Existing user media untouched. Library initially3301, then3302 with the disposable upload after Refresh range; original filename search library-delete-test-20261020 finds exactly1. Searching the renamed stored timestamp does not match because Library search currently omits filename/url fields; not fixed in this task.
- Library Review -> Delete permanently opens the expected modal, but actual POST /api/v1/creation-library/delete-plan returned HTTP503. Visible alert: Deletion checks are temporarily unavailable. No files were removed. Please try again. Confirm never became available. Cancel closed the modal and returned to the same item. Complete bounded Network event capture confirms0 POSTs to /api/v1/creation-library/delete. Original image still loads512x288 in Review. Saved/visually inspected ../library-delete-check-failed.jpg. New test thumbnail remains Preparing; do not claim a ready thumbnail was tested/deleted.
- Disposable catalog asset library:upload-5d7d8bf8f9dd1b3cdc385667, title library-delete-test-20261020.png, canonical /media/images/users/u93596365580110_michelangelo/library/private/ultimate-omega-reference_1792495925452.png. Actual signed image host observed plotthirst-user-media-prod.s3.amazonaws.com; query credentials were not printed/saved. Primary original key users/u93596365580110_michelangelo/library/private/images/ultimate-omega-reference_1792495925452.png. User specifically requires independent active-S3 absence after WEBSITE deletion, with backup buckets outside scope. No direct S3 deletion is authorized/attempted as a substitute.
- AWS session expired. Own CloudShell sign-in tab320870208 is markedHandoff; user asked asynchronously to sign in as root, no reply/sign-in observed yet (email field still empty at last check). No live AWS log/S3 check performed, no root-cause claim, no deletion success claim. Library tab320870203 markedHandoff with only the disposable item selected, Network capture disabled. No emulator/dev server/background command added. No application code/IAM/prices/balances changed or source push/deployment in this task.
- Local read-only S3 checker prepared (not uploaded/run): test-artifacts/library-delete-s3-check-20261020.zip2091bytes SHA256fbf37c4d380cd5430331e085fbdb4e9bf55200c30a0a4561fcafa1fe3c264deb. Contains test-object-keys.json and verify_library_s3.py; validates account/bucket/exact fixture, HEAD404 only (403 fails), checks bounded versions/delete markers for8 exact original/thumbnail/sidecar/legacy-alias keys, records before5651byte original and requires that evidence before any after-absence conclusion. No backup access or S3 mutations. Syntax checked. Exact keys derived with the source's pure mapping helpers/thumbnail function, not guessed. Do not call after phase until a real website deletion succeeds.
- Next: after root sign-in inspect ONLY recent web logs for media deletion review failed (around2026-10-20T11:35Z), confirm actual exception class, fix/retest if requested/within authorized scope, then prepare a valid deletion plan. Browser control requires action-time confirmation for an irreversible deletion; no such final confirmation has been requested/granted yet because review failed. Use only this disposable test upload. Then independent S3 before/after, Library fresh reload/search/recovery checks. Do not erase original user media or backups.
- Unconfirmed code-analysis hypothesis: media_deletion.plan calls list_jobs(statuses=ACTIVE,limit=21); AwsDurableJobBackend caps user-index pagination and raises PlotthirstJobHistoryPageLimitError when older history remains after filtering. A large owner history may trigger that503. Mock/local tests use a small LocalDurableJobBackend; the hypothesis has not been confirmed against live logs. Do not skip active-reference safety or silently allow deletion after an incomplete search. Other possible exceptions/draft reads remain unruled out.
October 20 — Large-history deletion check repair prepared
- AWS root sign-in restored. Read-only exact-key S3 baseline at 11:58:59Z confirms the disposable original exists (5,651 bytes, one version); all seven derived/legacy candidates are absent. Backup buckets were not queried. No S3 mutation or website deletion has occurred.
- Reproduced the deployed safety lookup against the actual owner's index: PlotthirstJobHistoryPageLimitError after 12 pages / 504 evaluated records / 617 read units, zero active results but a continuation still present. The local container log is not forwarded to CloudWatch, and ECS Exec is disabled; neither container access nor permissions were changed. This confirms a failing lookup in the real path, not access to the unavailable local exception log.
- Repair: continue bounded indexed checks from a server-owned internal checkpoint. Retain an account-level active-ID snapshot, hydrate known jobs and query subsequent updates before deletion; unknown/missing jobs, more than 20 active jobs, incomplete or stalled queries remain fail-closed. Client-supplied cursors cannot skip checks. A file is never deleted by reviewing or continuing checks. Cancel aborts the browser continuation. Existing exact-version purge, ownership, acknowledgement, receipts and catalog durability remain intact.
- Local validation: 25 Python deletion tests, client regression including automatic continuation/cancel/mismatched-response guards, TypeScript check and production build pass. Added actual AWS list_jobs pagination regression with an active reference beyond 1,008 evaluated records; submission after review is rechecked and blocks deletion. Existing bundle-size warning remains.
- Manual cost review: indexed metadata reads and one small internal checkpoint per account; Plotthirst-funded free media maintenance. No queue/provider calls, generation, customer charge/quote, balance, discount, IAM or storage configuration changes. Billing inventory check is unchanged. Readiness and existing movie-cost stale reviews remain explicitly separate from hosted acceptance.
- Pending: deploy this repair, repeat the disposable item's WEBSITE deletion review, obtain final action-time confirmation required by browser control, then verify exact active-S3 keys and versions are absent. No deletion acceptance or successful S3 removal is claimed yet.
October20 live repair follow-up: committed/pushed 48b73008a7bb007a086df19c8c1a7186bbc90f3e. PC Chrome Library displays Build48b7300. The disposable file's review now completes: 21 bounded HTTP200 review responses, okTrue/blockedFalse/no warnings. Cancel returns to the same file with no delete call; reopening completes with a single HTTP200 review. Saved and visually inspected ../library-delete-ready-20261020.jpg. No actual deletion has occurred. Final irreversible action-time confirmation requested for this exact disposable file only; not yet answered. Normal S3 after-absence remains unverified. Current website task727 target image is exact48b7300, target healthy, running1/desired1/pending0; old726 is draining with0running. Final service/worker stabilization has not yet been claimed. No IAM, alarm, storage configuration, provider call, price or balance change. Source checks passed; no observer/dev process is left running. Chrome3 tab320870215 is markedHandoff at the valid final deletion modal (checkbox still unchecked); tab320870214 markedHandoff at root CloudShell using own terminal355682d1-cab2-42ef-8b16-f81b1df450c2. Network capture disabled; no emulation. S3 baseline checker already extracted to /home/cloudshell-user/library-delete-20261020 with s3_before.json saved; do not rerun before or run after until WEBSITE deletion succeeds. After explicit confirmation: enable bounded Network observation, acknowledge and confirm only library-delete-test-20261020.png; then run python /home/cloudshell-user/library-delete-20261020/verify_library_s3.py after and check fresh Library. Do not delete through AWS or touch existing user media/backups. Diagnostic output and before-observed proof copied as aggregate/exact-fixture JSON into test-artifacts/library-delete-20261020; own CloudShell diagnosis directory library-delete-diagnosis-20261020 retains diagnosis.json. Post-release evidence/readiness notes stay local for the next code release, without a second deployment solely for notes.
October20 confirmed deletion attempt: user explicitly reconfirmed the disposable file. Actual PC Chrome website Confirm permanent deletion sent one POST /api/v1/creation-library/delete, returned503 before storage removal. History review passed; visible error says no files removed/storage permissions need support. Independent root HEAD confirms original5,651bytes still present. IAM simulation for deployed ecsTaskExecutionRole allows GetObject/DeleteObject but implicitly denies ListBucketVersions/DeleteObjectVersion. Normal bucket versioning is Enabled. Prepared exact two-action addition to existing PlotthirstS3MediaAccess, same normal bucket/object resources. No IAM change applied. Autopilot-derived focused operation analysis, AWS validation0findings, normal-bucket positive/other-bucket negative simulations passed. Reviewed SHA256948647ea0b85624d61c974c9b393e73b5d8cc71e302aaf4deb8fd219fb02a4f4. Explicit permission-change approval requested separately; file deletion already approved and remains so. Details and guarded apply command in docs/LIBRARY_DELETION_VERSION_PERMISSIONS_2026-10-20.md. Do not expand scope or bypass the saved-policy/hash guards. No paid generation, balance change, S3 mutation by diagnostics, backup access, retention bypass or source rollout in this follow-up. Save screenshots ../library-delete-storage-check-failed-20261020.jpg and ../library-delete-permission-review-20261020.jpg. Live deletion/S3 acceptance remains OPEN.
October 20 — Live Library deletion and active-S3 absence VERIFIED
- User explicitly approved the scoped AWS role repair and the already-authorized disposable test-file deletion. Guarded apply rechecked the saved existing policy and applied only ListBucketVersions/DeleteObjectVersion to PlotthirstS3MediaAccess on ecsTaskExecutionRole for the same normal bucket/object resources. Read-back matches reviewed SHA256948647ea0b85624d61c974c9b393e73b5d8cc71e302aaf4deb8fd219fb02a4f4. No trust, role membership, other bucket, retention bypass, storage configuration, balance or generation-price change.
- Actual PC Chrome3, Build48b7300, Michelangelo admin. Reopened the same disposable file's deletion review, completed checks, acknowledged and used Confirm permanent deletion. Exactly one retry POST /api/v1/creation-library/delete returned200 with okTrue/deletedTrue and the exact test asset ID/URL. Complete bounded Network capture, no truncation/remaining events. Dialog closed; success message File and thumbnail permanently deleted.; filtered results0. No CLI/S3 direct deletion was used as a substitute for the website action.
- Independent root S3 checker after website success,2026-10-20T16:08:00.847215Z: all8 exact original/thumbnail/sidecar/legacy-alias keys return404, zero object versions and zero delete markers in plotthirst-user-media-prod. Original baseline was5651bytes/one version. Raw before/after evidence persists at /home/cloudshell-user/library-delete-20261020/{s3_before,s3_after}.json. Checker made0S3 mutations and did not access backup buckets. Normal bucket versioning remained enabled.
- Full website reload restored Library with3301items (fixture had raised it to3302); fresh exact original-filename search returns0. Screenshots saved/visually inspected ../library-delete-success-20261020.jpg, ../library-delete-fresh-search-20261020.jpg and ../library-delete-s3-verified-20261020.jpg. Aggregate copied evidence in test-artifacts/library-delete-20261020/website-delete-verified.json and s3-after-observed.json; guarded IAM saved result under /home/cloudshell-user/library-delete-iam-review-20261020/iam-repair-applied.json.
- Acceptance is scoped to this disposable image upload and actual website-to-active-S3 deletion. Related thumbnail/metadata keys were already absent before the test, so live removal of a pre-existing thumbnail is not claimed. Other media formats/physical Safari were not newly tested; existing local deletion regressions remain separate evidence. Existing user media and backups untouched; no paid generation or credit change.
- Both repairs are live: source build48b7300 and the approved AWS permission update. No further application changes or source push were needed in this follow-up. Post-release notes/generated readiness remain local for the next code release; do not trigger a rollout just for these notes. Network observation disabled; no emulation, local dev server, polling loop or helper process remains. Verified Library tab320870215 kept as the deliverable; root/operator intermediate tabs need no further work. Existing unrelated CloudShell terminal94d8f056-a64c-48d9-ac4f-a1ad731f98be and user root tabs untouched.
October 20 — Completed-work deletion guard follow-up (local)
- User-reported false active-work block investigated; file-specific bounded owner-index paging replaces the capped21-row account block. Hydrate current statuses, permit completed/failed/confirmed-gone jobs, exempt only deletion-aware thumbnail/title maintenance, retain real active-file and incomplete-check protection. Real blockers name job/status with Retry checks. No job relabel/cancel or real media deletion.
-57 focused Python tests, deletion-client regression, TypeScript and production build pass; free maintenance costs remain Plotthirst-funded. See page6-production-fixes/docs/LIBRARY_ACTIVE_WORK_CHECK_2026-10-20.md.
- Pre-release live completed clip review allowed/Cancel/no delete; exact user file/account pending. Chrome extension popup blocks further browser verification at preparation time. Deployment and hosted repair acceptance pending. Prior disposable-image exact active-S3 absence acceptance remains separate.
October20 release: pushed eda501393b701cb1449131a760917fe94c1d2123 (Buildeda5013). Chrome access recovered using existing tab; synthetic blocked review names job/status, Retry checks recognizes simulated completion and resets acknowledgement, Cancel sends0deletes. Local/browser checks passed; hosted repaired-build acceptance pending rollout. No real media or job statuses changed. Post-release notes remain local for next release.
October20 active-work repair deployed/Chrome review verified: Buildeda5013 public endpoint200 at17:28:08Z and fresh live Library fingerprint. Completed Edited chunk2 review: exactly1HTTP200/oktrue/blockedfalse/blockingJobs[] response, no incomplete check,0delete calls. Cancel used with acknowledgement unchecked; same file remains. Screenshot ../library-completed-work-check-20261020.png saved/inspected. Synthetic named blocker -> Retry checks -> simulated completed/unblocked review also passed. Exact original user file unspecified; no real media deletion/status edits/charges/IAM changes. Network capture disabled, no emulation/dev process; post-release evidence stays local for next release. Final overall worker rollout not independently claimed.
October20 WAN input-upload verification: after user clarified original source uploads, actual live Chrome Buildeda5013 Library source v24044gl0000d41mmufog65reek41re0.mp4 review returnedHTTP200/blockedfalse/empty blockers. Only a saved Solo setup warning; acknowledgement available. Cancel sent0deletes and original remains intact. One original source verified, not all historical WAN sources. No extra code/push or live status changes; see docs/LIBRARY_ACTIVE_WORK_CHECK_2026-10-20.md.
October20 — Thumbnail creation and recovery repair (local)
- Actual source/output thumbnail jobs fail because ecsTaskExecutionRole cannot UpdateItem; source already schedules at registration. Thumbnail-only atomic claim now uses existing GetItem/conditional PutItem. Bounded revision2 recovery handles exhausted old jobs, automatic cooldown retries and exact missing-preview404 recovery; uncertainty/ownership/deletion guards retained. No IAM expansion or paid provider/customer charge.
- Browser same-URL failure fixed; bounded network/check requests and Retry preview replace indefinite Preparing. Shared Library/saved chooser stays small-only, visible range/batches5, compact retry fits.65Python/3Node/typecheck/build and synthetic355px decoded320x180 image/video recovery pass; no full-media fetch before Review. Live rollout/recovery pending. Details: page6-production-fixes/docs/THUMBNAIL_RECOVERY_2026-10-20.md.
October20 thumbnail live acceptance VERIFIED: Buildb4bc8c5; website729/worker685 each sole COMPLETED/running=desired1/pending0. Actual PC Chrome visible5 original/generated image/video previews recovered automatically and all decode320x180 private-S3 JPEGs, including WAN source and edited clip; fresh reload retains them. Exact jobs completed attempt1/workerVersion2/credits0, source4607bytes/output4220bytes. Screenshot ../thumbnail-recovery-live-20261020.png. No IAM expansion, manual S3 backfill, paid generation/title retry or original deletion. Current range count3300 observed; no agent deletion. Brand-new hosted upload/physical Safari/full history not claimed. Local initial-hook coverage and bounded recovery remain distinct. Observer ended, temp shell closed, Network off/viewport reset/dev server removed. Notes local for next normal code release.
October20 — Quick Multi prompt contract and mixed lengths (local repair)
- Copied AI instructions now include the current exact attached reference names and fallback length; Video generator: default and Duration: default preserve form settings; explicit text overrides apply per clip. Explicit standalone setting/entry-state rules and clip-local image indexes prevent cross-clip assumptions. Intentional dialogue pauses remain permitted. Separate music guidance avoids video/image instructions. View AI instructions exposes selectable text if clipboard access fails.
- Importer preserves creative text below Prompt:, reads metadata only above it, does not treat creative prose as a settings override, and rejects malformed/conflicting duration headers. Missing/default headers preserve old form-driven behavior; conflicting prose is warned about. New quotes validate selected-generator limits and action timecodes, reject gaps/duplicates/>100 instead of truncating, price each distinct duration separately, and sum lengths for stitch pricing. Failed unit estimates cannot approve a zero-credit clip.
- Saved generationDurationSeconds passes from accepted quote to generation and ordered stitch; old accepted jobs retain their original shared length and completed clips are reused on resume. MCP schema/summary expose the same duration contract. Provider price rates, discounts, billing helpers, reservation/release and own-key behavior are unchanged; existing overhead/settlement gaps remain. No paid generation or account-data changes in verification.
- Local verification/deployment evidence follows. Physical iPhone and paid mixed-length rendering are separate acceptance checks, not inferred from synthetic Chrome or mocked workflows.
October20 Quick Multi refinement: owner explicitly requested form-driven defaults and per-clip generator overrides. Every copied video block now starts Video generator: default / Duration: default. An explicit known generator/version/input-mode name and integer duration override only that clip. Canonical routing, actual min/max/discrete lengths, image-conditioned Veo8s and compatible form resolution are checked before reservation; unknown/unavailable/ambiguous names or unknown duration limits fail closed. Five shared legacy duration rules mirror existing backend adapter limits rather than guessing missing catalog bounds. Guide enumerates all41 eligible model entries as51 distinct supported input-mode variants, including Prime/Mini/Fast and exact route labels. Actual TypeScript guide is cross-checked against the Python resolver at both limits and immediately outside them. Headerless and explicit-default legacy files use form selections; prose lengths never override. Shared version labels in Solo/Multi now derive Text-to-video/Image-to-video/Reference-to-video from the exact saved route, correcting bare and contradictory catalog captions while preserving route values. Combined models display current mode; editing labels remain editing. Local Chrome actual full catalog verifies Solo and Multi reference selection, template default headers/all51 variants, and current reference names.390px layout initially overflowed; min-width/file-input/container correction now measures clientWidth=scrollWidth=innerWidth390, review332px. Synthetic requests only; no uploads, starts, paid rendering or customer changes. Browser clipboard read adapter returned empty despite Copied toast; actual copied string is covered by the pure helper test, while selectable View AI instructions was independently verified in Chrome. Physical Safari and paid output remain unclaimed. Deployment order now updates compatible workers before the website accepts the new per-clip job contract. No roles, keys, alarms, task sizing or rollout timing changed.64 focused Python checks and existing generator-menu suite pass; final validation and deployment evidence follows.
Final local validation:64 focused Python tests, actual51-variant TypeScript-to-Python guide/limit checks, generator-menu regression (73 catalogue routes), TypeScript and production build pass. Existing bundle-size warning only. Static billing inventory unchanged; readiness render/check and syntax/whitespace checks pass. Movie monitor retains the same6 pre-existing stale source fingerprints; no hash reset. Real Chrome synthetic Solo/Multi reference selection and selectable instructions verified; desktop proof ../quick-solo-reference-mode-20261020.jpg saved/inspected. New fixture code uses generic characters, not user creative prompts. Temporary HTML/catalog mirror and Vite server removed; no emulation or helper remains. Source publication/live acceptance pending below.
October20 source release: committed and pushed c4841780ed6517941ddc2ca30e24fca6b1d87b05 (Buildc484178). Production main accepted. Worker-first order is part of this release; no IAM/settings mutation. Public build endpoint stillb4bc8c5 at2026-10-20T21:04:30Z; hosted new-template/label acceptance pending. Actual Chrome existing Michelangelo admin tab320870215 opened live QuickMulti without editing form or generating; restored existing QA2026-10-01 recovery draft/4-second form. Local synthetic tab/server/temp HTML/catalog mirror cleaned; no emulation. GitHub UI cannot view this private repo in current browser account (404), so no CI-success claim from that page. Do not redeploy solely for acceptance notes.
October20 hosted UI VERIFIED: public build endpoint returned c4841780ed6517941ddc2ca30e24fca6b1d87b05 at2026-10-20T21:10:18Z. Fresh actual PCChrome Michelangelo admin QuickMulti also displays Buildc484178. View AI instructions exposes12,146characters with Video generator: default / Duration: default, all51 supported variants, Prime/Mini/Fast, min/max/discrete rule and exact current form fallback4s. Dropdown now shows Grok1.5 Reference-to-video. Existing QA recovery draft was read/restored without edits, uploads, quote/start or paid generation actions. Saved/inspected ../quick-multi-instructions-live-20261020.jpg; live tab320870215 markedDeliverable. Local synthetic Solo reference labels remain separate acceptance evidence. Read-only root CloudShell existing own terminal355682d1 confirms worker686 soleCOMPLETED/running1/desired1/pending0; website730 currentPRIMARY/IN_PROGRESS with new1running and old7291running at the observation. Exact describe-task-definition reads verify both730/686 use fullc484178 image tag. Rootsessionrequired no new login/permissions, no deployment setting mutation; unrelated terminal94d8... untouched. Final whole-web stabilization not yet claimed; no polling helper/dev server/emulation remains. Post-release evidence/readiness notes local for next normal code release.
October21 — Quick Multi immediate failures (repair verified locally)
Read-only Plotthirst job lookups confirm all three reported batches (4f8e2ce2f741c2793a3ed090, 3182ac0d520fa19f0d00f4d8, e25dd469d855766804362b96) failed worker validation of requested durations before the clip loop. Each reservation reports reserved387/spent0/released387. The website quote used Python integers; DynamoDB resource decoding returned Decimal whole numbers, rejected by the new strict integer validator. The workflow now restores JSON numeric types through the existing json_safe_value helper before validation, child execution and ordered stitch. It does not infer settings from prose, relax duration contracts or reprice accepted quotes.
71 focused Python checks pass, including actual boto3 TypeSerializer/TypeDeserializer round trips for WAN reference8/8/15-second quotes, new/resumed runs, completed-clip reuse and rejection of bool/fractional/string/out-of-range durations. Three Node suites, TypeScript and Vite production build pass (existing bundle-size warning). Status card now shows explicit failure/error and per-clip reasons, stops terminal polling, replaces stale queued notices and hides the misleading99% bar for stopped jobs. Local Chrome synthetic355px layout has no overflow, error text wraps; saved ../quick-multi-failure-mobile-20261021.jpg. Physical Safari and paid rendering are not inferred from these tests. Deployment/live acceptance pending; no failed job resubmission, paid generation or customer-account change performed.
October21 source release: committed/pushed c62e2817fbd7bbd31ad0839fe7dfacc8c87cd13e (Buildc62e281) to production main. Public build-info stillc484178 at2026-10-21T06:27:43Z, so hosted acceptance is pending. AWS console and CLI sessions are expired; no credentials/permissions changed or new login requested solely for observation. Local temporary HTML and Vite server removed, Chrome viewport restored, screenshot saved. No batches requeued or provider calls submitted. Existing stopped jobs remain historical failures; a fresh user-approved submission is required after repaired build is available.
October21 — Quick Multi estimate summaries (local verification)
Validation status and confirmation dialog now share one summary derived from saved resolved quote items, never the form default. Uniform explicit8s clips with a15s form default display8-second clips; up to6 mixed clips list ordered seconds; longer batches group counts (3×8s,10×30s,4×10s). Very diverse batches bound the displayed groups and retain complete ordered details in clip review. Input-mode counts and actual generator/version names also summarize uniformly or by group. Discounts, total credits, stitch rows and approval/cancel remain; modal notice shortened for mobile space. Audio retains its song estimate semantics, without implying exact video-like durations.
Backend review confirms every clip resolves generator/input mode/duration before pricing; cache includes exact route/length/reference settings, sums every clip and prices stitch once at total resolved length. New tests run the actual Quick Solo estimator beneath mixed WAN reference/image/text routes with8/15/10/30 and all8s overrides against a15s default; only billing unit calculation is stubbed, no provider calls.73 focused Python checks pass, including new cache/accounting checks, and4 Node suites/typecheck/build pass (existing bundle-size warning). Local PC Chrome full form Validate->approval dialog->Cancel verifies identical summaries, uniform overrides and17-clip grouped counts.355px screenshot ../quick-multi-estimate-summary-20261021.jpg shows readable contained text/actions, dialog clientWidth=scrollWidth301. Requests show draft+preview only, no start. Hosted acceptance/physical Safari/paid quote-to-settlement remain separate; release evidence follows. No price rates, reservations, debit/release, account balances, saved customer data or accepted quotes changed.
October21 estimate-summary release: committed/pushed d88ac1dbd1f25f3123e68fb19fb3abde42c24300 (Buildd88ac1d) to production main. Public build-info still reports c62e281 at2026-10-21T08:24:57Z; the preceding numeric-storage repair is served, new summary release acceptance pending. Final typecheck/build/summary regression and syntax/whitespace/readiness checks pass. Billing inventory unchanged; movie monitor retains its same six pre-existing stale source fingerprints, no baseline reset. Vite stopped, temporary HTML removed, Chrome viewport reset/local tab closed; only generic test harness and screenshot retained. No paid start/provider call, production account edit, quote/reservation/debit or failed-batch resubmission. Keep post-release evidence local for next substantive release.
October 23 — audio references across Quick video modes (local verification)
Shared capability-specific MP3/WAV upload and saved-file selection now covers WAN3/Prime reference, WAN2.7 compatible text/image/reference, Seedance reference/edit/extend, and MiniMax H3/Developer reference. Solo Video/Edit/split/compatible Extend-Loop preserve audio through estimate, saved setup and retries; unsupported/native-sound-only modes cannot silently drop attached audio. Multi uses per-clip Audio references: headers, review names, exact subset handoff, updated AI instructions, checksum-verified ZIP/MCP audio import and MCP1.6.2 capability descriptions. No price, balance, debit or subscription changes and no paid generation submitted.
Local Chrome synthetic checks: saved audio multi-select and Solo cost request, named Multi clip review, incompatible-mode controls, Video Edit and WAN2.7 Extend/Loop.355px viewport contained controls without horizontal overflow; screenshot quick-audio-references-20261023.png. Automated regression/typecheck/build evidence is recorded in the repository handoff and docs/VIDEO_AUDIO_REFERENCES_2026-10-23.md. Billing inventory unchanged; six existing movie-cost fingerprints remain stale, baseline not reset. Hosted signed upload/storage/reuse, physical Safari and rendered sound quality remain acceptance open. Source release is not proof of hosted acceptance.
October23 source release: committed/pushed 24e47cd (Build24e47cd) to production main. No live rollout polling or paid generation performed. Final204 Python regressions, five frontend suites, typecheck/build, syntax, whitespace, billing inventory and readiness checks passed; same six pre-existing movie-cost fingerprints remain open. Chrome fixture/viewport/Vite cleaned up. Hosted acceptance remains pending. Post-release evidence retained locally for the next substantive release.
October 24 — Quick Multi mixed image/audio reference names (local verification)
Reported WAV filenames were listed in the image References header. Validation now separates clearly identified attached audio, resolves a unique assigned name or original filename (including the uploader’s extensionless initial label), and records canonical per-clip image/audio subsets with a visible normalization warning. Creative prompt/batch text is preserved. Missing and ambiguous audio names fail before price/submission; no account-history scan, file reupload or paid analysis is used. ZIP precheck accepts mixed image/audio lists, automatic mode selection recognizes inline audio, and MCP1.6.3 checks numbered tags/summary against normalized items. Copied AI instructions explicitly keep audio under Audio references: and explain that a global audio inventory does not attach clips.
211 Python checks, four frontend suites (including five ZIP tests), TypeScript, production build, syntax/whitespace and billing inventory checks pass. Regression reproduces the owner’s12-clip audio order2,1,1,2,1,1,1,2,2,3,3,2 with120s total, separated image counts, exact original creative text and mocked child handoff; it does not render or access customer files. No unit rate, quote approval, reservation/debit/release, balance, discount or provider job changed. Movie monitor retains the same six existing stale fingerprints without a baseline reset. Hosted acceptance remains open; release evidence follows.
October24 source release: pushed 63143af (Build63143af) to production main.211 focused Python checks and four frontend suites/typecheck/build pass, including the reported12-clip mixed-reference order and mock child handoff. No live rollout polling, paid rendering, customer-file access or account/billing changes performed. Hosted acceptance pending; post-release evidence kept local for the next substantive release.
October 24 — Quick Multi video references (LOCAL ONLY; USER HOLD)
User explicitly requested that video-reference changes remain unpublished while testing current image/audio work. Latest pushed source remains 63143af. Do not push this repair without later authorization.
Added per-clip Video references headers, typed image/audio/video name resolution, MP4/MOV upload and saved-video multi-select, ordering/removal, on-demand preview, persisted setups, ZIP and MCP video receipts. Exact typed headers distinguish equal names; ambiguous fallback names fail with corrective instructions. Only selected, owned videos reach each resolved clip and its quote/worker. Limits are restricted to wired WAN/Seedance reference routes; incompatible models reject video input. Seedance reference children use reference task behavior. Existing input-video pricing receives selected input durations; no rate, price, account, accepted-quote or permission change.
231 focused Python checks and frontend policy/component/audio/instructions/menu/summary/ZIP regressions, typecheck and production build passed (existing bundle warning). Actual PC Chrome synthetic form verified saved multi-select, per-clip review, ordering, removable unsupported input, no player until requested and decoded 2s preview; narrow layout did not overflow. Evidence: quick-multi-video-references-local-20261024.png in parent workspace. No live/customer files, paid rendering or credit mutation. Local server stopped, temporary HTML and fixture tab removed, viewport restored. Hosted/paid/physical Safari acceptance remains OPEN. Manual cost review and remaining overhead gaps: docs/QUICK_MULTI_VIDEO_REFERENCES_LOCAL_2026-10-24.md. Existing movie-cost baseline reviews remain outstanding; no fingerprint reset.
October 25 — Video-reference release authorized
The owner requested pushing the prepared Quick Multi video-reference repair ("I guess push.."). This supersedes the October24 publication hold. Prior 231 Python checks, frontend regressions/typecheck/build and synthetic Chrome evidence remain current; implementation is unchanged. Release includes named video uploads/saved references, per-clip typed mapping, model limits, ZIP/MCP handoff and input-duration pricing. No paid jobs, customer/media changes or infrastructure setting changes are part of this push. Hosted rollout and real-provider/physical-mobile acceptance remain pending; do not imply deployment completion from source publication. Source commit and push result follow.
October25 source release: committed/pushed 5e74fde9b5abec846954af5595b1201db9b05e7b (Build5e74fde) to production main. Git accepted the fast-forward from63143af. The prior publication hold is superseded by the owner's explicit push request. Existing231 focused Python tests, frontend suites/typecheck/build and synthetic Chrome evidence remain the validation basis; final syntax/whitespace/readiness and unchanged billing inventory checks pass. Same six pre-existing movie-cost review fingerprints remain open, with no baseline reset. No live rollout polling, paid provider submissions, customer/media/financial or infrastructure settings changes occurred. Hosted acceptance remains pending. Post-release notes/generated readiness stay local for the next substantive release; no notes-only deployment.
October26 — Quick Multi source editing and upload recovery (local)
Prepared explicit Edit a source video in portions option, separate from ordinary multiple video references. One source name is used in every prompt; generated01/02/etc names and exact source bounds are shown in review. Supports full-source consecutive durations (68s=15/15/15/15/8) and optional Source range: headers on every clip for deliberate selected sections. WAN3/Prime only,2–15s per edit, original shape/Auto length, previous edited-frame continuity and existing durable Solo checkpoints/guarded recovery reused. Copy/View AI instructions now teach the distinction, shared base name, local prompt timecodes and ranges. Parent instructions export ready: quick-multi-source-edit-ai-instructions.txt.
Fixed queued Multi payload omitting sourceVideos. Direct/compatibility/inline upload completion now retains duration before immediate Library registration; repeat completion may repair missing metadata without new media/IDs. Source preview displays immediately. No claim the owner's previous three attempts reached storage or were recovered. Real synthetic exact15s cuts exposed AAC padding; new explicit windows use H264/PCM MOV with30fps normalization rather than shortening source windows. Existing Solo equal-window jobs retain original format/behavior.
266 focused Python checks and11 frontend test reports, TypeScript/build, unchanged billing inventory and syntax checks passed. Actual PC Chrome synthetic saved source68s decoded, correct five reviewed ranges/names, updated guide, maximum-reserve confirmation/service once and Cancel/zero start requests;355px layout no overflow. Proof ../quick-multi-source-edit-local-20261026.png. No customer files, paid jobs, credits/prices/settings/permissions changed. Shared source-edit pricing/one service debit and unresolved overhead caveats reviewed in docs/QUICK_MULTI_SOURCE_EDIT_2026-10-26.md. Same six stale movie-cost fingerprints remain unreset. Not pushed; latest published source5e74fde. Hosted/paid/Safari/prior-upload inventory acceptance remains OPEN.
October26 release preparation: publishing the completed source-edit/upload repair under the project's standing completed-repair deployment workflow so the owner can copy the updated AI instructions from Quick Multi. No publication hold is active.266 Python checks,11 frontend reports, typecheck/build, syntax/whitespace, billing inventory/readiness checks pass. Movie monitor retains its same6 stale review fingerprints without baseline reset. Source commit/push result follows; no hosted or paid acceptance is implied. Chrome fixture tab closed, viewport reset, Vite stopped and temporary HTML removed. Only synthetic test fixtures/instructions/screenshot retained.
October26 source release: pushed b194226c617e72895e227d91dff645e696473cc3 (Buildb194226) to production main; Git accepted5e74fde..b194226. Includes explicit source editor/ranges/base-name aliases, immediate source preview, queued video list, upload-duration catalog repair and updated copyable AI instructions.266 Python checks,11 frontend reports, typecheck/build and Chrome synthetic evidence apply. No live rollout polling, paid editing or previous-upload inspection performed; hosted acceptance remains pending. Post-release notes/readiness remain local for next substantive release, not a notes-only redeploy. Parent deliverables: quick-multi-source-edit-ai-instructions.txt and quick-multi-source-edit-local-20261026.png. Local Vite/tab/viewport/temporary HTML cleaned up; no helper remains.
October 26 — Multiple originals in Quick Multi editing
- Recorded evidence: Local implementation: up to ten unique account-owned originals, at most 25 minutes across used sources. Each clip names exactly one base source plus its own image/audio references. Independent cursors/numbering support A → B → A; explicit Source range selects within that original. Sources without ranges must be fully covered. Same WAN3/Prime route throughout, 2–15s per edit.
- Recorded evidence: Source-specific contiguous continuity, lazy one-time original reads, completed output reuse and ordered assembly once. New sourceEditVersion2 plans preserve unversioned accepted-job/Solo behavior and survive actual DynamoDB numeric queue roundtrip. Multiple sources preview one player on request. AI instructions updated; export in parent quick-multi-source-edit-ai-instructions.txt.
- Recorded evidence: Cost review: maximum15s child reserve/measured settlement, discounts and one shared preparation/assembly charge. Distinct USED original seconds + selected output seconds + mapped frame work; no unused-source read or extra parent/stitch debit. Own-key editing still rejects. No paid planner, price/balance/discount/setting/permission mutation. Existing storage/transfer/shared-overhead gaps and six stale movie-cost fingerprints remain open; no baseline reset. Billing inventory unchanged.
- Recorded evidence: 282 Python regressions, eleven frontend reports, typecheck/build and synthetic PC Chrome pass. Saved multi-select, decoded on-demand players, A01/B01/A02 review with separate image references/ranges, current-source AI guide, approval/service once, Cancel/zero starts/uploads. Narrow355px viewport/document341px without overflow. Proof: quick-multi-multiple-sources-20261026.png. No customer files or paid jobs.
- Acceptance open: Hosted uploads, actual provider acceptance/quality/settlement and physical Safari remain open. Prepared for normal completed-repair push; source publication does not confirm live rollout. No new dedicated MCP source-edit schema. Details: docs/QUICK_MULTI_SOURCE_EDIT_2026-10-26.md.
October26 multiple-source release: committed/pushed dea5a1c68bedf3891771b31455bb586e45addb63 (Build dea5a1c) to production main; Git accepted b194226..dea5a1c. Up to ten originals with independent source/range/ref selection, same-source continuity, ordered assembly and updated AI instructions.282 Python regressions,11 frontend reports, typecheck/build and synthetic Chrome verification apply. No live rollout polling, paid starts or customer-file/account/financial changes. Existing six stale movie-cost fingerprints remain unreset. Vite stopped, temporary HTML removed, Chrome viewport reset and fixture tab closed. Parent proof quick-multi-multiple-sources-20261026.png and instructions export retained. Hosted/paid/physical Safari acceptance remains open. Keep these post-release notes/generated readiness local for the next substantive release; no notes-only redeploy.
October26 LOCAL ONLY — owner explicitly said no push yet. Quick Multi AI instructions now require the entire prompt file in ONE Markdown code block labeled text, all clip blocks together and no surrounding commentary. Shared instruction builder covers ordinary video, source editing and audio. Updated parent quick-multi-source-edit-ai-instructions.txt export; existing instruction regression passes. Formatting-only change, no provider/billing operation. Keep unpublished until a later push authorization.
October26 LOCAL ONLY follow-up — large Quick Multi AI outputs must include a complete downloadable UTF-8 .txt attachment in addition to the code block whenever response/display limits risk clipping or copying problems. No invented universal character threshold. File content preserves every clip and omits Markdown fences. Only an actual created attachment may be claimed; attachment-unavailable fallback explains the limitation and splits code blocks between whole clips without omissions/duplicates. Shared video/source-edit/audio instructions and parent instructions export updated; existing instruction regression passes. No push, billing or provider changes; prior publication hold remains.
October26 LOCAL ONLY — Quick Multi video upload/naming discoverability repair. Video mode/edit choice and VideoReferenceInputs moved above Prompt batch. Empty unsupported modes retain an explanatory section and disabled upload, directing users to enable source editing or select a video-capable route; existing attachments remain named/removable. Compatible source/reference uploads and saved picker retain their limits. Each video now has an accessible name field, clear batch-setup scope, and an exact selectable Video references: header. No Library/original-file rename implied. Renames flow into current AI instructions and saved batch setup as before. Existing component/instruction regressions, TypeScript and production build pass (existing bundle warning); Node/Python syntax/whitespace checks pass. Actual PC Chrome synthetic saved videos verified renamed Construction Site Original in header/AI instructions, code-block/txt guidance, fresh browser reload retaining name, unsupported Grok guidance/disabled input, re-enabling source editing revealing upload and saved picker.355px viewport/document341px without overflow; no video players mounted for multi-source browsing. Proof ../quick-multi-video-naming-local-20261026.png. No actual uploads/paid starts/customer files, backend changes, billing changes, or production edits. Chrome tab closed/viewport reset, Vite stopped/temp HTML removed. Owner's no-push instruction remains active.
October26 release authorized — owner's new “Push” request supersedes the local publication hold for the pending Quick Multi video upload/naming layout and code-block/large-output .txt AI instruction changes. Existing component/instruction regressions, TypeScript/build and synthetic Chrome evidence remain current; implementation unchanged since those checks. No paid starts, backend/billing changes or live rollout polling are part of this push. Source publication result follows; hosted acceptance remains separate.
October26 source release: pushed 5c189e338da21748543c15c0bee46f1eac6a1028 (Build5c189e3) to production main; Git accepted dea5a1c..5c189e3. Includes clearer video upload/naming above prompts, exact reference header and AI code-block/large-output downloadable .txt instructions. Prior frontend regressions, TypeScript/build and actual local Chrome verification remain current; final syntax/whitespace/readiness checks pass. Six pre-existing movie-cost review fingerprints remain unresolved/unreset. No live rollout polling, paid submissions or customer/account changes. Hosted acceptance remains pending. Keep post-release notes/generated readiness local for the next substantive release; no notes-only deployment.
October 26 — Quick Multi upload completion and stale outputs (local)
Video-only/audio-only working drafts now persist. Bounded MOV/MP4 header timing handles HEVC length independently of browser decoding. Inline upload stages/errors explain rejected references. After one successful PUT, transient completion retries and account-scoped metadata receipts allow Finish attaching saved video without reupload. Clear/Load saved/import/new run detach previous displayed results and stale reconnects; ordinary terminal-setup edits also detach. Library searches original/stored filenames and displays original names. No customer prices, credits, providers, permissions or media deletions.
12 account-upload tests, upload metadata/recovery and video-reference frontend suites, TypeScript and billing inventory pass. PC Chrome synthetic68s HEVC transfer/recovery and fresh-load draft retention verified; separate H264 source decoded/played and retained its name. Clear and Load saved removed prior synthetic completed output after reload. Proof in parent quick-multi-clear-recovery-20261026.jpg and quick-multi-upload-preview-local-20261026.jpg. Actual customer HEVC preview/file identity/rename and duplicate inventory remain OPEN pending AWS authentication. This PC Chrome cannot decode HEVC; no universal preview/transcode claim. Exact original-name picker search returned0; no S3 absence or duplicate claim. No customer files deleted. Details/cost exception: docs/QUICK_MULTI_UPLOAD_RECOVERY_2026-10-26.md. Existing six movie-cost fingerprints remain unreset; hosted acceptance separate from source push.
October26 upload repair release preparation: final22 upload/Library/reusable-setup Python tests, five frontend suites, TypeScript and Vite production build passed (existing bundle warning), with syntax/whitespace/billing/readiness checks. Temporary test HTML/media/Vite/tabs removed. Owner deferred AWS sign-in; login canceled/tab closed. Actual missing video lookup, pickup-truck visual verification, Construction Site Original naming and duplicate cleanup are NOT complete. No customer file or credit changed. Prepared ready site fixes for normal completed-repair push; hosted acceptance remains separate, and no rollout polling is planned.
October26 upload recovery source release: pushed6a8093b (Build6a8093b) to production main; Git accepted5c189e3..6a8093b.22 focused Python checks, five frontend suites, TypeScript/Vite build, syntax/whitespace/billing/readiness checks pass. Same six pre-existing movie-cost fingerprints remain unreset. No live rollout polling, paid jobs, customer media changes/deletions or AWS access occurred. AWS login canceled at owner request to defer sign-in; actual video visual verification/rename/duplicate review remain incomplete. Local test proof and detailed report retained. Keep these post-release notes/generated checklist local for next substantive release; no notes-only deployment.
October26 — Safari video upload transport (local)
Following repeated iPhone Load failed, verified one tiny live PC Chrome upload end-to-end: presign/PUT/completion200 and signed preview206/decoded player; production-origin CORS preflights also200. One QA video remains in Michelangelo Library as qa-video-upload-network-20261026.mp4; form restored and no customer file deleted. Physical iPhone failure was not captured.
Repaired the documented WebKit File upload path: bounded64MiB in-memory Blob workaround on WebKit, sliced Blob for other/larger inputs, picker retained until settled, correct missing MOV MIME fallback. Solo/Multi share it. New completions verify exact HEAD size and reject denied verification, empty or partial files before cataloging. Lost PUT replies verify the existing key without another transfer; honest unconfirmed receipts and completion-only recovery in Solo/Multi. No provider generation, price/credit/permission changes or AWS login. Local24 Python tests, frontend recovery/component tests and TypeScript pass. Chrome fixture exercised the WebKit code branch with real file selection, Blob/lifetime guards, decoded player and fresh-load persisted source name/header; this is NOT physical Safari acceptance. Proof ../quick-multi-safari-upload-path-local-20261026.jpg. Review/cost/limits: docs/SAFARI_VIDEO_UPLOAD_REPAIR_2026-10-26.md. PC drive exhausted during checks; only generated Python caches removed. Existing six movie-cost fingerprints remain unreset. Final production build/checks and source release follow; hosted/physical-phone acceptance remains open.
October26 Safari upload release preparation:24 focused Python cases, six frontend programs including six ZIP cases, TypeScript/Vite build, syntax/whitespace, unchanged billing inventory and readiness checks pass. Existing bundle warning and same six movie-cost fingerprints remain open. Local Vite/test tabs/temp HTML/media cleaned up; screenshots retained. Ready shared Solo/Multi video transport and strict-byte verification for production source push under the standing completed-repair workflow. Physical iPhone upload/HEVC preview and the owner's original file inventory remain unverified; no hosted rollout polling. One small clearly named live QA upload remains; no customer media deleted. No AWS login, credits, provider generation or settings changes.
October26 Safari upload source release: pushed42867d3 (Build42867d3) to production main; Git accepted6a8093b..42867d3.24 focused Python tests, six frontend programs, TypeScript/build, syntax/whitespace/billing/readiness checks pass. Same pre-existing bundle warning and six movie-cost fingerprints remain. No rollout polling or paid generation. Actual physical iPhone upload/native HEVC preview still requires acceptance; original pickup-truck file lookup/naming and duplicate cleanup remain deferred. One small diagnostic QA upload remains cataloged, and the prior live QA form was restored. No customer media/credits or AWS settings changed. Keep post-release notes/readiness local for next substantive release, with no notes-only deploy.
October26 — Bounded video relay and prompt-first references (local)
- Recorded evidence: Quick Multi Prompt batch now precedes every reference control. Compatible video inputs show an optional name before selection/during upload; saved source retains editable alias and exact Video references header.
- Recorded evidence: Shared Solo/Multi uploader verifies direct upload first; confirmed404/409 may use one authenticated same-origin binary relay up to64MiB. Direct and relay share one account-derived create-only key. Two transfers/process,1MiB spool/temporary disk, bounded read time; no client-selected path, overwrites, duplicate cataloging or paid provider work. Lost replies verify the same target. Old missing attachment checks clear only the stale browser receipt and instruct selecting original bytes again.
- Recorded evidence: 35 Python checks pass, including actual localhost HTTP binary dispatch/auth, exact repeated bytes/one fake S3 PUT, bounds, spooling, races, ownership and failure cleanup. Frontend upload/reference/instruction/status/delivery/ZIP checks pass. Synthetic PC Chrome direct-failure-to-relay recovery yielded a decoded3s player and Construction Site Original name/header; prompt precedes references and narrow layout has no overflow. Proof ../quick-multi-upload-relay-mobile-20261026.jpg. Temporary test page/media/Vite/tab removed, viewport reset.
- Recorded evidence: Manual cost/security review: Plotthirst-funded maintenance, bounded extra web/disk/network/S3 work; shared key prevents duplicate stored copies. No customer price/quote/reservation/debit/discount/balance/own-key changes. No credentials/IAM/CORS/settings changes. Static billing inventory unchanged; existing operating-cost gaps and six stale movie-cost fingerprints remain open/unreset. Details docs/VIDEO_UPLOAD_RELAY_2026-10-26.md.
- Acceptance open: Final typecheck/build/renderers and source publication follow. Hosted/physical iPhone35.8MB HEVC upload and playback remain unverified; actual truck-source lookup/naming/duplicates deferred, no customer media deletion or paid generation. Once new build is available the original must be selected once; a prior missing receipt has no bytes to restore. Prepared for the standing completed-repair release workflow; source push does not establish hosted acceptance.
October26 relay release preparation:35 focused Python cases, seven frontend programs (six ZIP cases), TypeScript, Vite production build, Node/Python syntax, whitespace, unchanged billing inventory and readiness renderer/check pass. Existing bundle-size warning and the same six movie-cost review fingerprints remain open/unreset. Manual relay operating-cost exception reviewed in docs/VIDEO_UPLOAD_RELAY_2026-10-26.md. No customer file/credit changes, paid jobs, AWS login or infrastructure settings changes. Preparing source push under standing completed-repair authorization; hosted deployment and the original iPhone upload remain separate acceptance steps. Local synthetic preview/name evidence retained; test helper files/server/tab/viewport cleaned up.
October26 relay source release: pushed04baebb (Build04baebb) to production main; Git accepted42867d3..04baebb.35 focused Python checks, seven frontend programs, TypeScript/build, syntax/whitespace/billing/readiness checks pass; existing bundle warning and six unchanged stale movie-cost fingerprints remain open. Includes automatic same-key bounded video relay, prompt before all Multi references, pre-upload name and honest missing-receipt recovery. No hosted rollout polling, AWS login, paid jobs or customer media/credits/settings changes. Actual physical iPhone file upload/native HEVC preview and original inventory remain unverified; user must reselect original once when the new build is available. Synthetic proof quick-multi-upload-relay-mobile-20261026.jpg retained. Test server/tab/viewport/helpers cleaned up. Keep this post-release note/generated checklist local for the next substantive release; no notes-only deployment.
October26 — Fractional source-range duration clarification (local, not pushed)
Owner reports the video batch started, but last clip rejected7s and8s and accepted Default. Reproduced with a synthetic7.58s range; the actual customer's precise duration was not inspected. Default with an explicit Source range preserves fractional seconds. Both whole-second overrides correctly fail the existing range-match rule. Updated both legacy and multi-source errors to print the exact expected duration/bounds and advise Duration: default without rounding. Updated copied AI instructions to distinguish exactly measured duration from a rounded phone display, prefer Default for explicit ranges, preserve fractional endpoints and avoid unsupported fractional Duration overrides. Refreshed parent quick-multi-source-edit-ai-instructions.txt export. 30 focused source/multiple-source tests pass (two existing real-FFmpeg cases excluded from this text-only clarification); new parameterized regression verifies7.58s remains exact in both contracts,7/8 errors are corrective and rejected plans never invoke pricing. Instruction regression passes. No planning/rounding/tolerance/hash/reservation/debit/provider behavior changed. Existing accepted quotes and running batch remain untouched; no deployment while the owner tests this run. TypeScript, production build, Python/Node syntax, whitespace and readiness renderer/check pass; the existing bundle-size warning remains. Same six existing stale movie-cost fingerprints remain unreset.
October26 — Saved edit settlement diagnosis (read-only release preparation)
PC cache cleanup restored about1.6GiB free space; source repair can continue. Added bounded diagnostic to explicit admin_inspect_job only after target ownership is checked: reads one failed split-edit checkpoint, reports approved unit/credits and saved output state, and signs only an owner-folder output. Ordinary get_job and foreign-target requests do not read these checkpoints. No rendering, settlement, reservation, balance or stored-job mutation; the existing admin audit is retained. At most the existing checkpoint/fallback reads and owned-object signing/HEAD, platform-funded support work. No new provider or customer charge; billing inventory unchanged. No IAM/settings changes. 71 focused Python tests pass (three existing cases excluded by not-real selection), including ownership/admin isolation, single-checkpoint bound and no checkpoint writes, plus existing source-range contracts. Fractional-duration clarification/instruction changes were already typechecked/built and remain unchanged. The first diagnostic release is needed to inspect this actual saved clip before choosing a settlement repair; do not assume duration padding or a missing unit. Original failed batch remains terminal with0 spent/all1815 reserved credits released. No job restart. Source push does not itself establish hosted readiness. Movie monitor retains the same six stale fingerprints without reset.
October26 — Resolved timing and bounded edit settlement repair (local)
User clarified that the form default was10/15s. Reproduced7s rejection (8s action),8s rejection (7s range), but Default acceptance: action timing was checked before the range replaced the default. New source quotes validate local seconds and mm:ss action ranges against the final resolved portion, including fractional tails. Quote sourceTimingContractVersion1 preserves already-accepted legacy plans on replay. Instructions now explicitly explain this case. No accepted ranges/prompts are silently rewritten; the original batch selected60–67s from a67.657001s source.
Split-edit settlement now separately probes picture duration only for container lengths15–15.12s. A verified picture at most15s with at most0.12s container/audio padding uses picture seconds, preserving original container duration in the checkpoint. Longer/unknown picture, larger padding or missing approved units still stop. Missing units are checked before provider submission. Frozen per-portion credits/discounts/proration and one service debit remain; no rate, accepted ceiling or own-key change. Cached successful media is reused with stable debit IDs. Actual provider wholesale treatment of container padding is not established: Plotthirst bears any small difference; no supplier bill or margin claim. Fresh Auto already downloaded once for measurement; this adds one local probe, while older padded checkpoints need one bounded existing-file read. Existing storage/transfer/shared-overhead gaps remain open, without another parent/stitch allowance.
Read-only MCP admin diagnostics now load one exact worker record after ownership verification when the public job omits payload. Ordinary reads and foreign targets do not access that record/checkpoint. This is Plotthirst-funded support work, without generation/debit/reservation or permissions changes. First diagnostic build a7ead0f is visible in PC Chrome; new settlement/timing code is not yet published. Actual retained output duration/unit and original batch recovery remain open. No paid request, debit or requeue performed in this repair so far.
Local verification for this follow-up:124 focused Python tests pass, including real AAC-padding media, Decimal quote replay/no duplicate render/debit, ordinary Auto compatibility, exact worker-record admin isolation and10/15s default timing regressions. AI-instruction export/test, TypeScript, production bundle, syntax, unchanged billing inventory and readiness renderer/check pass. Frontend build required the approved unsandboxed run for esbuild path resolution; it passed with the existing bundle warning. Movie monitor rendered and reports the same six unresolved source fingerprints, not reset. a7ead0f deployment workflow completed successfully; original batch remains failed with0 spent/all1815 released pending retained-output inspection. Preparing the next completed-repair release; no claim of live settlement/recovery acceptance.
October26 — Confirmed saved Clip1 diagnosis and same-batch continuation
Live c03badd diagnostic loaded the exact worker record: five approved units, first unit360credits, saved unsettled output with request e9c30b084f8044ff962d36e09af7d2a7. Downloaded only that owner-verified output (50,488,072bytes) via its temporary signed link. ffprobe:450H264 frames at30fps, picture15.000000s; AAC15.046213s starting-0.023220; container15.023s. This conclusively triggers the old15s container guard. The c03badd calculation on these exact bytes resolves15s/0.023s padding/360credits without a debit. Preview at5s confirms white pickup, construction setting, ladder rack, hard hat/safety vest. No regeneration, account debit or media change. Local private copy/preview are ignored under test-artifacts.
Prepared Continue saved source edit for failed source-edit deliveries with one account-owned saved output. Preview is read-only and shows original ceiling, prior ledger spend and remaining reserve. Confirmation carries exact remaining credits and queue generation. It uses the saved plan/quotes/prompts and SAME job/run ID, so existing child checkpoints/debit IDs are reused. Prior spent amounts accumulate across attempts; original ceiling cannot increase. New hold ID is deterministic per queue generation, so repeated confirmations share one hold. Local/AWS requeue condition checks expected generation and terminal status before replacing the record; CAS guards concurrent/stale confirmations. Clear old reservation-release markers and failed status, preserve completed output. A lost queue reply checks for worker pickup; uncertain failures retain the hold rather than releasing funds under possibly-running work, and never blindly send another generation request. A queued-but-unconfirmed message can still need queue reconciliation; do not claim that ambiguity is automatically repaired. Saved generated titles skip another title call. Regular non-source/own-key/unsaved/foreign/exhausted/invalid-price work cannot use this endpoint.
Cost review: this re-reserves only the UNUSED original accepted budget, with the original unit/service pricing/discount/rounding. No new provider, AI-title, parent, assembly or markup charge. Stable debit IDs/checkpoint reuse prevent charging settled work twice; uncertainty does not permit an increased ceiling. Source own-key remains rejected. Read-only preview and bounded exact job/reservation/checkpoint reads are Plotthirst support overhead; generation/compute/storage use the existing accepted components, whose broader operating-cost gaps remain explicit. One new reviewed reserve entry is added to the static inventory; no rates, subscriptions, discounts, existing balances, IAM or production configuration edited by development. This is application source work; actual continuation is still pending release and verification.
Continuation verification/release preparation:141 focused Python tests passed with the known imageio FFmpeg binary, including real source cuts and exact retained-byte padding calculation.17 new continuation cases cover original quote/spend bounds, Decimal values, account/own-key/source/saved-media guards, duplicate and stale-generation protection, unknown queue replies, actual authenticated HTTP dispatch/login denial, and no repeated AI title. Earlier real-media run used the PC's2013FFmpeg by mistake; rerun with the known binary passed. TypeScript/production build and instruction/status suites pass; existing bundle warning remains. Static billing inventory updated only after manual review of the one new reserve path, then --check passes. Readiness renderer/check pass; same six movie-cost fingerprints remain unresolved/unreset. Source published c03badd is live for diagnostics/settlement; original batch has NOT yet been requeued or charged.
PC Chrome synthetic UI: Open failed batch, Continue, remaining195/original375/spent180 dialog; Cancel sends no confirmed request. Second review/confirmation sends one exact195/generation2 confirmation to SAME batch ID, keeps current form title, blocks all paid starts/uploads. Screenshot ../quick-multi-recovery-review-20261026.jpg. Browser then reported an extension UI blocking automation during local tab cleanup; user asked to dismiss it. Local Vite stopped and temporary HTML removed; synthetic fixture remains as regression source. Do not bypass the browser block. Original production continuation will require visible browser access after recovery release. No AWS sign-in needed.
Release status: c03badd workflow40410565942 succeeded; live admin diagnostic and exact retained file confirmed the15.000s-picture/15.023s-container root cause. Then pushed6b5acdc (Build6b5acdc), recovery workflow40412858901 is in progress. git fast-forward acceptedc03badd..6b5acdc. No original batch requeue, provider generation or credit debit performed. Original quote1815 and first saved unit360 remain. Browser extension UI block appeared during own local test-tab close; request_user_input_async asks owner to dismiss it and reply ready. Do not retry browser commands before owner clears the block or bypass it through lower-level controls. Original user tabs/draft preserved. Test Vite45656 stopped (4217closed), temporary recovery HTML removed, committed synthetic TSX fixture remains. Screenshot ../quick-multi-recovery-review-20261026.jpg; private inspected MP4/JPG ignored under repo test-artifacts. No AWS login required.
Next: wait for workflow40412858901 success and owner browser-ready reply, then fresh PC Chrome tab at app.plotthirst.com/?page=batch-create-omega, Recent batches -> Construction Site Truck Conversation -> Open batch. Continue saved source edit should preview original1815/previous0/remaining1815. Same-batch continuation is authorized within original accepted ceiling; use cost confirmation only once after verifying these values and SAME batch-create-omega_d6a9877e75a9d6631ce2389a. It must reuse first saved video e9c30b084f8044ff962d36e09af7d2a7 and settle once360, then continue remaining portions. Do not create a new batch, alter accepted ranges/prompts or use a new client token. Last source range remains60–67 despite original67.657001s; original accepted script/ranges preserved. Observe checkpoint/status/credits and final playable delivery; no claim completed until verified. If Chrome remains blocked, report exact blocker and published/pending status. Keep this post-release note/generated checklist local for next substantive release, avoiding notes-only deployment. Existing six movie-cost fingerprints remain open/unreset.
October26 — Live same-batch recovery verified
Owner replied Try again; PC Chrome access restored. Fresh page shows Build6b5acdc with Michelangelo admin still signed in. Recent batches -> original Construction Site Truck Conversation -> Open batch -> Continue saved source edit. Live dialog verified original1815/previous0/remaining1815 and available312345; saved first portion reused. Under the original specific approval, confirmed once at2026-10-26T22:45:43Z. Same job batch-create-omega_d6a9877e75a9d6631ce2389a requeued, no new batch/settings/prompt/range changes. Current form remained the unrelated saved QA draft and was not used for recovery. Screenshot ../quick-multi-recovery-live-approval-20261026.jpg.
Live admin inspection22:46:00Z: processing/split-edit-chunks/21percent; reservation res_batch_resume_caabc86f7227bfa063973fc9 reserved1815, spent360, remaining1455, overage0, available310530. First checkpoint billingSettledtrue, duration15, SAME providerRequestId e9c30b084f8044ff962d36e09af7d2a7 and SAME output filename batch-create-omega-edited-001-001_1793049566945.mp4. Thus the saved Clip1 was reused and settled once360, with no replacement render. Remaining four portions and final assembly still pending. Workflow40412858901 was still finishing ECS stabilization while new worker-first web build/preview/queue/settlement were verified live; keep final workflow conclusion separate. No AWS login or unrelated account/media changes. Next inspect Clip2 provider pickup/progress and final job delivery; do not claim all five finished yet.
Recovery acceptance follow-up: workflow40412858901 completed SUCCESS. Live page shows same original batch processing at22–23percent,1completed/0failed, Completed media/Edited chunk1 present. get_job confirms split-edit-provider stage, no error, active1815hold/spent360/remaining1455/overage0. Thus Clip2 is processing after saved Clip1 reuse/settlement; remaining output/assembly is asynchronous and not yet claimed completed. Screenshot ../quick-multi-recovered-live-20261026.jpg. New live Chrome recovery tab marked handoff for this unfinished batch; own older c03badd read-only tab closed successfully. User original tabs and QA draft untouched. No duplicate start/continuation, no new Clip1 render, no AWS login. Further status checks use this SAME job ID; do not submit another batch or increase its original1815 ceiling. Notes/checklist update remains local for next substantive release; no notes-only CI deployment.
October26 — Saved continuity and completed batch verified (read-only)
Owner asked whether Multi uses the preceding clip's final frame. Verified source code: continuity_frame extracts the last decoded frame of the SAVED EDITED output, appends it to child image references, and continuity_predecessor only selects a contiguous predecessor from the same original in multi-source mode. Fresh PC Chrome normal Recent/Open batch network response for batch-create-omega_d6a9877e75a9d6631ce2389a confirms result.splitEditPlan.splitEditContinuity=true and splitEditSetup.splitEditContinuity=true. Five predecessor indexes are0,1,2,3,4 in both reviewed chunks and delivered output records, so portions2–5 follow their immediately preceding edited portion. Current source-edit option defaults on; ordinary independent Multi generation is not implicitly chained by this mechanism.
Live MCP reports completed/batch-create-omega-complete. PC Chrome review confirms5completed/0failed,100percent, Final video Play preview/Download final video/See prompt and all five edited deliveries. No new render, retry, debit or settings change was performed for this read-only check. Final preview/quality and final ledger total were not separately inspected in this turn; do not claim those were verified. Recovery source release remains6b5acdc; no notes-only deployment.
October26 — AI video prompt drafting length and language
Owner asks for1900–1950-character prompts and whether length caused Chinese output. Confirmed the copied Quick Multi AI instructions previously had no such target. Updated the shared Copy/View guide for VIDEO only: target1900–1950characters per newly written/revised-at-request Prompt body, maximum1950, count spaces/punctuation/newlines and exclude clip heading/metadata, verify each count, no counts inside submitted creative text, no padding shorter complete text or silent rewrites of finished prompts. Preserve requested/request language and exact dialogue/spoken language, reference identity, edits/timing/audio. No translation to Chinese merely to save characters; ask about irreconcilable length/clip-count conflicts rather than deleting requirements or adding clips. Music/Suno instructions unchanged. Refreshed ../quick-multi-source-edit-ai-instructions.txt so the owner can hand the current guide to their other AI chat.
Read-only runtime finding: Quick Multi passes composed prompt plus source-edit/reference policy text to perform_video_create_backend -> backend_limit_video_prompt_for_provider. For the current Atlas route the code applies a3600UTF8-byte budget; over-budget text can invoke backend_rewrite_provider_prompt_for_limit with language zh-CN. This is a possible/direct-path mechanism, not proof for any particular job's observed Chinese text. Other production workflows can deliberately choose Chinese independent of overlength. A1950-character body is not a guarantee against a rewrite because appended instructions and UTF8 bytes also count. This change is AI-authoring guidance only; no backend limiter/language policy, accepted prompts/jobs, paid planner calls, prices/reservations/debits/discounts, own-key handling or production settings changed. Existing billing inventory unchanged; no new cost path. Broader operating-cost gaps and six stale movie-cost fingerprints remain unresolved/unreset.
Verification: existing AI-instruction contract suite/export, TypeScript, production bundle, Node/Python syntax, whitespace and unchanged billing inventory pass. Build retains existing bundle warning. No new mirror tests for this low-impact wording change, no paid jobs or customer-data changes. Preparing normal completed-repair source publication; website Copy/View acceptance remains distinct from a successful Git push. Local updated text export is available immediately.
October26 — Stitch export resolution disclosure
Local implementation and PC Chrome mobile verification: Quick Multi stitch control plus validation/approval clearly state720p for16:9/9:16 and preserve higher-resolution individual clips in ZIP.1080p/4k warn; square/source shape exceptions describe actual1080square/1280longest-side limits. One-clip delivery retains original resolution. Solo split and playlist controls share accurate bounds; final batch delivery shows returned dimensions when available. UI only; no encoding, prices, jobs, files or billing behavior changed. Summary/AI guide/lazy delivery tests, TypeScript and production build pass. Screenshot stitch-resolution-mobile-20261026.jpg; no paid start. Source publication/hosted acceptance pending, existing movie-cost stale fingerprints retained.
Publication update: source c80333b, including AI guide7767a76, pushed to production/main. Rollout40427293170 is in progress; hosted acceptance remains pending. Local mobile/type/build checks are complete.
October27 — Official image reference metadata
Local verified update: Image references:, Video references:, Audio references: organize Quick Multi; legacy Reference:/References: remains generic. Every header can recover a uniquely identified misplaced upload with a warning; matching typed headers disambiguate same-name media, ambiguous mappings/duplicate images stop before pricing. Canonical saved quote items remain typed; source-edit timeline, quote/worker subsets and model limits remain enforced. Copy/View guide, upload labels, MCP tool description, ZIP preflight and image reordering updated without changing user creative text.178 focused Python checks plus final23-case header suite, ZIP7, AI guide/reference order, TypeScript/build pass; no paid jobs or data/account changes. Chrome mobile proof quick-multi-image-reference-headers-20261027.jpg. Source publication/hosted acceptance pending. Prior c80333b deployment40427293170 completed/success. Same six cost-monitor stale fingerprints remain open.
Publication update: reference-header source72feaf7 pushed to production/main; workflow40520427984 queued. Local validation is complete; hosted acceptance remains pending.
October 28 — Atlas media models and runtime list pricing
Added Kling 4.0 text/image/reference generation and single-source Video Edit, PixVerse V6 Max text/image generation, and MiniMax Speech 2.8 HD/Turbo. No Atlas language models added. Text/image Kling rates match the owner’s ten-second screenshots before discount; ESR totals are inclusive. Reference/edit uses the non-generating Atlas calculate origin_price including measured input-video seconds and fails closed when unavailable. PixVerse audio changes its rate; speech counts only the script. Account multipliers/discounts remain runtime rules; accepted new Quick Solo/Multi units are saved and reused at settlement. Decimal credit ceilings fix binary-float over-rounding. Existing provider/operating allowances, own-key expense exclusions, reservation/event deduplication and failed-work releases are reused; known operating-cost recovery gaps remain, without a new surcharge or parent debit. Local 81 focused tests, typecheck and build passed before final review; paid rendering, live calculator responses and hosted UI remain unverified. Existing six movie-cost fingerprints remain open and were not reset. Publication pending.
Publication update: Atlas media source bcbee0c pushed to production/main. Deployment 40680477565 is in progress (Build and push image). Local 81 Python checks, generator/menu/guide/reference Node checks, TypeScript, production build, syntax and billing inventory passed. Live calculator/rendering and hosted UI acceptance remain pending; six existing movie-monitor fingerprints remain open.
October30 read-only acceptance follow-up: Latest Solo WAN edit quick-create-omega_6b59f6eeeb3c483a80 planned two9.6s portions from19.2s; first retained output is19.000s picture/19.040s container, rejected by frozen15s per-portion ceiling.375 reserved credits released, spent0. Atlas Auto is smart duration, not guaranteed source match; both reviewed prompts still request19s. Exact source cut/provider receipt not yet directly inspected. No code/cap/quote/job change or retry; match-source wording and prompt scope remain open. See repo session handoff.
October30 unsplit WAN Auto repair: Split OFF + Auto now accepts whole source videos totaling up to30s for WAN3/Prime Solo editing; >30 rejects before pricing/provider work. New quotes reserve/freeze30s per variation; measured settlement, stable debit IDs and unused-credit release preserve that ceiling. Existing fixed/split/Multi/audio limits and historical approvals remain; original failed19s split run untouched.99 focused Python checks including real media, TS/build/syntax/static billing pass. Hosted UI/new paid-render acceptance pending; no new paid call. Existing overhead gaps and six stale movie-cost fingerprints unreset.
Whole-site acceptance — 20 functional areas
Plotthirst whole-site functional launch matrix
November1 WAN/Prime uploaded-video timing (local)
New provider screenshot establishes degenerate frame timestamps in the input file; earlier link repair87204a1 is live but did not correct file timing. Shared WAN/Prime preparation now inspects saved video/data inputs and normalizes only irregular timing in a temporary copy before upload, covering Solo and Multi. Original Library media stays intact. Duration and held final frame, audio presence/end alignment, dimensions and rotation are checked; failed repair blocks generation. Healthy video passes unchanged, third-party URLs add no new server fetches, other model preparation stays compatible. Atlas errors redact long URLs before the display cap to preserve rejection details.223 local regressions pass, including real malformed MP4s and status-error parsing; exact customer media and paid Atlas acceptance remain pending. Final checks/publication follow. No price/account changes or hidden paid retry; repair overhead is platform-funded, existing cost-review gaps remain.
October31 Solo/shared Atlas saved-video inputs (local)
7292400 dialogue repair is confirmed live. New source handoff repair routes owned signed-S3 video inputs through the existing saved-file reader/deletion guard and Atlas uploadMedia, rather than relying on temporary S3 signatures at provider fetch time. Input bytes and selected generation options stay intact; foreign/external URLs do not gain privileged reads; Seedance still prepares its inputs. Source-read, size and transfer failures stop before render with meaningful stage messages.201 local Python regressions and static billing inventory pass. Transfer repair overhead remains platform-funded; no paid calls or customer job retry/refund, source deletion or settings change. Exact screenshot/error-account acceptance unavailable: expired AWS access and repeated Chrome binding timeouts. Final syntax/readiness/publication/hosted build checks remain; prior cost-review gaps are not closed.
October30 Solo AI preparation dialogue preservation (local)
Confirmed prior release04eff4f succeeded. New local repair distinguishes actual quoted speech from quoted labels/instructions and checks speech inside the existing correction loop. New preparation requests use internal speech IDs restored to exact original text before review/character counts; original input/hash stays unchanged. Legacy approvals retain their frozen behavior. Timing/order,1900–1950 target,3000 review ceiling and final provider limits remain. Complete saved false-positive dialogue failures may recover through owner-only setup reload, without AI, writes or charges; genuine omissions remain blocked.141 Python regressions plus Node preparation-action checks pass, including multi-group repair and read-only recovery. No live recovery of the owner's screenshot job or paid semantic acceptance claimed. Final syntax/billing/readiness/publication checks remain separate; existing six cost-review gaps remain.
October30 AI draft review and length-only failure recovery (local)
AI preparation targets1900–1950 with existing automatic correction; a valid full draft outside that target can reach explicit review up to3000 characters. Character count alone no longer discards the plan after correction. UI gates/help match; repeat remains strict, timing/order/dialogue and final provider limits remain. Exact-owner setup reload can read complete saved failed drafts without new AI, job writes or charges; real checkpoint hashing, missing/foreign/invalid refusal and unchanged original input are covered.114 Python checks plus Node UI/action tests, TS/build/syntax/static billing/readiness pass; publication pending. Existing c43de4b import repair is live with healthy workers and stable-service log evidence. No paid semantic/actual account recovery acceptance claimed; stale cost/infrastructure permission gaps remain separate.
October30 Solo preparation server failure repair (local)
c9b0260 preparation interface is confirmed deployed. Local browser preview verified preparation controls and canceled cost review without starting work, including390px layout without horizontal overflow. Owner's sys error reproduced in actual AppHandler dispatch: branch-local imports left sys uninitialized for both planner endpoints. Entry import fixes it. Ten HTTP-dispatch regressions and30 planner/admission/storage/reuse tests pass; UI routing/syntax/static billing checks pass. Publication and hosted server verification pending; no paid semantic acceptance or automatic retry claimed. Pricing/accepted contracts remain unchanged.
October30 Solo edit preparation usability (local)
Preparation controls now appear by the edit prompt, including before a plan exists and during saved retries (read-only explanation). Missing AI prompts route both main actions to existing AI-only cost confirmation; returned portions remain editable/reviewable before video generation approval. Node tests exercise the actual action closures and confirm canceled preparation cannot reach video estimate/start. Final TypeScript/build,30 Python planner/storage/reuse regressions, syntax, billing and readiness checks pass. Publication and actual browser/paid acceptance remain separate. Prior b0068c8 build is confirmed live.
October30 local editor acceptance boundary
76d6bc8 is pushed; workflow41078309402 is rolling workers before web. Fresh-login follow-up tests restore the completed AI plan plus original input from its exact owned preparation job; no new video call occurs.158 distinct Python checks pass, including30 final planner/storage/setup regressions. Runtime/paid browser acceptance remains separate; inspect current CI and public build-info for deployment status. No pricing change or extra repair call for the recovery follow-up.
Implemented optional reviewed prompt preparation with repeat/timed/idea methods,500000-character AI input,100 local-timed prompts and25min source support. Submitted new bodies validate1900–1950 characters; exact long input and all prompts survive owner-scoped storage/fresh setup recovery. New WAN source edits cap15s, send explicit source-based whole-second provider requests and verify/match fractional picture/audio before delivery. Saved output recovery avoids another render. Historical approvals and the existing submission/billing/stitch pipeline remain.156 distinct Python tests, final frontend typecheck/build, syntax, billing inventory and readiness checks pass. Final aggregate checks/publication, hosted mobile browser and paid AI/video semantic acceptance remain pending. This does not certify whole-site readiness or close existing six stale cost reviews/overhead gaps.
Prepared September 6, 2026. Companion to PLOTTHIRST_LAUNCH_CHECKLIST.md. The latter tracks known release blockers; this file covers the whole product.
This is a requirements/source inventory, NOT a completed live whole-site audit. Evidence reviewed: master handoff sections 4-20, current index.html and TypeScript menu registry, subsystem plans, Session D acceptance records and local referral changes. Session A remains the original product authority; this pass did not re-read its complete conversation. Do not interpret unchecked items as new bugs.
Input-to-output workflow checklist — September 15, 2026
September 18 follow-up: character development is a prerequisite, not satisfied by an appearance reference. Local Story Writer preparation/repair and downstream performance-context preservation are implemented and tested with mocks. Preserve pre-story baseline plus ongoing character updates. Live/imported workflow and generated-acting acceptance remain pending; see the character-depth audit.
These paths describe the user-facing journey. Internal planning stages may still run between the named outputs. Tested below means the project owner's reported experience, not a new end-to-end acceptance audit or proof of a finished full movie.
Owner reports tested
- Idea → video.
- Idea → book → video.
- Idea → book → screenplay → video.
- Book → video. Owner confirmed September 16: the video planner originally worked directly from the book, before the screenplay workflow was added.
Untested paths to verify
- Acceptance open: Screenplay → book → video.
Requested path not yet established
- Acceptance open: Idea → screenplay → video, without requiring a book first. Verify direct screenplay creation, continuity, segment planning and the generation handoff; changing the output format alone does not establish this complete workflow.
Future workflow ideas
- Acceptance open: Video → book.
- Acceptance open: Video → screenplay → book.
The reverse paths are proposed for adapting or extending existing stories. They are ideas to scope and validate, not currently verified capabilities. For each path, capture input, intermediate artifacts, playable output and saved-project recovery before promoting it to verified live in this matrix.
Actual page inventory
Current source registry contains 23 tabs, plus the separate admin-only Workflow Viewer route (/admin/workflow-blueprint):
- Public: Showcase.
- Primary: Quick Solo, Quick Multi, Ultimate.
- Upcoming / focus: Library, Video Editor.
- Development / not in focus: Stories, Tools, Community, Pipeline Flow Automation.
- Archived: Quick Create Alpha, Ultimate Alpha, Start Long Video Idea, Project Progress, Pre Project Setup, Characters, Locations, Props, Boards, Prompts, Estimate.
- Admin. Story Writer is also a registered tab without a primary-menu entry.
Menu grouping is not proof of live authorization or feature completion. Archived pages can have shared functionality still required by current workflows. Do not rebuild or promote archived pages merely to complete this inventory.
Acceptance requirements by function
For every function offered at launch record: exact build, account role, client, input/fixture, expected output, actual result, balance before/after if relevant, persisted artifact/job IDs, and evidence. Use statuses: verified live, local-only, known defect, needs verification, or deliberately unavailable at launch.
1. Showcase and first visit -- needs current acceptance
- Acceptance open: Public landing loads on desktop/phone without admin data or a stuck loader.
- Acceptance open: Featured media playback, links, sign-in entry and published pricing/help work.
- Acceptance open: Public content is explicitly published, not a private user artifact by default.
2. Accounts, membership and settings -- partially verified live
- September 16 local troubleshooting trial: Admin Open as user, 30-minute session, return banner, audited draft edits, and separately confirmed admin-paid Quick Solo video tests. User keeps output ownership; admin pays reservation/debit/ release. 37 focused tests passed. Broader workflow coverage and hosted acceptance remain open; sandbox browser verified entry/banner/return to admin. See docs/ADMIN_TROUBLESHOOTING_2026-09-16.md.
- Acceptance open: Admin-created onboarding or separately implemented open signup works.
- Acceptance open: Login/logout, account switch, session expiry and saved preferences work.
- Recorded evidence: Password-reset email and one-time reset acceptance recorded live.
- September 16 local update: recovery email includes the account username and explains signing in with email or username after resetting. Login labels/help expose both options. Sixteen auth/recovery tests passed; updated copy awaits deployment and live email verification.
- Acceptance open: Regular/test/admin views enforce permissions on the server.
- Acceptance open: Monthly membership collection, insufficient credits, reactivation and lifetime exemption behave correctly. Lifetime does not imply free generation.
- Acceptance open: Own-provider-key access and discounts appear only for eligible accounts.
3. Quick Solo -- source present; whole-function live acceptance outstanding
- Acceptance open: Offered text/image/reference-to-image and video modes honor input and model.
- Acceptance open: Image edit, video edit, extend and first/last-frame loop modes validate inputs.
- Acceptance open: Named references, output duration/resolution/aspect and optional pack conversion survive estimate, confirmation, execution and library storage.
- Acceptance open: Output is recoverable after leaving the page; failed job does not look complete.
4. Quick Multi -- source present; needs batch acceptance
- Acceptance open: Multi-prompt/file parsing, delimiter instructions and named references work.
- Acceptance open: Per-item validation/failures preserve successful items and original order.
- Acceptance open: Retry does not rerun successful paid items; failed/unused charges reconcile.
- Acceptance open: Separate outputs, optional ordered stitch and ZIP are actually downloadable.
5. Ultimate -- repaired paths; live visual acceptance outstanding
- Acceptance open: Offered video, music-video and comic branches show appropriate stages/costs.
- Acceptance open: Story/reference/planning choices and review pauses persist through continuation.
- Acceptance open: Closing browser, refresh, reconnect and deployment do not lose the production.
- Acceptance open: Parent/child status, retry, cancellation and final delivery match actual work.
- Recorded evidence: Recorded provider-free delivery suite passed; not a paid-generation quality test.
6. Story Writer, Stories and supplied books -- needs contract acceptance
- Acceptance open: New stories retain chapters, canon, characters, props, locations and history.
- Acceptance open: Long supplied text/PDF receives full chunk coverage without silent truncation.
- Acceptance open: Supplied-story conversion produces the same downstream contract as Story Writer.
- Acceptance open: Continue/branch/reuse existing books and resume interruption only where supported.
- Acceptance open: Story files and offered book exports reopen and belong to the correct project.
7. Screenplay map -- needs focused multi-run acceptance
Local UI: Sample project is beside Dashboard for fresh projects; it opens the prebuilt sample screenplay controller. Back to my setup preserves the draft. Real-project persistence and production acceptance remain separate.
- Acceptance open: Stable segments show source passages, dialogue, timing and reference context.
- Acceptance open: Multiple takes, selected regeneration and recasting preserve prior media.
- Acceptance open: Run A fills one subset; run B fills another without regenerating A.
- Acceptance open: Stitch B alone or A+B in map order; existing-clips-only stitch makes no new provider call. Trailer/focused selections remain reusable for the full movie.
8. Character / location / prop references -- known acceptance gap
- Acceptance open: Preserve uploaded identities and names across source, canonical entity and packs.
- Acceptance open: Produce separate requested official angle packs from mixed-subject images; do not assume exactly two subjects or only characters.
- Acceptance open: Keep versions, classification and selected references through downstream stages.
- Acceptance open: Reuse saved references instead of inventing replacements or charging twice.
9. Boards, lenses and prompt handling -- needs acceptance
- Acceptance open: Boards depict the local segment event with consistent references.
- Acceptance open: User lens/style/dialogue language survive planning and provider finalization.
- Acceptance open: Provider limits are validated without silently cutting required content.
- Acceptance open: Regular users see their own inputs; proprietary/internal prompts remain protected.
10. Music and audio -- needs mode-by-mode acceptance
- Acceptance open: Preserve style and lyrics separately, including returned multiple candidates.
- Acceptance open: Review/approval state and candidate playback survive reopening the workflow.
- Acceptance open: Duration/fill behavior and native-only, music-only and mixed-audio deliveries work.
- Acceptance open: Charge one generation correctly when the provider returns multiple songs.
- Acceptance open: Non-music workflows avoid irrelevant song controls; longer audio arrangements preserve scheduled placements where the feature is supported.
11. Comics -- provider-free coverage; real output acceptance outstanding
- Acceptance open: Ordered image/text/book input, faithful/loose adaptation and page count work.
- Acceptance open: Comic-only output omits irrelevant video/audio stages and charges.
- Acceptance open: Cover candidates/regeneration, pages, PDF and ZIP are valid and accessible.
- Acceptance open: Whole-book allocation is not accidentally one page per chapter.
12. Video Editor -- upcoming page; readiness not established
- Acceptance open: Import, reorder, trim/split, speed, audio/volume and supported transitions work.
- Acceptance open: Timeline/draft survives reload and device switch; preview matches export.
- Acceptance open: Export runs durably on the backend, with accurate costs and usable output.
- Acceptance open: Verify actual supported controls; roadmap aspirations are not implemented claims.
- Acceptance open: Future narrated recap workflow: accept an uploaded movie/video or a completed Plotthirst production, explain the complete plot and twists through concise narration precisely aligned with trimmed source clips. Example 120 min -> 10 min; duration configurable. Planned only; separate release scope. Source traceability, preview/editing and platform exports required. See MOVIE_RECAP_FEATURE_REQUIREMENTS.md.
13. Processing, stitching and upscaling -- partial delivery evidence
- Acceptance open: Selected clips assemble in intended order with valid audio/video timing.
- Acceptance open: Offered upscalers/optimizer preserve chosen output settings and quote correctly.
- Acceptance open: Alternate audio exports reuse appropriate work; interrupted export can recover.
- Acceptance open: ZIP/PDF/video are validated and downloadable, not merely marked 100 percent.
14. Library, projects, storage, search and sharing -- partial live evidence
- Acceptance open: Upload/import, folders, reference naming, search and file preview work.
- Acceptance open: Rename/project selection preserve IDs and all associated files.
- Acceptance open: Fix recorded saved-project ID mismatch with a targeted operation.
- Recorded evidence: History lookup and sampled authenticated downloads verified in recent repair.
- Acceptance open: Verify intentional sharing, revoked/expired links and tenant ownership.
- Acceptance open: Delete/retention behavior protects unrelated media; user drafts survive devices.
15. Tools and Pipeline Flow -- development pages; verify offered scope
- Acceptance open: Inventory actual available tools, prerequisites and configured workflow branches.
- Acceptance open: Nodes/settings persist, invoke the same durable backend and show truthful status.
- Acceptance open: Diagnostic views protect internal prompts/credentials and obey account permissions.
- Acceptance open: Explicitly gate unfinished tools; do not assume a rendered node means execution.
16. Community / social -- development; separate release decision
- Acceptance open: Before public enablement verify publishing consent, visibility, feed behavior, reports/moderation, deletion and any offered comments/likes/follows/remixes.
- Acceptance open: Keep private source material private; gate marketplace/creator payouts until ready.
- Acceptance open: If unavailable at launch, label/gate it rather than representing it as working.
17. Billing, referral and owner allocations -- mixed status
- Recorded evidence: Live one-time purchase/credit delivery and matching receipt/fee notice recorded.
- Acceptance open: Complete runtime cost coverage, estimate/reserve/debit/release and concurrency audit.
- Acceptance open: Accept recurring payments/renewals/refunds for the options offered at launch.
- Acceptance open: Deploy referral tracking: direct Plotthirst root, code owner, immutable parent link.
- Acceptance open: Rewards stay inactive until their eligibility, ledger and activation policy pass.
- Acceptance open: Owner credits/Connect remain proposed future work, not existing payment behavior.
18. Admin and support -- partially verified
- Acceptance open: User search/create, roles/lifetime/discounts, credit edits and audit trails work.
- Acceptance open: Pricing/catalog changes persist and do not alter already-approved job quotes.
- Acceptance open: Workflow tree shows parent/child IDs, errors, retry state and real artifacts.
- Acceptance open: Support contact, operational email and emergency controls are usable.
- Acceptance open: Actual AWS bill import reconciles estimates without double counting costs.
19. Mobile, MCP and external API -- shared backend; client acceptance outstanding
- Acceptance open: Verify phone website and separately the native mobile track being offered.
- Acceptance open: Plugin/external clients preserve models, references, resolution and project IDs.
- Acceptance open: Estimate/submit/status/history/download and reconnect use the same owned records.
- Acceptance open: Scoped/revocable credentials and normal-user response privacy work.
- Acceptance open: Test an external ChatGPT plugin session; do not infer Claude/Grok or all MCP client compatibility without testing those clients or narrowing support claims.
20. Site-wide reliability/security -- verify current controls
- Acceptance open: Tenant isolation, server admin authorization, secrets/static-file protection.
- Acceptance open: Abuse limits, safe concurrent spending and deduplicated submissions.
- Acceptance open: Durable recovery, backups/restore, alarms, failed queues, spend controls, rollback.
- Acceptance open: Desktop/mobile navigation, dialogs, errors, loading, keyboard access and downloads.
- Acceptance open: Agree supported load/quotas; small smoke results do not prove massive concurrency.
How to finish without an endless repair cycle
First classify all functions against existing evidence and current launch exposure. Then run a bounded acceptance matrix, reusing fixtures and existing outputs before requesting paid provider tests. Repair reproducible failures, not every older roadmap idea. For each exposed function, require acceptance evidence or deliberately gate it. Upcoming/archived labels alone neither exempt backend dependencies nor authorize promoting those pages. Record test evidence separately from implementation claims.
Local follow-up: Sample preview now has Exit sample beside Dashboard; Dashboard also exits to the original project dashboard. Exiting preserves the user setup. Frontend build/typecheck and sandbox navigation verification apply; not deployed.
Local Start ordering: project type (Story video, Music video, Comic book, Character Mini Showcase) now precedes title and prompt, then creation/source settings. Reset is below the creation settings. Existing mode handlers are unchanged. This UI ordering is local; production workflow acceptance remains open.
September 7 sample segment audit (local): sample preview was a separate simplified panel, not the full saved-project controller. Added selectable segment cards and an inspector identifying source/page context, missing segment planning, references, storyboard and takes. Existing sample contains no generated clips or segment action breakdowns. Do not call it a fully produced sample. A representative planned and partially generated sample plus parity with the saved-project controller remains an explicit acceptance gap. No paid generation was run in this pass.
September 7 navigation follow-up: sample now exposes Screenplay, Lens, Input Ref, Media, Workflow, Video, Audio, Cost and Submit tabs. Non-screenplay tabs are explicit read-only guides, not saved settings or executable operations. Sample parity with a real populated project remains open. No paid jobs or deployment.
September 7: interactive sample settings prototype added inside segment inspector. Project defaults -> page -> segment overrides, field provenance/reset, step controls, batch copy of explicit overrides and effective-settings review. In-memory preview only; no backend persistence, pricing, capability validation or execution wiring. Production inheritance remains to implement and verify after design review.
September 7 sample design revision: removed global numbered sample steps; scoped settings retain their internal steps. Added visual segment-batch-clip-approval board with reversible placeholder take approvals and requests for changes. Explicit demo only: no actual clips, generation, saved approvals or assembly. Real media approval and backend settings inheritance remain open acceptance/implementation work.
September 7 local UI: Ultimate right sidebar moved into top Production overview button view (current mode, progress, last run). Workspace uses full width; Back to workspace restores it without unmounting draft/sample state. No production deploy.
September 7: admin explicitly authorized 120 seconds total sample generation, 60s overall and 60s focused scene. Prepared SAMPLE_TWO_MINUTE_ACCEPTANCE_PLAN.json. MCP admin connection verified (340329 credits at check); no paid jobs submitted. Canonical sample import currently awaits live website admin login. Model proposal: Grok Imagine Video Reference, 720p, 16:9, 10s clips, pending authoritative quote.
Sample sequence correction: add segments across pages into one screenplay-ordered sequence, deduplicate stable range IDs, label page/segment/time/layout on every entry and take, and configure take count per segment. Existing demo takes/reviews are preserved. Focused duplicate/cross-page/take tests pass. Local prototype only.
Local playback: Play movie loads saved screenplay segments, ordered by page/time, using selected or first playable take per segment, independent of batch selection. Separate in-memory custom playlist supports reorder/omit; durable playlists remain open. Sample shows no-real-clips message and its own Production overview, not the underlying project run. Real-media playback acceptance remains pending.
Local UI: permanent Playlists toolbar entry beside Play movie in all Ultimate contexts. Empty state keeps creation visible but disabled until clips are loaded, and explains reorder/omit behavior. Custom playlists still in-memory only.
Local playback UX: movie/playlists now open in a focused modal view with native focus isolation, Close and Escape, preserving the underlying workspace. No inline player panel. Real clip playback and saved playlists remain acceptance gaps.
Local playlist preview now selects stable screenplay segments with or without clips. Missing media plays timed title/source cards; actual selected takes use video metadata duration and ended events without trimming/padding to planned time. Sample cards explicitly show page context, not invented segment-specific actions. Playlist persistence and real mixed-media acceptance remain open.
Local player now includes whole-playlist elapsed/total/remaining time and a progress bar alongside segment progress. Totals use planned lengths until a take loads, then use its actual duration, keyed by segment and take URL. Pause/restart/next update the combined timeline. Real mixed-media timing still needs acceptance.
Local player layout: whole-playlist timing now sits immediately below the existing clip timer/progress during playback, rather than above the player.
Local navigation consolidated into one always-visible Player button; movie order and custom playlist actions remain inside. Current playback loads one clip URL at a time in native video, not a stitched/HLS continuous stream. Prefetch, signed URL refresh, buffering transitions and real/mobile long-play acceptance remain open.
September 7 continuous pre-stitch preview: local HLS engine and independent per-take preparation added; no combined movie render. Synthetic Chrome movie/reverse/omit/ 400ms-delayed-fragment tests passed with one video element and no boundary stalls. One 26ms startup wait occurred. Actual project descriptors are not wired yet; production remains on per-clip fallback. Authenticated preparation/delivery, URL refresh, exact timestamps/audio, mobile and long-play/recovery acceptance remain open. See app-repair/docs/PRE_STITCH_STREAMING.md. No paid generation or deploy.
September 7: sandbox website Player now offers a clearly labeled synthetic continuous-playback demo, with the same movie/custom playlist controls and Return to project playlist. Fixtures are local-only and excluded from git. Real project media integration remains open. Build and browser loading verified; no deployment or paid generation.
September 7: screenplay sample segment cards, details and production sequence labels now show planned whole-movie mm:ss and absolute seconds beside page-relative seconds. Cards use cumulative preceding block durations; canonical sequence IDs use the sample's fixed 60-second pages. Actual take playback timing remains separate. Local UI change only.
September 7: sample settings enforce frame shape at Project defaults only, including effective review values; page/segment edits cannot override it. Provider/model free text replaced with available catalog choices and stable provider:model values. Production capability validation and backend enforcement remain acceptance work; this change is the sandbox sample workbench.
September 7: sample provider/model dropdown now requires explicit ultimateEligible=true AND reference-to-video/multi-reference-to-video capability, an available model and a provider not marked Ultimate-unready. Generic text/image-only and coming-soon models excluded. Local sample selector correction; full production selector/backend eligibility audit remains open.
September 7: sample page/segment model selector shows Project default when inherited, with the resolved model underneath. An explicit page override is labeled Page default for its segments. Selecting the inherited option clears the local override. Only approved Ultimate reference models remain selectable. Local preview only.
September 7: sample project initializes an actual eligible model from current website admin defaults through a narrow read-only bridge; removed Choose approved placeholder. Ineligible defaults fall back to eligible same-provider then canonical Atlas reference model. Project default model label always visible in teal during overrides. Admin default controls already exist; global default was not changed. Sample changes remain temporary; saved-project integration remains open.
September 7: sample settings show one teal Project default value per field, including shape/resolution; model labels omit provider prefixes. Resolution starts at 720p and choices use model supportedSizes, or clearly labeled provider-level catalog fallback where model metadata is absent. Unsupported retained preferences are flagged rather than silently changed. Frame-shape warning now precedes its control; per-page/segment lock remains. Backend capability validation remains open.
September 7: sample Lens now receives actual fresh-start saved preset checkbox choices; Audio receives actual mapper/layer options and current defaults, with Audio map/location/event/bridge checkboxes and the active ambience-only restriction. Creative notes are textareas. References exposes an empty disabled asset selector instead of implying text supplies images; actual sample assets remain missing. Review resolves these fields and states missing plans/references/quote. Whole-song settings remain project-level. This is sample UI parity work, not durable settings or backend submission integration.
September 7: removed Event sounds and Bridge sounds controls from fresh-start Ultimate and sample screenplay settings per user request. Location sounds remains. Both removed flags are now fixed false in frontend estimates/drafts/submissions; old draft flags cannot reactivate them. No backend operation added. Local only.
September 7: screenplay-led planner audit found page-level screenplay/dialogue/visualPlan fallback in timing-range conversion, including empty-dialogue inheritance; materialization copies into clip boards. Repetition risk remains OPEN; historical MCP causation unverified. Proposed ownership, validation, admin prompt trace and mixed generated/ungenerated sample acceptance in app-repair/docs/SCREENPLAY_LED_VIDEO_PLANNING.md. No runtime planner changes or paid jobs.
September 7: first screenplay-source repair removes page action/dialogue/visualPlan fallback from timing ranges, preserves explicit silence, blocks unassigned segment generation and removes book substitution in segment planning. Runtime prompt packet uses screenplay text when enabled; missing screenplay raises instead of book fallback. Book and direct-idea routes retained. Five new source-contract tests and 24 existing segment tests pass; billing inventory unchanged. tools/export_screenplay_prompt_packet.py exports a local preflight packet without provider calls. Full downstream rewrite/cache audit and admin final-provider-prompt UI remain OPEN; no deployment or paid jobs.
September 7: shared source-contract guard now prioritizes screenplay, then enabled Story Writer, then explicit direct idea. Missing book excerpt blocks idea fallback. English/Chinese video and storyboard renderers use the same source; English scripted dialogue preserves exact wording. Nine source tests plus 24 existing segment tests passed. Admin sample panel exports page context and explicit missing assignment/reference/take/final-prompt status; CLI export includes deterministic prompt before provider adaptations. Remaining: persisted source/revision fingerprints and cached prompt invalidation, downstream paid rewrite acceptance, real sample planning/assets/takes and live admin final-provider-prompt generation. No paid calls or deployment.
September 7: Dashboard now has top-level Switch project via existing run lookup (active-run lock preserved). Sample cost overview shows spent=0 sample credits, segment/page/project quote-required states, override counts, and selected-batch take count/quote state. Server ledger/quote integration and numeric gauges remain OPEN; design in docs/SCREENPLAY_PRODUCTION_BUDGET.md. No guessed prices or paid work.
September 7: admin sample prompt tools moved inside This segment above settings tabs. Explicit Show prompt creation plan toggle, Copy review packet, and disabled Generate prompt entry explain missing assignments; final prompt generation remains unwired. Connected MCP admin account verified. Sample assets may be imported for visual demonstration but cannot substitute for backend reference/storyboard acceptance. Own-key prompt-review variant deferred per user. No paid jobs submitted.
2026-09-07 — Sample HD Pro reference library
- Local sample reference gallery and project/page/segment preview checkboxes added for 6 characters, 7 locations and 5 props. Each uses the actual backend canon production-pack prompt, multiple angles and continuity DNA. Generated with built-in Codex/ChatGPT; no Plotthirst API charge or user job.
- Assets and exact generation prompts: app-repair/static/sample-references/quiet-signal-v2/. Original canon retained separately from generated visual elaborations. Packs are prepared for review, not automatically approved as production locks.
- Remaining acceptance: visual continuity review (including Mara belt prism versus standalone prism, exact counts/geometry and Archive Threshold upward light), segment assignments, admin final-prompt review, then storyboards and approved video generation. Reference selection remains a preview; production import/assignment and deployment are not claimed complete.
- Typecheck and frontend build passed; local sandbox gallery verified visible. Existing bundle-size warning remains.
2026-09-07 — Menu portraits and alternate casting
- Local sample: separate sheet-derived single-angle menu portraits for all 18 references; click opens original full pack. Display URLs excluded from prompt review reference packets; production reference URL remains unchanged. Built-in Codex/ChatGPT generation, no Plotthirst API image charges.
- Planned: rehire/recast character, location or prop via upload/regeneration, analyzed candidate DNA, immutable versions, scope selection, impacted segment/prompt review, invalidation and new takes. Preserve all old take provenance. Full specification: app-repair/docs/MENU_PORTRAITS_AND_CASTING.md.
- General backend thumbnail automation and alternate casting are NOT implemented/deployed. Local sample verification recorded separately.
- Menu portrait verification: all 18 files served HTTP 200; full-sheet SHA256 hashes unchanged; typecheck, build, syntax and diff checks passed. Sandbox portrait/link UI verified. Corrected Rook/Threshold counts and duplicate prop views.
- Local sample reference gallery and reference settings now expose Replace / recast. Click shows Not implemented yet; no asset mutation or generation request. Casting backend remains planned.
- Production reference worker menu portraits implemented locally: character/location/prop sheet -> one display portrait, persisted status/source version and estimated platform expense. Main production reference stays unchanged. Resume avoids repeating completed/failed/uncertain thumbnail attempts; failure does not discard usable sheet. Canon and screenplay menus prefer portraits and retain full-sheet access. Seven mocked menu tests + nine source tests passed; billing inventory unchanged. Not deployed/live-provider verified; recasting remains placeholder. Included platform-funded menu artwork cost exception documented; no extra debit/reservation change.
2026-09-07 — Segment reference scope
- Removed entire project reference library from sample per-segment review packet and global/page settings. Segment panel/packet now contains only its explicit selections; library is inside Add reference. No fabricated assignments for sample timing slots without individual scene plans.
- Sample additions support existing library + per-reference scene direction, or named/typed local image staging (PNG/JPEG/WebP up to 10 MB). Upload is disabled until name/type/direction are supplied. Uploaded data remains local and is excluded from JSON packets; metadata is analysis-required. No production upload/analysis endpoint or auto-generation claimed.
- Shared storyboard/video collector honors an explicit referenceAssignments allowlist, including empty; deduplicates, reports missing assets, and carries sceneDirection into prompt details. Screenplay fallback inference reads local screenplay only, not global idea/neighbor continuity. Legacy explicit board need fields still supported and need validation when importing old jobs.
- Validation: 21 unit tests (5 scoped-reference, 7 menu, 9 source), typecheck/build and local UI acceptance. Remaining: durable segment-edit API, uploaded-subject analysis/DNA/approval and integration into saved production assignments. No deployment.
- Future references and menu portraits: pure black presentation backgrounds. Characters/props have black backdrops; locations retain natural scene/sky, with black outside image bounds and in sheet gutters. Applied to normal, safe-retry and saved-prompt worker submissions. Existing images unchanged; local code not deployed.
- Local sample screenplay: consolidated duplicate page segment grids into one Screenplay segments list. Keeps checkbox batch selection, timing, inspect/settings, active inspection marker and previous/next navigation.
- Restored sample References settings tab with scoped segment assignments/additions inside it. Scope order is Segment, Page, Project; Segment selected initially. Page/project reference tab directs users to segment scope, preventing global reference inheritance.
- 2026-09-07: Customer-paid reference portraits supersede the earlier platform-funded exception for NEW reference jobs. Quotes reserve sheet + one square sheet-derived portrait per character/location/prop; stored unit pricing feeds worker debit. Browser Ultimate and backend continuation estimates include portraits. Full portraits are collected into delivery ZIP alongside sheets (not tiny menu previews). Older saved jobs retain original terms; unversioned parent reservations require a new quote, never silent expansion. 26 mocked reference/source tests passed (including quote totals and old-reservation protection); frontend typecheck/build passed; live billing, parent workflow end-to-end and downloaded ZIP acceptance still pending. No deployment or paid generation. Existing shared AWS overhead coverage gap remains in the billing audit.
- Sample provenance confirmed: scripts/build_screenplay_default_sample.py constructs both story chapters and screenplay from hardcoded CHAPTERS beats, adds repeated prose transitions, and stamps completed statuses. This sample is not verified output of the production Story Writer/screenplay workflow. Do not treat its completed markers as launch acceptance. Preserve existing canon/reference assets; replacement needs genuine production text planning with saved provenance before storyboard/video generation. No sample files removed or paid jobs started during this inspection.
- 2026-09-07 local preparation: Ultimate retains existing character/location/prop and use-as-is/HD-pack controls; added linked headshot/menu-portrait upload, setup persistence and backend preservation into canon/display/delivery, excluded from generation inputs. Supplied portraits suppress portrait generation/debit. Prepared sample-production/quiet-signal-v3/STORY_BIBLE.md (4,346 words) and ultimate-input.json with 18 named/typed existing sheets + portraits, all use-as-is. These are input artifacts, NOT submitted or verified Story Writer outputs. 28 reference/source tests, syntax checks, billing inventory and frontend typecheck pass. Port4188 is UI-only preview (POST returns409); port4180 full backend is unavailable. Need restore local provider-enabled worker setup before genuine text run; current shell lacks provider configuration. No website run, paid generation, public-sample replacement or deployment performed. Full upload roundtrip/live acceptance remains pending.
- Full local server restored on loopback4180 with local JSON backend; latest React bundle copied to static/react. Sandbox Admin sign-in verified in browser; no-provider durable worker smoke job completed. Default workflow worker started hidden; logs/PIDs in local-runtime. 4188 remains separate UI-only preview. See docs/LOCAL_FULL_SITE.md. Before authentic sample submission, repair/verify long story-bible preservation: creative brief planning currently truncates raw brief at6000 characters. No genuine text generation submitted or provider readiness claimed.
- Dedicated Story Bible input implemented locally: paste or TXT/Markdown,100000 UTF-16 character units, reject oversize without truncation, preserve full source+SHA256 in Story Writer database. Separate from supplied-book ingestion and6000-character lens brief. Initial canon-list/main-story provider requests receive full source in explicit field; later chapter requests retain source hash and existing developed-canon/handoff machinery. Prepared sample moved bible into dedicated field. 26 targeted tests pass and build/typecheck pass; full local server/worker restarted4180. No actual provider configured in current local backend; no genuine story/screenplay generated. Long-input live quality and cost coverage remain acceptance blockers; do not mark launch-ready.
- Pricing investigation: backend_estimate_story_writer_provider_text_cost passes aggregate review tokens across48 requests into per-request long-context pricing helper. This incorrectly triggers GPT5.5 surcharge on the aggregate estimate. Standard-rate comparison for12x1250 words and short idea: approximately7.51USD GPT5.5 reviews,3.42USD Terra reviews,0.97USD Luna reviews, keeping4.1-mini drafting fixed; excludes screenplay/new reasoning-token behavior/retries and additional bible input. Read-only hypothetical calculation; no model changed or run submitted. Must repair per-call estimator and verify model compatibility before relying on a budget. Current official Luna rates0.20/1.20 and Terra2/12 USD per million input/output tokens verified.
- 2026-09-07 local model review: Story Writer compact-draft and final-chapter review defaults changed to gpt-5.6-terra, independently of planningModel; explicit reviewModel overrides remain honored and new runs pin the review model. GPT-5.5 planning/canon/addendum/ending/screenplay defaults remain unchanged pending quality evaluation. The active GPT-5.4 default found in server.py is the operational AI auditor, not chapter continuity. Corrected wholesale estimate to apply long-context rates per review request, not aggregate tokens across48 reviews; added Terra rates. 34 focused tests passed without provider calls. About $3.42 baseline for12x1250 words excludes extra bible input, screenplay, retries and unmeasured reasoning; not a guaranteed full-run quote. Flat customer-credit pricing/shared-overhead gaps unchanged. No paid generation or deployment.
- 2026-09-07 LOCAL TERRA TRIAL ONLY: User expanded migration to all current GPT-5.5 operation defaults: Ultimate/lens/planning/canon/addendum/ending/prompt rewrite, reference/image analysis, screenplay, comic reading, Quick Create and worker fallback; browser request builders now send Terra. Historical pricing and explicit saved model overrides preserved. Added Terra browser prices and fixed React story-review estimate to price individual requests like backend. 65 focused Python tests and frontend typecheck pass. User requires evaluation before official website migration; DO NOT DEPLOY this experiment as accepted. Track these source/default/pricing changes for eventual production release after quality and budget review. No paid provider run. Existing saved jobs/overrides and AWS environment model pins must be checked at deployment; they can retain GPT-5.5. Public sample remains ungenerated; full story/screenplay/vision acceptance pending.
- Local sample FORM REVIEW, unsubmitted: loaded full account setup into browser4180. Verified12x1250 words,31246-character bible,120-minute screenplay target,18 named/typed sheets marked use-as-is +18 separate menu portraits, stop after screenplay, music generation/audio mapper disabled. Headshots excluded from reference-analysis source count; only full sheets are analyzed. Fixed setup-draft normalization dropping headshotUrl/headshotName and subjectDescription;18 reference/bible tests pass. Prepared input/script corrected from2500 to1250 words/chapter. User now requests form review before submission; DO NOT start paid work pending review. No provider calls or official deployment. Saved review input and pre-edit draft in sample-production/quiet-signal-v3. Local server reloaded; worker must reload latest code before future run.
- Sample form review: removed all18 sheet paths and18 portrait paths from the Story Bible and its preparation script. Bible now28019 characters; named visual canon retained,18 sheets+18 portraits remain attached separately. Updated saved form/input, unsubmitted.
- Cost form review: React calculated Terra Story Writer tokens but reconstructed the displayed story row from flat credits, falsely showing$5 provider cost instead of~$3.42 baseline. Now uses the actual Story Writer estimate row while retaining flat customer/admin package prices. Fixed-price-derived values (including screenplay$2.67) explicitly labeled provisional allowances, not model/API quotes; focused totals labeled mixed estimates. Extra bible input/reasoning/retries still excluded, so full$12 budget not yet verified. No submission/deployment. Frontend typecheck passed.
- LOCAL cover input/version upgrade: Start form accepts multiple cover image files (PNG/JPEG/WebP <=8MB each), selects exactly one default with radio controls, retains earlier uploads, and previews default on Dashboard before any run. Saved draft and new workflow payload carry selected cover and versions separately from scene references/headshots. Project creation retains them; cover canon/delivery preserve variants, automatic reference generation does not replace uploaded cover. Added5 focused tests (23 with portrait/bible suites). Backend cover prompt default now requests exact project title, short tagline, A PLOTTHIRST STORY footer per user. Generated3 covers via Codex image tool, no API balance used: first freeform concept, then old no-title production prompt, then current titled production prompt. Saved source/prompt provenance in sample-production/quiet-signal-v3. Current titled cover selected. Existing regenerate/variant selection for generated projects remains; prompt-image editing path still pending, not claimed implemented. No workflow submission/deployment. Upload images are already-made assets; no generation debit on upload, and later explicit regeneration retains normal credits. Full live upload-to-worker/delivery acceptance pending.
- PC-only key bridge implemented behind PLOTTHIRST_LOCAL_BROWSER_KEYS=1 and loopback/admin/local-storage/local-queue guards; AWS execution rejected. Browser OpenAI key passes directly to local runtime, not assistant logs/files/job records; worker inherits process environment. Hosted request behavior unchanged. Two initial sample submissions stopped before provider generation: static reference URL validation, then missing server key.18 source sheets re-uploaded via the real local /api/upload-media endpoint. Headshots/covers separate. Local bridge tests passed; live provider/sample acceptance still pending. Do not present failed submissions as generated sample outputs.
- PC sample execution update: queued Story Creation previously built files before uploaded-reference analysis. Canceled partial run ultimate_5f91691eff774e177d / swr_b0365696b3704f498d; partial text incurred API usage and is NOT official sample output. Worker now analyzes source sheets before database creation, checkpoints each result, requires usable source-matched analyses, and reuses them downstream/retries. Headshots and covers remain excluded. 22 focused tests pass (ordering/failure, retry reuse, local-only guards, story review/source contracts, cover preservation); billing inventory unchanged. This reorders existing ancillary analysis, adds no independent debit; provider usage is retained in analysis records, while exact full-run quote/own-key operating-cost coverage remains pending. Video-key preflight now permits stops before video generation, including screenplay. Corrected LOCAL run ultimate_6ab3224780358d55fe / story-creation_9ead055f373833f668 is running reference analysis with gpt-5.6-terra; stop after screenplay, no storyboard/video generation. No hosted deployment or completed-sample acceptance yet.
- Local sample stopped: ultimate_6ab3224780358d55fe / swr_a66e00c4f5364d3393 failed at Chapter_002 final draft gate after three structural reviews. All18 reference analyses succeeded; Chapter1 has expanded prose, Chapter2 is unapproved, screenplay not started. Inspection found overlapping 85-word chapter coverage anchors from Main Story 001 imposed as binding windows; saved Chapter1 and Chapter2 focus instructions both require Elias verification/test response/Prism custody/Sato contact. Reviewer correctly catches the repetition, while repair is constrained by conflicting coverage instructions. Boundary/continuity repair and regression tests remain pending; do not blindly retry or bypass gate. User requested monitoring: existing monthly audit heartbeat temporarily checks progress every5minutes, stays quiet on this known failure, and must restore original monthly automation from app-repair/local-runtime/monthly-audit-automation-backup.toml when monitoring ends. No paid retry on this inspection.
- Follow-up source audit: local is shared application code with undeployed bible/model/worker changes, NOT verified byte-identical to production. Live /api/build-info request timed out; local reports commit=local. Coverage-guard implementation matches committed HEAD e140158, so it was not introduced by the PC bridge. Failed run generated Main Story001 of964 words (6489 chars; requested mainStoryTargetWords3500). Reconstructing Chapter2 provider payload confirms storyBibleSource hash only, generated Main Story and one prior summary; full bible is first-pass input only. CRITICAL: reviewed form bible28019 chars became20015 chars in durable ultimatePayload and Story Writer database, ending midway through Chapter8 with literal ... [truncated]. creative_video_secretless_value truncates strings at20000. This invalidates full-bible acceptance and must be repaired across queued handoffs before another paid run. Overlapping85-word coverage anchors remain a separate conflict; do not conclude bible size or model quality alone caused the failure. No retry or production changes during inspection.
- 2026-09-07 local integrity repair: actual durable truncation source also found in plotthirst_job_backend.compact_value (not only recovery sanitizer). Both now preserve complete text/lists, fail on excessive nesting, retain credential redaction; durable inline-image data requires uploaded media instead of silent omission. DynamoDB existing size guard fails with artifact guidance. Recovery preserves prose content fields. Added real local create/read roundtrip test for bible and450 entries, explicit overflow/depth failures. Chapter coverage uses exclusive whole-sentence assignments and anchors confined to each assignment; no paid planning call added.17 focused tests pass; billing inventory unchanged; deployment and full-run quality remain pending. Display/history preview limits elsewhere are not claimed removed.
- Authorized fresh run submitted through local browser: ultimate_9b66a50d2f50f17c71 / bootstrap ultimate-bootstrap_4d12035c8ed8d9a7ec / story-creation_e3e4252e830f00cb55. Queued child bible28018 chars is EXACT reviewed28019-char input after trailing-newline removal, no text cut off; old storyWriterRunId absent; stopStage=screenplay. Uses existing uploaded sheets/portraits/covers, fresh analysis and story development; prior paid analyses were not transplanted into this fresh browser submission. Monitor this replacement run. Do not promote earlier truncated-bible outputs. No production deployment.
- LOCAL continuation prompt repair approved after joint review: shared rules now classify completed/ongoing/new events and put established prior state above conflicting focus/situationalAwareness instructions. mustAppearInPublicProse means reader comprehension, not replay. Planner/focus/initial writer/repair/draft and expanded reviewers distinguish inherited state, continued activity, signposted recap, ambiguous tense and actual re-enactment. Review asks for current excerpt plus prior evidence and smallest specific correction; repair may override stale plan while preserving new developments. Existing rejection gate is unchanged. Added provider-boundary interception tests covering initial writer, awareness and repair with conflicting prior-state/plan fixture;11 focused tests pass; no provider calls or paid retry. Added prompt tokens only, no new operation/debit; billing inventory unchanged; complete cost quote validation remains outstanding. Current stopped job and saved outputs unchanged; updated code needs runtime reload before future execution. Five-minute monitoring is OFF; original monthly audit restored. Prior chapter full-text handoff and summary/state compaction remain separate unresolved work, not claimed fixed. No deployment.
- LOCAL situationalAwareness intent correction: user clarified this is character decision analysis (objectives, motives, knowledge/beliefs, constraints, options and reasons for a next choice), not a binding scene/bridge checklist. New schemaVersion2 purpose=character-decision-analysis requests characterDecisions and advisory writerGuidance; removes requiredBridge, mustAppearInPublicProse, causalChecklist and prospective stateTracking from requested output. Planner distinguishes actual facts/beliefs and proposed consequences, and avoids giving characters future knowledge. Initial writer, repair, expansion and both review stages treat awareness as advisory; legacy mandatory-looking flags do not require replay or public inner exposition. Review evaluates actual actions and cause/effect, not compliance with every suggestion. New-schema presence checks support characterDecisions.14 focused tests pass including intercepted provider request schemas and legacy flag handling; billing inventory unchanged. Existing failed job and source files remain intact; no paid calls, retries, runtime restart or deployment. Prompt/schema correctness verified locally, model behavior still needs an approved test. Prior chapter full-text/summary compaction issues remain separate.
- LOCAL awareness clarification applied: user wants reasoning to DIRECT upcoming scenes, not passive advice. schemaVersion3 purpose=motivated-scene-direction keeps character objectives/motives/options and adds sceneDirections with ID, prior evidence, completed/ongoing/new status, starting state, actionToWrite, reason and intended change. Writer follows selected valid new/continuing actions; completed events remain inherited history. mustAppearInPublicProse applies to chosen new/continuing actions, not private deliberation or replay. Review/repair checks missing selected actions by ID, distinguishes unchosen alternatives, and overrides only documented conflicts with prior state/source scope. Expansion follows directions within its existing source unit.15 focused mocked provider-boundary tests passed; syntax and billing inventory checks passed. No paid generation, restart, deployment, or change to saved failed run. Model behavior remains unverified. Prior advisory-only notes are superseded by this directive-with-continuity contract.
September 8 local continuation trial — in progress
Resumed swr_d5f53cb43f6842abb0 at chapter_002_awareness (file 24), preserving full bible, reference analysis and Chapter 1. Reconstructed database from saved outputs before that step and verified Chapter 1 prose/state and bible equality; original run backed up in app-repair/local-runtime/story-before-awareness-retry.json. This was a manual local recovery; generic step-back does not yet roll back database mutations.
PC Lab step-back now initializes the guarded local browser-key worker and requests a new selected-step result. Existing local-runtime and continuation prompt tests: 8 passed; frontend typecheck/build passed before final status-text correction. No deployment.
New awareness output is schemaVersion 3 with character decisions and scene directions. It recognizes the assembled team and active Rook, but marks ongoing directions new; initial Chapter 2 draft still restarts arrivals/activation. Review/repair is running. Full story and screenplay acceptance remain pending. Keep recent-summary behavior, advisory readiness and tolerant length goals; duplicate coverage cleanup deferred. No scheduled five-minute monitor.
Trial update: the reviewer caught the replay, and draft 2 now begins with the network remaining sealed and Rook already operating. A further repair is running; full acceptance still pending. Final frontend build, eight focused tests, syntax checks, billing inventory check and checklist sync passed (existing chunk-size/line-ending warnings only).
September 8 — Overall Story Awareness (local implementation)
Added story_overall_awareness.py: a distinct story-wide question-ledger function, rebuilt from prior final chapter reviews on the active route. Separate from character situationalAwareness; chapter.overallStoryAwareness stores reader understanding and per-issue decisions. Planning explicitly considers motives, knowledge, reader evidence, reveal/advance/deliberately hide/defer/investigate, credible scene opportunities and revisit triggers. Plans do not close questions or become completed canon. Later review updates must cite an exact public-prose excerpt for progress/closure. Ending review considers important unresolved items and deliberate open endings. Legacy continuity/plot findings are imported as questions, not proven contradictions. Draft-review failures are not imported as persistent final-story issues.
Connected to focus/awareness/writing packets, exact packet compaction and final review output. Existing provider calls are reused; no new call, reservation or debit path. Additional context/output tokens still cost money within existing usage accounting; estimate recalibration for large accumulated ledgers remains pending. Ledger is not silently truncated. Nine focused tests passed; provider-boundary test confirms separate overall/character fields. Billing inventory, Python/JS syntax checks passed. Local code only: the already-running worker was not restarted or its active sample rewritten. A fresh or safely resumed worker must load this code for a real acceptance run; no deployment or generated-story acceptance claimed.
Deferred: lightweight production progress tracking
- Acceptance open: Design a compact progress endpoint for website, mobile and MCP: run status, current stage/chapter, completed/total work, last activity, revision and actionable error only; fetch detailed files/output separately on demand.
- Acceptance open: Reconcile parent/child progress after resume so an active Story Writer cannot remain hidden behind stale failed Ultimate status. Distinguish historical errors from current failures.
- Acceptance open: Evaluate adaptive polling, unchanged-response handling, hidden-tab backoff, and stopping at terminal state. Verify request/payload costs and recovery from lost connections before release. User requested future work; not implemented or enabled for the current run.
September 8 — Story Writer and lightweight progress implementation
Local implementation complete for review: overall story awareness remains separate from character reasoning, carries final-review questions across chapters, evaluates reader knowledge versus private/proposed reasons, and chooses motivated reveal/advance/hide/defer opportunities. Closure needs actual prose evidence. Corrected omitted issue status updates so they retain previous status rather than reopening automatically. No new paid generation was run.
Added authenticated GET /api/v1/progress using exact known IDs and linked-child traversal (bounded at 100 visited jobs), per-record ownership/shared-access checks, compact fields and unchanged revision responses. Dynamo summary projection includes child links rather than full output. Separate read-only Story Writer cache uses local file modification time or a ten-second cloud-index cache; it never mutates execution state. Existing monolithic local/index storage still has read cost and should later migrate to per-run compact snapshots; no claim of zero AWS work. Current local sample response measured 2024 JSON characters for four jobs; unchanged reply contains only revision/status flags. Polling never resumes/retries jobs.
Production overview and Lab now have independent job progress panels, overall parent state, stale-parent warning when a linked child is active, current step/chapter, last activity, current failure only, adaptive 5–30 second polling, hidden-tab 30 second delay, request-error backoff up to 60 seconds, abort on unmount and stop at terminal state. Manual refresh supports later resume. No invented combined percentage: parent percentage is explicitly its reported overall status; child work uses its own denominator. This makes child work visible without pretending orchestration synchronization is repaired. Discovery follows recorded child links and loaded tree IDs; orphan/unlinked-job indexing and full durable parent resynchronization remain release follow-up.
Verified: twelve focused tests, frontend typecheck/build, Python/JS syntax and billing inventory guard. Browser Lab visibly shows swr_d5f53cb43f6842abb0 failed at chapter_009_expand, 78%, 123/158, OpenAI credit_balance_exhausted; polling stopped. Sandbox updated on 4180; no production deployment, no new API spend. Worker stopped intentionally and will load current code on next authorized resume via local key bridge. Existing prior parent failure remains historical; no job status falsified. Review existing broader whole-site acceptance separately.
September 8 production release — rollout checkpoint
User explicitly authorized publishing current build and current sample assets, leaving replacement sample continuation for later. Release 54f11cb contains website/workbench, Story Writer awareness and compact progress changes, 18 reference sheets, 18 menu portraits and three covers. Sample gallery now exposes titled default cover and alternate versions. Local runtime/sample-production directories and Story Writer run database excluded from Git and Docker. No credential-pattern matches in staged text. 462 Python tests passed, frontend typecheck and three Node test suites passed.
First workflow 34200562325 failed during npm clean install before updating services (picomatch lock mismatch). Corrected using npm 10.9.8 to match Docker; actual clean install, typecheck and build passed. Follow-up a0951c7 pushed; workflow 34200964232 build and serverless deployment succeeded. AWS production /api/build-info now reports a0951c7; all 39 sample PNG endpoints verified HTTP 200 with PNG signature, and frontend bundle contains cover gallery/progress UI. ECS service-stability step still pending at this checkpoint. Custom-domain check from this PC timed out in TLS; www lookup failed. Do not claim a new paid generation acceptance; saved local sample run remains stopped for exhausted provider credit.
Final deployment result
Workflow 34200964232 completed SUCCESS for a0951c7 (web/worker services, serverless operations and resilience checks). Live AWS-hosted build and all 39 sample images verified as above. This supersedes the pending rollout checkpoint. Updated replacement sample remains local and stopped at Chapter 9 expansion; continue later with provider balance and deliberate checkpoint selection. Custom-domain verification limitation remains as recorded.
September 8 sample asset navigation and phone layout correction
User screenshot exposed two release defects: assets existed but SampleReferenceGallery was not mounted in Ultimate, and shared full-width input styling plus narrow two-column cards squeezed segment labels. Added visible References & cover button to sample navigation; it mounts the open gallery with three covers and all 18 reference portraits/full-sheet links. Phone cards now use one column, explicitly sized nonshrinking checkboxes, wrapping labels and reduced nested borders/padding. At 390px sandbox width verified no document overflow, six one-column cards, 18px checkbox and readable labels; gallery DOM includes cover and typed reference links. Typecheck/build and diff check passed. Correction pending deployment; earlier asset HTTP checks did not prove UI discoverability.
September 8 mobile header and synthetic player demo
Mobile utility row now wraps inside the screenplay header; checked at 390px with References & cover visible. Synthetic demo was localhost-only and its assets excluded from Git. Player now offers Try synthetic playback demo on the website, with the existing 12.4-second synthetic test-pattern/missing-card fragments bundled (about 2.3 MB). Clearly separate from project clips; no generation/debit. Frontend typecheck/build passed. Deployment and real iPhone playback acceptance remain pending; this does not establish production streaming readiness for generated project takes.
September 8 — versioned MediaConvert clip previews (local, not enabled)
User approved preparing lower-bitrate streaming copies once per generated take while preserving original-quality downloads. New local MediaConvert preview module uses a durable conditional submission record and an encoding-specific filename/reuse identity. Profile includes H.264, 720p, 30fps, target 2000kbps/maximum 3000kbps, AAC128kbps, HLS, encoding version and actual frame dimensions (1280x720, 720x1280 or 720x720). Owner, source key and immutable source version also participate in reuse identity. Different bitrate, shape or encoding version cannot overwrite/reuse an incompatible preview. Existing takes retain their saved profile; changing defaults must not automatically recharge old takes.
Verified locally: 27 preview/serverless tests pass, including duplicate submission, uncertain submission suppression, event reconciliation, bitrate/shape isolation and old-record preservation; Python compilation and diff whitespace checks pass. No MediaConvert conversion was submitted, no customer charge occurred and this feature is not deployed/enabled.
- Acceptance open: Finish runtime integration before enabling: player must retrieve prepared previews and handle mixed/missing clips, authenticated access and expired URLs.
- Acceptance open: Finish financial acceptance: all parent quotes/reservations and child debits must include the same saved preparation quote exactly once; failures need durable recovery/refund and accurate handling of platform-covered reservation overages. Non-reservation debit paths and recovered take metadata still need alignment. Billing inventory guard currently flags the new quote function; do not accept the inventory until this review passes.
- Acceptance open: Validate actual MediaConvert settings, silent-input behavior, completed fragments, source immutability and a paid pilot; verify EventBridge/Lambda deployment and permissions before enabling the feature flag. Never describe existing placeholder playback as this acceptance.
- Acceptance open: Verify current frontend deployment separately and test real iPhone playback. Repeated-download fees remain a future policy decision, not an implemented charge.
September 8 — future website advertising and evidence
- Acceptance open: Develop website/ad copy from PLOTTHIRST_MARKETING_NOTES.md, preserving future additions. Position the integrated movie workflow and segment/batch control; do not claim exclusivity or universal lowest price.
- Acceptance open: Document founder-reported compressed-movie results: little editing, mainly approximately 20–25% scene/material removal. Confirm scene count versus runtime and measure future runs before publishing quantitative performance claims. Scene removal is not a retake rate. Full-length acceptance remains outstanding.
- Acceptance open: Review evidence, released features and current pricing before publishing marketing copy or a demonstration. Notes and draft wording saved only; no public advertising published.
September 8 — sample resumed after OpenAI balance replenishment
User authorized resuming the authentic sample after replenishing OpenAI. Backed up Story Writer and durable jobs to app-repair/local-runtime/sample-resume-backup-20260908-082803. Verified no queued/running durable jobs before enabling the existing loopback browser-key bridge; key remained in process memory and was not printed or saved to files. Resumed swr_d5f53cb43f6842abb0 via the existing resume endpoint. Observed running at chapter_009_expand, paragraph 4 of 6, 123/158 steps complete, lastError cleared; provider job swp_d878d0f757f64e8781 started. Completed chapters/planning/drafts retained, no reset or fresh run. Saved Ultimate stopStage remains screenplay; no image/video generation authorized by this resume. Completion and screenplay output still pending. Remaining provider steps can use current writer updates; completed outputs do not retroactively test the new awareness rules.
September 8 — completed Story Writer recovery signal
- Recorded evidence: Local sample swr_d5f53cb43f6842abb0 finished all 12 chapters / 164 steps. Reconciled stale Chapter 2 execution failure on Story Creation and Ultimate to review-ready, preserving the original error in a completion receipt. No generation or paid retry performed.
- Recorded evidence: Added completion callback and completed-run resume reconciliation. Passing completion audit requeues the existing child for its normal packaging/idempotent handoff; active workers and canceled workflows are not restarted. Conditional requeue guards duplicate signals (local and AWS).
- Acceptance open: Resolve/review three main plot records still marked unresolved: Encounter with The Witness; Warning and Divergent Choices; Divided Realities and the Choice. Final review describes a resolved central ending, but structured completion audit fails. Do not flip flags blindly. Chapter 12 also needs location clarity for Rook's broadcast (Aster Peak versus ship displays) and has minor thematic repetition.
- Acceptance open: Review missing structured origin records separately from uploaded visual reference profiles. Origin warnings remain intact.
- Acceptance open: Automatic callback is patched on disk, not deployed; running local server needs reload before future runs use it. Current saved jobs were reconciled directly with the new code. Screenplay child has NOT been queued while audit remains blocked. End-to-end successful handoff remains to be tested after audit passes.
September 8 — balanced action and reader engagement defaults (local)
- Recorded evidence: Extended existing draft, repair, expansion and chapter review prompts with shared preference-aware engagement guidance. Default favors meaningful action and consequences balanced with quiet scenes; explicit user style overrides defaults. No per-chapter action quota and no readiness failure solely for low action.
- Recorded evidence: Review stores engagementAudit and considers the preceding three available chapter summaries (not falsely described as full prose review). Targeted recommendations preserve canon, motives, quiet scenes and chapter scope. Existing review/repair passes reused; no additional provider call or automatic final-prose rewrite cycle added. Additional prompt tokens remain part of existing calls; no pricing change or new debit path.
- Recorded evidence: Three context tests and nine completion-signal tests pass; Python compilation and JavaScript syntax pass.
- Acceptance open: Live generation acceptance pending: test contemplative and action-heavy user overrides plus sustained dullness versus purposeful quiet. Changes not deployed and completed sample prose unchanged. Existing MediaConvert billing inventory gap remains; billing check is not a pass.
September 8 — actual screenplay adaptation, local implementation / NOT enabled
- Recorded evidence: Replaced the Ultimate timing-map-only readiness path with a checkpointed screenplay adapter: whole-movie spine -> all segment plans -> page writing with nearby planned segments and preceding actual segments -> page reviews with actual previous/next pages and +/-3 segments -> whole-movie actual-purpose/state/dialogue ledger review. Every segment needs purpose, action state, entry/exit state, verified book evidence, scene references, action and explicit dialogue/silence.
- Recorded evidence: Reject missing/duplicate timing slots, fabricated source quotations, identical adjacent prose without an explicit reprise, missing speakers and overlong dialogue. Semantic repetition/continuation, early reveals and pacing are reviewed by the model against actual context; these are not guaranteed by structural checks. Future plans are labeled as plans. Canon and user preferences take priority; preserve quiet scenes.
- Recorded evidence: Save each request result/usage, script and reviews outside the job item; completed requests reused on resume. Uncertain requests require reconciliation rather than blind retries. Worker cancellation checks and lightweight step counters added. No extra image/video calls.
- Recorded evidence: Only a ready adaptation receipt satisfies the worker's reusable screenplay checkpoint. Script populates existing segment/page workspace; selected clip media is protected from replacement. Existing generated maps need an explicit new revision, not an overwrite.
- Acceptance open: Paid runtime intentionally remains OFF (PLOTTHIRST_SCREENPLAY_ADAPTATION_ENABLED). Existing four-credits-per-minute estimate is NOT accepted coverage for these added calls. Need revised provider/AWS quote, reservation/debit/own-key handling and retry accounting before enabling; do not set the flag merely to unblock a sample. Current pipeline uses 3*pages+2 calls; consider batching after acceptance without losing neighbor context. Static billing audit misses this injected provider path and still flags unrelated MediaConvert quote; no inventory acceptance claimed.
- Acceptance open: Live model quality, long-book context sizing/semantic reduction, concurrency-safe checkpoint claims, admin editing of failed review and revised-source version workflows remain acceptance work. Provider requests are not submitted here. Local server process and website have not been restarted/deployed with this change.
- Acceptance open: Quiet Signal remains saved after chapter 12 with audit review required; no screenplay or video generated on this turn. Resolve the saved ending metadata/location issue before paid adaptation acceptance. Prior sample/reference/cover assets preserved.
September 8 — completed three-page screenplay pilot (local own-key)
- Recorded evidence: Generated a provisional 120-page whole-movie plan and actual pages 1–3 (18 ten-second segments) using shared Adaptation engine v2. Both page-context and scoped ledger model reviews returned ready with all 18 IDs checked; this is pilot readiness, not full-film approval.
- Recorded evidence: Estimated OpenAI cost from returned usage: $1.045524 total, including two earlier non-script review responses ($0.234788). $3 local ceiling retained across those revisions. No Plotthirst credit debit, AWS conversion, image, storyboard or video generation. Source story/audits unchanged.
- Recorded evidence: Initial live feedback exposed overly restrictive adaptation authority; clarified that timing/staging/dialogue may dramatize existing facts. A later live response exposed structured visualPlan output; parser now preserves its shots/lighting/sound/performance without a paid rewrite. Saved plan/page results reused on resume.
- Recorded evidence: Grouped planning/review into three-page requests: full schedule 202 calls vs 362; pilot used 8 successful calls plus the two earlier review attempts. Pages remain independently written with prior actual context. Future pages outside the pilot are explicitly plans.
- Recorded evidence: Local own-key funding and resume safeguards: conservative token admission reserves, actual-usage estimates replacing reserves, retained uncertain reservations, atomic JSON writes, exclusive process owner, persisted provider IDs for retrieval-only recovery. Tests cover limits, duplicate owners, stale locks, caching, scope, continuity schema and rich visual plan preservation.
- Acceptance open: Human review: local-runtime/screenplay-pilot/swr_d5f53cb43f6842abb0/review.md. Opening is quiet analytical tension followed by the dish reroute and its immediate result. Check whether pacing is compelling enough before extrapolating.
- Acceptance open: Whole-book question retained: Kade's later survival is established but its mechanism is not explained. Sabotage questions also remain in provisional plan. Do not label these resolved merely because the opening pilot passes.
- Acceptance open: Production AWS distributed checkpoint claims, full quote/reservation/debit acceptance and full screenplay generation are still pending. Public production adaptation flag remains disabled. Local server reloaded for pilot endpoint only; no website deployment. Production workflow stays review-ready; sample package is not replaced by this pilot.
September 8 — accepted screenplay and clip planning approach
- Recorded evidence: User selected complete screenplay plus a default ten-second segment plan upfront. Narrative chronology metadata is a future Story Writer-to-screenplay enhancement; do not retrofit or regenerate this sample for it.
- Acceptance open: Implement and verify scoped duration replanning: preserve required action/dialogue, expand the affected window when necessary, show revised timing/cost before generation, and preserve existing takes/settings. Current fixed-slot adapter does not establish this capability.
- Acceptance open: Opening/zooming into segments must only read existing plans, never trigger paid writing. Detailed video prompts and storyboards remain explicit preparation/generation work on demand.
- Acceptance open: Full screenplay still pending: local runner is explicitly a three-page pilot with a $3 ceiling. Completing 120 pages requires a separately costed full-run path; do not silently remove the pilot limit or treat the pilot receipt as full-film acceptance.
September 8 - Luna comparison pilot
- Recorded evidence: Local admin pilot variant isolates Luna checkpoints/results and preserves Terra originals. Reuses identical Terra whole-movie plan; Luna handles segment planning/writing, Terra handles page and scoped whole review. Same prompts, source, timing, and validators. No production model default change.
- Recorded evidence: Model-specific local own-key accounting: Luna standard input/output $0.20/$1.20 per million, same long-context multipliers; verified official model page September 8. Independent $3 pilot ceiling within user's $5.66 remaining budget, persisted response recovery and exclusive owner retained.
- Recorded evidence: Paid three-page comparison completed; see results below. No image/video generation or deployment.
September 8 - completed Luna comparison (not accepted for production)
- Recorded evidence: Same three pages/18 ten-second segments generated with Luna planning/writing and Terra reviews, reusing Terra movie spine. Total token-derived provider estimate $0.208224: Luna $0.042458; Terra reviews $0.165766. Original Terra pilot preserved; no auto repair, video handoff, images, or deployment.
- Recorded evidence: Both Terra reviews returned not ready: Luna pulled page-5 power surge into page 3, contradicted page-3/page-4 states, introduced unsupported surviving display, and risked repeating page-2 analysis on page 1. Cheap readable prose does not establish full-film continuity reliability.
- Recorded evidence: Initial source validation failure was only curly versus straight apostrophe. Shared validator now normalizes typographic quotation marks while preserving exact words; cached response resumed without regenerating. 22 focused tests pass, Python compile/node syntax/diff whitespace checks pass. Billing inventory retains unrelated clip-preview quote gap; no production billing acceptance claimed.
- Recorded evidence: Review artifacts: local-runtime/screenplay-pilot-luna/swr_d5f53cb43f6842abb0/review.md and comparison.md.
- Acceptance open: Recommended next evaluation, not started: Terra segment plan with Luna writing and Terra review, to isolate cheaper drafting from scene allocation. Current pilot comparison alone does not justify replacing all Terra operations.
September 8 - Terra plan / Luna writing comparison
- Recorded evidence: User authorized same three-page hybrid test. Separate hybrid directory preserves both previous pilots. Reuses exact completed Terra whole-movie and segment-plan checkpoints; Luna writes, Terra reviews, with identical source/prompt/timing validation.
- Recorded evidence: Model routing/storage tests pass (23 focused tests). Local own-key $3 admission ceiling retained, no production routing change. Previously paid plans reused with no new planning charge; fresh deployment pricing must still include planning cost.
- Recorded evidence: Test completed; see hybrid findings below. No automatic repairs, images, video, or deployment.
September 8 - completed Terra plan / Luna writing comparison
- Recorded evidence: All 18 segments written. New provider cost $0.181726: Luna writing $0.0279022, Terra page review $0.098276, Terra scoped ledger review $0.055548. Reused plans were paid earlier; this incremental test cost is not a fresh-project quote.
- Recorded evidence: Major previous failure absent: no premature surge/damage; broader ledger review ready=true. Page review ready=false flags visualPlan warning lighting in P0002-S005/S006 before reroute. Human inspection: S005 explicitly says acquisition warning, which may mean ordinary tracking loss rather than detection; S006 is ambiguous. Clarify warning type or remove warning staging and re-review rather than automatically accepting/rejecting reviewer interpretation. Current status remains review-required.
- Recorded evidence: Original Terra and Luna-plan variants preserved. Saved hybrid review/comparison under local-runtime/screenplay-pilot-hybrid/swr_d5f53cb43f6842abb0/. No automatic repair, paid continuation, video handoff, deployment, or default model switch. 23 focused tests passed.
September 8 - adaptation-aware forward review v3 (local, unpaid verification)
- Recorded evidence: Shared screenplay adapter permits small consistent connective reasons, dialogue and beat adjustments; records adaptationChoices per segment and carries them to later writing/review. Major facts, outcomes, knowledge and consequential reveals remain protected. Review distinguishes acceptable adaptation, clarification, intentional mystery and story blocker; acquisition warnings are not automatically detection warnings.
- Recorded evidence: Reviews now interleave after each batch before subsequent writing (three pages in production configuration). Persistent openIssues and issueHistory carry questions forward; resolution requires evidence in an actually written segment. No forced next-page explanation or automatic backwards Story Writer rewrite. Real blockers pause dependent writing with partial output preserved. Future neighbor is explicitly planned, not falsely presented as actual; final ledger checks full state progression.
- Recorded evidence: Adapter version 3 and production checkpoint identity updated: old pilot outputs remain unchanged; changed prompts cannot silently reuse v2 paid responses. Runtime model defaults/production enable flag unchanged. Hybrid full-run model routing and user-approved spending must be selected explicitly; local endpoint is still a pilot, not a full-film runner.
- Recorded evidence: 27 focused tests pass, Python compile, app.js syntax and diff whitespace checks pass. Static billing audit still reports pre-existing clip-preview quote gap; not accepted or fixed by this work. No new provider calls or deployment.
- Acceptance open: Live acceptance of v3 before full run; assess deferred issues/continuity and cost with actual outputs. Full local run entry point and budget controls need completion before spending; AWS distributed claims and quote/debit acceptance remain pending.
- Estimate for 120 pages / 720 ten-second segments, conservative fresh v3 run: Terra whole plan $0.21, Terra 40 planning batches $3.42, Luna 120 written pages $1.12, Terra 40 reviews $3.93 = $8.68 before larger final ledger review, added issue context and repairs. Budget allowance $10-$12, not guaranteed. Based on measured pilot usage extrapolation, not a new provider price quote. Two comparison tests consumed $0.38995; user's previously stated $5.66 implies about $5.27 remaining absent other usage. Excludes images, storyboards, clips, AWS and customer markup.
September 8 - ten-page reviews and final video-planner advisory (v4 local)
- Recorded evidence: User selected review interval of ten screenplay pages, independent of three-page segment planning. Full 120-minute schedule: 40 planning calls + 120 writing calls + 12 batch reviews + whole-plan/final-review calls = 174 calls. Partial final batches are reviewed. No paid per-segment reviews or automatic review/replan loops.
- Recorded evidence: Batch review sees upcoming plan slots and may target one future segment with a bounded clarification instruction. It cannot target written work; writer instructed to preserve facts, knowledge, timing, purpose/outcome and reveal boundaries. Stable issue IDs and offered markers prevent repeated directives; actual resolution still requires evidence in written output. If it cannot fit safely it stays unresolved.
- Recorded evidence: Final whole-movie review saved as advisory, not a screenplay rewrite trigger. Its findings/open questions are retained in adapter result, runtime segment review context, segment-to-board materialization and video media-prompt packet. Prompt policy forbids treating advisory as permission for story changes or repeating unresolved explanations in every clip. Major contradictions still need explicit review before affected production.
- Recorded evidence: Versioned checkpoint identity includes separate reviewBatchPages. Production progress counts updated. 31 focused tests pass; Python compile and billing audit run. Billing audit retains unrelated clip-preview quote gap. No production deployment, runtime enable/model default change, provider calls or modification of saved sample outputs.
- Acceptance open: Measure live ten-page review cost before quoting savings. Prior three-page review $3.93 extrapolation is obsolete for this schedule; fewer calls do not imply proportional token savings. Full own-key run launcher, approved spending limit and live v4 acceptance remain outstanding.
September 8 - remove final review; retain issue ledger (v5 local)
- Recorded evidence: User rejected the whole-movie review as unwanted interference/cost. Removed that paid call from shared adapter; no final-review prerequisite child is created. Full schedule now 173 calls: 1 movie plan, 40 segment plans, 120 writing calls, 12 ten-page reviews.
- Recorded evidence: Completed screenplay retains structured issueLedger with openIssues and evidence-backed resolution history from existing batch reviews. No automatic semantic-resolution claim: offered/attempted clarification remains unresolved until evidence is checked. Existing model reviews perform meaning checks; programmatic ledger records state.
- Recorded evidence: Runtime no longer puts all open issues into every segment. Only explicit target assignments not already offered can enter that segment's context. Unassigned unresolved issues remain in project ledger, not unsolicited instructions to every clip.
- Recorded evidence: 31 focused tests pass including absence of final review calls; updated counts and versioned checkpoint identity. Existing pilots and public sample unchanged; no deployment or provider spend.
- Acceptance open: Video planner shared assignment/claim and evidence-backed resolve write-back (including concurrent batches, retries, rejected takes and revisions) still requires implementation. Current scoped context does not itself provide atomic shared resolution. Do not claim this is complete or enable blind per-clip auto-resolution.
September 8 - original-version-only issue scope (local)
- Recorded evidence: User-approved boundary: automatic issue assistance belongs to original Plotthirst screenplay, not user-altered continuity. User edits remain authoritative; do not silently repair, rereview, or charge for validation. Broader edit validation is a future separately priced opt-in feature.
- Recorded evidence: Added sourceRevision and generated-workspace content fingerprint. Video media-prompt issue context requires matching complete workspace baseline and current selected board text. Changes elsewhere also disable baseline suggestions; missing/unverified baseline disables safely. Selection/take metadata does not invalidate story content; baseline is never resealed over edits. No edits to the source book or saved original ledgers.
- Recorded evidence: 37 focused tests pass, Python compile, JS syntax and diff whitespace checks pass. No provider calls/deployment.
- Acceptance open: Shared planner claim/resolve write-back remains pending. Future scene/book-edit branches must retain explicit provenance and use this eligibility gate on all planner entry points before enabling automatic issue resolution. Existing legacy/unverified work receives no automatic suggestions; no blanket claim of complete editor branch support.
September 8 - versioned known-issue checks and minor resolver core (local only)
- Recorded evidence: Added screenplay_issue_versions.py: immutable screenplay/issue snapshots, edit branch with needs-edit-check states, revert active pointer preserving all versions, known-issue comparison packet, informational review-result application (newly resolved/earlier payoff/reopened/uncertain/unchanged), evidence requirement and preservation of later scenes. Old book and takes are not changed.
- Recorded evidence: Added local atomic screenplay_issue_store.py with exclusive writer and full-store etag check; rejects stale saves and removal/overwrite of snapshots. Runtime persists initial issueVersions with completed adaptation. This is not distributed AWS conditional-update acceptance.
- Recorded evidence: Resolver core requires an eligible open issue, one plan/segment claim, at most two seconds explicitly available timing, and at most six added dialogue words within speech budget; default allowance zero, no silent/music-lip-sync override or new speaker. Only visual_detail/brief_dialogue proposals; locked scene hash, exact accepted-proposal hash/text and existing plan continuity acceptance required before resolved-in-plan. It is not rendered-resolution proof. Discard releases claim/reopens issue. Structural guards do not replace semantic continuity validation.
- Recorded evidence: Minor-resolution policy included in video media prompt packet. Staged screenplay editor request now preserves book/takes and all versions by default; no automatic addendum, take remap or paid known-issue review. Editor remains staged, not a completed customer editing workflow.
- Recorded evidence: 46 focused tests pass; Python compile, frontend TypeScript check, JS syntax and whitespace check pass. Frontend build succeeded with --configLoader runner after default config bundler hit a sandbox parent-directory read error. No paid provider calls or deployment. Billing inventory retains unrelated clip-preview quote gap.
- Acceptance open: Remaining integration before release: connect customer version/revert controls and known-issue review quote/reservation/provider/debit path; activate checked-version ledger scope; wire real planner claim/accepted-plan/discard events through AWS conditional updates and verify concurrent batches, retries and rejected takes. Existing original-baseline guard remains fail-closed for unverified edited work until this is wired. No automatic resolutions enabled merely because core functions exist.
September 8 - locked original book and future adaptation-to-book option
- Recorded evidence: User requirement: original Story Writer book is locked and must never be overwritten by screenplay edits, reviews, issue resolutions or video planning. Screenplay is a separate adaptation, like a film adaptation of an author's published work.
- Acceptance open: Screenplay changes that intentionally depart from the book must carry explicit versioned adaptation-override notes: source passage/fact, replacement in this screenplay version, scope/affected segments and user intent. Downstream planning must follow the selected screenplay override rather than restoring the conflicting book fact; source provenance remains available. This is a requirement to integrate with the pending editor/ledger flow, not a claim that all override paths are complete.
- Acceptance open: FUTURE ONLY - adapt the finished movie/screenplay back into a new book edition. Use accumulated accepted changes, clarified motives, continuity decisions and review outcomes to produce a more worked-out book. Offer voice, chapter count and word-count controls again, or a separate proposal for revising a copy of the existing book. Preserve original book and prior editions. User explicitly said to note this option, not implement it now.
September 8 - full sample screenplay preparation (local, not deployed)
- Recorded evidence: Added local admin/owner-scoped full-screenplay preflight and start endpoint. Preflight verified HTTP 200 without provider calls: 120 pages, 720 ten-second segments, 173 scheduled calls; Terra planning/review and Luna writing; review every ten pages; no final whole-movie review or image/video generation.
- Recorded evidence: Full runner uses the shared adaptation pipeline, a versioned output directory, explicit spending ceiling, persisted costs and response IDs, and exclusive ownership. Admission denial before submission is budget-paused, not an uncertain paid request. Completed calls are reused on resume; source book is unchanged.
- Recorded evidence: Local version core records screenplay edit overrides with source evidence, before/replacement text, segment scope and user intent. Known-issue review receives those overrides; checks retain them and revert restores the selected version. Customer editor and distributed planner integration remain pending as listed above.
- Recorded evidence: Full output includes readable source chapter numbers/titles, initial issue versions, review text and outstanding issue report. Existing sample and pilot artifacts are retained.
- Acceptance open: Paid full sample run and quality acceptance remain pending. Provisional $6-$8 estimate is not a guarantee; ten-page review cost has not been measured. Last known balance after comparison tests is about $5.27, so no paid full run started. No production enablement/deployment this turn.
- Acceptance open: Existing unrelated clip-preview quote billing inventory gap remains; billing audit is not a clean pass.
- Verification: 50 offline tests pass (47 focused plus 3 full-run tests). Full simulation covers 720 segments, 173 calls, twelve reviews, resume without repeated provider calls and unchanged source book. Python compile, JS syntax, diff whitespace and local HTTP 200 checks pass. No paid provider requests were used by these tests.
September 9 - full sample screenplay started locally
- User authorized the full run. Started source swr_d5f53cb43f6842abb0 with an $8 ceiling, Terra planning/review, Luna writing, ten-page reviews and no final whole-movie review. Local endpoint returned HTTP 200; first whole-movie provider response ID persisted. Output: app-repair/local-runtime/screenplay-full/v5/swr_d5f53cb43f6842abb0.
- Acceptance open: Run is in progress, not accepted or published. Check status.json and costs.json before any resume; do not duplicate submission. No image/video generation or deployment was started.
September 9 - adaptation field compatibility and resume
- Recorded evidence: Paused after two completed calls ($0.343716): provider adaptationChoices used choice/reason instead of description/rationale. Added lossless alias normalization retaining provider fields; conflicting values still fail. No source text or saved provider response was rewritten. 23 adaptation tests pass, including aliases/conflicts; Python compile passes.
- Acceptance open: Resumed the same local full screenplay with unchanged $8 ceiling and cached completed calls. Live result acceptance remains pending.
September 9 - provisional writer resolution claims (local)
- Recorded evidence: Page writer can emit per-segment issueResolutionClaims with issueId and evidence from actual segment text. Claims require a known, assigned, not-yet-attempted issue; invented evidence and unassigned claims fail. Ledger records writerResolution=pending-review while issue remains open. Ten-page review confirms through resolvedIssues or leaves it open with unconfirmed writer claim. Offered markers prevent repeatedly instructing later segments to resolve it.
- Recorded evidence: No additional provider call or final whole-movie review. Final free checks validate assembled segments/coverage/timing/source evidence/dialogue structure and adjacent duplicate prose; readiness also checks existing batch review results and movie-plan blocking flags. This does not establish semantic quality beyond those reviews. Nonblocking unresolved questions may remain.
- Recorded evidence: 50 focused tests pass; Python compile and JS syntax pass. Writing/review prompt changes do not affect this paused run's five cached planning calls; future calls use updated prompts after local server reload. No paid calls or deployment this change. Run remains paused on source-evidence validation at plan-10-12, recorded cost $0.722078. Do not silently bypass that separate unresolved check.
September 9 - citation warnings, ledger-aware resume, sequel continuity note
- Recorded evidence: Nonverbatim source quotes now become sourceEvidenceWarnings rather than stopping all work. Missing/unknown source chapters and empty quotes still fail. Warnings retain original quoted text and meaningVerified=false; ten-page review receives both planning/writing warnings and full source chapters to distinguish wording mismatch from unsupported story facts. Final saved output preserves warnings, not a false assertion of verbatim verification.
- Recorded evidence: 52 focused tests pass, including warning propagation, source omission failures and review rejection of unsupported events; Python compile and JS syntax pass. Local server reloaded and same sample resumed with $8 ceiling and five saved responses ($0.722078 before continuation). No new whole-movie review or paid repair call added.
- Acceptance open: Accept actual full-run output after completion; this is not deployment or semantic-quality acceptance. Existing unrelated clip-preview billing audit gap remains.
- Acceptance open: FUTURE: allow a book-two/screenplay-two/movie-two planning stage to optionally import the selected prior version's ending state, established outcomes, confirmed resolutions and unresolved questions. Distinguish pending writer claims from confirmed facts, preserve source version/provenance, and let user direction decide which threads carry forward. No sequel generation or automatic changes to the original book implemented. Final check itself remains free validation; the saved ledger is the reusable continuity artifact.
September 9 - automatic missing-segment recovery (local)
- Recorded evidence: Shared planner/writer now retains valid returned segments and automatically requests omitted slots in one-page completion packets, at most two rounds per original call. Accepted segments are locked context, never regenerated or substituted. Stable recovery call IDs/hashes and persisted provider responses allow resume without repeating paid calls. Unknown/duplicate IDs, invalid structures, story blockers and uncertain submissions still pause rather than inventing output or blindly retrying.
- Recorded evidence: Recovery uses the existing stage/model, provider cost ledger, conservative pre-submit budget admission and $8 full-run ceiling. No separate review loop. Recovery calls are counted in progress totals. This local own-key run has no Plotthirst debit or AWS compute; production remains feature-gated pending reservation/debit and distributed recovery acceptance.
- Recorded evidence: 55 focused tests pass, including partial planning/writing, locked completed text, bounded exhaustion, unexpected IDs and recovery resume without repeated calls. Compile/JS checks pass. Billing audit retains the unrelated clip-preview quote gap; no inventory acceptance was claimed.
- Acceptance open: Live sample resumed from five-dozen planned pages plus saved page 61; recovery fills omitted pages 62 and 63 before ordinary planning continues. Starting cost $2.903758. Verify live completion and output quality; no deployment. Budget/provider failures and semantic blockers are not promised to recover automatically.
September 9 - user disables ten-page review; forward-only sample
- Recorded evidence: User explicitly requested reviews off for now and completed segments locked. Run-scoped run-options.json disables ten-page review without changing website defaults or spending ceiling. Adapter records the policy change, preserves prior inputs/cached calls, and permits this transition before any completed batch review. Re-enabling on that branch requires a new revision; no backwards automatic rewrite.
- Recorded evidence: Each fully written page is saved immediately; segment hashes lock completed content and detect altered cached segments. Missing-slot recovery still preserves valid segments. With reviews off, final status is completed-unreviewed and qualityReviewed=false, never a claim of semantic-review acceptance. Free final structural checks remain; no final AI review.
- Recorded evidence: 56 focused tests pass including pre-review pause -> disabled-review resume, no duplicate writing calls, unchanged completed text, persistent policy and mutation rejection. Python compile passes. Same sample resumed with 10 pages / 60 segments retained, cost $6.2206798 before continuation, unchanged $8 ceiling. Verify live completion. No deployment or website default change.
- Acceptance open: Without batch reviews, new reviewer-discovered issues and confirmations are unavailable. Existing writer resolution claims remain provisional. Any future sequel continuity import must preserve that distinction. Existing unrelated clip-preview billing inventory gap remains.
September 9 - automatic planned speaker cast completion
- Recorded evidence: Writer validation automatically fills omitted cast metadata only for speakers explicitly assigned in the same locked segment plan's character list or dialogue (speaker/character schemas). Adds provenance in castMetadataRepairs, preserves scene text/dialogue/timing, and does not invent identities, reference assets or speakers. Unplanned speakers still fail. Repeated normalization is idempotent; raw provider records remain intact.
- Recorded evidence: 58 focused tests pass. Checked actual saved page 37: all previously omitted speakers can be accounted for from its plan, without rewriting prose/dialogue or another AI request. Python compile/JS syntax pass. Resumed same run, reviews off and $8 ceiling unchanged; prior locked segments retained. No production deployment.
- Acceptance open: Supporting-role reference assets are a later production prerequisite, not fabricated by this metadata repair. This resolves the specific repeatable omission class, not a promise of zero possible failures.
September 9 - extra-output and duplicate segment handling
- Recorded evidence: Shared segment acceptance now validates only explicitly requested slot IDs. Unrequested output is retained intact in raw provider responses and segmentOutputExceptions; it does not advance a future page or overwrite completed work. Identical duplicates are accepted once with provenance; conflicting versions are all set aside and only the disputed slot enters existing bounded recovery. Invalid identities still fail. No text truncation or silent extra-scene acceptance.
- Recorded evidence: 61 focused tests pass covering excess output, unchanged requested prose, no repeat calls on resume, identical duplicates without spend and conflicting-duplicate recovery limited to its slot. Python compile and JS syntax pass. Actual saved page 57 had six valid requested segments and three extras; validated extraction preserves its text without another provider call.
- Acceptance open: Same sample resumed with reviews off and $8 ceiling unchanged, starting recorded cost $6.8094562. Verify live continuation and final output. No deployment. Recovery remains under existing own-key admission/cost accounting; existing unrelated clip-preview billing inventory gap remains.
September 9 - equivalent speaker nicknames
- Recorded evidence: User confirmed Apparition and Illusion represent the same speaker. Added reusable approved nickname groups rather than a page-specific correction. Same-segment uniquely assigned identical dialogue anchors the mapping; record suppliedLabel/plannedLabel in speakerAliasMappings and fill cast metadata. Dialogue words and story actions do not change, raw provider response stays intact. This is a deterministic approved-alias vocabulary, not an unrestricted semantic synonym detector or merger of named characters.
- Recorded evidence: 62 focused tests pass including unique-line match, ambiguous-speaker refusal and differing-line refusal. Resumed page 65's saved output under unchanged $8 ceiling and reviews disabled. No paid regeneration for the nickname correction; no website deployment.
September 9 - speech tolerance and requested progress monitoring
- Recorded evidence: User approved 20% tolerance over the 2.5 words/second speech estimate: ten-second segments allow up to 30 words. Above-baseline accepted segments retain speechTimingWarning with actualAudioTimingVerified=false; larger excess still fails. Dialogue/timing unchanged. 63 focused tests pass at 25/26/30/31 words; local server resumed saved page 98 under $8 ceiling, reviews off.
- Recorded evidence: Created checked progress snapshot and refresh script in thread visualization directory (screenplay-progress.html, refresh-screenplay-progress.py), reading small status.json only with no provider calls. Inline display is a timestamped snapshot, not a live API connection.
- Acceptance open: Five-minute scheduled monitoring is NOT enabled. New heartbeat creation rejected because this task already has a monthly cost audit attached. Attempt to temporarily update that heartbeat was rejected by automatic approval review as an unrequested consequential schedule change with insufficient restoration protection. Existing monthly automation remains unchanged. Need explicit user approval for temporary replacement; do not bypass using cron or shell scheduler. Original settings copied read-only to monthly-audit-automation-restore.json for review/restoration.
September 9 - full sample screenplay completed; mobile progress display
- Recorded evidence: Full local sample result.json exists: completed-unreviewed, 120 pages, 720 unique segments / 7,200 seconds, all 720 segment locks retained, no ten-page reviews. Final provider spend $7.858175, below $8 ceiling. review.md exists. This is generated output with structural validation, not semantic quality approval or published sample replacement.
- Recorded evidence: Removed the nonworking mobile Check now follow-up button and incorrect five-minute-monitor label from the inline progress snapshot. Refresh by sending check in chat. No new monitoring automation exists; monthly cost audit unchanged. Completed display now says Screenplay saved.
- Acceptance open: Next: user review of completed screenplay and controlled sample-package integration with existing references/cover; not deployed or silently substituted into public sample.
September 9 - independent finished-screenplay editorial review
- Recorded evidence: Read complete spine/coverage, scanned all 720 segments for drafting artifacts and exact dialogue repeats, closely read key sequences through the ending and compared source-book chapters 4/10/12. Findings: app-repair/docs/QUIET_SIGNAL_SCREENPLAY_EDITORIAL_REVIEW_2026-09-09.md. No provider spend, screenplay/book mutation, or deployment. Targeted review, not exhaustive semantic acceptance.
- Acceptance open: Discuss bounded corrections: Elias ship/causeway continuity, four human bodies versus Rook membership, graph-overlay aging causality, two leaked drafting directions. Separate pacing decision: 27-minute observatory opening, page-43 launch and only two minutes for Earth defense/ending. Known spine issues absent from final issue ledger need handoff verification. Kade survival mechanism and saboteur are inherited limitations; no invented automatic resolution.
September 9 - approved screenplay corrections and bounded final review pipeline
- Recorded evidence: Created separate editorial-2026-09-09 sample revision: eight corrected segments, all 720 segments / 7,200 seconds retained, original result bytes unchanged, zero provider calls. Corrected Elias location transitions, physical human count, graph/aging causality and leaked drafting prose; corresponding directions/dialogue synchronized. Pacing and inherited mysteries unchanged. See app-repair/docs/SCREENPLAY_FINAL_REVIEW.md.
- Recorded evidence: Implemented shared bounded Terra review -> optional Luna assigned corrections -> Terra focused verification, max three logical calls, no repair loop; immutable revision provenance, protected timing/source fields and explicit project selection. Local admin own-key API actions reuse existing ownership/loopback gates; saved responses, uncertain-submission protection, persisted ceiling and conservative admission. 75 focused tests pass; Python/JS syntax and diff whitespace checks pass.
- Acceptance open: Local API restart/live acceptance, customer UI and production quote/debit/operating allowance integration remain pending; no paid final-review call or deployment. Conservative preflight reservation can exceed token-based expected cost and pauses without silently increasing authorization. Billing audit still reports only the existing unrelated clip-preview quote inventory gap. Corrected sample remains a separate version pending public sample integration.
September 9 - corrected sample sandbox and customer pricing reconciliation
- Recorded evidence: Packaged the actual completed book and approved corrected screenplay as sample v3: 120 pages, 720 segments, 7,200 seconds; original generation/revision files preserved. All 21 manifest file hashes verified. Saved segment plans and only their named matching reference packs are shown; 718 segments have an existing matching sheet. Missing subjects remain explicit, never substituted with the entire library. Menu portraits link to full sheets; existing cover/gallery retained. No provider generation spend.
- Recorded evidence: Updated sample segment review packets, plan/direction/dialogue views, playlist placeholder descriptions and direct sandbox review navigation. Sample header reports sample totals and suppresses unrelated fresh-start credit quote.
- Acceptance open: User sandbox review, public sample upload/deployment and production acceptance still pending. Additional named entities without dedicated sheets remain outstanding; no new clips generated.
- Acceptance open: Mandatory automatic final review/corrections and customer quote/debit wiring remain pending; bounded engine exists, not a user-optional policy. Reconcile operating allowance across billable actions. Priced 120-minute Seedance 2.0 720p customer subtotal $3,824.75–$3,826.55 at 1.8x excludes unpriced prompt/analysis/delivery and shared allowance; see app-repair/docs/FULL_MOVIE_CUSTOMER_ESTIMATE_2026-09-09.md. Do not label it an all-in checkout quote.
September 9 - Admin movie cost monitor and restored sandbox
- Recorded evidence: Added Admin > Admin Controls > Movie cost monitor: dated customer subtotal/breakdown, unpriced scope, currently loaded billing settings and copyable review. Generated from the cost report, with tracked source fingerprints and --check stale detection. AGENTS.md requires updates/re-audit after relevant changes; not a live automatic quote or scheduled monitor.
- Recorded evidence: Local sandbox was stopped (connection refused on4180); restarted with local storage/backend, job auto-start off. HTTP site/sample endpoints200. Browser verified Admin panel and samplev3: 120 pages/720segments; first segment references Mara Venn/Aster Peak Observatory/Signal Prism. Both tabs marked to remain open. Sample has no generated video; missing dedicated sheets remain explicit. No production deployment.
- Recorded evidence: Browser loaded sandbox allowance is $140.0154826191 with1000 estimated actions, distinguished from earlier empty standalone import and hypothetical$250. No billing settings changed. JS/Python syntax and both generated-panel consistency checks pass.
September 9 - contribution visibility defaults
- Recorded evidence: Personal Settings > Profile now has independent Show my name to group members / Show my name publicly checkboxes. Saved in attributionPreferences through user normalization and the authenticated non-admin user-update allowlist. Missing older-client values preserve existing preferences. Only literal booleans accepted; no hide-from-admin option. Defaults off for previously unset preferences.
- Recorded evidence: Added contribution_attribution.py audience projection contract: admins, owner, authorized manager and contributor see identity plus both preferences; group/public flags independent. Four combinations, privilege rules, invalid values and update filter verified. This helper still requires integration at publishing boundaries; client-supplied roles must never grant access.
- Acceptance open: Per-take override UI, trusted creator capture for every generation/upload route, manager review, server-filtered group/public releases and public sample publishing remain pending. Account defaults alone are not end-to-end attribution enforcement. Revenue rights are deferred; identity is not an earnings agreement.
- Acceptance open: Ambience work discussed earlier is NOT implemented yet: reusable location assets, exactly-once generation/retry protection, explicit sub-clip start/end and fades, dominant clip, player checkbox/now-playing, pause/seek alignment and shared stitch map. Current mapper still makes per-board layers. No claim of completed ambience repair.
- Recorded evidence: Pricing review: only profile preferences/attribution metadata changed; no paid operation/rate or quote/debit changed. Refreshed server fingerprint after this scoped review. Sandbox restart loads new profile persistence; no production deployment.
September 9 - correction: attribution is per contributor per project
- Recorded evidence: Removed mistaken account attribution checkboxes. New My project attribution in Ultimate toolbar stores independent group/public preferences in the signed-in contributor's projectAttributionPreferences[projectId]. Project switch remounts controls; two projects can disagree. Old account-wide flags are not migrated into projects. Sample controls demonstrate choices but do not persist public-sample membership. Saved real project required; browser save queues normal authenticated account sync.
- Recorded evidence: Added active-take Created by display to ordinary and continuous movie players, consuming viewer-filtered creatorCredit. Missing data says not recorded; hidden credit says contributor prefers attribution hidden. No guessed project-owner attribution.
- Acceptance open: Trusted creation identity capture, server audience projection wiring and manager view, publication/group permissions and earned-rights ledger are still pending. The current player does not yet receive creator credits from saved take summaries. Project preference UI is not a claim of complete publishing enforcement. Ambience changes remain pending as previously recorded.
- Recorded evidence: Build and source syntax verified; project preference isolation/strict boolean/stale-client checks pass. No provider cost or debit logic changed; reviewed and updated the server fingerprint. Local only.
September 9 - visible screenplay cover
- Recorded evidence: Added selected project cover and project title above the screenplay workspace content. Sample uses its existing titled Quiet Signal cover; real projects use selected cover fields only, never an arbitrary reference image. Artwork opens full-size, contained without cropping; missing cover has an explicit empty state. Sample title no longer uses unrelated fresh-start title. Local UI-only change, no generation/cost changes or deployment.
2026-09-09 — Admin segment prompt workbench preview
- Local sandbox: visible admin prompt workbench above sample segment settings, readable/raw views, stage selections, copy packet and saved source loading. Source/storyboard/video stage descriptions are explicitly previews, not an execution trace.
- Still pending: authenticated persistent worker stage request/response capture, cost validation, selected-stage execution and production project association. Run controls disabled; no paid calls or generation. No pricing/backend operation change.
- Validation: frontend TypeScript and Vite build passed; static runtime bundle refreshed. Not deployed.
- 2026-09-09 local prompt workbench: each stage checkbox now has a fixed 18px size and top-left anchor beside its heading, independent of shared form input sizing. Vite build passed; execution wiring remains pending.
- 2026-09-09 local admin prompt workbench selections now enforce a prefix: selecting later includes prerequisites; deselecting the last explicit endpoint restores earlier selection; clearing an interior stage invalidates that dependent branch/history. Clear all clears memory. Outputs unaffected. Verified transition cases, TypeScript and Vite build; local bundle refreshed. Execution wiring still pending.
- 2026-09-09 local player: duration-proportional clip-availability timeline (teal available / striped not generated), click-to-position and accessible whole-movie seek slider in both segment player and continuous HLS preview. Segment playback accepts subclip seek offset; actual loaded take lengths replace estimates. TypeScript and Vite build passed; static bundle refreshed. Mobile device playback acceptance remains pending. No paid operations or price changes.
- 2026-09-09 local player sizing: fixed viewport-relative dialog height and equal responsive media/placeholder heights. Long ungenerated segment headings/descriptions scroll inside the bounded stage; timer remains outside the text scroller. Normal video and continuous video use contain scaling. TypeScript/build passed, local assets refreshed; device visual acceptance pending. No billing changes.
- 2026-09-09 correction: replaced timed-preview description scrolling with measured auto-fit typography. Full title/description retained; font size recalculates for text, window size and loaded fonts within the fixed stage. No textual truncation. TypeScript/build passed; local bundle refreshed. Long passages become smaller; device readability acceptance pending.
- 2026-09-10 local player mobile optimization: full viewport dialog at phone/short landscape sizes, safe-area padding, 44px touch controls and seek slider, compact spacing, collapsed labeled Playlist options & synthetic demo panel. Stable media height shared with streaming; complete placeholder text still auto-fits. TypeScript/build passed; refreshed local JS/CSS. Actual phone portrait/landscape acceptance pending; no deployment or pricing changes.
- 2026-09-10 phone preview: tools/phone_preview.py read-only public-asset proxy listening on 192.168.40.67:4181 (session 35875), upstream existing loopback4180. LAN192.168.40.0/24 and Host checks, public allowlist, all writes/auth/private/local-key routes blocked; no forwarded credentials. Public sample GET200 and path protection tests passed. Scoped Wi-Fi firewall installation requested via Windows UAC; user phone connectivity acceptance pending. Stop process and remove named firewall rule to disable. IP may change with DHCP. No production change.
- Phone preview follow-up: firewall confirmed enabled using netsh (scoped4181/LAN). Replaced normal guest shell at LAN root with direct Ultimate sample mount and visible connection/loading status; normal shell depended on blocked session services. Verified browser loads720-segment sample and opens player through4181. Preview process now session1037. Phone retry still required; not yet confirmed from actual device.
- 2026-09-10: Remote mobile sandbox setup: official ngrok 3.39.11 installed under ignored local-runtime; separate tools/remote_sandbox.py loopback password gateway prepared. Unauthenticated routes and traversal/local-only exclusions checked. No public tunnel yet: credential handling requires user authorization after automatic review blocked it. Full remote login/mobile acceptance pending; official website unchanged.
- 2026-09-10 remote access update: user explicitly approved ngrok credential handling; credential saved through loopback form without chat disclosure. ngrok session 16342 serves https://awoke-squatter-decrease.ngrok-free.dev through password gateway session 42729 (4183); sandbox session 89368 (4180). External HTTP tests PASS: password protects API/root; login reaches HTML; sample JSON/CSS 200; private source and local-runtime/login bypass routes 403. Chrome free-ngrok first-visit notice renders blank (cdn.ngrok.com error.js / notice 6024), so actual mobile/browser acceptance remains pending. Setup password is displayed only on local Chrome setup-result tab. No paid generation or official-site deployment. Processes must stay running; automatic startup not installed.
- 2026-09-10: Admin segment workbench now exposes Generate selected sequence above the collapsed panel, Select through final prompt, stop-stage/count, and per-stage run-through controls. Source-only sequence works locally; selecting later stages explicitly stops at the unconnected Video planner with no provider call or charge. This is UI progress, NOT completed worker integration or a generated final prompt. Persisted project binding, exact worker request/response capture, estimates/reservation and stage execution remain required before acceptance.
- 2026-09-10: Admin sample prompt sequence now calls authenticated local-only /api/v1/admin/sample-prompt-sequence, reusing production media-packet, video-prompt, policy-format and storyboard-source compiler functions. It uses server canonical segment/reference data plus displayed resolved settings, saves owner-scoped idempotent preflight traces under ignored local-runtime, and exposes raw/readable function input/output. Reference edits/timing mismatches fail instead of silently falling back. This is deterministic preflight, NOT AI planner execution or provider-final validation. Paid adaptation, quotes, durable production-job/media stages remain unconnected and stop explicitly. Nine sequence smoke tests plus nine source contract tests pass (18 total), including HTTP admin deny/allow. No provider calls or debit; admin local inspection cost exception only. Billing inventory still flags existing plotthirst_clip_preview_runtime.py quote path; not caused or suppressed by this work.
2026-09-10 - Sample clip entry and production handoff (sandbox)
- Added top Generate sequence · Admin shortcut beside Player, opening the prompt workbench.
- Renamed unbilled compiler action to Prepare selected prompts; added Open clip production to import the saved sample and focus the chosen segment in the real project controller.
- Import preserves all 720 segment assignments, full production reference sheets and menu-only headshots. Validates the 21 delivered artifacts without inventing intermediate writer/review history. Unrelated missing references no longer block a segment.
- Validation: 23 Python smoke/source-contract tests pass; TypeScript and production bundle build passed. Browser handoff verification underway. No paid clip generated, no official deployment. Preview settings are not carried into the production copy; paid worker/stage audit, quote and sample publication acceptance remain outstanding.
- Browser testing found and fixed sample-import receipts being checked as nonexistent worker jobs, which cleared the loaded project. Production shortcut imports are now idempotent per account/sample version. Paid worker execution remains unverified; no clip has been charged/generated.
- Browser smoke verified: top Generate sequence shortcut expands the workbench; Open clip production successfully imports and opens Segment 1 with its exact saved excerpt, start/end continuity and three reference sheets. Story/Screenplay/References all show ready, and Create this segment is enabled. No paid button was pressed; end-to-end generation/quotes and public sample publishing are not accepted yet. Sandbox server session 16872 serves the latest code.
2026-09-10 - Selection save and video defaults
- Open clip production now saves the inspected segment into the sequence before opening it, preserving other checked segments.
- Checkbox changes show immediately, roll back on save failure, and show pending/error messages inside the segment modal. Generation remains disabled while a save is in progress.
- Project video model, resolution and frame shape now persist per account/sample version on the server and apply to the sample production copy. Page/segment overrides remain preview-only. Existing take settings are retained.
- 28 regression/smoke tests pass, including selection save/reload/uncheck without losing screenplay readiness, account isolation and video defaults persistence. Browser verification pending. No paid generation or website deployment.
- Live browser reproduced WinError 2 from concurrent shared temporary app-state files; fixed unique temp files plus serialized replacement. Video defaults now have a dedicated small per-account record. Concurrent-save regression and all other tests pass: 29 total. Existing global app-state whole-document last-writer behavior is not redesigned in this patch.
- Final live browser check passed: Video defaults saved to your account and production copy; Open clip production arrives with Include this segment checked and Create this segment enabled. No paid generation submitted. Latest sandbox server session: 71368. Existing billing inventory gap remains plotthirst_clip_preview_runtime.py quote -> backend_billable_cost, unchanged by this task.
2026-09-10 - Compact account key-source indicators
- Removed the obstructing browser-key banner. Account box shows O (OpenAI), G (Grok), A (Atlas) key badges only when own-key mode is selected; blue is effective own key, green is platform mode. Accessible labels explain missing-own-key fallback. Saved inactive overrides do not trigger indicators. No credential routing, pricing or paid operations changed. Local sandbox only; mobile account-box visibility follows existing header constraints.
2026-09-10 - Screenplay cover carousel and inline references
- Removed References & cover toolbar toggle. Merged unique reference information at the screenplay top with an inline expandable reference gallery, no popup. Removed duplicate gallery cover images/links.
- Added fixed-size cover carousel with previous/next controls, version count, names and default marker. Includes all three sample covers and available project cover versions. Browsing does not modify saved default selection. Typecheck/build passed and served assets updated. Live browser verified removed toolbar button, inline references, and Next cover changing 1/3 titled/default to 2/3 artwork without title. Official deployment not performed.
2026-09-10 - Mouse-responsive project reference carousels
- All sample character, location and prop references now appear in animated horizontal carousels instead of a static card grid. Mouse proximity to either edge controls glide speed; center/leave stops. Hover lifts cards. Touch swipe, keyboard arrows, Previous/Next controls and reduced-motion support retained.
- Full-sheet links, canon DNA, and recast placeholder retained. Gallery starts expanded at screenplay top. Typecheck and frontend build passed; served sandbox assets updated. No pricing, reference generation or default selection changes. Mobile physical-device acceptance and official deployment pending.
2026-09-10 - Three-position reference carousel
- Replaced scrolling reference strips with rotating center/left/right cards: center larger and clickable, side references smaller and angled in depth, remaining cards hidden. Mouse edges rotate with wraparound; buttons, keyboard and touch swipe supported; reduced motion disables automatic hover rotation and transitions. Names immediately below portraits.
- Character introductions use saved role profile text instead of visual DNA. Full-sheet details and recast option retained. Typecheck/build passed; sandbox browser confirmed center-only full-sheet link and Next rotation from Mara to Elias with correct role summary. Physical mobile gesture/visual acceptance remains pending. No provider/cost changes.
2026-09-10 - Reference carousel portrait flicker
- Fixed center/side wrapper replacement that remounted each portrait while rotating. Anchor/image now remain mounted with only link/tab eligibility changing. Eager loading retains portraits ahead of rotation; removed visibility toggling and animated brightness filters, added compositing/backface hints for mobile.
- Typecheck and build passed, served sandbox assets refreshed. Physical iPhone flicker acceptance pending. Existing original PNG menu portraits are approximately 2MB each; first-load transfer cost is unchanged and lighter delivery derivatives remain a possible follow-up. No image regeneration or provider billing changes.
2026-09-10 - Reference carousel auto rotation and side selection
- Side portraits are mouse/touch/keyboard controls that center the selected reference without opening a sheet. Stable image elements retained.
- Each carousel defaults Auto rotate on, advancing every five seconds at rest. Manual changes reset the timer. Unchecking stops both timed and mouse-edge rotation; explicit arrow/swipe/side selection still works. Timer cleanup and quiet screen-reader announcements during automatic motion included.
- Typecheck/build passed; served sandbox assets refreshed. No pricing or generation changes; mobile acceptance pending.
2026-09-10 - Continuous hover rotation and lightweight portraits
- Manual arrows moved below center image. Hover uses fractional position animation: zero at center line, opposite signed rotation either side, progressively increasing to a two-card/second maximum beyond outer images. Timed auto rotation pauses during hover; leaving snaps to nearest card.
- Added 18 480px WebP display derivatives: 482,410 bytes versus 39,828,405 original PNG bytes. Original headshots/full sheets remain unchanged. Stable mounted portraits and visible failed-image Retry retained. All 18 derivatives decoded and HTTP-served with matching bytes. Typecheck/build passed. Physical iPhone motion/loading acceptance pending; no official deployment or pricing changes.
2026-09-10 - Carousel direction and playback control
- Reversed mouse-proportional rotation direction. Replaced auto checkbox with centered accessible play/pause icon button above manual arrows. Icon/action label change with playback state; default on and five-second interval retained. Typecheck passed. Sandbox-only UI change, no cost impact.
2026-09-10 - Visibility-independent portrait fetch/decode
- Each mounted carousel portrait explicitly fetches its display file and decodes an Image before exposing a retained object URL. Loading no longer relies on transformed offscreen img visibility. Object URLs are revoked only on source/retry/unmount; cancelled loads cannot update unmounted components. Loading/error placeholders and external Retry control remain.
- Typecheck/build passed and sandbox assets refreshed. User-reported external-browser/iPhone issue still needs physical-device verification; do not mark accepted from code alone. No provider requests or source image changes.
2026-09-10 - External portrait transport diagnosis and fix
- Reproduced ngrok ERR_NGROK_6024 warning text returned with HTTP 200 for iPhone-UA image fetches. Localhost checks had missed this. Added ngrok-skip-browser-warning only for same-origin ngrok-free.dev portrait requests; gateway authentication remains required.
- Server sends previews as application/octet-stream; loader now validates RIFF/WEBP bytes and constructs image/webp blobs, rejecting non-image responses.
- All 18 authenticated external portrait requests using iPhone UA and tunnel header matched local bytes and decoded successfully. Typecheck/build passed; sandbox served assets updated. Physical Safari rendering confirmation still pending. No website deployment or cost changes.
2026-09-10 - Portrait cache isolation and diagnostic build v4
- Changed frontend asset version to 20260910-portrait-loader-v4; portrait requests now use explicit loader version plus no-store. Added request/response/decode/display error details with v4 marker and ignored image errors before a ready source is set.
- Typecheck/build passed; sandbox assets refreshed. External Chrome showed old unavailable placeholders before reload. Reload performed, but further inspection blocked by an open browser-extension UI. External rendering remains unaccepted until verification; no claim of resolved mobile issue.
2026-09-10 - Portrait HTTP 503 recovery (v5)
- User reported 503 for later portraits. An 18-request external burst passed from the PC; the browser-specific upstream failure remains unconfirmed. Added shared maximum-two transfer queue, up to four attempts for transient HTTP/network failures, bounded exponential delay honoring Retry-After, cancellation and queue recovery. Ngrok error codes retained in final messages.
- Cache-busted loader v5; tests cover 503 then success, nonretryable 403, repeated 503 limit/error code, concurrency cap across 18 requests, abort and recovery. Typecheck passed. Mobile acceptance pending; this mitigation is not proof the upstream failure is resolved. No provider operations/cost changes.
2026-09-10 - Hold-to-rotate mobile reference carousel
- Added 300ms touch hold to activate proportional left/right rotation using the mouse speed curve. Lift/cancel stops and snaps nearest card. Pending holds cancel after movement so ordinary vertical scrolling/quick swipes remain available. Held gestures suppress tap-through/context menu and pause automatic rotation; release restarts its five-second countdown when enabled. Touch guidance and active outline included.
- Typecheck/build passed; physical mobile touch/scroll acceptance pending. User confirmed previous portrait request-queue fix resolved loading in all browsers. Source imagery and paid generation unchanged.
2026-09-11 — Segment production selection (local, acceptance pending)
- Added three-page row browser, alternating page shading, movie-wide navigation and persistent sample selection handoff.
- Added review-before-apply prompt suggestions, count/duration bounds, ungenerated-only candidates, explicit keyword fallback disclosure.
- Added selected-project video defaults editor; saves future model/resolution without changing existing takes.
- Run selected now queues clips-only continuation (storyboards then clips, no implicit stitch) and shows returned job progress nearby.
- Local admin browser-key setup is reused for segment production; optional Atlas/xAI credentials remain process-memory-only under existing loopback guards. Hosted key management remains separate.
- Focused selection/defaults/local-runtime tests: 10 passed. Typecheck/build passed. Broader screenplay suite has three pre-existing stale sample/reference assertions (version 2 vs 3, all-project reference expectations).
- Paid provider execution, mobile physical-device acceptance and full seven-stage real-provider inspector remain unverified. Inspector is still compiler preflight; production button routes to durable worker.
- Billing audit still reports the existing clip-preview quote inventory gap. No billing baseline refreshed to suppress it. Existing focused-selection provider call pricing/operating coverage remains a known gap; no new paid test.
Browser verification: the sample's first three exact ranges transfer to production as 3 selected / 30 seconds; saved Seedance 2.0 Mini / 480p shown. Pages 4–6 and back preserve selection. Added expanded selector to avoid nested-header/modal obstruction, explicit checkbox dimensions, adjacent production audit/progress and early missing-video-key guard. No paid media submitted. Cost monitor remains visibly stale for server.py/sample_video_defaults.py pending broader pricing re-audit; numeric prices were not changed.
2026-09-11 local clip recovery
- Reconciled first three Quiet Signal clips from verified existing child artifacts (3 storyboards, 3 videos); no generation or additional debit. Parent completion restored with original failure retained in recovery evidence.
- Local durable jobs now serialize cross-process transactions and use unique temporary files with bounded Windows replace retries. Three-process/36-job preservation test passed.
- Progress can discover storyboard/video children independently; terminal progress refreshes segment media and replaces stale queue text.
- Verified sandbox segment list shows three completed takes and player plays sequentially; local only, not AWS deployment.
- 2026-09-11 local: project switcher now lists server-saved projects independently of Ultimate run history; projectId links load an authorized screenplay map in fresh browsers. Typecheck/build passed; verified in user Chrome through ngrok: 3 clips available, video readyState 4, playback time advancing (9.52/10.08s). Mobile uses the same projectId link; physical phone confirmation remains user-side.
2026-09-11 — Personal preview merge to shared sample (local)
Completed the first merge of three existing Seedance Mini 480p clips. Added explicit Merge to project · Sample in production preview. Authenticated contributors may merge only their own current-sample source revision; exact segment identity/timing/prose checks preserve screenplay. Existing takes/default selection remain; duplicate merge adds zero. Published immutable media copies and allowlisted public metadata are separate from private contribution audit records. Group/public visibility flags are independent; public player receives filtered credit. No generation/provider call/debit. Local filesystem publication only; S3 publish adapter, multi-account group/manager UI, selectable published primary takes, attribution preference edits and official deployment remain unaccepted. Two focused tests pass; typecheck/build and syntax checks pass. Sample GET now revalidates; MP4 byte ranges added for Safari. Cost impact: additional local copy of three existing files, no new provider work; hosted storage/transfer coverage remains a deployment prerequisite. Existing billing inventory clip-preview gap and cost-monitor stale source hashes remain, not suppressed.
Verification update: four sample merge tests pass (idempotence/credit preservation, primary-take preservation, edited-prose mismatch, path containment, foreign-project denial and hosted-adapter guard). Chrome through ngrok sample=1 shows 3 clips available and advanced from clip 1 to clip 2; segment cards show published takes. Local unauthenticated sample media serves valid 206 prefix/suffix ranges and 416 invalid ranges. Physical iPhone playback remains user confirmation.
2026-09-11 sandbox auto-merge / mobile playback: explicit per-owner/project administrator opt-in saved server-side, enabled for admin-michelangelo project 99420d8d-a9ae-44b6-a449-266068c33e63. Server daemon checks every30s, file-mtime gate skips unchanged clip jobs. Reuses authorized/idempotent sample publication, stores errors without regenerating; browser may close. Manual merge retained. Five tests and typecheck/build pass; actual first auto tick reports zero new takes (three already published). Local-only cost exception unchanged, no provider operation/debit. Hosted S3/group acceptance outstanding. Mobile cause reproduced with iPhone Safari user agent through ngrok: native MP4 request returns HTTP200 text/html ERR_NGROK; identical request with ngrok-skip-browser-warning returns206 video/mp4. Sample player now fetches tunnel clips with bypass header into short-lived object URLs, aborts/revokes on segment change, shows loading and supports retry. Production/non-ngrok URLs retain native streaming. Physical iPhone confirmation pending. Existing billing/cost monitor gaps remain reported.
- 2026-09-11 local reference handoff repair: bundled sample image bytes now load through the image normalizer with path containment and size checks. OpenAI storyboard generation stops on unreadable/over-limit references or rejected image edits, without text-only fallback; Seedance 2.0 reference submission rejects dropped images. 12 focused tests pass. Player buffers one adjacent tunnel clip without re-encoding and adds fading centered play/pause for clips and timed placeholders. 21:9 added to project controls. New paid 21:9 batch and mobile acceptance still pending; not deployed to AWS.
- 2026-09-11 follow-up: original-cast 21:9 retry is processing locally as screenplay-segment-production_cbb03fbbc3ff47f895, map production-map_b97ba8d9362dc243, first three 10s segments only, Seedance Mini 480p, stop after clips. Actual normalized reference counts verified 3/3, 2/2, 2/2 before submission. Provider visual acceptance remains pending. Original bitrate retained.
2026-09-11 — Secondary sample takes and SFX-only retry
- Local sandbox: preserved original first-three sample clips as old/secondary; replacement takes become primary automatically on merge. UI labels retained versions.
- Explicit native audio policy travels through video prompt sources (English/Chinese), the planner packet and final submission after rewriting. This sample batch uses SFX/ambience only, no music or speech; no provider operation added.
- Three 21:9 replacement storyboards completed with canonical references. Video handoff resumed after the old parent was stopped to load the policy. Clip completion and mobile playback still require verification; no official deployment.
- Verification: 12 focused publication/audio/reference tests passed, TypeScript check and Vite build passed.
- Accepted resume: `screenplay-segment-production_e63b019cc4854e65a7`, processing dependencies. Previous stopped parent `screenplay-segment-production_cbb03fbbc3ff47f895` had a Windows app-state replacement failure; completed 3/3 storyboard artifacts preserved and reused. Local runtime restarted after confirming no active provider jobs.
2026-09-11 — Completed clips auto playlist
- Local player adds a visible Completed clips only mode, omits missing segments and preserves current clip identity when publication updates. Small sample publication manifest polled every 15 seconds while player is open; no full-project polling. Primary published takes only. At end, newly published clips can continue without replaying finished clips.
- Six focused playlist checks passed: missing/placeholder exclusion, prepared clip inclusion, stable current position, newly inserted/appended clips after completion and no repeats while waiting. TypeScript check and Vite production build passed; physical mobile playback not yet accepted.
2026-09-11 — Location reference viewpoint isolation
- Shared storyboard/video planner packet and English/Chinese video source prompts now separate interior/exterior reference views by shot, prohibit duplicating the enclosing building through its own window, and preserve explicitly established wings/reflections and multi-room cuts. Prompt compaction is instructed to retain these spatial relationships.
- Verification: 8 focused location/audio/reference tests passed. Existing clips are unchanged. Current long-lived local server/worker require a reload before using this change; a new paid generation has not been performed to validate provider adherence.
- No added provider stage or retry; existing prompt input grows slightly. Known billing inventory/cost-baseline gaps remain; no prices or baseline hashes refreshed.
2026-09-11 — Prompt-only spatial prevention across media stages
- Added shared location-reference sheet guidance for normal creation and existing policy-safe retry, plus single-view selection guidance for location menu images. Separate panels/rooms, presentation-only adjacency, consistent geometry and plausible window sightlines; no duplicate enclosing building or invented filler rooms. Existing shared storyboard/video spatial guidance retained. Applies across generators; no crop workflow or model-specific switch added.
- Nine focused reference/storyboard/video/audio tests passed. Existing assets remain unchanged. Running server/worker still require reloading before future generation uses the edited source; provider adherence is not yet verified in a fresh paid run.
- 2026-09-11 clarification: explicitly permit interior and exterior views together on reference/storyboard sheets. Spatial restrictions apply within each panel/shot; gutters are presentation boundaries, not scene geometry. Preserve planned exterior/interior cuts and continuous camera moves. Four focused location-prompt tests passed. Runtime reload and fresh provider validation remain pending.
2026-09-11: AI playlist planning
Implemented in the local build: player prompt, whole-segment duration control, full-screenplay selection, saved personal playlists, free quote and explicit maximum-credit confirmation. One GPT-4.1-mini call; no video generation. Settlement uses actual returned tokens plus one operating allowance, account multiplier/discount and configured buffer. Local own-key mode excludes provider wholesale from site credits. Duplicate submissions cannot rerun the provider; failed invalid output releases the hold. Uncertain settlement is retained for reconciliation, not automatically retried. Seven focused billing/selection tests pass; frontend typecheck/build passes. No paid provider validation or website deployment for this feature yet. Existing unrelated billing inventory/cost-monitor gaps remain open.
2026-09-11 playlist production (local): Player now offers a one-minute trailer preset, reviewable selected segment list and Generate this playlist with a separate production confirmation and inline job progress. Canonical sample segment IDs now map into player clips; generation maps exact whole ranges into the existing sample production project and rejects incompatible layouts. Existing planner/storyboard/video pipeline and saved project defaults are reused, completed media preserved, stopAfterClips enabled; no automatic stitch or extra planning debit. AI playlist fee is separate from existing video production charges. Existing production overhead/quote gaps remain: this change does not certify an all-in video quote. TypeScript and local bundle build pass. No paid trailer/clip run or deployment performed; end-to-end paid acceptance remains pending.
2026-09-11 authorized Terra playlist comparison: same complete 720-segment input and unchanged trailer prompt as mini. One completed gpt-5.6-terra Responses call, medium reasoning, 71801 input tokens (71798 cache-write tokens), 380 output tokens. Estimated provider cost $0.184061 including cache-write premium, direct browser own-key diagnostic; no additional site debit and no video generation. Saved separately in personal playlist index as Terra test - Signal Beyond the Sky. Selected P0001-S003, P0002-S004, P0005-S001, P0029-S006, P0041-S005, P0043-S005: valid six whole segments, 60 seconds. Rationale matches actual selections, but coverage remains first 43 minutes of 120, so this proves a better setup teaser, not a strong full-movie action trailer. Default planner remains mini pending user decision. Temporary diagnostic pages removed after recording the result.
2026-09-11 Terra playlist default: user approved switching selector to gpt-5.6-terra. Trailer preset now invites slight reveals from later scenes that raise questions without explaining outcomes. Quotes include model identity; execution honors saved quote model. Terra uses Responses medium reasoning directly with no fallback duplicate call, a reasoning output allowance, normalized usage and reported cache-write/cache-read pricing. Existing playlists preserved. Local UI rebuilt and idle server restarted; paid run of revised preset not performed. Existing unrelated cost monitor and billing inventory gaps remain.
2026-09-11 playlist editorial directions v3: requires early/middle/late comparison without coverage quotas, explicit intended playback order, one grounded reason per selected ID and concise category-level exclusions (including reasons for excluding broad movie portions). New results validate reasons and retain response order; player displays reasons/exclusions. Old saved playlists remain readable. Original source context still drives generation. Eight focused tests pass. Additional response text uses the existing single quoted call, with typical output allowance increased; no new review/debit/stage and no paid run. Existing broader cost-audit gaps remain.
Local Windows save recovery — 2026-09-12
- Added bounded atomic replacement retry for Windows access/sharing errors in app-state saves; preserves the previous file on permanent failure and does not retry provider calls.
- Verified: five focused tests passed, including a real Windows reader denying delete sharing and concurrent-save coverage. Applied to local runtime; production deployment not verified. Resumed existing six-clip trailer parent after its failed save; generation/player acceptance remains pending.
Storyboard reference capacity correction — 2026-09-12
- Local OpenAI storyboard default now matches the existing 16-image adapter limit, replacing an artificial four-reference cap. Explicit lower limits and fail-on-pruning behavior remain intact. Selected trailer scenes need up to eight references; original assets preserved.
- Eight focused tests passed (reference capacity, overflow/explicit limits, Windows atomic saves). Same failed trailer parent resumed; final clip/player verification pending. No production deployment in this change.
- Existing image estimate and execution use selected reference count. No additional generation operation or duplicate parent charge introduced. Existing cost-monitor stale-review and billing audit gaps remain open.
Local provider readiness follow-up — 2026-09-12
- Runtime status now reports provider-presence booleans without exposing credentials. Resumed automatic workers and additional takes now check the selected video provider before new storyboard work. OpenAI browser restoration now includes session storage. Three local runtime tests passed.
- Atlas key not recovered from localhost/127.0.0.1 ports 4180/4181 in this session; six storyboards remain saved and video batch is not requeued without Atlas. Additional-take two-mode behavior documented in docs/ADDITIONAL_TAKE_MODES.md; explicit UI/rebuild contract remains pending.
Shared trailer playlist and dialogue audit — 2026-09-12
- Published The Route Opens playlist with six canonical segment IDs in original AI order (page 110 before page 87); added visible saved-playlist control and selection reasons to sample player. All six IDs match published clips. No provider call. Mobile acceptance pending.
- Read-only audit: P0045-S003 screenplay says Mara: The route is opening. Final Chinese compressor translated spoken line and added subtitle instruction despite its system rule against changing dialogue. No clip or prompt regenerated. Needs validation of dialogue language/text after compression, not merely another language instruction.
2026-09-12: Final video dialogue preset (local)
- Python appends English-only speech negatives and the exact assigned dialogue after translation/repair, including saved prompts. Explicit spoken-language settings override English; silent/SFX-only boards stay silent. UTF-8 overflow raises without truncating the suffix.
- No new provider call, debit, or retry added. Four focused unit tests cover suffix replay, silence, language overrides, and byte limits. Live generated-audio acceptance and deployment remain pending; prompting is not audio-language verification.
2026-09-12: Player fullscreen and H3 retake
- Added fullscreen toggle with expanded mobile fallback, shared by movie, trailer and synthetic playback. Typecheck and production build passed; sandbox assets refreshed. Mobile acceptance pending.
- Requested P0045-S003 standard MiniMax H3 retake (not Developer), 21:9, preserving existing take. Submission awaits local provider credentials; no new paid clip submitted.
2026-09-13: Windows local credential persistence
- Local opt-in worker restores provider keys from Windows Credential Manager scoped to this checkout/current Windows user. Atlas Save in loopback Access Keys persists directly; worker configuration saves OpenAI/provider keys too. No credential files in project/deployment. Hosted AWS remains excluded.
- Five runtime tests pass; real Windows dummy credential write/read/delete verified. Actual Atlas re-entry and subsequent generation remain pending. Remove persistent entries through Windows Credential Manager (Plotthirst/local); browser-only Clear does not delete Windows entries yet.
- Sample merge still copies local public MP4 assets plus publication.json; hosted S3 merge adapter is disabled and remains separate work.
2026-09-13 local update: Samples now opens a gallery, retaining the existing Quiet Signal URL. Admins may publish/update a snapshot of their own saved project screenplay, selected clips and cover, or remove its listing. Public snapshots allowlist fields and exclude prompts, settings and credentials. Local immutable media copies and hosted S3 objects are supported; hosted permissions/concurrent publishers still need live acceptance. Twelve focused catalog/credential/dialogue tests pass; 94 additional regression tests and three JS smoke tools pass; frontend typecheck/build pass. No new AI review or generation fee for catalog publication; admin publishing storage/transfer is a site-owned expense. H3 replacement P0045-S003 job_5556035a1f484953af submitted standard minimax/h3/reference-to-video, 768p,10s,21:9,seven references, $1 provider estimate; provider result pending. Found two Windows listeners on4180, consolidated to one, confirmed Windows key persistence and added exclusive socket binding to prevent duplicate listeners. Website deployment pending sample replacement and UI verification. Existing cost monitor stale hashes and backend billing coverage gaps remain explicit.
2026-09-13 follow-up: H3 job job_5556035a1f484953af completed1/1; selected sample take vid-14c2c09ebb20, prior take retained secondary. Verified H264/AAC,10.125s,1536x672 returned for21:9 request,7 references. Samples gallery public and admin controls rendered in browser on isolated4197. Main4180 updated after completion; one listener and persisted credentials verified. Production push pending.
2026-09-13 deployment evidence: Production workflow 34756682961 succeeded (commit 118406a). The live version API confirmed that revision. The Samples API returned The Quiet Signal, with H3 take vid-14c2c09ebb20 selected and the older take retained. The MP4 served a valid 206 video/mp4 byte range; the cover returned 200 image/png. A signed-out browser check exposed a navigation restriction. Five authorization assertions pass for the correction in a6bc4f5; workflow 34757224129 is deploying it. Admin gallery controls were verified locally. Publishing an additional live user project has not been exercised.
2026-09-13 final web verification: Live build 09896e4 opens Samples while signed out, confirmed in browser with no admin publication controls. The gallery link opens the existing Quiet Signal sample. The replacement H3 media and cover were verified on production. Final workflow 34757877190 may still be completing worker stabilization; the web revision is verified live.
2026-09-13 — Player take selection and fullscreen
- Local verified: visual-stage-only fullscreen survives clip advance; sample gallery opens the screenplay without reloading the site; compact generator/resolution specs; selectable retained takes.
- Explicit scope: project default follows existing project permissions (shared sample requires admin); playlist-only overrides persist per account and playlist title/order, with Follow project default to clear. No takes deleted.
- Provider-free settings operations; no provider invocation, reservation, debit, or generation. Small JSON storage/read cost remains site operating overhead, not a new AI charge.
- Tests: frontend typecheck/build, three scoped persistence/authorization tests, public route checks, Python compilation, browser save/reopen/follow-default/project-save and video fullscreen/clip-advance smoke. Existing billing audit gap and movie-cost baseline staleness are not resolved by this UI update.
- Deployment pending; physical iPhone native-fullscreen acceptance remains to verify.
2026-09-13 player deployment verified: live revision 2a604d4, sample playback API returns nine slots and H3 default preserved. Signed-out live browser opens Samples directly into screenplay and shows retained takes with model/resolution. Local 390px specs measured one line (337px content within337px width). AWS workflow34768380604 may still stabilize workers; web revision is live. Production write probe was declined by automatic approval review; local permission tests passed.
September 13, 2026 — shared project contribution workflow (local)
Implemented Explore projects with All / Samples / Community, independent visibility and contribution settings, account-restricted Plotthirst branding, admin sample labeling, and New project navigation from screenplay. Quiet Signal uses one shared project ID. Per-account production work remains unpublished until Approve to project; first published take is default and later takes are alternatives. Management can inspect contributor identity and unpublished takes. Legacy copy/merge endpoints are retired.
Verification: TypeScript checks and production build; 12 focused permission/default/publication tests; local browser discovery, owner settings and preserved nine published segments. No paid generation performed. Not deployed in this change. Remaining acceptance: two-account hosted contribution/publication, S3 conditional-write concurrency, mobile owner settings, historical personal sample-copy migration, and production handoff latency (local state file is approximately 484 MB). Existing legacy copies are retained. Screenplay multi-segment UI remains an incremental refinement area.
Cost review: discovery/access/default settings invoke no provider. Publishing reuses existing video bytes; storage/request/transfer remain site operating expenses, with no new generation charge. Generation continues through existing quotes/reservations. Existing billing audit and movie-cost baseline gaps remain explicit; no pricing fingerprints refreshed without a full review.
Live website follow-up — hosted multi-account publishing
- Acceptance open: Verify hosted multi-account publishing on the live website: two separate contributor accounts, private unpublished takes, direct approval to the same project, first-published default under concurrent submissions, retained alternative takes, manager/admin visibility, and playback from a second device. Deferred live acceptance; not marked verified.
- Player refinement: playlists, creation, trailer selection, ordering and playlist generation grouped in one expandable Playlists menu. Clip takes and project details collapsed below playback. Local UI/build verification only; no paid generation or hosted release in this change.
September 14 — Seedance 2.5 inputs (local)
- Shared resolution catalog now includes Original, SR and ESR variants; Quick Solo groups the three families and supports Auto duration/ratio. Video Edit uses one source, adaptive ratio and duration -1. Other generators do not inherit the new ESR choices.
- Verification: 28 contract/routing tests; frontend build/typecheck. No paid generation. See docs/SEEDANCE_25_OPTIONS_2026-09-14.md for estimated pricing basis and remaining reconciliation limits.
- Acceptance open: Live acceptance: upload one 4–30 second video, estimate then edit with Seedance 2.5, verify selected resolution, Auto duration, source aspect ratio, actual output and billing on another device.
- 2026-09-14: Seedance 2.5-only release `7d83fc5` pushed to live; build-info, Original/SR/ESR catalog, Auto duration and source-shape frontend verified. 28 release tests/build/typecheck passed. No paid generation performed; real upload/output acceptance remains open. AWS workflow 34814775713 final stability pending. Community publishing changes remain sandbox-only.
- 2026-09-14 Lambda packaging repair: missing shared/seedance25-options.json fixed in deployed function. Repair run 34816180712 succeeded and downloaded the deployed ZIP to verify seedance25 imports and all 11 resolutions. Permanent packaging/import guard pushed in 4a4b758. No generation invoked; user retry acceptance remains open.
- 2026-09-14 LOCAL: automatic Seedance input pixel-size preparation implemented; 35 checks and real source conversion pass. Original/duration/audio preserved. User supplied a phone-download-ready copy through existing sandbox. No deployment; hosted worker FFmpeg acceptance and preparation cost allocation remain open.
- 2026-09-14 LOCAL: Quick Solo source video previews now include playsInline, authenticated same-origin /media/ fallback, error/retry UI, and object URL cleanup across edit/extend/upscale. No tokens sent to external URLs. TypeScript and Vite build passed. Real iPhone/private-upload playback acceptance remains open; not deployed.
- 2026-09-14 LOCAL: WAN 3.0 and Prime (six modes) plus resolution-aware estimates; Quick Solo standard creation/editing now quotes credits before confirmation. 44 tests/build/typecheck pass. WAN real generation and separate Extend/Loop quote flow remain acceptance work. Not deployed. Details: docs/WAN3_QUICK_SOLO_2026-09-14.md.
- 2026-09-14 LOCAL: production reference/storyboard canvas lock and actual-image ratio validation; preserve canon and existing versions. See app-repair/docs/PRODUCTION_FRAMING_2026-09-14.md. Pending real image/identity and internal-panel review; not deployed.
- 2026-09-14 LOCAL WAN acceptance: P0110-S004 generated using a 1916x821 scene frame built from five canon sheets; WAN3 I2V 480p/10s returned 978x418 H.264/AAC. Published as first/default sample take with attribution audit. No live deployment. Audio quality still requires review. Quick Solo own-key server-key guard and full browser localStorage remain open; this authorized administrative test used the existing own-key route and session storage. See docs/PRODUCTION_FRAMING_2026-09-14.md.
WAN follow-up local test (2026-09-14): P0112-S005 and P0114-S003 completed as WAN 3.0 I2V 480p, 978x418, 10.03s H.264/AAC files. Dedicated 21:9 first frames preserve original reference inputs. Strong no-music/English dialogue prompts submitted; actual soundtrack verification remains pending because automatic approval review requires explicit approval to transmit audio to OpenAI. Neither new take is published as a project default yet. Originals retained without automatic trimming. User observed repeated cube catch in 110/4: first-frame/action-state mismatch is a candidate cause, not proof all I2V needs trimming. Local/ngrok review artifacts only, no live deployment. Provider video estimate $0.40-$0.50 per clip, exact charge unverified; no automatic retries or Plotthirst credit debit.
Adaptive ambience playback (2026-09-14)
Clip-relative start/end/source offsets now drive TypeScript player audio against the media clock. Pause, seek, buffering, rate, volume, mute, clip/take change and close stop or resynchronize layers. Missing clips remain silent; baked-in cues are excluded. Continuous playlists remap boundaries in selected order. Separate checkbox and playing labels included. Workspace passes saved mapped ambience URLs without private prompts. No new provider call or playback charge; browser decode plus existing storage/transfer costs remain. Music-off no longer disables mapper; missing historical flags enable planning only, not new paid generation. Explicit false remains honored; clip-only recovery preserves mapper enabled state in plan mode.
Limitations: sample has no generated ambience to exercise live. Durable once-per-location generation, timed placement authoring beyond legacy whole-clip maps, and publishing private ambience assets into shared project storage still require end-to-end acceptance; no claim those are completed. No historical jobs restarted or extra audio generated. Dedicated WAN test clips remain unchanged. Existing billing/operating allowance gaps and stale whole-movie pricing audit remain visibly flagged.
Local verification: 55 backend regressions, TypeScript and bundle passed. Live rollout pending.
Live web verification 2026-09-14: app.plotthirst.com/api/v1/version reports d7322f5; frontend bundle includes Mapped ambience and WAN 3; public project catalog returns one project; sample playback retains nine published segments. GitHub run 34851896662 still rolling out ECS services at this checkpoint. Local tests: 55 backend + 8 community + 4 take tests; TypeScript, build and cue-boundary/loop tests pass. No new provider generation in this change. Audio-map asset generation/publication and mobile audio acceptance remain pending.
Deployment completion: GitHub production workflow 34851896662 succeeded for d7322f5, including web/worker rollout and serverless packaging. Existing nine live sample clips preserved.
2026-09-14 WAN sample media release: add first/default takes for P0110-S004, P0112-S005 and P0114-S003, preserving every existing take/default. 12 published segments, up from9. Three H.264/AAC assets total33,278,152 bytes; no new provider calls or credit charges. Existing hosting/storage/download costs apply; no new pricing assumptions. Public contributor-name privacy retained; private creator evidence retained in local-runtime/wan-live-publication-audit.json. Audio remains unverified. Release asset paths and selected-take IDs checked; live verification pending.
WAN sample media live verified: playback endpoint reports12 completed segments. P0110-S004, P0112-S005 and P0114-S003 selected-take media all return206 video/mp4 byte ranges with valid MP4 headers and matching file sizes. Existing takes preserved. Release7ce2490; audio review still unverified.
2026-09-14 screenplay Lens menu (local): create a titled lens inline and save through existing account preset API. New lenses appear unchecked in existing scope-aware checklist; checking one also enables lens application in that scope. Dynamic presets inherit defaults correctly. Empty Additional lens direction field is hidden; existing nonempty notes remain visible for manual migration without loss. Save failure retains form text and does not claim an account save. No new provider calls, charges or pricing changes. TypeScript and production build pass; live deployment not performed for this change.
2026-09-14 player menu local update: completed-clips auto playlist is selected by default, including opening the playlist menu. Auto playlist and whole movie (with missing segments) controls sit outside the collapsed See more playlists section. Custom/AI playlists remain inside. TypeScript and production build pass. No provider calls, billing changes or live deployment.
Playlist download controls and temporary export cache (2026-09-14)
Local only: player exports the exact loaded playlist, ordered takes, as direct MP4 / MP4 plus clips ZIP / clips ZIP. Missing videos are not silently skipped. Optional mapped ambience is rendered into the stitched file only, with measured clip-relative timing. Cached artifacts are keyed by owner/project/ordered identities/content revisions/output/audio profile; access, presence and expiry are rechecked. CAS claims and frozen generation-specific quotes prevent repeated builds/charges; uncertain submission or settlement requires recovery rather than replay. Sources unchanged. New export/checkpoint metadata uses existing14/7/3-day retention. Local disk cleanup and hosted lifecycle/permission acceptance still pending. Ten unit tests and three real FFmpeg/ZIP smoke formats pass; source bytes and ZIP order verified. TypeScript and build pass. Ngrok UI refreshed: 12 completed clips and all download controls visible. No paid sample export or live deployment. Fixed operating-build estimate applies even with own provider keys; no provider cost; storage/egress are site-owned costs, cache hits incur no new build debit. Global pre-existing pricing baseline and unrelated billing inventory gap remain explicitly stale. Details: app-repair/docs/PLAYLIST_EXPORTS_2026-09-14.md.
Playlist export verification completion: actual ngrok12-clip ZIP quote succeeds (1 credit shown; no build/debit submitted). Eleven unit tests including no extra whole-project packaging, plus real FFmpeg/ZIP tests for all formats pass. Dedicated local export-only worker started; normal production queues untouched. Live website not changed.
September 15 sandbox menu refinement (not deployed)
- Recorded evidence: One Projects menu contains saved projects and samples/community; fresh projects hide Production overview.
- Recorded evidence: Removed top-bar and Start attribution controls. Non-owner contributors choose group/public credit per unpublished clip, with an optional project default; owner controls stay hidden. Server retains creator identity and sanitizes visibility flags.
- Acceptance open: Live deployment and mobile contributor/owner acceptance remain pending the next combined release. Local TypeScript/build and eight community tests pass.
September 15: Quick Create model input coverage
- Recorded evidence: Source/API audit recorded in app-repair/docs/GROK_SEEDANCE_INPUT_AUDIT_2026-09-15.md; all twelve locally offered Seedance endpoints individually checked.
- Acceptance open: Capability-driven image roles, video/audio reference uploads, preset voices, valid duration/ratio/resolution controls, persistence and provider-field forwarding. Include quote/settlement parity and no silently dropped references. Audit only; fixes and live acceptance remain pending.
- Recorded evidence: September 15 local Grok/Seedance input repair: shared endpoint controls, video/audio/voice handoff, draft persistence, Auto/ratio/resolution validation; release candidate passed 73 unit tests and TypeScript/build checks.
- Recorded evidence: September 15 deployed 30320c2: GitHub run 34992255801 succeeded; web revision 634 and worker revision 593 reached stable state. Public build endpoint and live form bundle verified. 81 unit tests plus worker-handoff/browser smoke checks passed; no paid provider generation.
- Acceptance open: Deployment infrastructure follow-up: rollout could not configure autoscaling, queue alarms/DLQ and worker-crash metric filter with the current permissions. Generation operating-cost baseline remains separately open.
Ultimate project navigation — 2026-09-17 (local, not deployed)
- Login recovery reduced to a small `(forgot password?)` link beside Log In; explanatory login prose removed.
- Fresh Ultimate opens Start. Dashboard is available only for completed non-screenplay project jobs; Player is restricted to the screenplay menu.
- Start selects an existing project or creates one from the subject, with a project number, title and optional description. Existing project identity is preserved across jobs; New job retains the selected project.
- Saved projects support non-screenplay completed-job dashboards. Dashboard job actions load the selected job. History currently shows up to the latest 200 Ultimate jobs per project; older jobs remain available through run lookup.
- Verified locally: TypeScript, Vite build, nine Python project/cover tests, ten workbench assertions, billing inventory check, JS/Python syntax, HTTP 200, and browser Start view showing project selector without Dashboard/Player.
- Pending: hosted deployment and end-to-end acceptance with multiple newly completed jobs under one project. No paid generation was run.
Suno menu simplification — 2026-09-17
- Recorded evidence: Local source menus retain v6, v6 Wild and v6 Mini. Fenix historical builder/routing archived under docs/provider-archives/suno-fenix for restoration; owner requested hiding older choices. No generated audio deleted.
- Acceptance open: Verify the rebuilt and deployed three-page music menus; source changes are not evidence of a live release.
Combined pending release — 2026-09-17
- Recorded evidence: Local validation: 93 focused tests pass for Suno/batch/audio pricing, password recovery, restricted admin support sessions, Ultimate project jobs and routing; TypeScript and production Vite build pass. Removed-model saved drafts choose a current option.
- Acceptance open: Production deployment and public smoke verification pending. Full-movie aggregate cost review remains stale; do not treat it as a fresh all-in quote.
Quiet Signal late character development: local package and existing-workspace media-prompt enrichment complete, with evidence/provenance and chapter/segment gating. 18 focused tests passed; book/screenplay/images/takes preserved. Backend reload, live deployment and generated-performance acceptance remain pending; cached prompts are not retroactively rewritten.
Ultimate menu cleanup (local September 18): idea character count (no fixed input cap), experimental Actions label, browsable live image options with upload/submission guards retained, native dropdown contrast, view status beside toggles, Plotthirst provider branding in platform-key submit summary, and source coverage versus screenplay duration clarification. Showcase Explore projects link removed. TypeScript check and frontend build passed; live deployment and mobile acceptance pending.
Showcase cleanup: removed Start an Idea button and its navigation handler alongside Explore projects. Local only; live deployment pending.
Static early-access landing deployed September 18, 2026: https://plotthirst.com serves the approved PLOTthirst BETA signup from versioned S3 via CloudFront E1T5VWWIBDGWEZ. CloudFormation plotthirst-early-access CREATE_COMPLETE; HTTPS certificate attached; apex A switched to CloudFront. Live API returned 200, a consistent DynamoDB read verified pending persistence, and the browser form showed signup success (including duplicate submission). Synthetic deployment-check-20260918@example.invalid record is marked test-excluded, not an invitation candidate. Mobile-width browser form verified. Original index, version metadata, CloudFront and DNS backed up privately in CloudShell ~/landing-backup-20260918. App and email DNS unchanged. Invitation batches/account activation and dedicated GitHub landing deployment workflow remain future work; no emails sent. AWS usage is paid by Plotthirst.
September 18 waitlist update: live root copy now supports one scene, a sequence, or queuing an entire movie. Free Cloudflare Turnstile configured for plotthirst.com; CloudFormation UPDATE_COMPLETE; missing-token API request rejected 400 and real browser signup succeeded with persistent confirmation. No signup notification emails. Read-only DynamoDB Scan permission on only plotthirst-early-access approved and applied to existing ecsTaskExecutionRole. Admin viewer source 849e4b3 pushed; rollout 35371185881 still in progress at this checkpoint, signed-in admin UI acceptance pending. Viewer counts non-test signups and pages 50 emails; caches 60 seconds; AWS scan/compute are Plotthirst admin overhead, no customer debit. Eleven tests, TypeScript typecheck/build and billing inventory audit passed.
Deployment completion September 18: GitHub run 35371185881 succeeded; live API build 849e4b3 and unauthenticated admin waitlist 403 verified. Signed-in admin UI check remains pending login. Mobile Turnstile changed to compact; no horizontal overflow in 355px browser viewport. Canonical www redirect deployed on CloudFront E1T5VWWIBDGWEZ using plotthirst-canonical-host; Route53 www A/AAAA INSYNC, existing certificate covers www. HTTPS www returns 301 to https://plotthirst.com then 200. CloudFront function/request costs are Plotthirst operating overhead; no customer debit or AI calls.
September 18 Ultimate/Quick Multi UI (local, not deployed): creation dropdown now names Story (Movie) video, Music (Story) video, and Story to video with screenplay off and Story Writer on. Idea to video deferred with reference-planning requirements in docs/ULTIMATE_MODE_MENU_2026-09-18.md. Fresh extra lens textarea removed; legacy notes preserved for preset migration. Video focus marked experimental. Quick Multi copy animation/Copied feedback browser-verified, live file inputs and batch start disabled; Ultimate story-bible upload guarded. TypeScript/build passed; no paid generation. Production/mobile acceptance pending.
September 18 follow-up (local): screenplay choices ordered first and Story stays first in both Movie/Music labels. Idea to video exposed using existing direct-idea backend (optional references, no book/screenplay); selection and effective payload force video-map/Story Writer off. Earlier deferral superseded by owner request. Existing pricing/execution reused; no new provider operation or paid generation. Live deployment pending.
September 18 Ultimate/Quick Multi release: f17ecd0 pushed to production; public version API returned f17ecd0 at 18:04 UTC and the live JavaScript SHA-256 exactly matched the tested local production build. Includes screenplay-first Story labels, direct Idea to video with optional references, saved lens workflow, experimental Video focus, copy feedback and live preview upload/submission guards. GitHub rollout 35377271191 still completing at this checkpoint. Final signed-in/mobile browser acceptance remains pending Chrome login; no paid generation performed. Existing cost-monitor drift remains open; no baseline hashes refreshed.
Release completion September 18: GitHub Actions run 35377271191 succeeded for production commit f17ecd08eb3bf26fc5ad72407e7a2489934bbdad, including ECS app/worker and resilience steps. Public build and exact frontend artifact were verified. Signed-in/mobile UI acceptance remains pending user login, not a failed test.
September 18 waitlist follow-up: owner reports admin 503 and missed signup confirmation. AWS table read succeeded with one pending and one excluded test record; app role has table Scan permission. Root cause unresolved; AWS browser connection dropped. Local persistent confirmation and safe error-category logging prepared, not deployed. Three confirmation tests plus eleven Python tests pass. No emails sent. See docs/WAITLIST_TROUBLESHOOTING_2026-09-18.md.
Waitlist follow-up completion checkpoint: persistent landing signup confirmation deployed and real browser duplicate excluded-test submission verified success; no emails. One-off production-image reader returned count 1 and stopped exit 0, matching allowed IAM simulation. Admin HTTP503 not reproduced/fully diagnosed; phone retry pending. Server logging change local only. See waitlist troubleshooting notes.
September 18 welcome emails deployed: owner approved restricted SES send-from support@plotthirst.com and confirmation state writes. CloudFormation UPDATE_COMPLETE; browser simulator signup succeeded, SES receipt/state stored, duplicate prevented. Existing one pending signup also sent welcome confirmation with persisted SES receipt; inbox arrival awaits recipient confirmation. 19 Python and 3 frontend tests pass, billing inventory unchanged; SES/AWS costs Plotthirst overhead, no customer debit. See docs/WAITLIST_WELCOME_EMAILS_2026-09-18.md.
Missing signup investigation — deployed correction
Consistent DynamoDB read found one real signup and two excluded tests; the real record has confirmationState sent. Prior logs cannot identify the reported friend's attempt. Found a false-success path: a populated hidden website field returned HTTP 200 without saving. Autofill is a possible cause, not proven for this report. Now returns an explicit HTTP 400 and retry instructions; frontend shows the server message. Outcome-only logs contain no personal data. Bot checks remain enabled. Deployed CloudFormation UPDATE_COMPLETE and versioned S3 landing.js X4Tt9OgvKaySx7hz8PnxY.W.tyjhSzy_; CloudFront invalidation I75W44AIT4OTMHNBO1WQ739L19. Public JS matches source exactly. Live negative test returned HTTP400 autofill_or_bot_field, with no record or email created. 19 Python and three Node tests passed before deployment. Missing signup not recovered; friend should retry and wait for persistent saved confirmation and welcome email. Admin503 root cause remains unconfirmed. No new IAM permissions or billing paths.
September 19 — Admin organization (local only)
Early-access signups and User Management are now separate first and second boxes. All 12 top-level Admin boxes use native whole-box details/summary controls, closed on fresh page load; legacy panel toggles skip native details. Existing inputs/actions preserved. HTML structure verified, app.js syntax passes, local root HTTP200. Browser verification encountered the existing site loader and has not confirmed interactive UI. Not deployed. Waitlist withdrawal currently requires replying to support@plotthirst.com for manual handling; no self-service unsubscribe implementation exists.
September 19 — Waitlist unsubscribe (local, pending AWS login)
Secure email-body unsubscribe link and dark branded email prepared; 23 intake and three admin tests pass. Browser email preview checked. Confirm-button POST suppresses early-access emails, keeps suppression record, excludes it from active admin count. No new IAM access or customer charges. Deployment, live smoke test and authorized resend pending. See docs/WAITLIST_UNSUBSCRIBE_2026-09-19.md.
September 19 — Unsubscribe deployed, email resent
CloudFormation and static unsubscribe page deployed and publicly verified. Live negative-token, valid removal, and replay tests passed against an excluded test record; no test email sent. Authorized welcome resend to the single real pending signup returned sent. Dark branded HTML includes a visible gold body link; recipient inbox appearance still needs user check. Admin active-list exclusion rollout 35444322694 is in progress for commit 60e131b. No new IAM access or customer charges. AWS Agent Toolkit banner inspected only, not installed/configured.
September 19 — Email delivery and opt-out confirmation verified
Signup success includes spam/junk guidance. One-time dark branded unsubscribe thank-you deployed; opt-out remains saved on email failure. SES simulator verified send receipt and repeat protection. Corrected bounce-domain MX typo; SES DKIM and MAIL FROM both SUCCESS. Inbox placement is not guaranteed. No user was unsubscribed during testing. See docs/WAITLIST_UNSUBSCRIBE_2026-09-19.md.
Final rollout: GitHub Actions 35444322694 completed SUCCESS for 60e131b; admin unsubscribe exclusion deployed. Public landing.js and unsubscribe.html byte-for-byte match final goodbye package. Existing autoscaling/queue alarm permission warnings remain outside this email change; deployment itself succeeded.
September 19 — Ultimate Start cleanup (local preview)
- Start screenplay setup now shows target movie length and first-production intent. New setups stop at screenplay by default; users can choose a shorter adaptation. Existing saved setup settings remain loadable.
- Removed the expanded resize/source-window panel from Start; preserved controls under collapsed Screenplay editing and advanced production in the project screenplay view.
- Shorter adaptation is labeled as retelling, separate from trailer selection and screenplay rewriting. Output seconds stay independent of screenplay minutes; source bounds update with the screenplay target.
- Cover and story-bible inputs collapse by default. No backend/provider/billing code changes or paid runs.
- Verified TypeScript/build and isolated browser duration check (90-minute screenplay with 180-second video). Not deployed; paid workflow and real-project resize acceptance remain pending.
Production update: commit 17f27f0 pushed to main; GitHub deployment 35478065478. Public frontend SHA-256 9C9CF85DF791DE39DE746B4266F2FBBBF2929C48FF6DAB28E8E45A25C7EB6FF4 exactly matched the isolated release build and contains the new Start controls. The version API still returned 60e131b; full ECS rollout was still running at verification. Do not infer failure or completion from that stale build label. No paid generation.
September 20 - Compact screenplay navigation (local/ngrok preview)
- Moved production overview, takes, contribution, admin generation and view settings into the project overflow menu. Kept Projects, new-project plus and Player immediately available.
- Carousel descriptions now use a fixed-height scrollable area, with reserved title and retry space to prevent rotation changing page height.
- Verified TypeScript/build, JavaScript syntax, Python compilation and diff whitespace checks. Browser verified compact menu and overflow actions; corrected mobile overflow placement. Phone acceptance remains pending. Not deployed to live app.
- Started existing protected sandbox/ngrok launcher successfully; no provider calls or paid generation.
Deployment update: requested production push completed as b1750adf0e54a3bccf6dc8737bf18fb21152b2ba. Isolated release changed only UltimateOmega.tsx, ReferenceCarousel.tsx and reference-carousel.css; TypeScript and Vite release build passed. GitHub rollout 35521222659 is in progress; production verification pending. Release JS SHA256 56323B9C8F0525851C081A3E28512D5B73C966B3BC74C25CA2655288BC418F81; CSS 7466A7DD49C7991DB4B8F2323A5F00E7D93AD2A67C72ED2E8A96ADEEE14965C1.
Production asset verification: public JavaScript and CSS for b1750ad both matched the isolated release SHA256 fingerprints on September 20. New menu and fixed carousel/mobile styles are being served by app.plotthirst.com. GitHub rollout 35521222659 still in progress at this check; full AWS stabilization is not yet confirmed. Phone acceptance pending.
September 20 - Direct sample segment generation (local only)
- Replaced placeholder sequence/take previews with Select undone, Select all, Clear, and Generate selected beside the segment checkboxes. Selections persist across pages and map by exact timeline ranges into the existing production endpoint.
- Admin menu now navigates to the actual batch board. Full automatic pipeline uses existing generation pricing/credit validation; no new backend billing path or duplicate debit. Existing cost-policy component overhead gaps remain unchanged.
- Reapplies account-saved video defaults to existing contribution drafts before opening production or submitting a sample playlist/batch. Step-by-step entry preserved; obsolete copy wording removed.
- Inline submission errors and job progress; duplicate submissions blocked while the displayed job runs. Prompt diagnostic now includes auth headers, a timeout, visible hosted/local limitation, and stable component identity so settings updates do not erase status.
- Verified TypeScript/build, sample selection tests, batch component harness (whole page, cross-page, errors, progress, busy/duplicate guards), JS syntax, Python compilation and billing audit with no inventory changes. No paid provider generation performed. Live deployment and paid end-to-end acceptance pending.
Browser verification: local sample loaded saved defaults; Select all on this page enabled Generate selected (6), with all six checkboxes selected. Restored the original empty selection afterward. No production submitted. Available on the running sandbox/ngrok; not live yet.
Direct generation release pushed: c296815cd7508e800811dc638248157b7da499b5; GitHub rollout 35525008697 in progress. Five-file isolated release includes four frontend components and batch smoke test. Release typecheck/build and batch/selection tests passed. Expected JS SHA256 34D5184EC6E3268F4ECF8A4A6A65EE0F07D6107655718DD62B138EA449E2283F; CSS 9D10752C7C074927EF91FFF259B1A84C34E48D31D524388233A2BBA06A91AE19. No paid batch submitted. Live asset verification pending.
Live verification: app.plotthirst.com now serves JavaScript and CSS matching c296815 release SHA256 fingerprints above. Generate selected UI is deployed; pipeline 35525008697 still finishing ECS rollout at verification. No paid generation was run; real provider batch acceptance remains pending.
September 20 - Canonical sample integrity repair
- Root cause: manifest SHA256 values described Windows CRLF bytes while Git/deployment shipped LF bytes. This prevented opening a contribution workspace before provider submission (including page 6).
- Production commit 61d17fdd76e8f84d4aa4dab5c07fe425ade549cf normalizes sample files to LF with .gitattributes, updates reviewed byte counts/hashes, and adds exact integrity validation to Docker build. Runtime checks are unchanged and never bypassed.
- Verified all 21 release artifacts and rejected a deliberately modified chapter in a temporary copy. Local enriched sample independently verified all 22 artifacts. JS/Python syntax and release whitespace checks passed.
- Pushed; GitHub rollout 35531307511 in progress. Live file endpoint verification pending; no paid generation started.
Live verification complete: all 21 deployed canonical sample files returned successfully and matched exact expected SHA256 hashes and byte counts. The previous story-database integrity request changed from HTTP 404 to HTTP 200. No paid generation submitted. GitHub service rollout was still finishing when file checks passed.
2026-09-22 Screenplay generation acceptance
Local combined repair covers lens persistence/handoff, shared-project navigation and automatic missing selected reference preparation. Verify through live Chrome: original lens survives reload, all six page 6 selections survive production handoff, reference child completes before storyboards/video, clips appear in player. Deployment/live acceptance pending.
Screenplay page 6 live test — 2026-09-23
Verified original lens reload persistence and six-selection production handoff. Generation 504 remains under repair. cd7be12 submission fix pushed but not verified live: public build remains d6efd7c despite pipeline success. AWS sign-in required for rollout diagnosis. No completed page6 batch claimed; requested website-only generation and player verification remain outstanding.
Page6 hosted preparation — 2026-09-23
Website-only test progressed to background operation, then Lambda OOM. Targeted project-draft loading removes unrelated global recovery for established screenplays; no canon or reference validation bypass. Regression tests cover targeted writes and fallback recovery. Deployment/UI fixes prepared, not yet accepted through six completed clips.
Page6 hosted key handoff: confirmed worker Atlas secret configuration without reading key. Coordinator should only queue and not require provider credentials; worker must preflight before references. Fix tested60 tests; no new key entry or wider access needed. Still awaiting successful clips.
Page6 real production started through Chrome on build5f5eeca; missing selected reference6/8 observed generating. UI progress polling has a separate sys import500; regression fix prepared, deployment deferred until worker safe. Do not resubmit this active batch. No completed clips claimed.
Page6 refs8/8 and storyboards6/6 completed; clip handoff worker OOM confirmed in ECS. Scoped clip draft reads/saves prepared with recovery fallback retained. Await deploy, website resume and six playable takes.
Live page6 first take decodes/plays in Chrome10.08s. Continuation reuses completed clips. Selector page-group initial position repaired locally to follow selection. Pending six-clip/player publication acceptance; worker memory fix awaiting safe rollout.
Page6 batch reached completed/clips-complete on live2c18714 after website submission. All6 generated; final publication/player checks in progress. Memory fix now observed completing multiple consecutive clips without worker restart.
Page6 live acceptance COMPLETE: six default takes published throughChrome; sharedauto playlist18clips includesall6page6segments. Playback/transition checks passed. Parent completed/clips-complete onfixed2c18714. Historical interrupted child status/reservation reconciliation not partofplaybackacceptance.
Mobile generation navigation: confirmed three-dot item opens controls only, not paid submission. Local label/close-menu fix prepared and typechecked; not deployed. User must press Generate selected beneath checkboxes. Pages 119/120 generation not started by agent; cross-page batch acceptance remains pending.
LOCAL ONLY: Menu Generate action wired to shared cross-page submit handler. Regression coverage includes shared duplicate lock, cross-page selection, errors/progress, empty selection, busy settings and sample-vs-production readiness scope. Separate production-copy pending state no longer blocks sample generation. No push/deploy or paid calls; pages 119/120 await live retry after approved release.
LOCAL progress correction: truthful imported completion and media labels; no phantom unknown Story Writer children; storyboard progress no longer starts below reference completion.82 tests pass, no new provider requests. Deployment/live verification deferred during active119/120 batch.
LOCAL: multi-select publication and server-side opt-in auto-contribution implemented; canonical checks/ownership/attribution preserved. Test covers selected-segment/current-child scope, old/unselected/published take exclusion and partial failure. Three-page view labeled optional batch selection. Await deployed UI acceptance; no live batch generated or published by this change.
2026-09-23 — publication failure and contribution navigation
- Live Chrome build 1c6af23: nine unpublished takes on pages 119–120 returned HTML instead of JSON during publication; UI reports zero published from that attempt. Root HTTP status/cause not yet captured. Do not regenerate clips.
- Contribute clips opened successfully through community/open (HTTP 200); the existing expanded actions/My takes menu obscured the resulting production workspace. Three-page selector is present after closing it.
- LOCAL ONLY: close actions menu when opening contribution controls, clarify button label, expose HTTP status for malformed responses, retain failed bulk selections. Publication retry awaits explicit confirmation after automatic approval review blocked the diagnostic publish. No deployment or backend resolution claimed.
- 2026-09-24 live Chrome retest, explicitly authorized single publication: after closing the expanded segment selector that intercepted the first click, community/approve returned HTTP 200 and mine returned HTTP 200. UI confirmed first default take published; unpublished count decreased from 9 to 8. Original bulk HTML-response failure did not reproduce in this single retry; root cause remains unconfirmed. No further publications or paid generation were performed.
- 2026-09-24 LOCAL player transition fix: reset tap overlay when advancing clips; ignore outgoing play promise rejection; use persistent expanded stage on browsers without container fullscreen instead of native per-video fullscreen controls. Mobile Safari acceptance and deployment remain pending. iPhone fallback fills browser viewport; browser chrome may remain visible.
- 2026-09-24 mobile user confirmed fullscreen transition fix worked. LOCAL submission UX: keep-page-open notice throughout sample import/defaults/queue submission, nested beforeunload guard cleared in finally, leave-safe text only after successful automatic generation response with job ID. Browser warnings cannot prevent mobile OS suspension. Specific missing runs await page/segment/time identification; no paid run replayed. Deployment pending.
- 2026-09-24 LOCAL My takes performance: videos are not mounted or assigned media URLs until Load preview is clicked. One preview at a time; closing the panel, refreshing, or changing contributor scope clears it. Existing select-all/publish flow needs no preview. Full-workspace server listing latency remains unprofiled; deployment/mobile acceptance pending.
- My takes additionally defaults to Unpublished only, with visible count and an all-published empty state; unchecking restores all takes. Filter changes close loaded preview. Client-side filter; backend request unchanged.
- 2026-09-24 LOCAL project navigation isolation: My takes panel remounts per project ID; community menu requires matching active project metadata. Leaving sample for saved/community/run production clears sample URL flags, player and overview. Removed the redundant Back to my setup / Start a new project button from the screenplay controller; the header plus remains the new-project action. Header Projects/actions menus close each other, on outside pointer and Escape; destination actions close menus. Exact standalone screenplay link still awaiting identification. Build, type, syntax and diff checks passed; browser project-switch acceptance pending; not deployed.
- 2026-09-24 LOCAL assigned tester generation: sample main/menu and playlist generation controls now permit role test/isTestUser in Testing mode, rather than requiring Admin view. Existing server authorization, contribution access and credit billing remain unchanged. Ordinary/live preview accounts remain blocked. No test account promoted and no paid job started. Deployment and signed-in tester acceptance pending.
- 2026-09-24 RELEASE GAP: automatic screenplay selected-segment generation queues production without a customer-visible cost quote/approval. Existing child billing is not advance consent. Before releasing pending tester-generation UI, add a server-owned batch quote covering missing references/planning/storyboards/video and any requested stitching, reused outputs excluded; bind confirmation to selection/settings, show credits/balance and enforce approval at queue creation. Exact-once cost and reservation review required. No fix or paid test claimed. Quick Create has separate numeric estimate confirmation; do not claim all entry points lack it.
2026-09-24 — generation estimate review (LOCAL, not deployed)
- Added a shared mobile-friendly credit review dialog to screenplay generation (including sample/menu/player and manual stage calls), Quick Solo, Quick Multi, and Ultimate submission. Shows estimate, balance, included work, cancel, and explicit confirmation; invalid estimates cannot start through these UI paths.
- Screenplay uses a server calculation before materialization/queueing, current billing helpers, unique missing references plus portraits, missing storyboards/clips, optional streaming previews and stitch. Existing clips are reused unless another take is requested. Manual calls quote the next stage. Selection/settings/price changes require re-review; available balance is checked again before queue. Approved forecast is saved in the automatic job request. Parent adds no reserve/debit; existing children retain billing ownership.
- Ultimate uses its existing server estimate endpoint for final review; Quick Multi retains saved-quote validation and now includes available balance. Extend/Loop gains a no-provider-work estimate but explicitly labels the existing initial video reservation as a SUBTOTAL, excluding later finishing costs.
- Validation: 11 focused Python estimate tests (no provider calls, no estimate reserve/debit, missing/stale confirmation, balance recheck, reused assets, reference deduplication, stage scope, saved quote); 36 existing screenplay/access tests and 19 batch/serverless tests passed. Dialog cancellation/approval/insufficient funds/Escape/focus tests, sample batch and submission-warning harnesses passed; TypeScript passed.
- Remaining acceptance: browser/live mobile review and deployment, all-in Extend/Loop finishing quote, full ancillary planning/operating-cost reconciliation, legacy/individual retry entry audit. Existing server worker continuation is not interrupted for browser confirmation. Forecast is not a maximum-spend contract; no retroactive or new parent fee was introduced. Keep the earlier full-cost release gap open pending those financial checks; do not claim all billing entry points audited or release tester enablement as accepted yet.
2026-09-24 — screenplay workspace steps (LOCAL, not deployed)
- Existing screenplay projects open on Project (cover/references), followed by Segments, Settings, Generate, Takes. Compact five-column navigation has Back/Next, small labels and 44px navigation targets; Player remains in the header. Fresh Ultimate's initial workflow stays separate.
- Sample selection/page navigation, settings and review share mounted components to preserve selection, saved settings and queued-job state. Page/source text and timing are collapsed; direct page picker added. Review selection goes directly to Generate without forcing a settings visit. Settings initially targets project defaults; page/segment overrides remain available. Prompt workbench remains under advanced details.
- Saved-project three-page selector now renders within the workflow and no longer opens fullscreen automatically. Takes is moved to its step; publication state persists across steps and previews close when leaving. Private-project takes remain reviewable/default-selectable in Player. Advanced saved-project controls remain available rather than being deleted.
- Validation: TypeScript/build passed before final text polish; batch harness covers selection surviving the step switch and Review selection not starting production. Actual React nav/batch components inspected in an isolated 375px browser fixture: select all -> review retained all three selected clips and fit the width. This is component/mobile-layout verification, not a live end-to-end account or paid-production test. Final production build, TypeScript, selection harness and diff checks passed. Live deployment/account acceptance remain pending; no push or paid generation performed.
2026-09-25 — Retire Sora video generation (local)
Removed Sora 2 / Sora 2 Pro from shared video and routing catalogs, legacy menus and TypeScript fallback options at owner request. Historical clip/spec data remains. Saved retired selections fail with a choose-another-model error before provider dispatch and new cost quotes. No replacement provider is silently selected and no new rates or billing operations were added. Live deployment remains pending after the prior ECS alarm rollback; full-cost audit gaps and existing stale baseline remain open.
2026-09-25 — Rollback diagnosis and approved alarm correction
Failed run 36079214204 used combined target 4xx+5xx rollback math. CloudWatch 00:53-00:57 UTC recorded 7 client errors per populated minute on both target groups and no 5xx datapoints; application log contained only startup, so exact client-error endpoints are not established. User explicitly approved changing rollback to 5xx-only, retaining the 1% threshold, evaluation timing, notification actions and ECS task-health rollback. Applied and read-back verified in signed-in Chrome CloudShell. tools/repair_ecs_rollback_alarm.py documents an idempotent guarded repair (dry-run default), with preservation tests. Temporary read-only Actions diagnostic lacked DescribeAlarms permission and was removed; no IAM access expanded. Release includes prior screenplay/cost/takes/navigation/tester work and Sora retirement. Deployment verification pending.
- Screenplay Generate, 2026-09-25: Fixed full-width checkbox pushing auto-contribute text outside mobile cards in sample/saved projects. Local only; TypeScript and syntax checks passed. Live iPhone verification pending next release.
- Auth shell, 2026-09-25: Local route/history regression checks passed for signed-out Ultimate/sample denial, signed-in access, BFCache restore and cross-tab logout. Live verification pending next push.
September 25 — MCP Quick Multi package handoff (local verified; deployment pending)
MCP 1.5.16 adds account-bound image uploads, checksum/image verification, batch import retrieval, and durable batch estimates. Quick Multi accepts one ZIP with a prompt TXT and reference images, retains filenames and original prompt text, validates reference mapping, and exposes the imported package to the same connected account for 24 hours. Settings are displayed for review; imports never generate media. A confirmed saved quote reuses its exact setup and deterministic submission ID on retries. Existing integrations with valid estimate IDs remain supported.
Local evidence: 35 Python MCP tests, 2 TypeScript ZIP import tests, TypeScript typecheck/build, Python compile, app.js syntax and whitespace checks passed. Plastic Samurai's six prompt blocks validate against the production parser with all eleven image names resolved. Paid provider generation and hosted ZIP/browser acceptance remain pending. No paid generation submitted.
Cost review: quote/start reuse existing Quick Multi authoritative provider/stitch estimates, reservation/debit and idempotency paths; no new generation surcharge or parent debit. Image upload/verification and short-lived import metadata use the existing Plotthirst-funded upload/support convention; storage/request overhead is not separately charged here. Existing operating-allowance gaps in BACKEND_COST_AUDIT_POLICY remain open. Billing inventory check found no changed entry points. Movie cost monitor remains stale for existing catalog/sample/preview sources plus server.py; baseline was not refreshed to silence it.
September 25 hosted test: release 5d88a14 served the ZIP import UI. The first upload exposed a local sys-import shadowing error in the real API dispatcher before any transfer. Fixed with a scoped import and regression test compiling the actual handler; 36 Python tests pass. Corrective deployment and hosted acceptance pending. No paid generation.
September 25 hosted upload follow-up: S3 rejected the new conditional upload because the legacy client presigned it with Signature V2. New immutable MCP/ZIP uploads now explicitly request s3v4 while existing callers retain their defaults. Added an offline real-botocore signer test asserting AWS4-HMAC-SHA256 and signed checksum/If-None-Match headers. Hosted retest pending deployment; no provider generation.
September 25 hosted acceptance on 743a00a: Chrome ZIP upload succeeded for Plastic Samurai, preserving six prompts and all eleven verified reference images. After explicitly selecting Seedance 2.0 Mini, 1080p-SR, 21:9 and 15 seconds, the live website quote returned 2,703 credits for six clips plus stitching. No generation started; customer approval requested. Imported human model labels did not initially match provider IDs; added exact label-or-ID matching with ambiguity/missing-model and unsupported-resolution guards (3 TS tests pass). Matching correction deployment pending; existing live import and quote are verified. MCP v1.5.16 account status and public new-tool schemas verified, but this chat client still caches its old tool list; new-tool connector acceptance remains pending refresh. Signed-out import/API access correctly rejected.
September 25 final hosted UI acceptance: d3f3792 is serving live. A fresh Chrome import of the original Plastic Samurai ZIP completed with 6 clips and 11 verified images, and automatically selected Seedance 2.0 Mini / 1080p-SR / 21:9 / 15 seconds. Prior live quote at these settings was 2,703 credits including stitching; refreshed quote also returned 2,703 credits and enabled Approve and start batch. 37 backend tests (using current boto3 in a temporary test dependency directory), 3 ZIP/model-matching tests, TypeScript typecheck and production build passed. New tool schemas and connected MCP version verified; refreshed-client new-tool invocation and paid-provider completion still await acceptance. GitHub rollout 36181391923 is still completing worker checks at this checkpoint; 36179698039 completed successfully. No paid generation submitted. Browser left at Quick Multi for approval.
September 25 recovery follow-up (local fix verified, not deployed): Plastic Samurai initial batch dafb49bc7a11e46fec355d49 produced clips 1,2,6; Atlas returned error 1010000 "reference asset(s) are still being prepared" with zero inference for 3,4,5. Recovery batch 0f9d3c67ec7369f55601c1af recovered clip 3, with the same preparatory error for 4,5; second recovery 54c60e3c05d10ff17fc5fc31 is running for only those two. Original completed media preserved. Corrected partial batches to a failed terminal transport status with a partial stage/message (compatible with existing job lifecycle), skip incomplete master stitching, and sort resumed successful clips before assembly. Download ZIP no longer navigates to a returned filename. 15 batch tests, TS typecheck/build, syntax and billing inventory checks passed. No new charges or pricing changes; existing reservation release remains once per job. Automatic provider preparation retries, stale Mini pricing, and suspicious per-batch debit deduplication require further audit; do not treat recorded credits as reconciled provider cost. Final six-clip assembly remains pending at this checkpoint.
September 25/26 recovery checkpoint: the second retry 54c60e3c05d10ff17fc5fc31 produced no clips; 4 and 5 remain blocked by Atlas asset preparation. Four originals (1,2,3,6) are safely copied to CloudShell /tmp/plastic-recovery/clips and remain in S3. All are H.264/AAC, 24fps, 2200x944, approximately 15.04 seconds. /tmp/assemble-plastic.py refuses assembly until all six exist, then verifies lossless stream-copy output before upload. /tmp/recover-plastic-direct.py is prepared but NOT launched: automatic approval review rejected direct provider execution outside normal billing safeguards; explicit user approval requested and pending. No credentials displayed. Local partial-status, complete-only ordered stitch, stitch-failure, and ZIP-navigation fixes pass 16 batch tests plus TS checks/build. Fixes not deployed; no pricing or ledger corrections performed. Do not claim movie complete or rerun completed clips.
September 26: User declined direct Atlas recovery; do not run the prepared script. Packaged original missing clips 4/5 prompts and six unchanged references in deliverables/Plastic_Samurai_Clips_4_and_5.zip. Only import headers renumbered with explicit original mapping. User requested deployment of all pending fixes. Four clips exist (1,2,3,6); full movie remains incomplete. Pricing and ledger concerns remain open.
September 26: Corrected Seedance 2.0 Mini reference/image output estimate rate from $0.00672 to $0.0012 per thousand video tokens using observed Atlas charges. Future quotes require deployment; existing completed debits remain unreconciled pending a separate audit.
September 28: Quick Solo Suno target seconds is editable before lyrics or Instrumental are selected, accepts 0 (Auto) or 10–360 seconds, and preserves valid planned durations. Verified locally; deploy pending.
October 3: Admin credit balance follow-up: deployed e16493b introduced BatchGetItem while the deployment's billing role policy lists GetItem only. Added an AccessDenied-specific fallback that reads authoritative accounts with existing GetItem permission; does not adjust balances or expand IAM access. Eleven focused billing tests, Python compile, JS syntax and diff checks pass. Guntolga's completed jobs/actual ledger remain unverified because Chrome tab input/capture failed; do not infer noncharging from the 5,000 profile fallback. Corrective deployment and live account acceptance pending.
October 3 Chrome live acceptance (19e7808): refreshed the signed-in Admin page and selected Guntolga; Credits now displays 4,711. Read-only AWS DynamoDB console query of plotthirst-user-billing confirms ACCOUNT credits 4,711, reservation res_86098116a87946db9b reserved/spent 289, remaining/released/overage zero. Reserve ledger changed 5,000 -> 4,711; spend consumed the reservation without a second balance debit. Queried plotthirst-jobs userId-updatedAt-index and confirmed quick-create-omega_b6291a8daa574b748a (title Test, video, 15 seconds Seedance 2.0 text-to-video) completed at 2026-10-03T03:02:38Z with 100% progress and empty error. This is one completed media job plus its serverless start receipt, not two generations. Public account number 03699340357289 differs from internal user UUID 2265adc9-5b08-4d57-abf7-2ecf462858f1; use the actual select option value for database queries. No generation submitted or balances edited during this check. Admin troubleshooting session ended and browser left on Guntolga's admin record. Screenshot: ../guntolga-live-credits-2026-10-03.jpg. Follow-up issue: Recent creations in read-only support mode is rejected with support_restricted; the UI also reports No recent creations. Do not interpret that empty list as no jobs. The profile-based Credit Ledger panel still showed the starting grant but omitted the DynamoDB reservation/spend rows; its full ledger reporting remains a separate issue.
October 3 Quick Solo update: fixed the HD Pro angle-pack checkbox with scoped flex styling, an 18px nonshrinking input and wrapping text. Chrome layout preview at 390px confirms both checked and unchecked labels remain beside the checkbox without horizontal overflow; smaller breakpoint acceptance recorded separately below. Added WAN 3.0 and WAN 3.0 Prime reference-to-video choices to Video Edit via video-editing capability and matching canonical video-edit offerings, retaining Wan 2.7/defaults. Official Atlas WAN 3.0 page documents instruction/reference editing via existing reference input: https://www.atlascloud.ai/models/wan-3.0. Edit source videos remain limited to five, totaling 15 seconds; output remains 2–30 seconds or Auto. Existing WAN resolution rates, quote/reserve, once-per-output debit/release and own-key rules are reused; no new fee or duplicate input-video fee added. Backend routing tests verify video references reach the actual reference-to-video endpoint and edit quote wholesale matches existing WAN rate for standard/Prime. Existing unpriced shared allowance and movie monitor source-review gaps remain open. Local TS typecheck/build and 27 WAN/provider tests passed; billing inventory unchanged. No paid generation performed. Deployment/live dropdown acceptance pending. October 3 additional local acceptance: at both 320px and 390px, Chrome DOM measurements confirmed each angle-pack label begins to the right of its 18px checkbox and ends within the viewport. Screenshot saved to ../quick-solo-mobile-checkbox-fixed.jpg. Movie monitor was rerendered with existing stale source-review warning retained; --check reports the preexisting six-source re-audit requirement, so no baseline fingerprints were refreshed.
October 3 WAN duration clarification: Chrome live build ef8ddfb accepts 30 seconds for WAN 3.0 Video Edit. The 15-second helper describes total uploaded reference-video duration, not generated output; official documentation confirms this distinction (https://www.atlascloud.ai/models/wan-3.0). Clarified Quick Solo WAN duration label and source helper copy. No duration, input validation, or pricing behavior changed. Local TypeScript typecheck/build, Python compile, JavaScript syntax and whitespace checks passed; updated-copy deployment pending. WAN 3.0 Prime also retained 30 seconds when selected in live Chrome; screenshot ../wan3-live-30-seconds.jpg. No generation submitted.
October 3, 2026 — WAN Video Edit and longer split edits (local)
Single WAN 3.0/Prime Video Edit now limits output to 2–15 seconds or Auto, with source videos totaling at most 15 seconds. Ordinary WAN generation retains 2–30 seconds. Quick Solo adds a reviewed split → edit → stitch option for one account-owned source of 2–1,500 seconds (25 minutes); 14.9-second planning ceiling leaves encoder padding headroom. Balanced contiguous windows cover the entire source; maximum 101 portions, no silent trimming. Optional account-owned images are used as-is; separate audio/voice references, angle-pack generation, own-key mode and multiple variations are explicitly rejected in this first release.
Global instructions repeat; explicit timed lines map to local portion time, with editable prompts and a mandatory review checkbox. This is deterministic preparation, not a hidden AI interpretation/rewrite. Relative/narrative instructions require manual review. Independent edits may have visible or audible joins; no paid provider fidelity/continuity acceptance is claimed.
Backend start binds the reviewed plan hash and the confirmed maximum credit reservation. The quote includes all unfinished edits plus one preparation/assembly fee, and the account discount. Each edit reserves its existing WAN 15-second unit; measured output prorates that frozen approved unit with upward credit rounding. Unused reservation is released by the existing worker. Source ownership and support payer are independent; approved admin support billing uses the payer's profile. A pending provider request is polled by saved ID; confirmed failures need a separately approved retry, limited to one new submission per reservation. Ambiguous submission outcomes are not blindly resubmitted. WAN reference-asset preparation HTTP 400 rejections are recorded as confirmed non-rendering failures for an approved retry; WAN payload fallbacks cannot drop references. Completed parts and their debit IDs are retained; retries deduplicate by originating failed job, then assemble in order. Worker failure/cancellation now preserves split progress and the retry setup; no unquoted automatic AI-title call is made for this operation. Split editing requires the durable DynamoDB billing backend; the legacy local ledger cannot guarantee event deduplication and is rejected before provider work.
58 focused local tests passed, including real FFmpeg source splitting with audio, contiguous planning beyond 30s, partial failure/resume, saved request-ID reuse, uncertain-outcome suppression, once-per-attempt retry, frozen discounted units, pre-reservation review/hash/price guards, single-part delivery, worker failure preservation and a bounded 25-minute quote. Existing WAN, Quick Solo audio/comic/extension, account discount and worker heartbeat tests passed. Chrome exercised the actual compiled TypeScript component with offline HTTP fixtures: a 60s source produced five reviewed 12s portions, timed prompts mapped correctly, discounted cost confirmation could be canceled, and Recent creations → failed job → Retry restored its model/source/prompts even from Audio mode. Logical viewport measured 355px without horizontal overflow; checkbox labels began to the right of their 18px inputs. Screenshot: ../split-video-edit-mobile-preview.jpg. Fixture preview media was intentionally unavailable; that 404 is not a live upload finding. No paid generation, account balance change or live split edit was performed. Deployment and physical iPhone/provider/long-source final stitch/download acceptance remain pending.
October 3, 2026 — Split-edit durable settlement repair
User reported live job quick-create-omega_5af2c070aba8403292 failing after a video downloaded with `unsupported operand type(s) for *: 'decimal.Decimal' and 'float'`. Reproduced the exact failure locally with a DynamoDB-shaped quote (integral credits and fractional metadata hydrated as Decimal) and an unsettled saved 14.35s output. Split settlement now converts the frozen integral credit ceiling to int before duration multiplication. No rate, reservation, discount or fee changes. The regression verifies 180 reserved credits settle to 173 for 14.35s; the cached video is reused without another provider submission/download, its stable debit event is retained, and a subsequent replay does not debit again. Existing successful parts and approved retry behavior remain intact.
59 focused tests pass, including real source splitting, saved output settlement, partial resume and provider request checkpoints. Local repair verified; deployment/live retry, final second-part generation and joined-output acceptance remain pending. No paid retry was submitted by the agent. Existing WAN promotion/list-rate reconciliation and movie-cost baseline gaps remain open.
October 3, 2026 — Split retry review flow repair
Retry unfinished portions now fetches the current free estimate using the original failed job ID, restores the saved instructions and valid plan together, and scrolls/focuses the review section. The plan has a review checkbox and an adjacent Review retry cost button. Missing-review submissions focus the checkbox; repeated restoration preserves an unchanged prior review. Retry instructions remain read-only to match the backend's immutable resume contract. Loading a regular saved setup explicitly clears retry state even when its inputs match. New edits whose portion prompts change require Update edit plan before review. If the server returns a changed plan during submit, that plan is now displayed and can be reviewed instead of leaving the user on the stale plan.
TypeScript typecheck and production build pass. Chrome tested compiled UI at a logical 355px width with offline HTTP fixtures: Image mode → Recent creations → failed job → Retry automatically loaded its plan; missing review focused the checkbox; reviewed retry reached cost confirmation and an accepted offline submission with original resumeSplitEditJobId, true review flag, exact plan hash and approved ceiling. Repeated retry preserved unchanged review; modified prompts could update, review and continue without a loop. Preview screenshot: ../split-edit-retry-preview.jpg. No provider request, live account balance change or paid retry. Existing billing calculations unchanged; free quote calls do not duplicate provider work. Production deployment and the user's live retry remain pending.
October 4, 2026 — Upload previews, Library and safe continuation (local)
- Private reference images now resolve fresh authorized previews through a shared React component across Solo, Multi, Ultimate and Library, plus a legacy-panel fallback. Expired previews can refresh; canonical files and permissions remain intact.
- Direct and inline upload completion catalogs images/video/audio/documents in the account Library. Historical media index runs in resumable metadata batches on Library open, includes audio/documents and legacy account paths, and does not download/copy media or rescan after completion. Media is not loaded until selected for review.
- Split editing automatically retries confirmed non-rendering preparation rejections and temporary interruptions with a known saved request/output, preserving the same approval/reservation and successful portions. Failed renders or unknown submissions are not automatically resubmitted.
- 69 focused backend tests and frontend checks pass. Offline Chrome mobile preview demonstrated expiry recovery and lazy uploaded-item review; synthetic reference only, no paid run. Deployment, real account historical completeness, Safari and paid recovery acceptance pending.
- Future Choose from Library picker is documented, not shipped in this repair. Details: docs/UPLOAD_PREVIEWS_AND_LIBRARY_2026-10-04.md. Existing pricing/operating gaps remain explicit.
October 4 — Settings support and one-time bank payments (local)
- Recorded evidence: Support Plotthirst is a separate TypeScript settings page with preset/custom amounts, card/ACH choices, purpose and upfront fee/net/timing disclosure. Service tips buy no membership/credits.
- Recorded evidence: Membership and Credits offers one-time ACH with pending nonspendable credits, signed async success/failure/expiry and compact recent status. Recurring remains card; payout bank unchanged.
- [x]72 focused payment/subscription/detail tests verify valid paid purchases once, unpaid/failure none, support no account mutation, saved session consistency and owner-only status refresh. No live payment/account alteration.
- Acceptance open: Confirm Stripe account ACH activation/event subscriptions; hosted/test-mode and physical iPhone acceptance, plus existing refund/late-return credit reconciliation remain open.
See docs/SUPPORT_AND_BANK_PAYMENTS_2026-10-04.md. Manual backend cost review records processing/control storage absorbed by Plotthirst and no new paid provider work.
October 4 local payment UI acceptance: TypeScript typecheck/build, JS/Python syntax, billing inventory and readiness guard pass. Chrome compiled-component offline preview at logical355px shows wrapped radio labels without horizontal overflow, bank fee/net disclosure and pending credits explicitly not spendable. Screenshots: ../support-payments-mobile-preview.png and ../bank-credits-pending-preview.png. This is fixture UI evidence, not hosted Stripe/payment acceptance. Stripe live inspection confirms ACH Direct Debit is disabled; existing signed endpoint already subscribes to completed/async-success, but failure/expiry are missing. Exact live activation/update approval requested after automatic review rejection. Movie monitor rerender preserves its six preexisting stale-source warnings; baseline hashes not replaced. No customer/provider spend.
October 4 Stripe activation follow-up: owner explicitly approved the live changes. Chrome confirmed ACH Direct Debit Enabled. Existing active signed payment webhook now listens to14 events, adding checkout.session.async_payment_failed and checkout.session.expired while preserving its original12 (including completed/async-success and subscriptions). Endpoint/secret/API version and payout bank unchanged. No real payment or credit mutation. Configuration acceptance complete; hosted/test-mode/real asynchronous settlement and existing refund/late-return policy acceptance remain open. Proof: ../stripe-ach-enabled.png and ../stripe-bank-webhook-configured.png. Application code remains7598662; this follow-up changes dashboard configuration and documentation only.
October4 — Video Edit reference behavior (local)
- Recorded evidence: WAN3.0 default; reference-relative limb/body/object proportions preserved unless Adapt reference shape to the original video is selected.
- Recorded evidence: WAN/Prime split appearance continuity uses the previous edited last frame, preserves image order and reserves one image slot. Turning either option changes the reviewed plan; old jobs resume without adopting new instructions/charges.
- [x]61 focused provider-free tests include real final-frame extraction, frame reuse, ordered partial resume, capacity guard and frozen debit IDs. Frontend and billing checks pass.
- Acceptance open: No paid/hosted visual acceptance yet. Validate a continuous lamp/table replacement and unusual reference anatomy on real outputs, including joins and iPhone layout. Existing broader pricing gaps remain.
October 5 — Preview navigation and Library access (local)
- Test early preview pages is a separate collapsed menu folder for admins/testers, not a developer folder. Library is its first entry; empty groups and Live experience hide it.
- Direct/restored navigation uses the same role/session policy; creation-library reads/writes return401/403 before account storage access. Developer permissions remain separate.
- Authorized first-visit mounting avoids background Library reads/indexing on site startup. Menu changes preserve current range; logout/account/live-view changes clear the mounted component. 13 Python access/upload/startup checks and JS role/logout checks pass. Physical iPhone and hosted acceptance pending. No paid/customer-data actions.
October 6 — Reference reuse across creation modes (local)
- Choose saved image/video/sound appears at compatible inputs in the three primary creation pages and screenplay segment references. Existing uploaded URLs reused, original subject metadata retained, model limits/ownership/duration checks preserved. No new media copy or paid call.
- Metadata-only search by subject, filename/tag and character/location/prop type; multiple subjects can be selected explicitly; older files can be indexed/named. Account-owned list/subject routes prevent cross-account access, including admin picker use.24 entries/page; preview/old missing-duration reads only on action.
-40 backend checks, JS unchanged-URL/count/subject checks, TypeScript build/typecheck and offline mobile Chrome search/reuse evidence pass. Subject indexing reads current saved setups, not all historical job payloads. Live/index permission does not enable uploads/generation. Hosted Safari/real-source acceptance remains open; see docs/SAVED_REFERENCE_PICKER_2026-10-06.md.
October 7 — Original prompt backup after fresh browser load (local)
- Preserve original user inputs/job links on media re-save and stale browser app-state merges; keep full text through terminal job compaction and Library delivery reads.
- See prompt in Solo, Multi, Ultimate and Library retrieves account-owned saved inputs, including lyrics/lens/action text. Older linked records recover once from their exact durable job; the manual whole-catalog recovery continues in bounded12-record requests. Rewritten provider prompts are excluded.
- Fresh backend-instance and browser-runtime tests plus closed/reopened local Chrome fixture verify retrieval without the original form/session cache. No paid jobs or production customer-data changes. Hosted/iPhone acceptance and actual historical coverage remain pending; originals that no longer exist cannot be invented. See docs/USER_INPUT_BACKUP_2026-10-07.md.
October 8 — Durable titles and lighter results (local)
- Saved title resolver connected to Library, saved-reference picker and Solo/Multi/Ultimate deliveries. Existing titles recovered before one AI naming job; originals remain distinct. Library can rename titles; concurrent AI and stale browser saves cannot overwrite them. Metadata receipt/audit is platform-funded and idempotent; no paid provider test performed.
- Recent lists use5/10 summary pages and selected-job hydration; Library/saved references default5,max10 with Next/Previous and account metadata caching. Library's continuous background historical indexing is now explicit bounded Find older files. Media loads on review, not on browsing.
- Copy original prompt and separately copy lyrics/music/lens/action inputs, with feedback and clipboard fallback.56 focused backend checks, Node metadata/reuse/prompt checks, frontend checks/build and Chrome mobile synthetic paging/rename/exact-copy checks pass. Hosted Safari/real-account coverage and AI-provider acceptance remain open; see docs/MEDIA_TITLES_AND_LIGHT_BROWSING_2026-10-08.md.
October 8 — Uniform small image/video previews (local)
- Library browse cards and the shared saved-reference picker now display separate 320 x 180 JPEG derivatives, with padding to preserve portrait/landscape shapes. Originals remain unchanged and load only in explicit full review. New registered uploads/generated outputs queue preview preparation; older visible records prepare in batches of at most five, rather than downloading full media in the browser.
- Durable account/file receipts and conditional worker claims prevent duplicate preparation. Private download authorization remains in place; no provider call, new customer reservation/debit, notification email, or price/balance change. Full originals remain usable if a thumbnail fails. Derivatives are excluded from saved-reference and historical Library listings.
-52 focused Python checks pass, including actual image/video encoding, worker dispatch, receipt repair, stale re-save preservation, bounded retries and cross-account denial. Chrome synthetic fixture at390 x844 verifies5/10 paging, equal frame sizes, no horizontal overflow, and zero original-media requests/video elements while browsing. Proof: media-thumbnails-mobile-preview.png. Real hosted S3/Safari and older-account coverage remain acceptance items; this update is not pushed. See docs/MEDIA_THUMBNAILS_2026-10-08.md.
October 8 — Saved-reference search timeout repair (local)
- Reproduced the live Michelangelo saved-image GET returning HTTP504; the gateway HTML caused Chrome JSON errors and the iPhone pattern message. A500-file synthetic search performed1000 whole-database copies through per-file ownership lookup, taking8.543seconds.
- Saved-reference search and subject-description updates now use one authenticated account snapshot with exact owner/ID boundaries, rather than repeated user-database copies. Same500-file test returned five results in0.0475seconds with zero extra database reads; legacy folders and cross-account denial remain covered. Five/ten paging, filters and media URLs retained.
- Saved-reference requests report gateway/login/network/malformed-response failures clearly, stop waiting after45seconds, and send JSON for older-file indexing. Chrome fixture verifies504 warning -> Find retry -> Characters result -> reuse, with no uploads/provider generation or horizontal overflow at355CSS pixels.54 focused Python checks, expanded Node API checks and TypeScript/build pass. Hosted repaired-search verification remains pending. See docs/SAVED_REFERENCE_SEARCH_TIMEOUT_2026-10-08.md.
October9 — Blank Library thumbnail repair
- Reproduced live Buildb4617b2: Library header present, React root empty; Chrome logs TypeError reading includes from an undefined thumbnail URL. The earlier fixture omitted the backend's empty thumbnail object, so that catalog shape was missed.
- Validate thumbnail object/URL/dimensions/version before using it; missing/empty/null/malformed thumbnails keep a safe placeholder and continue preparing. Original files are never substituted into automatic browsing previews. Types now represent incomplete thumbnail objects.
- Library render boundary shows a reload control instead of a silent blank page for unexpected render failures. Node rendering checks cover the real empty object and malformed values. TypeScript/build pass; Chrome355CSS-pixel fixture renders5/10 items, no original-media requests/overflow, and verifies boundary recovery after a synthetic error. Hosted repaired-build acceptance pending. Original setup reuse requested by user is next work.
October9 — Original setup reuse (local, not deployed)
- Added Load setup for new run to Solo recent creations, Multi recent batches and the selected Library delivery. It restores original submitted text/settings and account-owned saved references into the matching form; it never starts generation, uploads duplicate files or replaces the account's manually saved setup.
- Exact owner-checked job read returns only normalized form fields. Original prompt/lyrics override worker rewrites; Multi retains the complete prompt file/order/reference bindings. Extension jobs map their saved action/source; split edits keep instructions but clear run/resume IDs and review/quote approvals. New cost review is required. Unsupported/missing older setups report a clear message without replacing the form. Uploaded-only entries explain that they have no generation setup.
- Ten backend reuse regressions pass;36 combined reuse/upload/title checks pass. Node API/thumbnail checks and TypeScript/build pass. Chrome synthetic UI restores Library audio to Solo with Suno Auto0 and original lyrics, restores full video batch/ref/stitch to Multi, and exercises both recent lists after reload.341CSS-pixel viewport has no horizontal overflow; request log has no quote/start/upload. Screenshot: ../setup-reuse-mobile-preview.png. Hosted and physical-iPhone acceptance pending. Blank Library fix is included in the prepared update; the owner explicitly approved pushing both repairs on October9. Deployment and hosted acceptance remain pending.
October 10 — Permanent Library media deletion (local)
- Separate Delete permanently confirmation beside Review actions; Remove from library still hides only. File title, project/setup warnings, irreversible checkbox, active-work blocking, Cancel and interrupted retry are explicit.
- Owner-only exact original/thumbnail/sidecar and all S3-version removal; canonical/legacy aliases included, neighboring objects untouched. Durable receipts/catalog tombstones stop stale registration, cached download/source reuse and preview recreation. No live customer deletion, credit/provider/price or IAM change.
- 100 focused Python checks, frontend API/typecheck/build and synthetic Chrome mobile checks pass. Cancel sent no delete; partial failure/retry and blocked active-work UI verified. Screenshot ../permanent-delete-mobile-preview.png. Hosted S3 permissions/version/retention and physical Safari acceptance pending; code is not pushed. Details: docs/PERMANENT_MEDIA_DELETION_2026-10-10.md.
October10 release authorization: user requested the production push. Local checks remain passed; hosted permanent deletion/S3 permissions, retention and physical Safari acceptance remain unverified. No real files or IAM permissions changed.
October 10 — Account Discord button in Settings (local)
- Join Plotthirst Discord is its own44px button directly in Settings, separate from Support and Customer Support. No public landing/main-menu invite. Existing Community placeholder uses the same path.
- Signed-in visibility plus server browser-session/account lookup gates invite disclosure; expired/deleted/signed-out and API-key-only requests denied. No paid membership requirement, generation, payment or automatic Discord join. Shared invites are still usable outside the site; strict Discord membership verification is not implemented.
- Eight account/auth tests, TypeScript typecheck/build and Chrome355CSS-pixel preview pass; no overflow and expired-session message verified. Local only, not pushed; real Discord/physical Safari acceptance pending. See docs/ACCOUNT_DISCORD_LINK_2026-10-10.md; screenshot ../settings-discord-mobile-preview.png.
October 10 — Quick Solo private output playback repair (local)
- Solo generated videos/audio now share Library Review's authorized SourceVideoPreview. Canonical saved file is retained for signing recovery when a direct delivery URL expires/fails. Native inline playback, visible retry and output-specific messages; thumbnails remain browsing previews.
- Node checks cover video/audio recovery, denied access, bounded failures and no external token forwarding. Chrome actual Solo fixture -> Recent -> Open outputs recovered deliberately broken delivery URLs, loaded3s MP4/MP3 at readyState4 and played both with native controls.341CSS-pixel layout has no horizontal overflow. No paid job or live customer media accessed.
- Local only, not pushed; Settings Discord changes remain pending in the same checkout. Hosted/iPhone acceptance open. See docs/SOLO_OUTPUT_PLAYBACK_2026-10-10.md and ../solo-video-playback-mobile-preview.png.
October 10 release authorization: owner requested pushing the prepared Solo playback recovery and account-only Settings Discord button together. Local tests/build passed; hosted playback, physical iPhone and Discord acceptance remain unverified.
October 10 — Saved reference menus at every creation input (local)
- Shared compact picker keeps5 default/10 selectable metadata and small previews, subject/filename/tag search, collapsed filters,44px controls, one open picker and close/confirmation after reuse. No re-upload or paid work.
- Existing Solo/Multi/Ultimate/segment pickers retained; added Ultimate covers, portraits and comic pages; legacy idea/Story Writer/DNA/canon/standalone inputs and timeline video/image/sound; dynamic reference/storyboard restore supports saved/local choices. Source URL and subject metadata stay intact; type/count/owner/Live guards and analysis/rights/cost approvals remain. Separate manuscript/ZIP/CSV/public-showcase inputs are not references.
- Node API/legacy-host checks and27 Python regressions pass; Chrome synthetic actual Solo, replacement, pagination, single-open menu, audio and modal reuse verified at355px without overflow, uploads or generation. TypeScript/build pass. Local only, not pushed; hosted historical completeness and physical Safari acceptance open. See docs/REFERENCE_MENUS_SITEWIDE_2026-10-10.md; screenshot ../saved-reference-menus-mobile-preview.png.
October10 reference-type follow-up (local, not pushed): image-only inputs offer saved images only; mismatched catalog rows are filtered and selection rejects incompatible media before metadata loading or form mutation. Legacy destinations independently enforce their allowed types. Solo closes/cancels open saved selections on mode/model changes; zero-capacity source/image inputs hide their chooser and disable upload. Existing generation/backend validations remain. Node guards pass; actual Solo Chrome fixture excludes injected audio from image search and removes the image picker when switching to Audio. No upload or paid work; build/typecheck verified locally. Longer-source duration checks remain separate from media-type filtering.
October10 locked chooser follow-up (local, not pushed): shared saved-reference chooser now uses a native modal dialog in the top layer. Background menus/form controls are inert and body scrolling is locked; selection is staged until explicit OK, while Cancel/Escape discard it. Header/footer stay outside the scrolling results so Cancel/OK stay visible on mobile. OK is disabled without a compatible candidate or while loading; during the brief confirm/save, cancellation is disabled to avoid claiming a committed selection was cancelled. Failed selection stays in the dialog with a visible error. Closing restores scroll and trigger focus; account/mode cleanup invalidates stale selections. Dynamic local image choice also requires OK; its saved-file path uses the same confirmed modal. Chrome actual Solo fixture verified a background Audio click left Image active, candidate staging did not add a reference, Cancel preserved the form, and OK added the canonical image with subject details.355px layout/footer fit without horizontal overflow. No real media/account writes or paid job. Screenshot ../locked-reference-chooser-mobile-preview.png. TypeScript/build and existing type/owner/count guards pass; hosted/physical Safari acceptance remains open.
October 10 release authorization: user requested pushing the site-wide saved-reference menus, compatible-media guards and confirmed modal chooser. Local tests, TypeScript build and mobile Chrome checks passed. Hosted historical-file completeness and physical Safari acceptance remain open; no live rollout check requested.
October 12 — Generator families across model menus (local)
- All existing model dropdowns now use Generator → Version/model: Solo (all eight modes and own-key), Multi video/music, Ultimate image/video/song/audio mapper, screenplay/project defaults and scoped segment overrides; 13 legacy setup/admin/batch/standalone controls and dynamic Story Writer video mapping. Groups include Wan, Seedance, MiniMax, Suno, GPT Image and other catalog families. A family is a presentation label, never a substituted route/provider.
- Browsing a family does not alter a saved model or quote. Choosing its enabled version calls the existing handler with the exact model value. Mode/model eligibility, disabled/coming-soon options, own-key filters, inherited defaults, read-only locks and dependent resolution/duration/reference controls remain. Programmatic restores synchronize both levels; redraw removes old legacy roots. Removed obsolete Ultimate text promising Wan 3.0 only in a future release.
- Local Node regression preserves73 catalog routes and covers grouping, disabled/outside-family rejection, unchanged quotes while browsing and restored values. Chrome actual Solo checked all8 modes; Wan→Seedance edit updates source limits and Auto duration, Multi music shows Suno versions, all13 legacy destinations preserve routes, lock/restore and dynamic redraw pass, inherited segment override returns to Project default.355CSS-pixel viewport has no overflow,44px controls; no API requests/generation/account writes in this synthetic fixture. Screenshot ../generator-groups-mobile-preview.png.
- TypeScript/build and required syntax/readiness checks are recorded below when completed. Local only, not pushed. Physical iPhone and hosted all-page acceptance remain open. See docs/GENERATOR_GROUPS_2026-10-12.md.
- Previous task remains partial: live Solo active job reopened at61% after closing its tab; signed out for a fresh-login test but password autofill was empty. Fresh login not completed. Screenplay segment progress ID recovery uses tab sessionStorage and needs a separate repair.
October12 generator-group validation completed: Node grouping regression, TypeScript typecheck, production build, node syntax check, server.py compile, static billing inventory and readiness render/check all pass. git diff --check passes. Existing six movie-cost review fingerprints remain stale and were not reset. Chrome355px verified no overflow, correct mode-dependent settings, locks/restores, one dynamic menu after redraw and Project default inheritance. No paid jobs or real-account edits. Local only, not pushed.
October12 release authorization: user requested pushing the verified generator-family menus across all existing model dropdowns. Local tests, build and mobile Chrome checks passed; hosted and physical Safari acceptance remain open. No live rollout check requested.
October 12 — Automatic generator defaults and video input modes (local)
- Choosing a generator family now applies its latest enabled stable model immediately; version/model is optional. Normal video defaults prefer Text-to-video among matching versions; edits and screenplay production keep their eligible reference routes. Existing saved models and inherited project/page defaults remain explicit.
- Quick Solo Auto uses no images → text, one → image-to-video, two or more → reference-to-video; attached video/audio/voices select reference mode. One-image appearance-reference override is available where a distinct supported route exists. Generic routes without separately wired one-image reference behavior are blocked rather than mislabeled. Own-key choices retain eligible provider filtering.
- Quick Multi checks each clip’s References line, not the shared upload pool. New Auto estimates persist each clip’s concrete model, input mode, Grok image/reference parameter and applicable aspect ratio. Workers use that approved plan; mode changes invalidate quote hashes. Old jobs without the flag retain their existing routes. Frame/keyframe-only routes are excluded from normal Multi and use Extend/Loop.
- Input mode/help explain starting-image animation versus appearance references, with an Open Extend/Loop shortcut. Existing Extend/Loop extracts endpoint frames from video clips; accepting two still-image inputs is not implemented in this update. No reference images are silently dropped and incompatible retained inputs stop submission.
- Verification: 73-route Node regression, 33 focused Python tests, TypeScript typecheck, Vite build and JS/Python syntax checks pass. Chrome actual Solo/Multi fixture verified latest Wan 3.0 Text default, saved-image selection switching to Image, one-image manual Reference override, two-image Auto Reference, mixed batch mode, Suno v6 and MiniMax Music3.0 defaults, WAN3.0 editor default, Extend/Loop shortcut and 355CSS-pixel layout without overflow (44px controls). Fixture mocks reference lookup; no live jobs, provider calls, customer edits or charges. Screenshot ../generator-defaults-mobile-preview.png.
- Static billing inventory is unchanged. Manual review: existing model-specific unit estimates feed the original parent reservation and existing child debits; no added planning calls or rates/allowances, no parent generation debit duplication, existing stitch/packaging paths retained. Own-key Solo uses the same exact selected route at quote/start. Existing final-settlement/pricing policy gaps remain outside this UI change; no claim of full financial acceptance.
- Pending: push/deployment, physical Safari, live paid generation and provider-side behavior verification, plus existing six stale movie-cost fingerprints (not refreshed). Existing production bundle size warning remains.
October12 automatic-default release: user authorized production push. Existing build, focused routing regressions and mobile-width Chrome evidence remain current. Hosted rollout and paid-provider acceptance are not verified by this push.
October 13 — Solo image references and Library removal repair (local)
- Quick Solo OpenAI image/edit and angle-pack requests retain the canonical saved reference until the image reader reads bytes; URL-based image/video providers still receive signed delivery links. Reference objects prefer durable mediaUrl over expiring previews, and same-origin absolute /media URLs resolve through saved storage. External hosts and traversal are rejected; unreadable references still stop before provider submission.
- Library removal and permanent deletion open a native modal immediately, outside the clipped page panel. Cancel, irreversible acknowledgement, active-job blocks, loading, check failures and deletion failures are visible in the popup. Empty/mismatched hide responses cannot report success. Confirmation requests are bounded to 30 seconds; no deletion happens from merely opening the popup.
- Older job deliveries can be deleted without manually indexing first, after exact job/owner/output validation. Library controls preserve deletion tombstones and historical upload-index state. Removal and deletion now require a successful durable account write; a rejected storage write cannot report success or alter the local account cache. Existing exact-file/version purge, receipts and idempotent recovery are retained.
- 58 focused Python checks, deletion-client Node regression, TypeScript check and production build pass. Synthetic Chrome phone-width checks: visible modal/no horizontal overflow, Cancel sends no removal, hide refreshes range, review failure remains visible, active work blocks deletion, failed deletion requires fresh acknowledgement and retry succeeds. No live media deletion, paid generation, credential/IAM/price or balance changes. Browser live tab was signed out; hosted storage permissions and physical Safari acceptance remain unverified.
- Billing inventory unchanged; manual cost review: no added paid provider calls or rates; image requests retain original quote/debit path, free account media-management work remains Plotthirst operating expense. Existing six movie-cost review fingerprints remain stale; not reset. Existing large-bundle warning remains. Repairs are local, not pushed.
October13 Library simplification: removed the hide-only Remove from Library button and its dialog branch. The sole removal action is Delete permanently, retaining Cancel, explicit irreversible acknowledgement, plan review, active-work blocking and durable deletion. Existing backend hide records/API are retained for compatibility; no existing files or visibility records were changed. Local only, not pushed.
October13 release authorization: user requested pushing the image-reference repair and Library simplification. The final interface offers only Delete permanently; confirmation/Cancel and failed/blocked handling remain. TypeScript check, deletion API regression, production build, syntax/diff checks and readiness render/check pass. Existing 58 Python checks and synthetic mobile confirmation evidence apply to the repairs. Hosted rollout, real-account deletion/storage permissions and physical Safari remain unverified; no live account media was deleted.
October 15 — Reference removal, ordering and saved multi-select (local)
- Quick Multi uploaded/imported/saved reference cards now offer Remove and 44px Up/Down controls; staged uploads can be reordered too. Removal affects this setup only, preserves the Library file and invalidates the previous estimate. Any clip still naming a removed reference remains explicit and fails the existing missing-name validation until repaired; no references are silently discarded.
- Moving Multi references also orders existing References lines to match the pool, retaining every clip's selected names, unknown/missing names and prompt bodies. Users are told to review numbered @Image tags. Solo image, video and audio references, Ultimate source references and segment references have ordering controls; existing comic-page and Extend/Loop order controls remain.
- Shared modal has checkboxes, Select all on this page, Clear chosen, chosen counts and an ordered basket; selections persist across metadata pages/searches. One OK resolves every selected file before a collection update. Solo/Multi/Ultimate/segment inputs append in one batch; legacy inputs preflight fresh counts/duplicates before using the bridge. Single-file/replacement inputs stay single. Media-type/count/owner/Testing guards, Cancel, inert background and metadata-only 5/10 pagination remain. No uploads or generation are started by choosing saved files.
- Three Node reference suites, 33 Python batch/upload-library checks, TypeScript and production build pass. Synthetic Chrome actual Multi/Solo and shared chooser checks cover cross-page three-file addition, basket and applied order, named clip lines/prompt preservation, removal surviving reload, Cancel, select-all/clear, single-file replacement, two audio files, no partial form addition on metadata failure, and 355px layout without horizontal overflow/hidden footer. No real account/media writes, uploads, deletion or paid generation. Screenshots: ../reference-multiselect-mobile-preview.png and ../reference-order-remove-mobile-preview.png.
- Billing inventory unchanged. This repair adds no paid backend work/rates/reservations/debits; existing final quotes use current references and Multi edits invalidate estimates. Shared saved-file metadata/thumbnail/setup requests remain existing Plotthirst operating work. Existing six movie-cost fingerprints remain stale and were not reset; existing large-bundle warning remains.
- Local only, not pushed. Hosted full-mode and physical iPhone acceptance remain open.
October15 release authorization: user requested the production push for reference removal/reordering and saved multi-select. Existing Node, Python, TypeScript/build, syntax and mobile Chrome evidence remains current. No live account files, jobs, prices or balances were changed during tests. Hosted rollout and physical iPhone acceptance remain unverified.
October 16 — Stitched playback and video timing (local, not pushed)
- Quick Multi final stitch was already saved separately in result.stitch; its TypeScript results screen only exposed the ZIP. Added Play preview / Close preview and Download final video beside that completed master, including batches reopened from Recent. No master/player is advertised for incomplete stitches. The player is mounted on demand, uses canonical account media, and reuses signed-link recovery for expired delivery URLs; opening results does not load the full master.
- Audit found legacy fixed ETA strings and Ultimate's hardcoded zero similar-timing count. Added durable per-request video observations and bounded, rolling per-model/options profiles at shared Atlas/xAI/OpenAI submission/status boundaries, xAI extension, Atlas upscaling and the separate native xAI batch path. Future model identifiers enter profiles automatically. Options include resolution, shape, duration, input counts/mode, source length, audio and applicable upscale options; a future new option field still needs explicit addition to the signature. No prompts, media URLs or keys are saved in timing records.
- Preparation/submission, accepted-to-terminal waiting and explicitly observed/reported rendering boundaries are distinct. Generic processing never proves rendering or an empty external queue. Cross-worker same-provider/key leases mark overlapping site requests, with separate low-contention/concurrent sample selection. Unknown submission/status outcomes conservatively retain leases; unknown external queue time stays unknown. Successful samples deduplicate by request, failures do not train successful ETA, and exact-key conditional profile saves prevent lost concurrent updates. Keep at most40 samples per signature with90-day sample eligibility, and bounded active leases. Call records carry a90-day ttl; physical DynamoDB expiry requires job-table TTL support and remains unverified. Existing job queued/started timestamps remain the local worker-queue evidence; no claim of external global queue visibility or of isolated live benchmarks.
- Solo, sequential Multi and split edits forward provider timing through the existing progress callbacks. Their estimated bars advance between polls, hold lower provider updates, cap below100 until confirmed completion, and preserve per-account/job browser high-water progress across reload. Backend request high-water values also persist. Ultimate and screenplay progress show current per-video timing snapshots; whole-workflow non-video ETA remains stage defaults and is labeled accordingly. Legacy clip progress uses the shared observed estimate and no longer substitutes65% for a real zero.
- Telemetry is operational work inside existing jobs, not a new billable generation or provider request. No price, approved quote, reservation, debit, balance or live setting changed. New exact-key timing reads/writes and tiny records are additional shared operating work; no second overhead fee was added. Existing overhead coverage gaps remain. Static billing inventory unchanged; existing six movie-cost fingerprints must remain stale rather than reset.
- Local validation: focused timing/replay/concurrency/queue/hold tests and existing batch, split-edit, compact progress and Extend/Loop checks; TypeScript, Node delivery/progress/private-playback checks, production bundle and syntax checks. The old Anaconda ffmpeg cannot run the existing real-media tests; rerun with the installed imageio_ffmpeg4.2.2 binary passes. Synthetic Chrome checks: saved batch reopened, zero players before Play, private-link renewal, decoded three-second final video, no horizontal overflow at341px observed mobile width,22% hold against1%, later82% hold against1%, and82% retained after reload. Screenshots: ../stitch-preview-mobile.png and ../estimated-progress-mobile.png. No paid generation, real account media writes/deletes or live deployment.
- Acceptance still open: deployed DynamoDB/IAM/storage playback, physical iPhone and real-provider queue/render signals, sample collection and ETA accuracy. An absence of tracked site overlap does not prove the provider is globally idle, nor account work submitted outside Plotthirst. Current profiles begin learning after deployment; missing historical submission boundaries are not invented.
October16 release authorization: user requested the production push for stitched-master preview/download and video timing observations/estimated progress. The focused53 Python tests, TypeScript, production build, Node delivery/progress/private-playback checks and synthetic Chrome evidence apply. No paid provider test or live account/media/financial changes were performed. Hosted rollout, job-table TTL, real-provider timing accuracy and physical iPhone acceptance remain unverified. Existing six cost-monitor review fingerprints remain stale; no baseline was reset. Live rollout is not checked as part of this push.
October 17 — Quick Multi single video and original final prompts (local)
- A fully completed one-video batch uses its existing video as the final delivery, with or without the stitch option. It skips encoding and the optional stitch estimate; partial multi-video batches and music are not promoted to a final movie. The ZIP reuses the downloaded clip locally instead of fetching it twice. Existing accepted reservations/debits are not rewritten.
- Final video now has See prompt and Copy prompt, resolved from the owned saved job rather than the current form. It shows the complete raw submitted batch when retained, or the saved original per-clip prompts in order for older work. Terminal compaction preserves raw batch text. Individual media buttons still return only their own original prompt, including when the single clip and final share one file. ZIP prompts.txt retains the full original batch and its line endings; provider rewrites are never substituted.
- Older terminal one-clip stitch failures can expose the proven completed video without resubmitting work or changing historical job status. Requires one original input, one matching completed video output and no failed clip. Completed counts fall back to the saved items when older jobs lack aggregate counts. Empty References lines no longer consume the following Prompt header.
- Verification: 46 focused Python regressions; Node final-delivery, single-video fallback and prompt API checks; TypeScript typecheck, production build, Python/JavaScript syntax, static billing inventory and diff checks passed. Synthetic Chrome actual Multi: saved two-prompt batch survives an unrelated current draft and fresh reload, final Copy works, individual prompt stays clip-only, single video decodes, and older failure displays one completed clip with its final delivery. At 341 CSS pixels there is no horizontal overflow. Screenshot: ../batch-final-prompts-mobile.png. No paid generation, real-account writes/deletes or live financial changes.
- Local only, not pushed. Hosted fresh-job/older-job acceptance and physical iPhone remain open. Existing bundle-size warning and six stale movie-cost fingerprints remain; no review baseline was reset.
October17 release authorization: user requested pushing the verified Quick Multi single-video delivery and whole-batch prompt fixes. The existing 46 Python checks, Node regressions, TypeScript build and mobile-width Chrome evidence remain current. No paid provider run, account/media mutation or financial adjustment was performed. Hosted rollout, fresh/older live-job acceptance and physical iPhone remain unverified; no live rollout check is included in this push. Existing six movie-cost fingerprints remain stale and were not reset.
October 17 — Quick Solo Suno duration typing (local)
- Repaired the target-seconds input: values below 10 were rendered as 0 on every keystroke, preventing ordinary digit-by-digit entry such as 120. The control now displays its actual editing value, uses a numeric mobile keyboard and keeps 0 as Auto. Entering Audio or loading an older setup normalizes legacy sub-10 defaults to Auto; valid saved targets remain intact. Cost check/Create explain incomplete or fractional targets instead of silently using Auto; accepted targets remain whole seconds from 10 to 360.
- Synthetic Chrome actual Solo checks: typed 1 then 20 and retained 120; v6 cost request contained 120, Wild Auto contained 0, Mini maximum contained 360; 9 was rejected before another estimate request. Save setup then fresh reload/Load saved restored 360. Mobile341px showed editable120 without horizontal overflow. Other Solo audio generators currently have no target-seconds input; no new duration capability was invented. Screenshot ../solo-audio-duration-mobile.png. TypeScript typecheck, production build and syntax/diff checks passed; existing large-bundle warning remains.
- Frontend repair only: no provider route/rate/limit, backend operation, quote/reservation/debit, account or payment setting changed. Existing audio targets are sent to the existing estimate/start paths. All browser requests used synthetic local data; no paid generation or live account changes. Local only, not pushed. Hosted and physical-iPhone acceptance remain open; existing six stale movie-cost fingerprints were not reset.
October17 audio-duration release authorization: user requested pushing the verified Quick Solo Suno input repair. Existing TypeScript/build, syntax/diff and synthetic Chrome typing, Auto/maximum, saved-setup and mobile evidence remains current. No paid generation or account/financial change was performed. Hosted rollout and physical iPhone remain unverified; no live rollout check is included. Existing six movie-cost fingerprints remain stale and were not reset.
October 17 — Solo Audio Instrumental checkbox layout (local)
- The Instrumental checkbox inherited the global 100%-width input rule, pushing its label to the edge/off-screen. Added a scoped fixed18px checkbox,10px gap, flexible wrapping text and44px row height, retaining the existing bordered card and native label toggle. The label stays inside its card without colliding with Variations. Stylesheet URL version is refreshed so a cached earlier CSS file cannot conceal the fix. Audio state/generation behavior is unchanged.
- Verified actual Solo synthetic Chrome UI at341px and685px observed widths: checkbox18px, text10px beside it and inside the card, no horizontal overflow. Clicking Instrumental text checked its checkbox. TypeScript typecheck, production build and syntax/diff checks pass; existing bundle-size warning remains. Screenshot ../solo-instrumental-mobile.png. No paid jobs or live account writes.
- Local only, not pushed. Hosted and physical-iPhone acceptance remain open. No backend operations/pricing/credit changes; existing six movie-cost review fingerprints remain stale and were not reset.
October17 Instrumental-layout release authorization: user requested pushing the verified Solo Audio checkbox/label repair and stylesheet cache refresh. Existing TypeScript/build, syntax/diff and mobile-width Chrome layout/toggle evidence remains current. No live account or generation changes were performed. Hosted rollout and physical iPhone remain unverified; no live rollout check is included. Existing six movie-cost fingerprints remain stale and were not reset.
October 18 — Isolated Admin Activity (local, not deployed)
Latest October19 completion: build00badd2 is live with both services stable and exact image/configuration/role checks passed. Actual Chrome User View->Admin View clears records and now restores normal guidance without automatic fetching; explicit report reload returned200. Owner admin/report restored; tracking enabled, confirmed notifications retained and all three alarms healthy. Final raw AWS evidence downloaded and independently verified. No account or paid-generation changes. Direct credential login, physical iPhone, live generation-event and whole-site capacity limits below remain separate follow-up gates.
October19 hosted acceptance supersedes the following preparation snapshots: first build ec7c769 deployed/stable for website and worker; real admin loading, prefix search, focused/global reports, scope clearing, local filters and5/10 controls passed. No request on panel open or local filtering; explicit report and name requests HTTP200. One owner check-in indexed successfully.390pixel emulated layout had no horizontal overflow and was reset. User View cleared/hid records; read-only Freshcheck/User and MrCodex/Test User sessions could not enter admin reports and were both ended. Owner admin/selection restored without saves, financial changes or paid jobs. These are support-session checks, not independent logins; direct API navigation was browser-client-blocked before an auth result. Local role-route guards and isolated AWS denials are distinct evidence. Physical iPhone, independent logins, live authorized generation and whole-site capacity remain open. A misleading restored-admin hint is repaired in this follow-up, with final hosted transition acceptance pending its deployment.
Current October19 production update: owner approved the scoped rollout. Five support resources and14 initial tracker resources are created and verified against reviewed IAM/code/storage/alarm configuration. Approved bounded reporting access is attached to the shared runtime role; only the jobs-table source stream is enabled. Both consumer connections are provisioned and verified Enabled, with all16tracker resources complete and notification confirmation verified. Website deployment and actual Chrome admin/ordinary/test-user acceptance are still pending. No source history scan, paid generation or customer financial settings change.135 combined focused checks pass; deployment reads exact non-secret outputs with one bounded call and preserves worker configuration/role fields. The following dated local/probe entries remain historical evidence, not claims of hosted acceptance.
- Supersedes the first shared-job-table draft. Admin Activity stays collapsed and loads only on request. Replaced the all-account dropdown/copy with explicit case-insensitive name-prefix search (minimum2 letters, maximum10 matches). Site-wide sample and named-account focus include names, modes/media types, statuses, times and batch request counts; prompts/titles/media/provider details are excluded. Role/mode filters and5/10-row pagination reuse loaded records. Counts explicitly describe a bounded sample, not whole-site/lifetime totals.
- Reporting now requires separate activity storage:16 hash-sharded queries limited to7 metadata rows each (at most4 concurrently, at most100 returned); focused account queryLimit100; one bounded name BatchGet. No source job/history/profile scan, no job-backend hook, no fallback to jobs storage. Root job status observation comes from DynamoDB Streams, with idempotent conditional writes and progress/child exclusion. Coarse support-session-excluded check-ins queue sanitized name/role metadata independently; the2,048-key hourly throttle may resend after eviction, with deterministic storage keys preventing duplicate check-ins; shutdown/full queue can omit check-ins, so this is not an audit/financial ledger.
- Added60-second/64-scope cache, two uncached reports per process, distributed12 uncached requests/admin/minute, guarded429/Retry-After and503, one-attempt1s SDK connect/read limits and15s browser abort. Scope/access changes clear rows/names; missing infrastructure shows reporting unavailable. Dedicated table/threeGSIs, encrypted queues, capped consumers, retries/DLQ and lag/failure alarms are prepared in infrastructure/admin-activity.yaml with ingestion disabled by default. No role broadening is automatic; scoped roles, stream/reader checks, local AWS validators, offline metadata seed and later live acceptance remain deployment gates (docs/ADMIN_ACTIVITY_ROLLOUT.md).
- Focused Python checks include privacy, real route role/view guards, auth failure isolation, bounded queries/cache/rate limits, partial batch retry/replay, isolated package/import invariants and synthetic100,000-account +100,000-activity indexed queries. Final42 focused Python checks passed. With100,000 synthetic accounts and100,000 activity records, the latest indexed search/global/focused sequence took0.0248s (first measured run0.006s); these are local evidence, not AWS/site capacity certification. Final TypeScript typecheck, production build, Python/JavaScript syntax and static billing inventory passed; inventory has no changed signatures. Project-specific infrastructure invariants pass, but cfn-lint/Guard are awaiting tool-install approval and are not represented as passed. Existing large bundle warning and six stale movie-cost fingerprints remain.
- Chrome mobile-width local fixture now works and verifies no initial/open fetch, username search, All-users and Alice focus, local paging/filtering, one Multi request for six clips, stale-result clearing,503 without falsezero,429 backoff and sign-out clearing. The15-second timeout cleared results and restored controls, then normal loading recovered. Narrow-screen geometry had no element/document overflow; screenshot ../admin-activity-isolated-mobile.png. Temporary viewport was reset. All data is synthetic; no paid jobs, real user history inspection, account/payment/balance/media mutation, live AWS operation, historical export/import or push. Wider legacy auth/Admin User Management still uses full account data; this feature does not certify the whole site for100,000 users/concurrent requests.
October 18 — Many completed jobs per account (local, not deployed)
- Corrected the capacity acceptance scope to account count multiplied by per-account job history, separately from live arrival rate and concurrency. Added a real indexed in-memory SQLite fixture with100,000 accounts and200,000 completed metadata rows, including100,001 rows owned by one account. Both global and focused reads remain capped at100; name search remains capped at10. Index plans are checked. Four indexed reads completed in0.0025s in the recorded run; in-memory synthetic timing is not an AWS/disk/production benchmark. Larger AWS read-budget contract fixtures cover1,1,000 and100,000 jobs per owner, asserting fixed query/item counts, no scan, no cursor walk and bounded profile hydration; these are mocked contracts, not materialized giant cloud datasets.
- Repaired extra observer work discovered during review: compare encoded old/new statuses before deserializing progress-only updates. For a changed status, decode only selected metadata fields; never walk saved results, prompts, references or batch item contents. Batch requested count uses list length; parent/child exclusion and partial retry/idempotency remain. Source stream images still have wire/service cost; no zero-cost or unlimited-throughput claim.
-48 focused Python checks passed. After strengthening mocked partition/unique-ID assertions, all6 targeted stream/read-budget checks passed again. No UI change or frontend rebuild is needed for this backend-only refinement. No paid generation, customer-account/media/balance change, live history inspection, cloud resource change or push. AWS role/setup, cfn-lint/Guard approval/validation, offline seed and live concurrency/backlog acceptance remain open. Wider legacy auth/Admin User Management and other job/library history routes require their own capacity checks; this activity change does not certify the whole site for100k users with deep histories. Existing six stale movie-cost fingerprints remain.
October 18 — Approved local infrastructure validators (not deployed)
- User approved installing cfn-lint1.57.2 and guardpycfn0.1.0. Installed exactly those two packages in ../.activity-tool-cache/validation-1.57.2 with existing system dependencies visible; no global/production dependency change. The original infrastructure/admin-activity.yaml passed cfn-lint with zero findings; no production template change was needed. No AWS API, account inspection or deployment was performed.
- Added repeatable offline tools/validate_activity_infrastructure.py and13 unchanged AWS registry rules pinned to7f7340c26ae5d5e8874651dbffeb12e0e9f505b6 with hashes/license, plus six project Guard rules. Baseline:4PASS/6SKIP; three strict rules FAIL on six known resources and remain explicitly reported with scoped assessments (SSE-SQS/service log encryption instead of customer KMS; source-mapping failure destination/redrive instead of Lambda async DLQ). Project encryption/retention/caps/exact failure bindings/default-off/no-suppression checks PASS. This is scoped policy acceptance, not universal AWS compliance. Guard input uses CFN-aware canonical JSON to preserve !Ref/!GetAtt semantics without changing the source. Engine success is distinguished from actual PASS; a required negative control and mutations reject unsafe edits.
-58 focused Python checks passed, including heavy histories, real routes, concurrency/notification regressions and ten native Guard validation tests. Local validation report: test-artifacts/activity-validation/latest.json. Detailed assessments, official sources and repeat command: docs/ADMIN_ACTIVITY_ROLLOUT.md. AWS role/policy completeness, existing stream/reader quota, initial offline metadata seed, account-aware change-set validation and live load/backlog/iPhone acceptance remain deployment gates. Nothing pushed/deployed; existing six stale movie-cost fingerprints remain, and no review baseline was reset. October18 activity readiness follow-up (not deployed): AWS CLI2.36.49 is installed but STS returned NoCredentials and Chrome AWS reached Sign In. Login confirmation is pending. Live stream, existing readers, role permissions and concurrency remain unverified; no production change or push. Local58-test/validator evidence remains current; authentication and exact-resource bootstrap checks precede deployment.
October18 login authorization received: remote CLI login started and opened in Chrome; no saved sign-in was filled. Owner sign-in is needed before completing credentials and read-only checks. No production resources, IAM permissions, accounts or jobs changed; no deployment/push.
October18 IAM readiness findings (not deployed): CLI now verified as plotthirst-codex, not root. Live web720/worker676 are running; both use plotthirst-jobs and the shared ecsTaskExecutionRole, with no activity env configured. Jobs table has no stream enabled; Lambda configuration shows400 total/397 unreserved concurrency and one existing operations SQS mapping. IAM role-inspection reads denied; prepared exact-role, four-action read-only proposal in .github/iam/activity-readiness-read.json, not attached. No durable CloudTrail trail verified by DescribeTrails; other audit systems not audited. Live policies, source stream activation, scoped-role bootstrap, audit logging and later functional/load acceptance remain gates. No live records, IAM/resource/settings changes, deployment or push; local58 tests remain the implementation evidence. Details: docs/ADMIN_ACTIVITY_ROLLOUT.md.
October18 root-approved follow-up: scoped PlotthirstActivityReadinessRead user policy is now applied and verified; Chrome remains root as requested. Existing runtime-role policies reviewed, still no new activity-resource access. Local template now separates preparation, mapping creation and ingestion; parameter/Guard rules block missing stream, missing mappings/notifications and broken toggle coupling.62 Python checks pass; cfn-lint zero findings and scoped Guard pass with existing explicit assessments. No reporting resources, source stream, runtime permissions, customer records or deployment changed. IAM runtime generator remains incomplete; owner response to manual-review workflow exception is pending. Live setup, complete policies, audit logging and hosted/load/iPhone acceptance remain open. See docs/ADMIN_ACTIVITY_ROLLOUT.md.
October18 authorized manual Activity IAM review (not deployed): complete scoped draft now owns two dedicated Lambda roles and prepares unattached web/import policies without broadening the shared ECS role. All six proposed documents passed AWS Access Analyzer (zero findings);33 root CloudShell custom simulations returned30 expected decisions and three unresolved required-positive denials. Unrestricted logging diagnostic controls also fail for the specific ARN, so no cause or simulator exemption is assumed. Scopes/expected results were not weakened. Raw reports/diagnostics saved locally.71 focused Python checks passed in17.04s; cfn-lint zero findings and seven project Guard rules pass with unchanged explicit vendor-rule assessments. Resolve simulations before any runtime grants/stack creation, then require isolated invocation, source-stream/audit/seed and hosted/load/iPhone acceptance. Only earlier approved four-action user inspection policy is live; no reporting resources, source stream, customer data or deployment/push changed. See docs/ADMIN_ACTIVITY_IAM_REVIEW.md and docs/ADMIN_ACTIVITY_ROLLOUT.md. This supersedes the earlier pending manual-review request.
October19 UTC Activity follow-up (not deployed): prepared an isolated runtime permission probe because simulations still reject source-function matching and log-stream resources. Original scopes/failed expectations unchanged.84 focused Python tests pass, including13 probe checks; cfn-lint zero findings and scoped probe Guard pass with eight unsafe mutations rejected. AWS template/pre-deploy checks passed for an unexecuted preview with nine new test resources and no modifications/removals. No runtime grants or test resources provisioned; no customer records/provider calls or website push. A specific approval is required to execute the private synthetic probe and clean it up; proposed Plotthirst-funded test budget up to$1. Production setup/ingestion and hosted acceptance remain open. Owner requires final testing through actual PC Chrome signed into Plotthirst as admin; physical iPhone acceptance stays separate. See docs/ADMIN_ACTIVITY_IAM_REVIEW.md.
October19 UTC approved Activity runtime test completed (production not deployed): all five real synthetic Lambda invocations passed using the reviewed restricted policies. Exact-key reads verified queued/completed transitions, unchanged replays, expected profile/check-in metadata and absence of the synthetic prompt text. Both test functions delivered their expected CloudWatch markers. All nine disposable test resources reached DELETE_COMPLETE with no failed events; raw evidence was downloaded and independently checked. Original simulator failures remain preserved, with their cause unresolved. No customer data, production stream/runtime permissions, prices/balances or website push changed. Existing84-test local evidence remains applicable; the current consumer package matches reviewed source. Next gates are wider ingestion/failure/load checks, production setup/audit/metadata seed, then owner-required actual PC Chrome admin viewer and physical iPhone acceptance. See docs/ADMIN_ACTIVITY_IAM_REVIEW.md and docs/ADMIN_ACTIVITY_ROLLOUT.md.
October19 UTC full Activity ingestion test prepared (production not deployed):106 combined local tests pass, including22 new fixture checks and14 unsafe security mutations. Prepared a separate synthetic source/stream, check-in and failure queues, real consumer mappings, private reporting/permission checker and inert-recipient alarms with original retry settings. AWS schema/pre-deployment checks pass for an unexecuted18-add preview, no existing-resource modifications; both mappings default disabled. No new runtime grants/resources or customer/provider work has run. Next approval covers only this bounded private test and disposable cleanup, with proposed Plotthirst-funded allowance up to$1. Production activation, historical seed, durable audit logging and actual PC Chrome/admin plus iPhone acceptance remain open. Original simulator failures are preserved. See docs/ADMIN_ACTIVITY_INGESTION_TEST.md.
October19 UTC approved Activity ingestion acceptance completed (production not deployed): all real isolated AWS healthy transitions, sanitized check-in, prefix search, global/focused reports and caching passed. Eight prohibited operations were denied; the real distributed quota allowed12 and rejected the13th. Both malformed-message recovery paths passed with original retry settings and healthy metadata unchanged. All three log markers arrived; the failure alarm entered ALARM, with notification actions intentionally absent.26 synthetic writes,6 direct reader calls,15 known-key reads and17 failure receives stayed within approval limits. Both mappings were independently observed disabled before20minutes. All18 explicitly disposable resources were deleted with zero failed creation/deletion events; raw evidence was downloaded and independently checked. This is functional acceptance, not whole-site100k-user or production throughput certification. The up-to-$1 test allowance is not measured AWS spend; no customer debit/provider/production change or push occurred. Existing106 local checks remain current. Remaining gates: production audit/artifact/source/exact-policy/metadata-seed/API setup review, actual PC Chrome admin viewer plus ordinary/test-user denial and physical iPhone acceptance. Legacy full-account auth/User Management scaling and the original failed simulator result remain recorded. See docs/ADMIN_ACTIVITY_INGESTION_TEST.md.
October19 requested historical Activity backfill completed on existing live build00badd2. The separate operator utility queried the existing account/date index for the11 current accounts within90-day retention, evaluating9,205 records in389 small pages and importing235 unique generation snapshots. Stored totals independently matched160 completed,67 failed and8 canceled requests; internal/child records were excluded, with zero malformed records. Source read consumption was19,737.5 units; actual AWS dollar charges were not measured. This is a Plotthirst-funded administrative exception with no provider generation or customer debit. Normal browsing still queries isolated reporting storage, never source history. Runtime IAM/configuration/retention and site build are unchanged. PC Chrome verified Guntolga's3 requests (2 completed/1 failed), site-wide Last30Days sample100 rows and real Next/Previous plus5/10-row display; counts remain sampled, not lifetime totals. Earlier jobs outside90 days and deleted/absent accounts were not queried. Operator utility and43 focused passing checks are local maintenance source; no website deployment was required. See docs/ADMIN_ACTIVITY_ROLLOUT.md.
October19 Activity failure detail repair prepared locally: failed entries now show an authored cause summary and expandable admin-only configured/reported provider/model, stage, HTTP status and whitelisted duration/resolution/shape/audio options. Attribution is explicitly recorded, inferred (labeled likely) or unknown. No raw error text, prompts, credentials, signed URLs or filenames are returned. Existing indexes already project the status attribute; a backward-compatible string-or-map reader carries the bounded diagnostics without replacing indexes or adding report queries/IAM grants. New consumers must follow the website reader deployment. A separate operator tool enriches the67 retained older failures through exact job-key reads only; not on browsing and not a second source-history scan. Metadata update/publication/enrichment remain pending until actual deployment/Chrome acceptance.96 focused backend/compatibility/operator/infrastructure/deployment checks pass; frontend typecheck and523-module production build pass, existing bundle-size warning only. This is Plotthirst-funded admin reporting/maintenance, with no generation/customer charge. See docs/ADMIN_ACTIVITY_ROLLOUT.md.
October19 Activity failure diagnostics deployed and accepted on build9cea796: website724 and worker680 are stable COMPLETED on the exact commit image with original roles/configuration. Actual PC Chrome admin report shows failure reasons, configured/reported provider and model, saved options, and recorded/likely/unknown failure source. Enrichment independently verified67 retained failed root jobs:28 specific reason matches,39 unclassified by this matcher;12 likely Plotthirst,3 likely provider,52 unknown. This does not prove unknown original errors have no useful details, and does not fix underlying generation failures. Both Lambda consumers match reviewed immutable numeric-safe package;2 mappings Enabled and3 alarms OK/actions enabled. Runtime IAM/indexes/query budgets/caching are unchanged.97 focused tests, frontend typecheck/build pass; emulated390px diagnostics have no overflow, physical iPhone untested. Exact-key one-time reads consumed268.0 source and19.0 reporting units; actual AWS dollar cost unmeasured, no customer debit or paid generation. Earlier auth/capacity gates remain explicit. Final screenshot activity-failure-details-live.png; details in docs/ADMIN_ACTIVITY_ROLLOUT.md. Post-release acceptance notes remain local for the next planned push.
October19 Activity follow-up prepared: actual Chrome verified Abimes's settled October17 purchase +5,250 credits (5,000 to10,250) but focused Activity empty. Tracking began October19; historical import covered generation only. Added nonblocking successful-authentication and settled-purchase metadata hooks through the existing queue, deterministic hashed event IDs, replay dedupe, and admin-only purchase/sign-in display. New per-job allowlisted settings and explicit submitted/started/finished timestamps use existing projected status map for every root status; elapsed queue/processing/total times derive only from recorded fields, never updatedAt. Mode-irrelevant default settings omitted. Same-status late finish timestamps now ingest, progress-only writes still skip. No source reads on report browsing, runtime IAM/index/cap/cache unchanged. One-time exact-key enrich utility supports existing indexed root jobs of all statuses. Explicit-account recovery utility reads at most two bounded existing account/session objects, never saves raw profiles/ledger/tokens, imports only settled ledger purchases or retained actual session createdAt within90days; no manufactured sign-ins. No balance, financial fulfillment, quote, provider or ETA algorithm change. Existing separate provider timing records rendering only when explicit evidence exists and distinguishes overlap; Activity total job duration must not feed pure rendering samples. Local tests/build pass; deployment and historical recovery still pending.
October19 Activity follow-up verified live on50d11bf: Abimes's original October17 retained sign-in and settled +5,250credit/$50 purchase now display in Admin/Activity/Last30Days/AllModes. Earlier reporting began October19 and historical import only included generation; successful-login and settled-purchase hooks now enqueue safe metadata without blocking authentication/fulfillment or changing balances. Completed jobs also show provider/model, applicable saved settings, submitted/start/finish and queue/processing/total elapsed times.235 already-indexed root jobs enriched and independently verified with all three actual timestamps;0missing/changed.868.0 source read units,23.0 reporting enumeration and117.5 verification units; account recovery preview/apply read four S3 objects total. No source scan/search-time hydration, new runtime permission/index/resource, paid generation, price/balance/quote or ETA algorithm change. Job total duration remains separate from provider rendering/queue cohorts.199 focused tests, frontend typecheck/build pass. Actual Chrome completed-video example verified301seconds total;390px emulation gave344px card/no overflow and was cleared. Physical iPhone and a new live login/payment not induced. Screenshots activity-abimes-live.png and activity-job-timing-mobile.png inspected. Two consumer codes verified;3 alarms OK/2 mappings Enabled. Web725 stable on exact commit, worker681 new image stabilizing. Broader capacity/auth acceptance limits and six old cost-monitor stale fingerprints remain explicit. Final acceptance notes local for the next planned source push.
October19 final50d11bf release: web725 and worker681 both stable COMPLETED on exact image/original roles. Live Chrome acceptance and235-job/account-event recovery above complete. No observer/emulation/dev server remains. Post-release notes local for next planned source push; no further deployment needed for documentation.
October19 original ETA comparison prepared: owner approved freezing the estimate and asked whether this helps the existing automatic estimator. Confirmed VideoTimingTracker already learns successful accepted-to-terminal video-call durations by options signature (new model/version/options automatic),40 samples/90days, matching-overlap cohort when3 examples exist, mixed fallback explicitly flagged. Retains queue/render distinction, failures excluded, progress high-water holding unchanged. Added immutable original estimate/range/basis/sample count/cohort at acceptance, completion-observed time and error against the original. Current forecasts can keep learning while the original stays fixed. Success samples now retain original expected duration/error for future evaluation; estimator input remains actual successful provider-call total, never whole-job elapsed. Older call records never receive invented originals. New pure plotthirst_eta_comparison module validates/strips scalar metadata and derives finishes/errors, bounds10 recent comparisons per durable job. Existing backend result/progress writes capture original and finish; no extra request/job lookup is added. Quick Solo/Multi emit accepted/final timing even if the first poll is terminal; optional reporting cannot lose receipt or duplicate submission. Existing pending timing paths are captured where present; whole-workflow/image/audio forecasts are not invented. Activity carries comparisons inside existing status projection, ingesting only changes to original/final comparison metadata, not every progress tick. Admin UI shows initial duration/range/finish, actual, difference, basis, scope and unknown old estimates. No provider identity is newly exposed through ordinary timing responses. Three-module consumer package now includes pure comparison helper; no runtime IAM/index/resources/prices/balances change.213 focused tests pass21.22s; typecheck and static billing inventory unchanged pass. Local Chrome simulated240second estimate/150second actual/-90second difference and390px mobile336px card/no overflow verified. One CUA call unexpectedly took1692seconds but returned success; do not imply that delay was app ETA or a paid generation. Deployment, final consumer verification and live old-record unavailable-state acceptance pending.
October19 ETA source pushed: b588d97afff12b1398212b0e7339a1aa7155c49c is on production/main. Website/worker CI rollout has not been observed; Activity consumer update is not uploaded or applied. Chrome explicitly blocks automation because another extension UI is open; user asked to dismiss that popup and reply ready. No repeated browser attempts, new auth mechanism or IAM change. Local Vite session51048 stopped. The own local preview tab may still have390x844 CDP emulation, which must be cleared after user dismisses the popup; do not claim it reset.213 focused tests passed, final27 ETA tests passed after terminal guard, typecheck/build/syntax/billing inventory/readiness checks passed. Movie check preserves exactly the same six prior stale fingerprints. Latest own transport test-artifacts/activity-eta.zip is17252bytes SHA256cc6b943f23c4c94d11da47604d002183af0e64a612a1b8881cf1f8cb24f76e95 (consumer.zip + release_eta.py); consumer SHA256470163ed0bc0e61cb497d016449e0c26e4815c7c5c0ae7d44a807eea22340a41. Consumer exactly3 modules matches source bytes. Watch deadline1800s. After browser control resumes: guarded plan/inspect exact2LambdaCode changes/execute/verify existing stack, observe exact website+worker commit with original roles, check live admin old-job ETA-unavailable state and health; no paid generation or old-job ETA backfill. Last known live50d11bf web725/worker681. No release-complete claim yet. Post-push continuity notes stay local for next planned push.
October19 ETA release completed: b588d97afff12b1398212b0e7339a1aa7155c49c is live. Exact website task726 and worker682 target images are stable (sole primary COMPLETED, running equals desired, pending0); original ecsTaskExecutionRole task/execution roles match the saved pre-update baseline. Guarded CloudFormation change set activity-coverage-b588d97/153edf3c-3c48-4d11-97f0-2b03f82e1500 was inspected AVAILABLE/CREATE_COMPLETE: exactly IdentityFunction and StreamFunction Modify/Code, ReplacementFalse. Executed once. Stack UPDATE_COMPLETE; both deployed Lambda codes match consumer SHA256470163ed0bc0e61cb497d016449e0c26e4815c7c5c0ae7d44a807eea22340a41, Active/Successful/Python3.12/30s/256MB. All3 existing Activity alarms OK/actions enabled; both mappings Enabled. No IAM/index/resource/quote/price/balance change, historical ETA backfill or paid generation. Root operator evidence persists under /home/cloudshell-user/activity-eta-20261019-b588d97/{plan,change-reviewed,consumer-verified,release-verified,health-verified}.json. The bounded observer finished normally (shell Done); no observer remains running. Actual AWS dollar cost was not measured. Live PC Chrome buildb588d97/adminMichelangelo accepted focused Guntolga Last30Days/AllModes:3requests/2complete1failed. Completed video disclosure shows recorded provider/model/options and actual submitted/start/finish/elapsed, plus Original ETA: Not recorded. Older estimates are not reconstructed. This is actual older-job acceptance, not an invented new comparison. The new-comparison numeric example remains a simulated local test; no current-turn paid-job authorization was assumed. Screenshot ../activity-eta-live-desktop.jpg saved/inspected before consumer execution; post-consumer ../activity-eta-live-mobile.jpg saved/inspected at390x844, card344px/content390px/no overflow. Temporary emulation on the final task tab cleared; normal943px/content943px/no overflow confirmed, buildb588d97 present. Earlier Chrome11 disconnected during a display check; documented discovery found Chrome3. Legacy user admin tab320870166 then reported Debugger unattached. Recovered using a fresh task tab, not a separate browser or hidden control mechanism. Do not claim to have successfully controlled that legacy tab afterward. Current Chrome3 final admin tab320870203 is marked Deliverable with the report open; own CloudShell320870201 uses existing terminal355682d1-cab2-42ef-8b16-f81b1df450c2; unrelated terminal94d8f056-a64c-48d9-ac4f-a1ad731f98be and user's root security/settings tabs untouched. No local dev server remains. User root sign-in completed normally; no new credential or permission was created. Source functional changes already pushed; these post-release notes/readiness HTML stay local for the next planned push, with no second rollout just for notes.
October 20 — Permanent Library deletion live verification FAILED before confirmation
- Actual PC Chrome3, ownerMichelangelo/admin, live buildb588d97. Website menu -> Test early preview pages -> Library worked. Uploaded only a new synthetic512x288 PNG5651bytes through Quick Solo Reference images; no generation/cost confirmation/Create was used. Original empty Solo form restored by Remove reference1 (form removal, not stored deletion). Existing user media untouched. Library initially3301, then3302 with the disposable upload after Refresh range; original filename search library-delete-test-20261020 finds exactly1. Searching the renamed stored timestamp does not match because Library search currently omits filename/url fields; not fixed in this task.
- Library Review -> Delete permanently opens the expected modal, but actual POST /api/v1/creation-library/delete-plan returned HTTP503. Visible alert: Deletion checks are temporarily unavailable. No files were removed. Please try again. Confirm never became available. Cancel closed the modal and returned to the same item. Complete bounded Network event capture confirms0 POSTs to /api/v1/creation-library/delete. Original image still loads512x288 in Review. Saved/visually inspected ../library-delete-check-failed.jpg. New test thumbnail remains Preparing; do not claim a ready thumbnail was tested/deleted.
- Disposable catalog asset library:upload-5d7d8bf8f9dd1b3cdc385667, title library-delete-test-20261020.png, canonical /media/images/users/u93596365580110_michelangelo/library/private/ultimate-omega-reference_1792495925452.png. Actual signed image host observed plotthirst-user-media-prod.s3.amazonaws.com; query credentials were not printed/saved. Primary original key users/u93596365580110_michelangelo/library/private/images/ultimate-omega-reference_1792495925452.png. User specifically requires independent active-S3 absence after WEBSITE deletion, with backup buckets outside scope. No direct S3 deletion is authorized/attempted as a substitute.
- AWS session expired. Own CloudShell sign-in tab320870208 is markedHandoff; user asked asynchronously to sign in as root, no reply/sign-in observed yet (email field still empty at last check). No live AWS log/S3 check performed, no root-cause claim, no deletion success claim. Library tab320870203 markedHandoff with only the disposable item selected, Network capture disabled. No emulator/dev server/background command added. No application code/IAM/prices/balances changed or source push/deployment in this task.
- Local read-only S3 checker prepared (not uploaded/run): test-artifacts/library-delete-s3-check-20261020.zip2091bytes SHA256fbf37c4d380cd5430331e085fbdb4e9bf55200c30a0a4561fcafa1fe3c264deb. Contains test-object-keys.json and verify_library_s3.py; validates account/bucket/exact fixture, HEAD404 only (403 fails), checks bounded versions/delete markers for8 exact original/thumbnail/sidecar/legacy-alias keys, records before5651byte original and requires that evidence before any after-absence conclusion. No backup access or S3 mutations. Syntax checked. Exact keys derived with the source's pure mapping helpers/thumbnail function, not guessed. Do not call after phase until a real website deletion succeeds.
- Next: after root sign-in inspect ONLY recent web logs for media deletion review failed (around2026-10-20T11:35Z), confirm actual exception class, fix/retest if requested/within authorized scope, then prepare a valid deletion plan. Browser control requires action-time confirmation for an irreversible deletion; no such final confirmation has been requested/granted yet because review failed. Use only this disposable test upload. Then independent S3 before/after, Library fresh reload/search/recovery checks. Do not erase original user media or backups.
- Unconfirmed code-analysis hypothesis: media_deletion.plan calls list_jobs(statuses=ACTIVE,limit=21); AwsDurableJobBackend caps user-index pagination and raises PlotthirstJobHistoryPageLimitError when older history remains after filtering. A large owner history may trigger that503. Mock/local tests use a small LocalDurableJobBackend; the hypothesis has not been confirmed against live logs. Do not skip active-reference safety or silently allow deletion after an incomplete search. Other possible exceptions/draft reads remain unruled out.
October 20 — Large-history deletion check repair prepared
- AWS root sign-in restored. Read-only exact-key S3 baseline at 11:58:59Z confirms the disposable original exists (5,651 bytes, one version); all seven derived/legacy candidates are absent. Backup buckets were not queried. No S3 mutation or website deletion has occurred.
- Reproduced the deployed safety lookup against the actual owner's index: PlotthirstJobHistoryPageLimitError after 12 pages / 504 evaluated records / 617 read units, zero active results but a continuation still present. The local container log is not forwarded to CloudWatch, and ECS Exec is disabled; neither container access nor permissions were changed. This confirms a failing lookup in the real path, not access to the unavailable local exception log.
- Repair: continue bounded indexed checks from a server-owned internal checkpoint. Retain an account-level active-ID snapshot, hydrate known jobs and query subsequent updates before deletion; unknown/missing jobs, more than 20 active jobs, incomplete or stalled queries remain fail-closed. Client-supplied cursors cannot skip checks. A file is never deleted by reviewing or continuing checks. Cancel aborts the browser continuation. Existing exact-version purge, ownership, acknowledgement, receipts and catalog durability remain intact.
- Local validation: 25 Python deletion tests, client regression including automatic continuation/cancel/mismatched-response guards, TypeScript check and production build pass. Added actual AWS list_jobs pagination regression with an active reference beyond 1,008 evaluated records; submission after review is rechecked and blocks deletion. Existing bundle-size warning remains.
- Manual cost review: indexed metadata reads and one small internal checkpoint per account; Plotthirst-funded free media maintenance. No queue/provider calls, generation, customer charge/quote, balance, discount, IAM or storage configuration changes. Billing inventory check is unchanged. Readiness and existing movie-cost stale reviews remain explicitly separate from hosted acceptance.
- Pending: deploy this repair, repeat the disposable item's WEBSITE deletion review, obtain final action-time confirmation required by browser control, then verify exact active-S3 keys and versions are absent. No deletion acceptance or successful S3 removal is claimed yet.
October20 live repair follow-up: committed/pushed 48b73008a7bb007a086df19c8c1a7186bbc90f3e. PC Chrome Library displays Build48b7300. The disposable file's review now completes: 21 bounded HTTP200 review responses, okTrue/blockedFalse/no warnings. Cancel returns to the same file with no delete call; reopening completes with a single HTTP200 review. Saved and visually inspected ../library-delete-ready-20261020.jpg. No actual deletion has occurred. Final irreversible action-time confirmation requested for this exact disposable file only; not yet answered. Normal S3 after-absence remains unverified. Current website task727 target image is exact48b7300, target healthy, running1/desired1/pending0; old726 is draining with0running. Final service/worker stabilization has not yet been claimed. No IAM, alarm, storage configuration, provider call, price or balance change. Source checks passed; no observer/dev process is left running. Chrome3 tab320870215 is markedHandoff at the valid final deletion modal (checkbox still unchecked); tab320870214 markedHandoff at root CloudShell using own terminal355682d1-cab2-42ef-8b16-f81b1df450c2. Network capture disabled; no emulation. S3 baseline checker already extracted to /home/cloudshell-user/library-delete-20261020 with s3_before.json saved; do not rerun before or run after until WEBSITE deletion succeeds. After explicit confirmation: enable bounded Network observation, acknowledge and confirm only library-delete-test-20261020.png; then run python /home/cloudshell-user/library-delete-20261020/verify_library_s3.py after and check fresh Library. Do not delete through AWS or touch existing user media/backups. Diagnostic output and before-observed proof copied as aggregate/exact-fixture JSON into test-artifacts/library-delete-20261020; own CloudShell diagnosis directory library-delete-diagnosis-20261020 retains diagnosis.json. Post-release evidence/readiness notes stay local for the next code release, without a second deployment solely for notes.
October20 confirmed deletion attempt: user explicitly reconfirmed the disposable file. Actual PC Chrome website Confirm permanent deletion sent one POST /api/v1/creation-library/delete, returned503 before storage removal. History review passed; visible error says no files removed/storage permissions need support. Independent root HEAD confirms original5,651bytes still present. IAM simulation for deployed ecsTaskExecutionRole allows GetObject/DeleteObject but implicitly denies ListBucketVersions/DeleteObjectVersion. Normal bucket versioning is Enabled. Prepared exact two-action addition to existing PlotthirstS3MediaAccess, same normal bucket/object resources. No IAM change applied. Autopilot-derived focused operation analysis, AWS validation0findings, normal-bucket positive/other-bucket negative simulations passed. Reviewed SHA256948647ea0b85624d61c974c9b393e73b5d8cc71e302aaf4deb8fd219fb02a4f4. Explicit permission-change approval requested separately; file deletion already approved and remains so. Details and guarded apply command in docs/LIBRARY_DELETION_VERSION_PERMISSIONS_2026-10-20.md. Do not expand scope or bypass the saved-policy/hash guards. No paid generation, balance change, S3 mutation by diagnostics, backup access, retention bypass or source rollout in this follow-up. Save screenshots ../library-delete-storage-check-failed-20261020.jpg and ../library-delete-permission-review-20261020.jpg. Live deletion/S3 acceptance remains OPEN.
October 20 — Live Library deletion and active-S3 absence VERIFIED
- User explicitly approved the scoped AWS role repair and the already-authorized disposable test-file deletion. Guarded apply rechecked the saved existing policy and applied only ListBucketVersions/DeleteObjectVersion to PlotthirstS3MediaAccess on ecsTaskExecutionRole for the same normal bucket/object resources. Read-back matches reviewed SHA256948647ea0b85624d61c974c9b393e73b5d8cc71e302aaf4deb8fd219fb02a4f4. No trust, role membership, other bucket, retention bypass, storage configuration, balance or generation-price change.
- Actual PC Chrome3, Build48b7300, Michelangelo admin. Reopened the same disposable file's deletion review, completed checks, acknowledged and used Confirm permanent deletion. Exactly one retry POST /api/v1/creation-library/delete returned200 with okTrue/deletedTrue and the exact test asset ID/URL. Complete bounded Network capture, no truncation/remaining events. Dialog closed; success message File and thumbnail permanently deleted.; filtered results0. No CLI/S3 direct deletion was used as a substitute for the website action.
- Independent root S3 checker after website success,2026-10-20T16:08:00.847215Z: all8 exact original/thumbnail/sidecar/legacy-alias keys return404, zero object versions and zero delete markers in plotthirst-user-media-prod. Original baseline was5651bytes/one version. Raw before/after evidence persists at /home/cloudshell-user/library-delete-20261020/{s3_before,s3_after}.json. Checker made0S3 mutations and did not access backup buckets. Normal bucket versioning remained enabled.
- Full website reload restored Library with3301items (fixture had raised it to3302); fresh exact original-filename search returns0. Screenshots saved/visually inspected ../library-delete-success-20261020.jpg, ../library-delete-fresh-search-20261020.jpg and ../library-delete-s3-verified-20261020.jpg. Aggregate copied evidence in test-artifacts/library-delete-20261020/website-delete-verified.json and s3-after-observed.json; guarded IAM saved result under /home/cloudshell-user/library-delete-iam-review-20261020/iam-repair-applied.json.
- Acceptance is scoped to this disposable image upload and actual website-to-active-S3 deletion. Related thumbnail/metadata keys were already absent before the test, so live removal of a pre-existing thumbnail is not claimed. Other media formats/physical Safari were not newly tested; existing local deletion regressions remain separate evidence. Existing user media and backups untouched; no paid generation or credit change.
- Both repairs are live: source build48b7300 and the approved AWS permission update. No further application changes or source push were needed in this follow-up. Post-release notes/generated readiness remain local for the next code release; do not trigger a rollout just for these notes. Network observation disabled; no emulation, local dev server, polling loop or helper process remains. Verified Library tab320870215 kept as the deliverable; root/operator intermediate tabs need no further work. Existing unrelated CloudShell terminal94d8f056-a64c-48d9-ac4f-a1ad731f98be and user root tabs untouched.
October 20 — Library active-work deletion warning (local)
- File-specific resumable safety check removes21-active-record account ceiling, checks authoritative status and omits safe title/thumbnail maintenance. Still blocks real work using the file and incomplete/failed checks. Job/status explanation and Retry checks added; permanent-delete acknowledgement retained.
-57 focused Python checks/client regression/typecheck/build pass; no paid generation, actual media deletion, credits or permissions changed. Exact reported file and hosted repair verification pending; Chrome extension popup currently prevents browser checks. Prior actual disposable-file website-to-active-S3 deletion proof is unaffected. Details: page6-production-fixes/docs/LIBRARY_ACTIVE_WORK_CHECK_2026-10-20.md.
October20 active-work repair release: pushed Buildeda5013. Synthetic Chrome recheck/Cancel passed with2review calls/0deletes and fresh acknowledgement; actual hosted build/review pending. Existing Chrome tabs work; only new tab extension UI was blocked. No real media deleted or jobs relabeled. Preserve previous separate exact-S3 test acceptance.
October20 hosted active-work review VERIFIED on Buildeda5013: fresh PC Chrome Michelangelo Library completed clip deletion review200/blockedfalse/empty blockers in1request,0deletes. Cancel left the file intact. Synthetic retry after completion passed;57Python tests/client/typecheck/build remain passed. Exact originally reported file/physical Safari not verified. Screenshot ../library-completed-work-check-20261020.png. No paid generation, real deletion, status/credit/IAM changes; observer/dev process stopped. Post-release notes stay local for next normal release.
October20 WAN source clarification: live Buildeda5013 review of an original uploaded edit-source MP4 passes deletion preflight (200/blockedfalse/empty blockers), with saved-setup warning only. Cancel/0delete calls; original intact. One source verified; all older sources not individually checked. No additional deployment or real deletion. Details in page6-production-fixes/docs/LIBRARY_ACTIVE_WORK_CHECK_2026-10-20.md.
October20 — Media thumbnails (local repair)
- Confirmed live job claim denied UpdateItem. Repaired thumbnail atomic claim with existing conditional PutItem; free bounded old-job/automatic failure recovery, exact404 missing-preview rebuild, same signed-URL failure handling, timeouts and Retry preview. Existing first-upload/output hook retained. No source deletion, IAM/provider/credit/price change.
-65focused Python checks/3Node suites/typecheck/build and actual355px synthetic missing-preview->decoded320x180 image/video pass, no original fetch. Live repair acceptance pending. See page6-production-fixes/docs/THUMBNAIL_RECOVERY_2026-10-20.md.
October20 thumbnail live release VERIFIED on Buildb4bc8c5: stable web729/worker685; actual Chrome5image/video previews automatically recovered, all decoded320x180 private JPEGs and retained after fresh reload. Original source and edited output job receipts completed on first repaired attempt; credits0, source4607bytes/output4220bytes. Screenshot ../thumbnail-recovery-live-20261020.png. No IAM/original deletion/paid generation; new hosted upload/physical Safari/all history not individually accepted. Details in page6-production-fixes/docs/THUMBNAIL_RECOVERY_2026-10-20.md. No helper remains active; post-release notes local for next planned release.
October20 — Quick Multi prompt contract and mixed lengths (local repair)
- Copied AI instructions now include the current exact attached reference names and fallback length; Video generator: default and Duration: default preserve form settings; explicit text overrides apply per clip. Explicit standalone setting/entry-state rules and clip-local image indexes prevent cross-clip assumptions. Intentional dialogue pauses remain permitted. Separate music guidance avoids video/image instructions. View AI instructions exposes selectable text if clipboard access fails.
- Importer preserves creative text below Prompt:, reads metadata only above it, does not treat creative prose as a settings override, and rejects malformed/conflicting duration headers. Missing/default headers preserve old form-driven behavior; conflicting prose is warned about. New quotes validate selected-generator limits and action timecodes, reject gaps/duplicates/>100 instead of truncating, price each distinct duration separately, and sum lengths for stitch pricing. Failed unit estimates cannot approve a zero-credit clip.
- Saved generationDurationSeconds passes from accepted quote to generation and ordered stitch; old accepted jobs retain their original shared length and completed clips are reused on resume. MCP schema/summary expose the same duration contract. Provider price rates, discounts, billing helpers, reservation/release and own-key behavior are unchanged; existing overhead/settlement gaps remain. No paid generation or account-data changes in verification.
- Local verification/deployment evidence follows. Physical iPhone and paid mixed-length rendering are separate acceptance checks, not inferred from synthetic Chrome or mocked workflows.
October20 Quick Multi refinement: owner explicitly requested form-driven defaults and per-clip generator overrides. Every copied video block now starts Video generator: default / Duration: default. An explicit known generator/version/input-mode name and integer duration override only that clip. Canonical routing, actual min/max/discrete lengths, image-conditioned Veo8s and compatible form resolution are checked before reservation; unknown/unavailable/ambiguous names or unknown duration limits fail closed. Five shared legacy duration rules mirror existing backend adapter limits rather than guessing missing catalog bounds. Guide enumerates all41 eligible model entries as51 distinct supported input-mode variants, including Prime/Mini/Fast and exact route labels. Actual TypeScript guide is cross-checked against the Python resolver at both limits and immediately outside them. Headerless and explicit-default legacy files use form selections; prose lengths never override. Shared version labels in Solo/Multi now derive Text-to-video/Image-to-video/Reference-to-video from the exact saved route, correcting bare and contradictory catalog captions while preserving route values. Combined models display current mode; editing labels remain editing. Local Chrome actual full catalog verifies Solo and Multi reference selection, template default headers/all51 variants, and current reference names.390px layout initially overflowed; min-width/file-input/container correction now measures clientWidth=scrollWidth=innerWidth390, review332px. Synthetic requests only; no uploads, starts, paid rendering or customer changes. Browser clipboard read adapter returned empty despite Copied toast; actual copied string is covered by the pure helper test, while selectable View AI instructions was independently verified in Chrome. Physical Safari and paid output remain unclaimed. Deployment order now updates compatible workers before the website accepts the new per-clip job contract. No roles, keys, alarms, task sizing or rollout timing changed.64 focused Python checks and existing generator-menu suite pass; final validation and deployment evidence follows.
Final local validation:64 focused Python tests, actual51-variant TypeScript-to-Python guide/limit checks, generator-menu regression (73 catalogue routes), TypeScript and production build pass. Existing bundle-size warning only. Static billing inventory unchanged; readiness render/check and syntax/whitespace checks pass. Movie monitor retains the same6 pre-existing stale source fingerprints; no hash reset. Real Chrome synthetic Solo/Multi reference selection and selectable instructions verified; desktop proof ../quick-solo-reference-mode-20261020.jpg saved/inspected. New fixture code uses generic characters, not user creative prompts. Temporary HTML/catalog mirror and Vite server removed; no emulation or helper remains. Source publication/live acceptance pending below.
October20 source release: committed and pushed c4841780ed6517941ddc2ca30e24fca6b1d87b05 (Buildc484178). Production main accepted. Worker-first order is part of this release; no IAM/settings mutation. Public build endpoint stillb4bc8c5 at2026-10-20T21:04:30Z; hosted new-template/label acceptance pending. Actual Chrome existing Michelangelo admin tab320870215 opened live QuickMulti without editing form or generating; restored existing QA2026-10-01 recovery draft/4-second form. Local synthetic tab/server/temp HTML/catalog mirror cleaned; no emulation. GitHub UI cannot view this private repo in current browser account (404), so no CI-success claim from that page. Do not redeploy solely for acceptance notes.
October20 hosted UI VERIFIED: public build endpoint returned c4841780ed6517941ddc2ca30e24fca6b1d87b05 at2026-10-20T21:10:18Z. Fresh actual PCChrome Michelangelo admin QuickMulti also displays Buildc484178. View AI instructions exposes12,146characters with Video generator: default / Duration: default, all51 supported variants, Prime/Mini/Fast, min/max/discrete rule and exact current form fallback4s. Dropdown now shows Grok1.5 Reference-to-video. Existing QA recovery draft was read/restored without edits, uploads, quote/start or paid generation actions. Saved/inspected ../quick-multi-instructions-live-20261020.jpg; live tab320870215 markedDeliverable. Local synthetic Solo reference labels remain separate acceptance evidence. Read-only root CloudShell existing own terminal355682d1 confirms worker686 soleCOMPLETED/running1/desired1/pending0; website730 currentPRIMARY/IN_PROGRESS with new1running and old7291running at the observation. Exact describe-task-definition reads verify both730/686 use fullc484178 image tag. Rootsessionrequired no new login/permissions, no deployment setting mutation; unrelated terminal94d8... untouched. Final whole-web stabilization not yet claimed; no polling helper/dev server/emulation remains. Post-release evidence/readiness notes local for next normal code release.
October21 — Quick Multi immediate failures (repair verified locally)
Read-only Plotthirst job lookups confirm all three reported batches (4f8e2ce2f741c2793a3ed090, 3182ac0d520fa19f0d00f4d8, e25dd469d855766804362b96) failed worker validation of requested durations before the clip loop. Each reservation reports reserved387/spent0/released387. The website quote used Python integers; DynamoDB resource decoding returned Decimal whole numbers, rejected by the new strict integer validator. The workflow now restores JSON numeric types through the existing json_safe_value helper before validation, child execution and ordered stitch. It does not infer settings from prose, relax duration contracts or reprice accepted quotes.
71 focused Python checks pass, including actual boto3 TypeSerializer/TypeDeserializer round trips for WAN reference8/8/15-second quotes, new/resumed runs, completed-clip reuse and rejection of bool/fractional/string/out-of-range durations. Three Node suites, TypeScript and Vite production build pass (existing bundle-size warning). Status card now shows explicit failure/error and per-clip reasons, stops terminal polling, replaces stale queued notices and hides the misleading99% bar for stopped jobs. Local Chrome synthetic355px layout has no overflow, error text wraps; saved ../quick-multi-failure-mobile-20261021.jpg. Physical Safari and paid rendering are not inferred from these tests. Deployment/live acceptance pending; no failed job resubmission, paid generation or customer-account change performed.
October21 source release: committed/pushed c62e2817fbd7bbd31ad0839fe7dfacc8c87cd13e (Buildc62e281) to production main. Public build-info stillc484178 at2026-10-21T06:27:43Z, so hosted acceptance is pending. AWS console and CLI sessions are expired; no credentials/permissions changed or new login requested solely for observation. Local temporary HTML and Vite server removed, Chrome viewport restored, screenshot saved. No batches requeued or provider calls submitted. Existing stopped jobs remain historical failures; a fresh user-approved submission is required after repaired build is available.
October21 — Quick Multi estimate summaries (local verification)
Validation status and confirmation dialog now share one summary derived from saved resolved quote items, never the form default. Uniform explicit8s clips with a15s form default display8-second clips; up to6 mixed clips list ordered seconds; longer batches group counts (3×8s,10×30s,4×10s). Very diverse batches bound the displayed groups and retain complete ordered details in clip review. Input-mode counts and actual generator/version names also summarize uniformly or by group. Discounts, total credits, stitch rows and approval/cancel remain; modal notice shortened for mobile space. Audio retains its song estimate semantics, without implying exact video-like durations.
Backend review confirms every clip resolves generator/input mode/duration before pricing; cache includes exact route/length/reference settings, sums every clip and prices stitch once at total resolved length. New tests run the actual Quick Solo estimator beneath mixed WAN reference/image/text routes with8/15/10/30 and all8s overrides against a15s default; only billing unit calculation is stubbed, no provider calls.73 focused Python checks pass, including new cache/accounting checks, and4 Node suites/typecheck/build pass (existing bundle-size warning). Local PC Chrome full form Validate->approval dialog->Cancel verifies identical summaries, uniform overrides and17-clip grouped counts.355px screenshot ../quick-multi-estimate-summary-20261021.jpg shows readable contained text/actions, dialog clientWidth=scrollWidth301. Requests show draft+preview only, no start. Hosted acceptance/physical Safari/paid quote-to-settlement remain separate; release evidence follows. No price rates, reservations, debit/release, account balances, saved customer data or accepted quotes changed.
October21 estimate-summary release: committed/pushed d88ac1dbd1f25f3123e68fb19fb3abde42c24300 (Buildd88ac1d) to production main. Public build-info still reports c62e281 at2026-10-21T08:24:57Z; the preceding numeric-storage repair is served, new summary release acceptance pending. Final typecheck/build/summary regression and syntax/whitespace/readiness checks pass. Billing inventory unchanged; movie monitor retains its same six pre-existing stale source fingerprints, no baseline reset. Vite stopped, temporary HTML removed, Chrome viewport reset/local tab closed; only generic test harness and screenshot retained. No paid start/provider call, production account edit, quote/reservation/debit or failed-batch resubmission. Keep post-release evidence local for next substantive release.
October 23 — audio references across Quick video modes (local verification)
Shared capability-specific MP3/WAV upload and saved-file selection now covers WAN3/Prime reference, WAN2.7 compatible text/image/reference, Seedance reference/edit/extend, and MiniMax H3/Developer reference. Solo Video/Edit/split/compatible Extend-Loop preserve audio through estimate, saved setup and retries; unsupported/native-sound-only modes cannot silently drop attached audio. Multi uses per-clip Audio references: headers, review names, exact subset handoff, updated AI instructions, checksum-verified ZIP/MCP audio import and MCP1.6.2 capability descriptions. No price, balance, debit or subscription changes and no paid generation submitted.
Local Chrome synthetic checks: saved audio multi-select and Solo cost request, named Multi clip review, incompatible-mode controls, Video Edit and WAN2.7 Extend/Loop.355px viewport contained controls without horizontal overflow; screenshot quick-audio-references-20261023.png. Automated regression/typecheck/build evidence is recorded in the repository handoff and docs/VIDEO_AUDIO_REFERENCES_2026-10-23.md. Billing inventory unchanged; six existing movie-cost fingerprints remain stale, baseline not reset. Hosted signed upload/storage/reuse, physical Safari and rendered sound quality remain acceptance open. Source release is not proof of hosted acceptance.
October23 source release: committed/pushed 24e47cd (Build24e47cd) to production main. No live rollout polling or paid generation performed. Final204 Python regressions, five frontend suites, typecheck/build, syntax, whitespace, billing inventory and readiness checks passed; same six pre-existing movie-cost fingerprints remain open. Chrome fixture/viewport/Vite cleaned up. Hosted acceptance remains pending. Post-release evidence retained locally for the next substantive release.
October 24 — Quick Multi mixed image/audio reference names (local verification)
Reported WAV filenames were listed in the image References header. Validation now separates clearly identified attached audio, resolves a unique assigned name or original filename (including the uploader’s extensionless initial label), and records canonical per-clip image/audio subsets with a visible normalization warning. Creative prompt/batch text is preserved. Missing and ambiguous audio names fail before price/submission; no account-history scan, file reupload or paid analysis is used. ZIP precheck accepts mixed image/audio lists, automatic mode selection recognizes inline audio, and MCP1.6.3 checks numbered tags/summary against normalized items. Copied AI instructions explicitly keep audio under Audio references: and explain that a global audio inventory does not attach clips.
211 Python checks, four frontend suites (including five ZIP tests), TypeScript, production build, syntax/whitespace and billing inventory checks pass. Regression reproduces the owner’s12-clip audio order2,1,1,2,1,1,1,2,2,3,3,2 with120s total, separated image counts, exact original creative text and mocked child handoff; it does not render or access customer files. No unit rate, quote approval, reservation/debit/release, balance, discount or provider job changed. Movie monitor retains the same six existing stale fingerprints without a baseline reset. Hosted acceptance remains open; release evidence follows.
October24 source release: pushed 63143af (Build63143af) to production main.211 focused Python checks and four frontend suites/typecheck/build pass, including the reported12-clip mixed-reference order and mock child handoff. No live rollout polling, paid rendering, customer-file access or account/billing changes performed. Hosted acceptance pending; post-release evidence kept local for the next substantive release.
October 24 — Quick Multi video references (LOCAL ONLY; USER HOLD)
User explicitly requested that video-reference changes remain unpublished while testing current image/audio work. Latest pushed source remains 63143af. Do not push this repair without later authorization.
Added per-clip Video references headers, typed image/audio/video name resolution, MP4/MOV upload and saved-video multi-select, ordering/removal, on-demand preview, persisted setups, ZIP and MCP video receipts. Exact typed headers distinguish equal names; ambiguous fallback names fail with corrective instructions. Only selected, owned videos reach each resolved clip and its quote/worker. Limits are restricted to wired WAN/Seedance reference routes; incompatible models reject video input. Seedance reference children use reference task behavior. Existing input-video pricing receives selected input durations; no rate, price, account, accepted-quote or permission change.
231 focused Python checks and frontend policy/component/audio/instructions/menu/summary/ZIP regressions, typecheck and production build passed (existing bundle warning). Actual PC Chrome synthetic form verified saved multi-select, per-clip review, ordering, removable unsupported input, no player until requested and decoded 2s preview; narrow layout did not overflow. Evidence: quick-multi-video-references-local-20261024.png in parent workspace. No live/customer files, paid rendering or credit mutation. Local server stopped, temporary HTML and fixture tab removed, viewport restored. Hosted/paid/physical Safari acceptance remains OPEN. Manual cost review and remaining overhead gaps: docs/QUICK_MULTI_VIDEO_REFERENCES_LOCAL_2026-10-24.md. Existing movie-cost baseline reviews remain outstanding; no fingerprint reset.
October 25 — Video-reference release authorized
The owner requested pushing the prepared Quick Multi video-reference repair ("I guess push.."). This supersedes the October24 publication hold. Prior 231 Python checks, frontend regressions/typecheck/build and synthetic Chrome evidence remain current; implementation is unchanged. Release includes named video uploads/saved references, per-clip typed mapping, model limits, ZIP/MCP handoff and input-duration pricing. No paid jobs, customer/media changes or infrastructure setting changes are part of this push. Hosted rollout and real-provider/physical-mobile acceptance remain pending; do not imply deployment completion from source publication. Source commit and push result follow.
October25 source release: committed/pushed 5e74fde9b5abec846954af5595b1201db9b05e7b (Build5e74fde) to production main. Git accepted the fast-forward from63143af. The prior publication hold is superseded by the owner's explicit push request. Existing231 focused Python tests, frontend suites/typecheck/build and synthetic Chrome evidence remain the validation basis; final syntax/whitespace/readiness and unchanged billing inventory checks pass. Same six pre-existing movie-cost review fingerprints remain open, with no baseline reset. No live rollout polling, paid provider submissions, customer/media/financial or infrastructure settings changes occurred. Hosted acceptance remains pending. Post-release notes/generated readiness stay local for the next substantive release; no notes-only deployment.
October26 — Quick Multi source editing and upload recovery (local)
Prepared explicit Edit a source video in portions option, separate from ordinary multiple video references. One source name is used in every prompt; generated01/02/etc names and exact source bounds are shown in review. Supports full-source consecutive durations (68s=15/15/15/15/8) and optional Source range: headers on every clip for deliberate selected sections. WAN3/Prime only,2–15s per edit, original shape/Auto length, previous edited-frame continuity and existing durable Solo checkpoints/guarded recovery reused. Copy/View AI instructions now teach the distinction, shared base name, local prompt timecodes and ranges. Parent instructions export ready: quick-multi-source-edit-ai-instructions.txt.
Fixed queued Multi payload omitting sourceVideos. Direct/compatibility/inline upload completion now retains duration before immediate Library registration; repeat completion may repair missing metadata without new media/IDs. Source preview displays immediately. No claim the owner's previous three attempts reached storage or were recovered. Real synthetic exact15s cuts exposed AAC padding; new explicit windows use H264/PCM MOV with30fps normalization rather than shortening source windows. Existing Solo equal-window jobs retain original format/behavior.
266 focused Python checks and11 frontend test reports, TypeScript/build, unchanged billing inventory and syntax checks passed. Actual PC Chrome synthetic saved source68s decoded, correct five reviewed ranges/names, updated guide, maximum-reserve confirmation/service once and Cancel/zero start requests;355px layout no overflow. Proof ../quick-multi-source-edit-local-20261026.png. No customer files, paid jobs, credits/prices/settings/permissions changed. Shared source-edit pricing/one service debit and unresolved overhead caveats reviewed in docs/QUICK_MULTI_SOURCE_EDIT_2026-10-26.md. Same six stale movie-cost fingerprints remain unreset. Not pushed; latest published source5e74fde. Hosted/paid/Safari/prior-upload inventory acceptance remains OPEN.
October26 release preparation: publishing the completed source-edit/upload repair under the project's standing completed-repair deployment workflow so the owner can copy the updated AI instructions from Quick Multi. No publication hold is active.266 Python checks,11 frontend reports, typecheck/build, syntax/whitespace, billing inventory/readiness checks pass. Movie monitor retains its same6 stale review fingerprints without baseline reset. Source commit/push result follows; no hosted or paid acceptance is implied. Chrome fixture tab closed, viewport reset, Vite stopped and temporary HTML removed. Only synthetic test fixtures/instructions/screenshot retained.
October26 source release: pushed b194226c617e72895e227d91dff645e696473cc3 (Buildb194226) to production main; Git accepted5e74fde..b194226. Includes explicit source editor/ranges/base-name aliases, immediate source preview, queued video list, upload-duration catalog repair and updated copyable AI instructions.266 Python checks,11 frontend reports, typecheck/build and Chrome synthetic evidence apply. No live rollout polling, paid editing or previous-upload inspection performed; hosted acceptance remains pending. Post-release notes/readiness remain local for next substantive release, not a notes-only redeploy. Parent deliverables: quick-multi-source-edit-ai-instructions.txt and quick-multi-source-edit-local-20261026.png. Local Vite/tab/viewport/temporary HTML cleaned up; no helper remains.
October 26 — Multiple originals in Quick Multi editing
- Recorded evidence: Local implementation: up to ten unique account-owned originals, at most 25 minutes across used sources. Each clip names exactly one base source plus its own image/audio references. Independent cursors/numbering support A → B → A; explicit Source range selects within that original. Sources without ranges must be fully covered. Same WAN3/Prime route throughout, 2–15s per edit.
- Recorded evidence: Source-specific contiguous continuity, lazy one-time original reads, completed output reuse and ordered assembly once. New sourceEditVersion2 plans preserve unversioned accepted-job/Solo behavior and survive actual DynamoDB numeric queue roundtrip. Multiple sources preview one player on request. AI instructions updated; export in parent quick-multi-source-edit-ai-instructions.txt.
- Recorded evidence: Cost review: maximum15s child reserve/measured settlement, discounts and one shared preparation/assembly charge. Distinct USED original seconds + selected output seconds + mapped frame work; no unused-source read or extra parent/stitch debit. Own-key editing still rejects. No paid planner, price/balance/discount/setting/permission mutation. Existing storage/transfer/shared-overhead gaps and six stale movie-cost fingerprints remain open; no baseline reset. Billing inventory unchanged.
- Recorded evidence: 282 Python regressions, eleven frontend reports, typecheck/build and synthetic PC Chrome pass. Saved multi-select, decoded on-demand players, A01/B01/A02 review with separate image references/ranges, current-source AI guide, approval/service once, Cancel/zero starts/uploads. Narrow355px viewport/document341px without overflow. Proof: quick-multi-multiple-sources-20261026.png. No customer files or paid jobs.
- Acceptance open: Hosted uploads, actual provider acceptance/quality/settlement and physical Safari remain open. Prepared for normal completed-repair push; source publication does not confirm live rollout. No new dedicated MCP source-edit schema. Details: docs/QUICK_MULTI_SOURCE_EDIT_2026-10-26.md.
October26 multiple-source release: committed/pushed dea5a1c68bedf3891771b31455bb586e45addb63 (Build dea5a1c) to production main; Git accepted b194226..dea5a1c. Up to ten originals with independent source/range/ref selection, same-source continuity, ordered assembly and updated AI instructions.282 Python regressions,11 frontend reports, typecheck/build and synthetic Chrome verification apply. No live rollout polling, paid starts or customer-file/account/financial changes. Existing six stale movie-cost fingerprints remain unreset. Vite stopped, temporary HTML removed, Chrome viewport reset and fixture tab closed. Parent proof quick-multi-multiple-sources-20261026.png and instructions export retained. Hosted/paid/physical Safari acceptance remains open. Keep these post-release notes/generated readiness local for the next substantive release; no notes-only redeploy.
October26 LOCAL ONLY — owner explicitly said no push yet. Quick Multi AI instructions now require the entire prompt file in ONE Markdown code block labeled text, all clip blocks together and no surrounding commentary. Shared instruction builder covers ordinary video, source editing and audio. Updated parent quick-multi-source-edit-ai-instructions.txt export; existing instruction regression passes. Formatting-only change, no provider/billing operation. Keep unpublished until a later push authorization.
October26 LOCAL ONLY follow-up — large Quick Multi AI outputs must include a complete downloadable UTF-8 .txt attachment in addition to the code block whenever response/display limits risk clipping or copying problems. No invented universal character threshold. File content preserves every clip and omits Markdown fences. Only an actual created attachment may be claimed; attachment-unavailable fallback explains the limitation and splits code blocks between whole clips without omissions/duplicates. Shared video/source-edit/audio instructions and parent instructions export updated; existing instruction regression passes. No push, billing or provider changes; prior publication hold remains.
October26 LOCAL ONLY — Quick Multi video upload/naming discoverability repair. Video mode/edit choice and VideoReferenceInputs moved above Prompt batch. Empty unsupported modes retain an explanatory section and disabled upload, directing users to enable source editing or select a video-capable route; existing attachments remain named/removable. Compatible source/reference uploads and saved picker retain their limits. Each video now has an accessible name field, clear batch-setup scope, and an exact selectable Video references: header. No Library/original-file rename implied. Renames flow into current AI instructions and saved batch setup as before. Existing component/instruction regressions, TypeScript and production build pass (existing bundle warning); Node/Python syntax/whitespace checks pass. Actual PC Chrome synthetic saved videos verified renamed Construction Site Original in header/AI instructions, code-block/txt guidance, fresh browser reload retaining name, unsupported Grok guidance/disabled input, re-enabling source editing revealing upload and saved picker.355px viewport/document341px without overflow; no video players mounted for multi-source browsing. Proof ../quick-multi-video-naming-local-20261026.png. No actual uploads/paid starts/customer files, backend changes, billing changes, or production edits. Chrome tab closed/viewport reset, Vite stopped/temp HTML removed. Owner's no-push instruction remains active.
October26 release authorized — owner's new “Push” request supersedes the local publication hold for the pending Quick Multi video upload/naming layout and code-block/large-output .txt AI instruction changes. Existing component/instruction regressions, TypeScript/build and synthetic Chrome evidence remain current; implementation unchanged since those checks. No paid starts, backend/billing changes or live rollout polling are part of this push. Source publication result follows; hosted acceptance remains separate.
October26 source release: pushed 5c189e338da21748543c15c0bee46f1eac6a1028 (Build5c189e3) to production main; Git accepted dea5a1c..5c189e3. Includes clearer video upload/naming above prompts, exact reference header and AI code-block/large-output downloadable .txt instructions. Prior frontend regressions, TypeScript/build and actual local Chrome verification remain current; final syntax/whitespace/readiness checks pass. Six pre-existing movie-cost review fingerprints remain unresolved/unreset. No live rollout polling, paid submissions or customer/account changes. Hosted acceptance remains pending. Keep post-release notes/generated readiness local for the next substantive release; no notes-only deployment.
October 26 — Quick Multi upload completion and stale outputs (local)
Video-only/audio-only working drafts now persist. Bounded MOV/MP4 header timing handles HEVC length independently of browser decoding. Inline upload stages/errors explain rejected references. After one successful PUT, transient completion retries and account-scoped metadata receipts allow Finish attaching saved video without reupload. Clear/Load saved/import/new run detach previous displayed results and stale reconnects; ordinary terminal-setup edits also detach. Library searches original/stored filenames and displays original names. No customer prices, credits, providers, permissions or media deletions.
12 account-upload tests, upload metadata/recovery and video-reference frontend suites, TypeScript and billing inventory pass. PC Chrome synthetic68s HEVC transfer/recovery and fresh-load draft retention verified; separate H264 source decoded/played and retained its name. Clear and Load saved removed prior synthetic completed output after reload. Proof in parent quick-multi-clear-recovery-20261026.jpg and quick-multi-upload-preview-local-20261026.jpg. Actual customer HEVC preview/file identity/rename and duplicate inventory remain OPEN pending AWS authentication. This PC Chrome cannot decode HEVC; no universal preview/transcode claim. Exact original-name picker search returned0; no S3 absence or duplicate claim. No customer files deleted. Details/cost exception: docs/QUICK_MULTI_UPLOAD_RECOVERY_2026-10-26.md. Existing six movie-cost fingerprints remain unreset; hosted acceptance separate from source push.
October26 upload repair release preparation: final22 upload/Library/reusable-setup Python tests, five frontend suites, TypeScript and Vite production build passed (existing bundle warning), with syntax/whitespace/billing/readiness checks. Temporary test HTML/media/Vite/tabs removed. Owner deferred AWS sign-in; login canceled/tab closed. Actual missing video lookup, pickup-truck visual verification, Construction Site Original naming and duplicate cleanup are NOT complete. No customer file or credit changed. Prepared ready site fixes for normal completed-repair push; hosted acceptance remains separate, and no rollout polling is planned.
October26 upload recovery source release: pushed6a8093b (Build6a8093b) to production main; Git accepted5c189e3..6a8093b.22 focused Python checks, five frontend suites, TypeScript/Vite build, syntax/whitespace/billing/readiness checks pass. Same six pre-existing movie-cost fingerprints remain unreset. No live rollout polling, paid jobs, customer media changes/deletions or AWS access occurred. AWS login canceled at owner request to defer sign-in; actual video visual verification/rename/duplicate review remain incomplete. Local test proof and detailed report retained. Keep these post-release notes/generated checklist local for next substantive release; no notes-only deployment.
October26 — Safari video upload transport (local)
Following repeated iPhone Load failed, verified one tiny live PC Chrome upload end-to-end: presign/PUT/completion200 and signed preview206/decoded player; production-origin CORS preflights also200. One QA video remains in Michelangelo Library as qa-video-upload-network-20261026.mp4; form restored and no customer file deleted. Physical iPhone failure was not captured.
Repaired the documented WebKit File upload path: bounded64MiB in-memory Blob workaround on WebKit, sliced Blob for other/larger inputs, picker retained until settled, correct missing MOV MIME fallback. Solo/Multi share it. New completions verify exact HEAD size and reject denied verification, empty or partial files before cataloging. Lost PUT replies verify the existing key without another transfer; honest unconfirmed receipts and completion-only recovery in Solo/Multi. No provider generation, price/credit/permission changes or AWS login. Local24 Python tests, frontend recovery/component tests and TypeScript pass. Chrome fixture exercised the WebKit code branch with real file selection, Blob/lifetime guards, decoded player and fresh-load persisted source name/header; this is NOT physical Safari acceptance. Proof ../quick-multi-safari-upload-path-local-20261026.jpg. Review/cost/limits: docs/SAFARI_VIDEO_UPLOAD_REPAIR_2026-10-26.md. PC drive exhausted during checks; only generated Python caches removed. Existing six movie-cost fingerprints remain unreset. Final production build/checks and source release follow; hosted/physical-phone acceptance remains open.
October26 Safari upload release preparation:24 focused Python cases, six frontend programs including six ZIP cases, TypeScript/Vite build, syntax/whitespace, unchanged billing inventory and readiness checks pass. Existing bundle warning and same six movie-cost fingerprints remain open. Local Vite/test tabs/temp HTML/media cleaned up; screenshots retained. Ready shared Solo/Multi video transport and strict-byte verification for production source push under the standing completed-repair workflow. Physical iPhone upload/HEVC preview and the owner's original file inventory remain unverified; no hosted rollout polling. One small clearly named live QA upload remains; no customer media deleted. No AWS login, credits, provider generation or settings changes.
October26 Safari upload source release: pushed42867d3 (Build42867d3) to production main; Git accepted6a8093b..42867d3.24 focused Python tests, six frontend programs, TypeScript/build, syntax/whitespace/billing/readiness checks pass. Same pre-existing bundle warning and six movie-cost fingerprints remain. No rollout polling or paid generation. Actual physical iPhone upload/native HEVC preview still requires acceptance; original pickup-truck file lookup/naming and duplicate cleanup remain deferred. One small diagnostic QA upload remains cataloged, and the prior live QA form was restored. No customer media/credits or AWS settings changed. Keep post-release notes/readiness local for next substantive release, with no notes-only deploy.
October26 — Bounded video relay and prompt-first references (local)
- Recorded evidence: Quick Multi Prompt batch now precedes every reference control. Compatible video inputs show an optional name before selection/during upload; saved source retains editable alias and exact Video references header.
- Recorded evidence: Shared Solo/Multi uploader verifies direct upload first; confirmed404/409 may use one authenticated same-origin binary relay up to64MiB. Direct and relay share one account-derived create-only key. Two transfers/process,1MiB spool/temporary disk, bounded read time; no client-selected path, overwrites, duplicate cataloging or paid provider work. Lost replies verify the same target. Old missing attachment checks clear only the stale browser receipt and instruct selecting original bytes again.
- Recorded evidence: 35 Python checks pass, including actual localhost HTTP binary dispatch/auth, exact repeated bytes/one fake S3 PUT, bounds, spooling, races, ownership and failure cleanup. Frontend upload/reference/instruction/status/delivery/ZIP checks pass. Synthetic PC Chrome direct-failure-to-relay recovery yielded a decoded3s player and Construction Site Original name/header; prompt precedes references and narrow layout has no overflow. Proof ../quick-multi-upload-relay-mobile-20261026.jpg. Temporary test page/media/Vite/tab removed, viewport reset.
- Recorded evidence: Manual cost/security review: Plotthirst-funded maintenance, bounded extra web/disk/network/S3 work; shared key prevents duplicate stored copies. No customer price/quote/reservation/debit/discount/balance/own-key changes. No credentials/IAM/CORS/settings changes. Static billing inventory unchanged; existing operating-cost gaps and six stale movie-cost fingerprints remain open/unreset. Details docs/VIDEO_UPLOAD_RELAY_2026-10-26.md.
- Acceptance open: Final typecheck/build/renderers and source publication follow. Hosted/physical iPhone35.8MB HEVC upload and playback remain unverified; actual truck-source lookup/naming/duplicates deferred, no customer media deletion or paid generation. Once new build is available the original must be selected once; a prior missing receipt has no bytes to restore. Prepared for the standing completed-repair release workflow; source push does not establish hosted acceptance.
October26 relay release preparation:35 focused Python cases, seven frontend programs (six ZIP cases), TypeScript, Vite production build, Node/Python syntax, whitespace, unchanged billing inventory and readiness renderer/check pass. Existing bundle-size warning and the same six movie-cost review fingerprints remain open/unreset. Manual relay operating-cost exception reviewed in docs/VIDEO_UPLOAD_RELAY_2026-10-26.md. No customer file/credit changes, paid jobs, AWS login or infrastructure settings changes. Preparing source push under standing completed-repair authorization; hosted deployment and the original iPhone upload remain separate acceptance steps. Local synthetic preview/name evidence retained; test helper files/server/tab/viewport cleaned up.
October26 relay source release: pushed04baebb (Build04baebb) to production main; Git accepted42867d3..04baebb.35 focused Python checks, seven frontend programs, TypeScript/build, syntax/whitespace/billing/readiness checks pass; existing bundle warning and six unchanged stale movie-cost fingerprints remain open. Includes automatic same-key bounded video relay, prompt before all Multi references, pre-upload name and honest missing-receipt recovery. No hosted rollout polling, AWS login, paid jobs or customer media/credits/settings changes. Actual physical iPhone file upload/native HEVC preview and original inventory remain unverified; user must reselect original once when the new build is available. Synthetic proof quick-multi-upload-relay-mobile-20261026.jpg retained. Test server/tab/viewport/helpers cleaned up. Keep this post-release note/generated checklist local for the next substantive release; no notes-only deployment.
October26 — Fractional source-range duration clarification (local, not pushed)
Owner reports the video batch started, but last clip rejected7s and8s and accepted Default. Reproduced with a synthetic7.58s range; the actual customer's precise duration was not inspected. Default with an explicit Source range preserves fractional seconds. Both whole-second overrides correctly fail the existing range-match rule. Updated both legacy and multi-source errors to print the exact expected duration/bounds and advise Duration: default without rounding. Updated copied AI instructions to distinguish exactly measured duration from a rounded phone display, prefer Default for explicit ranges, preserve fractional endpoints and avoid unsupported fractional Duration overrides. Refreshed parent quick-multi-source-edit-ai-instructions.txt export. 30 focused source/multiple-source tests pass (two existing real-FFmpeg cases excluded from this text-only clarification); new parameterized regression verifies7.58s remains exact in both contracts,7/8 errors are corrective and rejected plans never invoke pricing. Instruction regression passes. No planning/rounding/tolerance/hash/reservation/debit/provider behavior changed. Existing accepted quotes and running batch remain untouched; no deployment while the owner tests this run. TypeScript, production build, Python/Node syntax, whitespace and readiness renderer/check pass; the existing bundle-size warning remains. Same six existing stale movie-cost fingerprints remain unreset.
October26 — Saved edit settlement diagnosis (read-only release preparation)
PC cache cleanup restored about1.6GiB free space; source repair can continue. Added bounded diagnostic to explicit admin_inspect_job only after target ownership is checked: reads one failed split-edit checkpoint, reports approved unit/credits and saved output state, and signs only an owner-folder output. Ordinary get_job and foreign-target requests do not read these checkpoints. No rendering, settlement, reservation, balance or stored-job mutation; the existing admin audit is retained. At most the existing checkpoint/fallback reads and owned-object signing/HEAD, platform-funded support work. No new provider or customer charge; billing inventory unchanged. No IAM/settings changes. 71 focused Python tests pass (three existing cases excluded by not-real selection), including ownership/admin isolation, single-checkpoint bound and no checkpoint writes, plus existing source-range contracts. Fractional-duration clarification/instruction changes were already typechecked/built and remain unchanged. The first diagnostic release is needed to inspect this actual saved clip before choosing a settlement repair; do not assume duration padding or a missing unit. Original failed batch remains terminal with0 spent/all1815 reserved credits released. No job restart. Source push does not itself establish hosted readiness. Movie monitor retains the same six stale fingerprints without reset.
October26 — Resolved timing and bounded edit settlement repair (local)
User clarified that the form default was10/15s. Reproduced7s rejection (8s action),8s rejection (7s range), but Default acceptance: action timing was checked before the range replaced the default. New source quotes validate local seconds and mm:ss action ranges against the final resolved portion, including fractional tails. Quote sourceTimingContractVersion1 preserves already-accepted legacy plans on replay. Instructions now explicitly explain this case. No accepted ranges/prompts are silently rewritten; the original batch selected60–67s from a67.657001s source.
Split-edit settlement now separately probes picture duration only for container lengths15–15.12s. A verified picture at most15s with at most0.12s container/audio padding uses picture seconds, preserving original container duration in the checkpoint. Longer/unknown picture, larger padding or missing approved units still stop. Missing units are checked before provider submission. Frozen per-portion credits/discounts/proration and one service debit remain; no rate, accepted ceiling or own-key change. Cached successful media is reused with stable debit IDs. Actual provider wholesale treatment of container padding is not established: Plotthirst bears any small difference; no supplier bill or margin claim. Fresh Auto already downloaded once for measurement; this adds one local probe, while older padded checkpoints need one bounded existing-file read. Existing storage/transfer/shared-overhead gaps remain open, without another parent/stitch allowance.
Read-only MCP admin diagnostics now load one exact worker record after ownership verification when the public job omits payload. Ordinary reads and foreign targets do not access that record/checkpoint. This is Plotthirst-funded support work, without generation/debit/reservation or permissions changes. First diagnostic build a7ead0f is visible in PC Chrome; new settlement/timing code is not yet published. Actual retained output duration/unit and original batch recovery remain open. No paid request, debit or requeue performed in this repair so far.
Local verification for this follow-up:124 focused Python tests pass, including real AAC-padding media, Decimal quote replay/no duplicate render/debit, ordinary Auto compatibility, exact worker-record admin isolation and10/15s default timing regressions. AI-instruction export/test, TypeScript, production bundle, syntax, unchanged billing inventory and readiness renderer/check pass. Frontend build required the approved unsandboxed run for esbuild path resolution; it passed with the existing bundle warning. Movie monitor rendered and reports the same six unresolved source fingerprints, not reset. a7ead0f deployment workflow completed successfully; original batch remains failed with0 spent/all1815 released pending retained-output inspection. Preparing the next completed-repair release; no claim of live settlement/recovery acceptance.
October26 — Confirmed saved Clip1 diagnosis and same-batch continuation
Live c03badd diagnostic loaded the exact worker record: five approved units, first unit360credits, saved unsettled output with request e9c30b084f8044ff962d36e09af7d2a7. Downloaded only that owner-verified output (50,488,072bytes) via its temporary signed link. ffprobe:450H264 frames at30fps, picture15.000000s; AAC15.046213s starting-0.023220; container15.023s. This conclusively triggers the old15s container guard. The c03badd calculation on these exact bytes resolves15s/0.023s padding/360credits without a debit. Preview at5s confirms white pickup, construction setting, ladder rack, hard hat/safety vest. No regeneration, account debit or media change. Local private copy/preview are ignored under test-artifacts.
Prepared Continue saved source edit for failed source-edit deliveries with one account-owned saved output. Preview is read-only and shows original ceiling, prior ledger spend and remaining reserve. Confirmation carries exact remaining credits and queue generation. It uses the saved plan/quotes/prompts and SAME job/run ID, so existing child checkpoints/debit IDs are reused. Prior spent amounts accumulate across attempts; original ceiling cannot increase. New hold ID is deterministic per queue generation, so repeated confirmations share one hold. Local/AWS requeue condition checks expected generation and terminal status before replacing the record; CAS guards concurrent/stale confirmations. Clear old reservation-release markers and failed status, preserve completed output. A lost queue reply checks for worker pickup; uncertain failures retain the hold rather than releasing funds under possibly-running work, and never blindly send another generation request. A queued-but-unconfirmed message can still need queue reconciliation; do not claim that ambiguity is automatically repaired. Saved generated titles skip another title call. Regular non-source/own-key/unsaved/foreign/exhausted/invalid-price work cannot use this endpoint.
Cost review: this re-reserves only the UNUSED original accepted budget, with the original unit/service pricing/discount/rounding. No new provider, AI-title, parent, assembly or markup charge. Stable debit IDs/checkpoint reuse prevent charging settled work twice; uncertainty does not permit an increased ceiling. Source own-key remains rejected. Read-only preview and bounded exact job/reservation/checkpoint reads are Plotthirst support overhead; generation/compute/storage use the existing accepted components, whose broader operating-cost gaps remain explicit. One new reviewed reserve entry is added to the static inventory; no rates, subscriptions, discounts, existing balances, IAM or production configuration edited by development. This is application source work; actual continuation is still pending release and verification.
Continuation verification/release preparation:141 focused Python tests passed with the known imageio FFmpeg binary, including real source cuts and exact retained-byte padding calculation.17 new continuation cases cover original quote/spend bounds, Decimal values, account/own-key/source/saved-media guards, duplicate and stale-generation protection, unknown queue replies, actual authenticated HTTP dispatch/login denial, and no repeated AI title. Earlier real-media run used the PC's2013FFmpeg by mistake; rerun with the known binary passed. TypeScript/production build and instruction/status suites pass; existing bundle warning remains. Static billing inventory updated only after manual review of the one new reserve path, then --check passes. Readiness renderer/check pass; same six movie-cost fingerprints remain unresolved/unreset. Source published c03badd is live for diagnostics/settlement; original batch has NOT yet been requeued or charged.
PC Chrome synthetic UI: Open failed batch, Continue, remaining195/original375/spent180 dialog; Cancel sends no confirmed request. Second review/confirmation sends one exact195/generation2 confirmation to SAME batch ID, keeps current form title, blocks all paid starts/uploads. Screenshot ../quick-multi-recovery-review-20261026.jpg. Browser then reported an extension UI blocking automation during local tab cleanup; user asked to dismiss it. Local Vite stopped and temporary HTML removed; synthetic fixture remains as regression source. Do not bypass the browser block. Original production continuation will require visible browser access after recovery release. No AWS sign-in needed.
Release status: c03badd workflow40410565942 succeeded; live admin diagnostic and exact retained file confirmed the15.000s-picture/15.023s-container root cause. Then pushed6b5acdc (Build6b5acdc), recovery workflow40412858901 is in progress. git fast-forward acceptedc03badd..6b5acdc. No original batch requeue, provider generation or credit debit performed. Original quote1815 and first saved unit360 remain. Browser extension UI block appeared during own local test-tab close; request_user_input_async asks owner to dismiss it and reply ready. Do not retry browser commands before owner clears the block or bypass it through lower-level controls. Original user tabs/draft preserved. Test Vite45656 stopped (4217closed), temporary recovery HTML removed, committed synthetic TSX fixture remains. Screenshot ../quick-multi-recovery-review-20261026.jpg; private inspected MP4/JPG ignored under repo test-artifacts. No AWS login required.
Next: wait for workflow40412858901 success and owner browser-ready reply, then fresh PC Chrome tab at app.plotthirst.com/?page=batch-create-omega, Recent batches -> Construction Site Truck Conversation -> Open batch. Continue saved source edit should preview original1815/previous0/remaining1815. Same-batch continuation is authorized within original accepted ceiling; use cost confirmation only once after verifying these values and SAME batch-create-omega_d6a9877e75a9d6631ce2389a. It must reuse first saved video e9c30b084f8044ff962d36e09af7d2a7 and settle once360, then continue remaining portions. Do not create a new batch, alter accepted ranges/prompts or use a new client token. Last source range remains60–67 despite original67.657001s; original accepted script/ranges preserved. Observe checkpoint/status/credits and final playable delivery; no claim completed until verified. If Chrome remains blocked, report exact blocker and published/pending status. Keep this post-release note/generated checklist local for next substantive release, avoiding notes-only deployment. Existing six movie-cost fingerprints remain open/unreset.
October26 — Live same-batch recovery verified
Owner replied Try again; PC Chrome access restored. Fresh page shows Build6b5acdc with Michelangelo admin still signed in. Recent batches -> original Construction Site Truck Conversation -> Open batch -> Continue saved source edit. Live dialog verified original1815/previous0/remaining1815 and available312345; saved first portion reused. Under the original specific approval, confirmed once at2026-10-26T22:45:43Z. Same job batch-create-omega_d6a9877e75a9d6631ce2389a requeued, no new batch/settings/prompt/range changes. Current form remained the unrelated saved QA draft and was not used for recovery. Screenshot ../quick-multi-recovery-live-approval-20261026.jpg.
Live admin inspection22:46:00Z: processing/split-edit-chunks/21percent; reservation res_batch_resume_caabc86f7227bfa063973fc9 reserved1815, spent360, remaining1455, overage0, available310530. First checkpoint billingSettledtrue, duration15, SAME providerRequestId e9c30b084f8044ff962d36e09af7d2a7 and SAME output filename batch-create-omega-edited-001-001_1793049566945.mp4. Thus the saved Clip1 was reused and settled once360, with no replacement render. Remaining four portions and final assembly still pending. Workflow40412858901 was still finishing ECS stabilization while new worker-first web build/preview/queue/settlement were verified live; keep final workflow conclusion separate. No AWS login or unrelated account/media changes. Next inspect Clip2 provider pickup/progress and final job delivery; do not claim all five finished yet.
Recovery acceptance follow-up: workflow40412858901 completed SUCCESS. Live page shows same original batch processing at22–23percent,1completed/0failed, Completed media/Edited chunk1 present. get_job confirms split-edit-provider stage, no error, active1815hold/spent360/remaining1455/overage0. Thus Clip2 is processing after saved Clip1 reuse/settlement; remaining output/assembly is asynchronous and not yet claimed completed. Screenshot ../quick-multi-recovered-live-20261026.jpg. New live Chrome recovery tab marked handoff for this unfinished batch; own older c03badd read-only tab closed successfully. User original tabs and QA draft untouched. No duplicate start/continuation, no new Clip1 render, no AWS login. Further status checks use this SAME job ID; do not submit another batch or increase its original1815 ceiling. Notes/checklist update remains local for next substantive release; no notes-only CI deployment.
October26 — Saved continuity and completed batch verified (read-only)
Owner asked whether Multi uses the preceding clip's final frame. Verified source code: continuity_frame extracts the last decoded frame of the SAVED EDITED output, appends it to child image references, and continuity_predecessor only selects a contiguous predecessor from the same original in multi-source mode. Fresh PC Chrome normal Recent/Open batch network response for batch-create-omega_d6a9877e75a9d6631ce2389a confirms result.splitEditPlan.splitEditContinuity=true and splitEditSetup.splitEditContinuity=true. Five predecessor indexes are0,1,2,3,4 in both reviewed chunks and delivered output records, so portions2–5 follow their immediately preceding edited portion. Current source-edit option defaults on; ordinary independent Multi generation is not implicitly chained by this mechanism.
Live MCP reports completed/batch-create-omega-complete. PC Chrome review confirms5completed/0failed,100percent, Final video Play preview/Download final video/See prompt and all five edited deliveries. No new render, retry, debit or settings change was performed for this read-only check. Final preview/quality and final ledger total were not separately inspected in this turn; do not claim those were verified. Recovery source release remains6b5acdc; no notes-only deployment.
October26 — AI video prompt drafting length and language
Owner asks for1900–1950-character prompts and whether length caused Chinese output. Confirmed the copied Quick Multi AI instructions previously had no such target. Updated the shared Copy/View guide for VIDEO only: target1900–1950characters per newly written/revised-at-request Prompt body, maximum1950, count spaces/punctuation/newlines and exclude clip heading/metadata, verify each count, no counts inside submitted creative text, no padding shorter complete text or silent rewrites of finished prompts. Preserve requested/request language and exact dialogue/spoken language, reference identity, edits/timing/audio. No translation to Chinese merely to save characters; ask about irreconcilable length/clip-count conflicts rather than deleting requirements or adding clips. Music/Suno instructions unchanged. Refreshed ../quick-multi-source-edit-ai-instructions.txt so the owner can hand the current guide to their other AI chat.
Read-only runtime finding: Quick Multi passes composed prompt plus source-edit/reference policy text to perform_video_create_backend -> backend_limit_video_prompt_for_provider. For the current Atlas route the code applies a3600UTF8-byte budget; over-budget text can invoke backend_rewrite_provider_prompt_for_limit with language zh-CN. This is a possible/direct-path mechanism, not proof for any particular job's observed Chinese text. Other production workflows can deliberately choose Chinese independent of overlength. A1950-character body is not a guarantee against a rewrite because appended instructions and UTF8 bytes also count. This change is AI-authoring guidance only; no backend limiter/language policy, accepted prompts/jobs, paid planner calls, prices/reservations/debits/discounts, own-key handling or production settings changed. Existing billing inventory unchanged; no new cost path. Broader operating-cost gaps and six stale movie-cost fingerprints remain unresolved/unreset.
Verification: existing AI-instruction contract suite/export, TypeScript, production bundle, Node/Python syntax, whitespace and unchanged billing inventory pass. Build retains existing bundle warning. No new mirror tests for this low-impact wording change, no paid jobs or customer-data changes. Preparing normal completed-repair source publication; website Copy/View acceptance remains distinct from a successful Git push. Local updated text export is available immediately.
October26 — Stitch export resolution disclosure
Quick Multi: local341px Chrome verification of bounded1080p/4k warning beside stitch checkbox, validation and cost dialog; uniform square/source limits and stitch-off state correct.720p landscape/portrait final export is distinct from individually delivered high-resolution clips, included in ZIP. Single clip bypasses stitch unchanged. Solo split and playlist download controls disclose source-shape1280longest-side bound. Final delivery displays actual target dimensions when returned. Existing estimate summary/lazy preview/AI guide suites and TypeScript/build pass. No paid calls/customer changes; pricing and backend output unchanged. Screenshot stitch-resolution-mobile-20261026.jpg. Hosted rollout/acceptance pending; six existing cost-monitor stale fingerprints not reset.
Publication update: source c80333b, including AI guide7767a76, pushed to production/main. Rollout40427293170 is in progress; hosted acceptance remains pending. Local mobile/type/build checks are complete.
October27 — Quick Multi typed reference headers
Official Image references: header/labels now align with Video references: and Audio references:. Singular/plural/case accepted; generic References: retained. Unique matches under any header route by uploaded type, with warnings; typed same-name selection works, ambiguous names stop before pricing. Header normalization precedes existing model limits and quote/worker selection, including multi-source editing; original prompt body and canonical saved jobs preserved. ZIP parsing/reordering ignore body/preamble reference prose. Guide/MCP description refreshed. Local178 Python checks and final23-case header suite, ZIP7, AI guide/reference order, TypeScript/build and341px PC Chrome layout pass; no paid start/AWS/customer changes. Screenshot quick-multi-image-reference-headers-20261027.jpg. Source publication/hosted acceptance pending. Previous stitch release c80333b workflow40427293170 completed/success; six existing cost-monitor stale fingerprints remain unreset.
Publication update: reference-header source72feaf7 pushed to production/main; workflow40520427984 queued. Local validation is complete; hosted acceptance remains pending.
October 28 — Atlas media models and runtime list pricing
Added Kling 4.0 text/image/reference generation and single-source Video Edit, PixVerse V6 Max text/image generation, and MiniMax Speech 2.8 HD/Turbo. No Atlas language models added. Text/image Kling rates match the owner’s ten-second screenshots before discount; ESR totals are inclusive. Reference/edit uses the non-generating Atlas calculate origin_price including measured input-video seconds and fails closed when unavailable. PixVerse audio changes its rate; speech counts only the script. Account multipliers/discounts remain runtime rules; accepted new Quick Solo/Multi units are saved and reused at settlement. Decimal credit ceilings fix binary-float over-rounding. Existing provider/operating allowances, own-key expense exclusions, reservation/event deduplication and failed-work releases are reused; known operating-cost recovery gaps remain, without a new surcharge or parent debit. Local 81 focused tests, typecheck and build passed before final review; paid rendering, live calculator responses and hosted UI remain unverified. Existing six movie-cost fingerprints remain open and were not reset. Publication pending.
Publication update: Atlas media source bcbee0c pushed to production/main. Deployment 40680477565 is in progress (Build and push image). Local 81 Python checks, generator/menu/guide/reference Node checks, TypeScript, production build, syntax and billing inventory passed. Live calculator/rendering and hosted UI acceptance remain pending; six existing movie-monitor fingerprints remain open.
October30 Solo source-edit verification: inspected latest owned19.2s upload's saved settings, two9.6s planned portions, first retained19s picture output and full375-credit release/spent0. Auto is provider-chosen smart duration; exact source matching and safe prompt scoping remain unaccepted. No retry, billing/cap change or production deployment. Source cut/provider receipt still needs exact inspection; original-vs-output visual comparison not performed.
October30 unsplit WAN Auto repair: Split OFF + Auto now accepts whole source videos totaling up to30s for WAN3/Prime Solo editing; >30 rejects before pricing/provider work. New quotes reserve/freeze30s per variation; measured settlement, stable debit IDs and unused-credit release preserve that ceiling. Existing fixed/split/Multi/audio limits and historical approvals remain; original failed19s split run untouched.99 focused Python checks including real media, TS/build/syntax/static billing pass. Hosted UI/new paid-render acceptance pending; no new paid call. Existing overhead gaps and six stale movie-cost fingerprints unreset.
Community
Share finished Plotthirst videos, follow creators, and manage community posts from Library.