Skip to content

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."

Identity
project_id
Kind
name
Authority role
project-catalog
Mutability
mutable
Status
accepted

Purpose

Hold stable identity, membership, and policy that WorkSessions pin via a ProjectSnapshot. Projects are not a place to store live runtime.

Relationships

NameTargetKindCardinalityInverse
snapshotsProjectSnapshotcontains0..*project 1
known_resourcesResourceobserves0..*observed_by_projects 0..*
work_profilesWorkProfilereferences0..*projects 0..*

Lifecycle

Initial active. Terminal: archived.

activearchived
  • activearchived — 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.

NameKindTypePortableNotes
project_ididentitynameTrue
display_namedescriptivestringTrue
policypolicyPolicyDocumentTruePolicy at the project boundary. Children may only narrow it.
descriptiondescriptivestringTrue

Native mapping hooks

SystemNative termFidelityNotes
project-interopProjectpartialName alignment is likely; treat field-level equivalence as unverified.