Files and folders, first-class.
The source you author for handlers, workflows, edge logic — folders, files, modules — are not auxiliary git artifacts. They're first-class branchable platform entities. ProjectSourceFolder, ProjectSourceFile, ProjectSourceModule. Content-addressed split between control-plane metadata and storage-layer blobs. Same branching DAG as schema, providers, federation, agents — all 19 manifest domains.
Folders, files, modules. All branchable.
ProjectSourceFolder
Hierarchical structure. Move, rename, fork, sandbox — all participate in the branching DAG. Folder-scoped access policies and capability grants apply across descendants.
ProjectSourceFile
Source files with content-addressed storage. The control plane carries the metadata (path, language, scope, classification); the blob lives in the storage layer at {projectId}/source/{hash[0..2]}/{hash}.bin.
ProjectSourceModule
A compiled unit — a handler, a workflow, an event consumer, an edge function — derived from one or more files. Modules carry runtime classification and execution-surface assignment.
Content-addressed
Identical content deduplicates by SHA-256 hash. Branching a sandbox is cheap — you reference the same blobs until you fork them. Storage cost matches actual divergence.
SourceAssets manifest domain
One of 19 typed branching domains. Source asset diffs are first-class IDomainDiffAnalyzer participants. Three-way merge handles file-level conflicts; structural conflict detection is path-aware.
Same canonical APIs
SourceAssetController is the canonical surface. CLI, IDE, third-party tooling all consume the same API. The coding workspace is a peer consumer, not a privileged authority.
Folder · File · Module
Metadata + blobs
Branchable like schema
Workspace · CLI · third-party share it
Source as platform state.
Branch a folder. Sandbox a file. Diff modules. Three-way merge with semantic conflict detection. The same DAG that holds your schema, holds your code.