21 fixtures. 33 tracked features. One canonical screenplay model. Any implementation can be scored against the same ruler, including ours. The suite, the fixtures, and the reference adapter are MIT-licensed and live in the same repo as the app.
There was no public test suite for it. So we wrote one. It covers the real gnarly corners — locked scene numbers with letter suffixes (42A), OMITTED scenes, SceneProperties with Title / Length / Color, writer-forced page breaks, revision marks at both paragraph and run level, multi-paragraph script notes with inline bold/italic, and dozens more — and it's MIT-licensed because a shared spec is good for the whole ecosystem.
If you're a writer, this page tells you how trustworthy a given tool's FDX path is. If you're building a screenwriting app, you can drop in an adapter and score your own implementation in an afternoon.
Your implementation reads the fixture into its own internal representation.
Project that representation into the shared canonical screenplay model. This is the only lossy step — anything the canonical doesn't cover is implementation-defined passthrough.
Write the internal representation back out to FDX.
Parse the emitted FDX again, canonicalize, and structurally deep-equal the two canonical forms. Every differing field is a reported gap.
If you're building a screenwriting tool, implement the FdxAdapter interface — a thin wrapper around your parser, writer, and a projection into the canonical model. Run the suite locally. Get a Markdown scorecard showing exactly which fixtures round-trip cleanly and which drop which attribute on which path.
The scorecard is the same one we run against our own adapter. No comparison matrix lives on this page — we'd rather keep the suite neutral than post a leaderboard we're on.
Drop your .fdx into tests/fixtures/fdx/, add a .meta.json at fdx-conformance/fixtures/ declaring which features it exercises, and open a PR. If it exposes a real gap in the reference adapter, we fix the adapter in the same PR. The suite grows, the spec sharpens, every implementation gets better.
Short, targeted, one category per file. Real-world source beats synthetic when available.
Every fixture carries a source label. Public-domain screenplays and trial exports are welcome; copyrighted material is not.
MIT. Fork it, adapt it, rename it. We only ask that contributed fixtures ship under the same license.