Skip to content

Step 6: FCPKitDSL create path #11

Description

@leogdion

What to build

Ship the FCPKitDSL product so authors can declare a Document, call export(version:), and get an FCPXML that soft-promotes shells, interns inline media, packs spine timing with transition overlap, and anchors via .anchor(lane:content:) — strong enough to reproduce the transitions and titles FeaturePairs after normalize.

Acceptance criteria

  • FCPKitDSL product exists; core FCPKit stays a pure Codable layer for Diff/MediaTools
  • Locked surface from the plan: Document, soft promotion, hidden primary spine, .anchor(lane:content:), inline media dedupe, export(version:) throws -> FCPXML
  • Loud export failures for missing required values after defaults (including no default Gap.duration)
  • DSL → encode → DTD validate → normalize → structural-equal at least transitions and titles FeaturePairs
  • Opt-in hard failure for missing DTD tooling on the authoring path (e.g. FCPKIT_REQUIRE_DTD)
  • MediaTools multicam builder remains on Codable (no forced migrate)
  • swift test and schema-completeness at 0 remain green

Blocked by

References

  • Plan: docs/planning/v0.1.0-first-working-version.md
  • ADR: docs/adr/0002-create-first-ordered-typed-model.md
  • Worktrees: docs/planning/v0.1.0-worktree-plan.md

Metadata

Metadata

Assignees

No one assigned

    Labels

    ready-for-agentFully specified, ready for an AFK agentv0.1.0FCPKit v0.1.0 milestone work

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions