Term
Project
A durable named collaboration and policy scope. A Project outlives any single workspace, host conversation, or WorkSession and is the unit that people and systems recognize as "the work we keep doing together."
Purpose
Hold stable identity, membership, and policy that WorkSessions pin via a ProjectSnapshot. Projects are not a place to store live runtime.
Relationships
| Name | Target | Kind | Cardinality | Inverse |
|---|---|---|---|---|
snapshots | ProjectSnapshot | contains | 0..* | project 1 |
known_resources | Resource | observes | 0..* | observed_by_projects 0..* |
work_profiles | WorkProfile | references | 0..* | projects 0..* |
Lifecycle
Initial active. Terminal: archived.
activearchived
active→archived— Archiving retains identity and snapshots; it does not delete history.
Invariants
- MUST NOT
no-runtime-state: A Project MUST NOT store PIDs, ports, heartbeats, or current run/workspace/conversation pointers. - MUST
one-authority: Project policy and membership have exactly one mutable authority, the Project itself. - MUST
policy-narrows: Any WorkSession or ResourceBinding under this Project MUST only narrow project policy. - MUST NOT
not-a-workspace: A Project MUST NOT be treated as a Workspace or WorkSession.
Aliases
collaboration-scope
Deprecated aliases
None.
Not synonyms
- Workspace: A Workspace is a material working environment, not the durable collaboration scope.
- WorkSession: A WorkSession is a bounded episode; a Project outlives many sessions.
- repository: A version-control repository may be a Resource bound into work; it is not the Project.
- session: Unqualified session is prohibited; it collapses several distinct entities.
Examples
- A named product effort that several WorkSessions and hosts attach to over months.
- An interoperability profile shared by multiple agent systems under one policy.
Anti-examples
- A local checkout directory.
- An MCP client connection.
- The current Goose or Crush chat transcript.
- A running agent process.
Fields
The identity field is the index of the handle. fields is the exchange shape.
| Name | Kind | Type | Portable | Notes |
|---|---|---|---|---|
project_id | identity | name | True | |
display_name | descriptive | string | True | |
policy | policy | PolicyDocument | True | Policy at the project boundary. Children may only narrow it. |
description | descriptive | string | True |
Native mapping hooks
| System | Native term | Fidelity | Notes |
|---|---|---|---|
project-interop | Project | partial | Name alignment is likely; treat field-level equivalence as unverified. |