Readable files, validation limits, and atomic replacement.
The local project format
Directory layout
my-chip-spec/
├── project.json
└── features/
├── feature-id-1.json
└── feature-id-2.json
project.json stores project metadata and the ordered feature ID index. Every feature lives in a separate JSON file, keeping Git diffs focused and reducing edit conflicts across features.
File-boundary validation
- Schema version must be 1 and project name must be non-empty.
- Feature IDs use a restricted filename-safe character set and must be unique.
- Parent IDs must resolve to another feature in the project.
- Priorities, stage states, requirement types, approval states, and scenario methods use explicit enumerations.
- A project may contain at most 5,000 features; individual JSON files are capped at 10 MiB and the serialized project at 100 MiB.
Atomic writes
The desktop process writes a temporary file with owner-only permissions, renames it over the target, and cleans up the temporary path. Obsolete feature JSON files are removed only after the new project representation has been written.