Status

What the engine can do today

Each capability is marked Working, In development or Planned. Working means the tests named beside it passed when this page was built; if one fails, the page is not built.

Built on 8 Oct 2026 from commit 1102663. 31 evidence tests ran and passed.

Capabilities and their evidence
CapabilityStatusEvidence (passed in this build)Note
Scene manifest: load and validateEngineWorking
  • tests/manifest-edl.test.js › validator: a good manifest passes; each rule has a failing fixture (passed)
Every scene names its picture, its source and its rights record; the manifest rules are checked before anything renders.
Render EDL: timing and picture choiceEngineWorking
  • tests/manifest-edl.test.js › EDL: deterministic, no creative text, cumulative frames, picture hash independent of timing of other scenes (passed)
The edit list is built from the manifest without writing anything, and the same inputs give the same bytes.
Scene render: animation slots and film assembly with QAEngineWorking
  • tests/slot-gfx.test.js › slot: contract, BT.709, double-render determinism, cache reuse and cache invalidation (passed)
  • tests/episode-render.test.js › the fixture reaches RENDERED: EDL, render and QA versions; three QA groups PASS; the final EDL is render-edl/1 unchanged (passed)
Tested on a small fixture episode and on slot renders. Episode 001 has no finished film yet: its script is not locked and its final voice is not chosen.
Rights review queueEngineWorking
  • tests/ui-rights.test.js › the review queue: everything in play that does not pass, worst first, with the vector picture standing in (passed)
  • tests/ui-rights.test.js › the picture choice is the engine's: rights.resolve agrees with lib/edl.js build on every path (draft and final) (passed)
Everything in play that does not pass, worst first. The panel's reading is checked against the engine's own picture choice.
Approval checklistEngineWorking
  • tests/ui-view.test.js › approval checklist: Episode 001 as it is — every decision open, the final render blocked, each with the evidence it read (passed)
  • tests/ui-view.test.js › approval checklist: the final opens only when all four are done; a missing lock line is unknown, not done (passed)
Five decisions read from the files: script, pictures, rights, voice, final render. The final stays blocked until the other four are done.
Documentary output and the frozen opening unchangedEngineWorking
  • tests/belgesel-temel.test.js › the documentary engine and P-A are byte-identical to the recorded baseline (portable values) (passed)
Hashes of the frozen engine files, Episode 001's files, the opening's scenes and its animation inputs are compared with a recorded baseline.
Demo readable without JavaScriptSiteWorking
  • tests/ui-site.test.js › build: every page in plain HTML, in English, with its head tags; the site files; nothing written in the project (passed)
Every page is plain HTML; the scene table is written into the page when the site is built.
Vertical Shorts reframed from a finished 16:9 filmEngineWorking
  • tests/shorts-render.test.js › render: crop / pan / fit-fill / split on one Short → the canvas size at the source fps, the planned frame count; captions equal narration on every cue; byte-identical re-render (new version, same bytes) (passed)
A separate pipeline crops, pans or fits a finished film's scenes into 1080×1920. Tested on a fixture; not yet made for Episode 001, which has no finished film.
Source and approval trail per sceneEngineWorking
  • tests/ui-view.test.js › trail in the panel: Episode 001 has no trail yet, so no scene counts as cleared; a scene clears only with rights AND a complete trail (passed)
  • tests/scene-trail.test.js › scene trail: a complete trail needs source, licence, retrieval date and a person's approval (passed)
  • tests/scene-trail.test.js › scene trail: an edited, removed or reordered line breaks the chain; nothing after it counts and nothing more is appended (passed)
An append-only log per episode: source, licence, retrieval date, who approved and when. Lines form a hash chain, so an edited or removed line is detected and nothing after it counts. A scene without a complete trail, or approved only by the autopilot, is not counted as cleared. Episode 001 has no trail entries yet.
Research with sourcesEngineIn development—A research plan per topic; sources captured by the system, claims kept with the exact quote they rest on.
Script lock (gate G1)EngineIn development—The lock line of the script is read by the engine and shown in the release status. Episode 001's script is not locked yet.
Archive search with licencesEngineIn development—Photos, documents and film from Wikimedia Commons, the Library of Congress, NASA and the Internet Archive, with the licence read for each item.
Stock video with licencesEngineIn development—Clips from Pexels and Pixabay, recorded with their licence.
Narration and Turkish pronunciationEngineIn development—Narration from the locked script, with a pronunciation fixer for Turkish names and terms. Episode 001 has no final voice yet.
Voice check by speech recognitionEngineIn development—Local speech recognition listens back to the narration and flags words that do not match the script.
Sound design and subtitlesEngineIn development—Sound beds and effects mixed to a standard loudness; subtitles timed from the narration.
Story Shorts for the vertical frameEngineIn development—Shorts written for 9:16 from the start, as opposed to the reframed ones above.
Scene list checkerSiteWorking
  • tests/check-rules.test.js › check rules: a complete row passes; each rule fails on its own gap (passed)
  • tests/check-rules.test.js › check rules: the CSV download defuses formulas and keeps markup as text (passed)
  • tests/check-rules.test.js › check page: the browser code writes text only, runs nothing, sends nothing and stores nothing (passed)
Runs in the browser at /check: flags rows with no scene, source, rights record, approver or date, unclear rights and repeated scenes. It checks that records are complete, not whether a work may be used.
Release statusSiteWorking
  • tests/release.test.js › release: gates are read from the episode where the engine can tell; the others keep the hand-set value and its note (passed)
  • tests/release.test.js › release: an empty address shows 'Not published yet'; a YouTube https address is linked; anything else stops the build (passed)
The gates of Episode 001 on this page: read from the episode where the engine can tell, hand-set with a note where it cannot. A publication address must be https on YouTube or the page is not built.
Script drafting with ClaudeClaudeIn development—Claude Code drafts the script from the research pack and the brief; the engine checks structure, pacing and tone. A person edits and locks it.
Claude suggestions, imported and reviewed by a personClaudeWorking
  • tests/suggestions.test.js › suggestions: a valid file imports once; decisions are new lines; accepted ones form the review list; a stale input is marked (passed)
  • tests/suggestions.test.js › suggestions: an unknown field, a wrong value or a scene that does not exist refuses the whole file (passed)
  • tests/suggestions.test.js › suggestions: a key, a token, a password line or personal data anywhere refuses the file and the value is never echoed (passed)
Claims to check, kinds of source to look for and rights risks per scene, written in a Claude chat or a Claude Code session and imported as a file. Only listed fields are read; a file with an unknown field, a key, a token or personal data is refused whole. A suggestion never changes a scene: a person accepts or rejects it with a command, recorded as a new line in a hash-chained log. None has been imported for Episode 001 yet.
Suggestions through an APIClaudePlanned—Not connected: there is no call code and no key handling. Only the provider interface exists, and a stand-in passes through the same strict import.
Claude usage logClaudeWorking
  • tests/claude-log.test.js › claude log: a valid record passes; unknown fields, HTML, over-long text, secrets and bad dates are refused (passed)
  • tests/claude-log.test.js › claude log: the counts come only from the records, and record text is escaped on the page (passed)
Each suggestion from Claude is logged by hand with the decision a person made and the reason. The page shows only real records.3 records in the log.
Format profilesEngineWorking
    config/formats.json describes each format: length, frame, scene length, speaking pace, rights rules and quality limits. An episode's scenes are checked against its format and the ones out of range are marked; nothing is blocked. Only the documentary profile runs; the explainer is in development, the short vertical and three others are planned (see the formats table below).
    Export: scene table as CSV and JSONExportWorking
    • tests/export.test.js › export: CSV and JSON carry every scene with its rights state; a cell that looks like a formula is neutralised (passed)
    The scene table with its rights state, trail and format check, as CSV (opens in a spreadsheet; a cell that would run as a formula is neutralised) and JSON. node ui/export.js writes it; the demo carries both files for its example data.
    Export: After Effects script (experimental)ExportIn developmentExperimental, not tested in After Effects—An ExtendScript file that builds one composition with one layer per scene, its in and out points and a marker. Its syntax and its calls were checked against a stand-in of After Effects in the tests; it has not been run in After Effects.
    YouTube publishingPublishingIn development—Title, description and thumbnail per film; uploads stay private until shared, at the day and time chosen. Nothing has been published yet.
    Synthetic content disclosurePublishingIn development—Synthetic content is disclosed on upload where YouTube asks for it.
    Lessons from published videosPublishingIn development—A published video is reviewed against its numbers; each lesson is recorded with its evidence and becomes a rule the engine enforces, approved by a person. The first lessons are enforced and tested; the scheduled review is not connected yet.

    Release status

    The gates the first episode passes before it is published, in order. A gate the engine can read from the episode is read when this page is built; a gate it cannot read is set by hand in data/release.json, and says so.

    Episode 001-phone-operator: Why Did Someone Have to Plug In Your Phone Call? 0 of 6 gates done.

    Not published yet

    Release gates, in order
    GateStatusSourceNote
    Script locked (gate G1)script_kilidiOpenRead from the episodeThe script is not locked yet.
    Final voicefinal_sesOpenRead from the episodeNo final voice is chosen yet.
    Rights approvalshak_onaylariOpenRead from the episode0/60 scenes cleared for the final film (rights and trail).
    Quality controlkalite_kontroluWaitingSet by handEpisode 001 has no final render yet, so there is no film to check. No quality report on the building machine, so this is set by hand.
    Human approvalinsan_onayiWaitingSet by handA person watches the final film and approves it before publication.
    PublicationyayinOpenSet by handNot published yet.

    Format profiles

    One file, config/formats.json, describes each video format: its length, frame, scene length, speaking pace, rights rules and quality limits. A profile describes and checks; the render engine is the same for every format. Only the documentary runs today. An episode's scenes are checked against its format, and a scene outside the range is marked in the scene table; nothing is blocked by it.

    Format profiles
    FormatStatusLengthFrameScene lengthPaceTests
    Documentary belgeselToday's behaviour, unchanged: the values are the engine's own (manifest pace, slot text minimums, channel identity contrast gate, film QA loudness).Working8–12 min16:9 · 1920×10803–20 s130–150 words/min
    • tests/belgesel-temel.test.js › the documentary engine and P-A are byte-identical to the recorded baseline (portable values) (passed)
    • tests/formats.test.js › belgesel: the profile is today's engine behaviour, and Episode 001 runs under it with no scene out of range (passed)
    Explainer (educational) egiticiSame 16:9 render path as the documentary; the profile's rhythm and rights rules are checked and reported, not enforced at render. No explainer video has been made yet.In development3–6 min16:9 · 1920×10803–12 s140–160 words/min
    • tests/formats.test.js › egitici: a fictional explainer manifest is checked against its own rhythm and rights rules (passed)
    Short vertical kisa_dikeyA native 1080×1920 render from the scene list would change the frozen slot system (1920×1080 slots) and the scene render; not done. The separate Shorts pipeline reframes a finished 16:9 film instead (a separate capability on the status map).Planned30–60 s9:16 · 1080×19201.5–6 s150–180 words/min—
    News summary haber_ozetiPlanned—————
    Product introduction urun_tanitimiPlanned—————
    Lesson dersPlanned—————

    The list comes from config/status.json in the engine's repository; the tests named here run every time this page is built.