Skip to content

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 (system or human).