MSD — Magic Scene Description¶
The .msd format is Alchemy's native JSON state format. Every task, version,
script, character, review, and training dataset has an .msd file as its
source of truth on disk. There is no database — the filesystem is the
database, addressed by PathObject.
Key models¶
TaskManifest¶
The central state object for any unit of work. Addressed by
(company, project, entity_type, parent, child, task) and persisted as a
.msd JSON file. Contains version history, assignees, status, and publish
state.
TaskManifest.commit() is the asset registry choke point — all asset
registration flows through it, so every publish is also a registration.
VersionManifest¶
State for a specific version (major.minor, e.g. 008.001) of a task.
Tracks source files, render files, work log, dependencies, and tracking sync
state.
Services over MSD¶
| Service | Role |
|---|---|
MSD_SERVICE (alc/services/task_msd.py) |
Project-level task state aggregator |
PROJECT_REGISTRY (alc/services/project.py) |
Asset registry — characters, props, environments, scenes |
Event stream (alc/services/event_service.py) |
Production events appended alongside MSD state |
Conventions¶
- MSD files live at
PUBLISHES/msd/{task_id}.json. - Publish merge convention: on publish, script-derived fields replace,
production metadata preserves, and orphaned entities are marked
omt(omitted) rather than deleted. - Statuses come from the single registry in
alc/config/statuses.py, each with an authority (systemorhuman).