Project file scaffold (.ragtech/project.json)
Objective
Create the foundational project-file layer used by all later pipeline and reproducibility work.
Deliver a typed ProjectFile interface plus helper functions for reading/writing .ragtech/project.json.
Why this matters
The current system has no persistent project model.
This issue creates the minimal shared foundation needed for:
- deterministic parameters
- artifact lineage
- brand selection
- future DAG execution
This is intentionally small and can land early.
Parallelization metadata
Track
infra
Depends on
Safe to run in parallel with
- artifact store issue
- FFT determinism issue
- brand type extension issue
Merge risk
- low — mostly additive new files
Files in scope
Primary:
scripts/config/project.ts
May touch minimally:
Avoid touching:
Required implementation
1. Define project types
2. Add helpers
readProject(cwd?: string): ProjectFile
writeProject(project: ProjectFile, cwd?: string): void
3. Bootstrap behavior
- if
.ragtech/project.json does not exist, create .ragtech/
- write formatted JSON
Constraints
- keep implementation synchronous
- no CLI behavior changes yet
- no migration logic yet
Handoff contract
Must expose stable imports:
import { readProject, writeProject } from '../config/project';
Acceptance criteria
Functional
Unit tests
Integration checks
Verification commands
node -e "require('./scripts/config/project.ts')"
Expected result:
Explicitly out of scope
- artifact hashing
- CLI migration
- pipeline integration
Suggested branch
Suggested commit slug
phase-0-step-1-project-file-scaffold
Project file scaffold (
.ragtech/project.json)Objective
Create the foundational project-file layer used by all later pipeline and reproducibility work.
Deliver a typed
ProjectFileinterface plus helper functions for reading/writing.ragtech/project.json.Why this matters
The current system has no persistent project model.
This issue creates the minimal shared foundation needed for:
This is intentionally small and can land early.
Parallelization metadata
Track
infraDepends on
Safe to run in parallel with
Merge risk
Files in scope
Primary:
scripts/config/project.tsMay touch minimally:
package.jsonAvoid touching:
scripts/wizard.jsRequired implementation
1. Define project types
create
ProjectFileinclude top-level fields:
versionepisodebrandIdtoolsparamsartifacts2. Add helpers
readProject(cwd?: string): ProjectFilewriteProject(project: ProjectFile, cwd?: string): void3. Bootstrap behavior
.ragtech/project.jsondoes not exist, create.ragtech/Constraints
Handoff contract
Must expose stable imports:
Acceptance criteria
Functional
.ragtech/project.jsonUnit tests
Integration checks
node -e "require('./scripts/config/project.ts')"runs without errorVerification commands
node -e "require('./scripts/config/project.ts')"Expected result:
Explicitly out of scope
Suggested branch
Suggested commit slug