Part of: #81
Mission
Evolve tycoon.yml to express runtimes: and metadata: sections. Replace the global config singleton with proper project-loading dependency injection at the command layer. This milestone is the foundation every downstream milestone builds on.
Current state
src/tycoon/config.py exports config = TycoonConfig(), a singleton constructed at import time. It is imported by 25+ production files. src/tycoon/project.py TycoonProject has no runtimes: or metadata: sections.
Definition of done
tycoon.yml can express runtimes: and metadata: sections. Ingestion-path commands receive project via load_project() call, not via from tycoon.config import config. The config.py singleton still exists for non-ingestion commands (not deleted in this milestone).
Tasks
Part of: #81
Mission
Evolve
tycoon.ymlto expressruntimes:andmetadata:sections. Replace the globalconfigsingleton with proper project-loading dependency injection at the command layer. This milestone is the foundation every downstream milestone builds on.Current state
src/tycoon/config.pyexportsconfig = TycoonConfig(), a singleton constructed at import time. It is imported by 25+ production files.src/tycoon/project.pyTycoonProjecthas noruntimes:ormetadata:sections.Definition of done
tycoon.ymlcan expressruntimes:andmetadata:sections. Ingestion-path commands receive project viaload_project()call, not viafrom tycoon.config import config. Theconfig.pysingleton still exists for non-ingestion commands (not deleted in this milestone).Tasks
runtimes:andmetadata:toTycoonProjectmodelconfigsingleton in ingestion commands withload_project()injectiontycoon.ymlversion field enforcement