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 7 Oct 2026 from commit e1c4210. 24 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.
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.
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.

    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.