4.8 KiB
FilmCraft — rules for agents and contributors
These rules apply to every human and AI contributor. CLAUDE.md holds the working instructions; this
file holds the rules that must never be broken. When the two disagree, this file wins.
1. Assets: no Adobe artwork, every asset licensed and attributed
This rule is absolute. Breaking it is the most serious mistake a contributor can make on this project.
What counts as an asset: any image, icon, cursor, logo, illustration, screenshot, font, colour LUT,
preset, template, sound, music, video, 3D model, or other non-code media. This covers files in the
repository, bytes embedded in code (include_bytes!, base64, data URIs), and data hard-coded to
reproduce an image (for example, point lists traced from someone else's icon).
- Never use Adobe iconography, images or other Adobe assets, in any form:
- no icons, cursors, logos, splash screens, UI artwork or screenshots from any Adobe product;
- no Adobe fonts, LUTs, presets, templates, sound effects, stock media or sample projects;
- no traced, redrawn, recoloured or "inspired-by" copies of Adobe icons. Our icons may follow generic conventions (a play triangle, a razor blade, a stopwatch), but each must be drawn from scratch without reference to Adobe's artwork.
- Every asset must be open: open-source licensed (MIT, Apache-2.0, BSD, ISC, zlib, SIL OFL…), public domain / CC0, or Creative Commons (CC BY or CC BY-SA; no NC/ND licences), or created by a contributor who owns it and licenses it to the project under the project licence (MIT OR Apache-2.0). If the licence is unknown or unclear, the asset does not go in.
- Every asset needs an attribution sidecar. Next to each asset file
X, addX.attributionwith:Also add one line for the asset toasset: <file name> title: <what it is> author: <creator / copyright holder> source: <URL, or "original work" for contributor-made assets> license: <SPDX id or licence name> license-file: <path to the licence text, if the licence requires shipping it> added: <YYYY-MM-DD> by <contributor> notes: <how it was made or modified; for screenshots, what is shown>ATTRIBUTION.md.cargo xtask assets(part ofcargo xtask ci) fails if any asset lacks a sidecar or index entry. - Screenshots in the repo may show only FilmCraft (or other open projects), with media we generated or media that is itself openly licensed. Never commit screenshots of Adobe products.
- Local reference material stays local. Premiere reference screenshots and notes live only in
plan/premiere/(gitignored). They must never be committed, bundled, embedded, traced or shipped. - Code-drawn assets (icons in
crates/ui-egui/src/icons.rs, procedural demo footage incrates/media, procedural looks incrates/render) are original work under the project licence and are listed inATTRIBUTION.md. - When in doubt, leave it out and draw or generate it yourself.
2. Clean-room code
- Never read, disassemble or copy anything inside Adobe application bundles; file names and listings only. Observe behaviour by using the app; never capture its Home screen, recent projects, account info or file browsers.
- Never copy GPL/LGPL/AGPL code (FFmpeg, x264, x265, MLT, Kdenlive, Shotcut, Olive, LAME…).
- Implement codecs and formats from public specifications (ITU-T/ISO/IEC standards, IETF RFCs, the VP9 and AV1 bitstream specs, SMPTE documents, published container specs). Do not read the source of reference or third-party decoders/encoders while implementing a format, even permissively licensed ones (libvpx, libopus, libaom, dav1d, openh264…); spec text and conformance vectors only. Record the spec edition used in the crate README.
- ffmpeg/ffprobe may be used only as external test oracles and fixture generators. They are never linked, bundled or shipped.
- Dependencies must use permissive licences: MIT/Apache-2.0/BSD/ISC/Zlib/Unicode/CC0/BSL-1.0, or MPL-2.0 used unmodified.
3. Engineering rules
See CLAUDE.md: pure Rust, dependency layering (cargo xtask layers), exact Tick time, everything is
a command, everything is agent-drivable, and the quality gates (cargo xtask ci) before every commit.
See also
- CONTRIBUTING.md and docs/contributing.md: setup, gates, commits, how to add things
- docs/architecture.md: layers, data model, commands, pipeline
- docs/testing.md: oracle tests, criteria, benchmarks
- docs/agents.md: driving FilmCraft over MCP / the control channel, and the agent work loop
- docs/control-protocol.md: control-channel method reference
- ATTRIBUTION.md: asset index