07-workspace-state-schema.md
Workspace State Schema
Markdown explains the work. Structured state runs active execution.
Use this schema only for active workspaces that need agent coordination, task tracking, QA, or recurring operations. Do not create it for passive ideas.
When To Create .company/
Create .company/ when at least one of these is true:
- Multiple execution roles are working on the same project.
- Dev, QA, research, writing, or design tasks need handoffs.
- Athena needs an auditable status ledger.
- There are recurring runs, bugs, quality gates, or scheduled deliverables.
- The project would lose momentum without structured state.
Do not create .company/ just because a workspace exists.
Folder Layout
Projects/{Workspace}/
index.md
decisions/
logs/
wiki/
artifacts/
raw/
.company/
manifest.json
tasks.json
bugs.json
status.json
agents.json
context-cache/
message-bus/
artifacts/
State Files
| File | Purpose | Owner |
|---|---|---|
manifest.json |
Project constitution: objective, scope, non-goals, milestones, risks | PM + Architect, approved by Athena |
tasks.json |
Work board with owners, dependencies, acceptance criteria, and status | PM |
bugs.json |
QA-discovered defects with evidence and verification status | QA |
status.json |
Current health, progress summary, blockers, next actions | Athena |
agents.json |
Recruited execution roles, assigned model/tooling, current status | Athena |
context-cache/ |
Short handoff summaries, not raw dumps | All execution roles |
message-bus/ |
Structured role-to-role messages when needed | Athena + roles |
Required Status Values
Task status:
pending -> assigned -> in_progress -> review -> done
blocked
Bug status:
open -> triaged -> in_progress -> fixed -> verified
wont_fix
duplicate
Workspace health:
green
yellow
red
paused
dormant
Minimal manifest.json
{
"project": "Project name",
"objective": "What this workspace exists to produce",
"non_goals": [],
"milestones": [],
"risks": [],
"created": "YYYY-MM-DD",
"updated": "YYYY-MM-DD"
}
Minimal tasks.json
{
"tasks": [
{
"id": "task-001",
"title": "Task title",
"role": "researcher",
"status": "pending",
"priority": "high",
"depends_on": [],
"acceptance_criteria": []
}
]
}
Minimal status.json
{
"health": "green",
"phase": "planning",
"summary": "Short current state",
"blocked": [],
"next_actions": [],
"updated": "YYYY-MM-DD"
}
Context Cache Rule
Agents do not hand off raw session history.
Every handoff should fit in a concise file:
.company/context-cache/task-001-dev-result.md
.company/context-cache/task-001-qa-report.md
.company/context-cache/research-brief-market.md
Each handoff should include:
- Task or decision.
- Files touched or sources used.
- What changed.
- Evidence.
- Open risks.
- Next recommended action.
Message Bus Rule
Use message-bus/ only when role-to-role coordination needs traceability. Otherwise, status and task files are enough.
Message types:
task_assignmentresultbug_reportreview_feedbackblockerstatus_updatedecision_request
Guardrail
If .company/ becomes heavier than the work, pause and simplify. The state system exists to reduce coordination cost, not create another job.