interfaces

Most uses name a standard interface — chat@1, depth-metric@1. When nothing standard fits, a cognet writes its own here, and publishes it with itself.

interfaces/
├── scene@1.interface.ts       # the interface @you/your-cognet/scene@1
└── scene@1.conformance/       # what any provider of it must answer
    ├── cases.json
    └── inputs/
// interfaces/scene@1.interface.ts
export interface Scene {
    describe(): { maxSurfaces: u32; gpu: boolean }
    encode(picture: Picture, depth: DepthMap): Promise<SceneCode>
}

The version is in the file's name. A new major version is a new file, never an edit to an old one. How to write one is interfaces.