- Introduced Role Analysis Reviewer Agent to validate role analysis outputs against templates and quality standards. - Created a detailed validation ruleset for the system-architect role, including mandatory and recommended sections. - Added JSON validation report structure for output. - Implemented execution command for validation process. test: Add UX tests for HookCard component - Created comprehensive tests for HookCard component, focusing on delete confirmation UX pattern. - Verified confirmation dialog appearance, deletion functionality, and button interactions. - Ensured proper handling of state updates and visual feedback for enabled/disabled status. test: Add UX tests for ThemeSelector component - Developed tests for ThemeSelector component, emphasizing delete confirmation UX pattern. - Validated confirmation dialog display, deletion actions, and toast notifications for undo functionality. - Ensured proper management of theme slots and state updates. feat: Implement useDebounce hook - Added useDebounce hook to delay expensive computations or API calls, enhancing performance. feat: Create System Architect Analysis Template - Developed a comprehensive template for system architect role analysis, covering required sections such as architecture overview, data model, state machine, error handling strategy, observability requirements, configuration model, and boundary scenarios. - Included examples and templates for each section to guide users in producing SPEC.md-level precision modeling.
25 KiB
Domain Model
This document defines the core entities, schemas, relationships, and state machines for Team Lifecycle v3.
1. Core Entities
1.1 Task
A Task represents a unit of work assigned to a specific role. Tasks have dependencies, priorities, and lifecycle states.
Definition: An atomic work item with a unique identifier, assigned role, execution phase, dependency constraints, and status tracking.
Fields:
id(string): Unique task identifier following pattern{PREFIX}-{NNN}(e.g.,IMPL-001,TEST-001)role(string): Role name responsible for execution (e.g.,executor,tester,reviewer)phase(string): Execution phase (spec,impl,test,review)dependencies(array): List of task IDs that must complete before this task can start (blockedBy)status(enum): Current task state (pending,ready,in_progress,completed,failed)priority(enum): Execution priority (P0,P1,P2)metadata(object): Additional context (created_at, updated_at, attempt_count, error_message)
1.2 Artifact
An Artifact represents a deliverable produced by a worker, with validation status and dependency tracking.
Definition: A versioned output (document, code, test suite) with a manifest describing its type, creator, validation status, and dependencies.
Fields:
artifact_id(string): Unique artifact identifier (e.g.,product-brief-v1,impl-auth-service)artifact_type(string): Type classification (document,code,test,config,report)path(string): File system path relative to session directorycreator_role(string): Role that produced this artifactversion(string): Semantic version (e.g.,1.0,1.1)validation_status(enum): Validation state (pending,passed,failed)validation_summary(string): Human-readable validation resultdependencies(array): List of artifact IDs this artifact depends onmetadata(object): Additional context (created_at, task_id, priority, file_size, checksum)
1.3 Role
A Role defines a specialized agent's capabilities, task prefix, and injection trigger.
Definition: A specification for an agent type, including its responsibilities, task naming convention, and conditions for activation.
Fields:
name(string): Role identifier (e.g.,executor,security-expert,orchestrator)type(enum): Role classification (coordinator,pipeline,specialist,utility)task_prefix(string): Task ID prefix pattern (e.g.,IMPL-*,SECURITY-*,ORCH-*)injection_trigger(enum): Activation condition (always,complexity,keywords,manual)injection_criteria(object): Specific trigger conditions (keywords, complexity_threshold)capabilities(array): List of capabilities (e.g.,code_generation,security_audit,performance_analysis)inner_loop(boolean): Whether role supports iterative refinementphase_execution(array): List of execution phases (1-5)
1.4 Session
A Session represents a complete workflow execution instance with persistent state.
Definition: A stateful execution context that tracks all tasks, artifacts, and coordination state for a single workflow run.
Fields:
session_id(string): Unique session identifier (e.g.,TLS-auth-impl-20260305)slug(string): Human-readable short name derived from task descriptioncreated_at(string): ISO8601 timestamp of session creationupdated_at(string): ISO8601 timestamp of last state changestatus(enum): Session lifecycle state (created,active,paused,completed,archived,failed)pipeline_type(enum): Selected pipeline (spec-only,impl-only,full-lifecycle,enhanced-parallel)artifact_registry(object): Map of artifact_id → Artifact manifesttask_list(array): Ordered list of Task objectsinjected_roles(array): List of dynamically injected specialist rolescheckpoint_history(array): Record of user checkpoint interactionssession_directory(string): File system path to session workspace
2. Entity Schemas
2.1 Task Schema (JSON Schema)
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"title": "Task",
"required": ["id", "role", "phase", "status", "priority"],
"properties": {
"id": {
"type": "string",
"pattern": "^[A-Z]+-[0-9]{3}$",
"description": "Unique task identifier (e.g., IMPL-001)"
},
"role": {
"type": "string",
"description": "Role name responsible for execution"
},
"phase": {
"type": "string",
"enum": ["spec", "impl", "test", "review"],
"description": "Execution phase"
},
"dependencies": {
"type": "array",
"items": {"type": "string", "pattern": "^[A-Z]+-[0-9]{3}$"},
"default": [],
"description": "List of task IDs that must complete first"
},
"status": {
"type": "string",
"enum": ["pending", "ready", "in_progress", "completed", "failed"],
"description": "Current task state"
},
"priority": {
"type": "string",
"enum": ["P0", "P1", "P2"],
"description": "Execution priority (P0 = highest)"
},
"metadata": {
"type": "object",
"properties": {
"created_at": {"type": "string", "format": "date-time"},
"updated_at": {"type": "string", "format": "date-time"},
"attempt_count": {"type": "integer", "minimum": 0},
"error_message": {"type": "string"}
}
}
}
}
2.2 Artifact Schema (JSON Schema)
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"title": "Artifact",
"required": ["artifact_id", "artifact_type", "path", "creator_role", "validation_status"],
"properties": {
"artifact_id": {
"type": "string",
"description": "Unique artifact identifier"
},
"artifact_type": {
"type": "string",
"enum": ["document", "code", "test", "config", "report"],
"description": "Type classification"
},
"path": {
"type": "string",
"description": "File system path relative to session directory"
},
"creator_role": {
"type": "string",
"description": "Role that produced this artifact"
},
"version": {
"type": "string",
"pattern": "^[0-9]+\\.[0-9]+$",
"description": "Semantic version (e.g., 1.0)"
},
"validation_status": {
"type": "string",
"enum": ["pending", "passed", "failed"],
"description": "Validation state"
},
"validation_summary": {
"type": "string",
"description": "Human-readable validation result"
},
"dependencies": {
"type": "array",
"items": {"type": "string"},
"default": [],
"description": "List of artifact IDs this depends on"
},
"metadata": {
"type": "object",
"properties": {
"created_at": {"type": "string", "format": "date-time"},
"task_id": {"type": "string", "pattern": "^[A-Z]+-[0-9]{3}$"},
"priority": {"type": "string", "enum": ["P0", "P1", "P2"]},
"file_size": {"type": "integer", "minimum": 0},
"checksum": {"type": "string"}
}
}
}
}
2.3 Role Schema (JSON Schema)
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"title": "Role",
"required": ["name", "type", "task_prefix", "injection_trigger"],
"properties": {
"name": {
"type": "string",
"description": "Role identifier"
},
"type": {
"type": "string",
"enum": ["coordinator", "pipeline", "specialist", "utility"],
"description": "Role classification"
},
"task_prefix": {
"type": "string",
"pattern": "^[A-Z]+-\\*$",
"description": "Task ID prefix pattern (e.g., IMPL-*)"
},
"injection_trigger": {
"type": "string",
"enum": ["always", "complexity", "keywords", "manual"],
"description": "Activation condition"
},
"injection_criteria": {
"type": "object",
"properties": {
"keywords": {"type": "array", "items": {"type": "string"}},
"complexity_threshold": {"type": "string", "enum": ["low", "medium", "high"]}
}
},
"capabilities": {
"type": "array",
"items": {"type": "string"},
"description": "List of capabilities"
},
"inner_loop": {
"type": "boolean",
"description": "Supports iterative refinement"
},
"phase_execution": {
"type": "array",
"items": {"type": "integer", "minimum": 1, "maximum": 5},
"description": "Execution phases (1-5)"
}
}
}
2.4 Session Schema (JSON Schema)
{
"$schema": "http://json-schema.org/draft-07/schema#",
"type": "object",
"title": "Session",
"required": ["session_id", "slug", "status", "pipeline_type"],
"properties": {
"session_id": {
"type": "string",
"pattern": "^TLS-[a-z0-9-]+-[0-9]{8}$",
"description": "Unique session identifier"
},
"slug": {
"type": "string",
"description": "Human-readable short name"
},
"created_at": {
"type": "string",
"format": "date-time",
"description": "Session creation timestamp"
},
"updated_at": {
"type": "string",
"format": "date-time",
"description": "Last state change timestamp"
},
"status": {
"type": "string",
"enum": ["created", "active", "paused", "completed", "archived", "failed"],
"description": "Session lifecycle state"
},
"pipeline_type": {
"type": "string",
"enum": ["spec-only", "impl-only", "full-lifecycle", "enhanced-parallel"],
"description": "Selected pipeline"
},
"artifact_registry": {
"type": "object",
"additionalProperties": {"$ref": "#/definitions/Artifact"},
"description": "Map of artifact_id to Artifact manifest"
},
"task_list": {
"type": "array",
"items": {"$ref": "#/definitions/Task"},
"description": "Ordered list of tasks"
},
"injected_roles": {
"type": "array",
"items": {"type": "string"},
"description": "Dynamically injected specialist roles"
},
"checkpoint_history": {
"type": "array",
"items": {
"type": "object",
"properties": {
"checkpoint_id": {"type": "string"},
"timestamp": {"type": "string", "format": "date-time"},
"user_action": {"type": "string", "enum": ["resume", "improve", "revise", "recheck", "feedback"]},
"context": {"type": "string"}
}
}
},
"session_directory": {
"type": "string",
"description": "File system path to session workspace"
}
}
}
3. Entity Relationships
┌─────────────────────────────────────────────────────────────────┐
│ Session │
│ - session_id │
│ - status: created|active|paused|completed|archived|failed │
│ - pipeline_type: spec-only|impl-only|full-lifecycle|enhanced │
├─────────────────────────────────────────────────────────────────┤
│ artifact_registry: Map<artifact_id, Artifact> │
│ task_list: Task[] │
│ injected_roles: string[] │
│ checkpoint_history: Checkpoint[] │
└──────────────┬──────────────────────────────┬───────────────────┘
│ │
│ 1:N │ 1:N
▼ ▼
┌───────────────┐ ┌──────────────┐
│ Artifact │ │ Task │
├───────────────┤ ├──────────────┤
│ artifact_id │ │ id │
│ artifact_type │ │ role ────────┼──┐
│ path │ │ phase │ │
│ creator_role ─┼──┐ │ dependencies │ │ N:1
│ validation_ │ │ │ status │ │
│ status │ │ │ priority │ │
│ dependencies ─┼──┼───┐ └──────┬───────┘ │
└───────────────┘ │ │ │ │
│ │ │ produces │
│ │ │ 1:1 │
│ │ ▼ │
│ │ ┌──────────────┐ │
│ └──────▶│ Artifact │ │
│ └──────────────┘ │
│ │
│ N:1 │
▼ ▼
┌──────────────┐ ┌──────────────┐
│ Role │ │ Role │
├──────────────┤ ├──────────────┤
│ name │ │ name │
│ type │ │ type │
│ task_prefix │ │ task_prefix │
│ injection_ │ │ injection_ │
│ trigger │ │ trigger │
│ capabilities │ │ capabilities │
└──────────────┘ └──────────────┘
Relationship Descriptions:
- Session → Task (1:N): A session contains multiple tasks in its task_list
- Session → Artifact (1:N): A session tracks multiple artifacts in its artifact_registry
- Task → Role (N:1): Each task is assigned to one role for execution
- Task → Artifact (1:1): Each task produces one primary artifact upon completion
- Task → Task (N:N): Tasks can depend on other tasks (dependencies field)
- Artifact → Role (N:1): Each artifact is created by one role (creator_role)
- Artifact → Artifact (N:N): Artifacts can depend on other artifacts (dependencies field)
4. State Machines
4.1 Task Status State Machine
┌─────────────┐
│ pending │ (initial state)
└──────┬──────┘
│
│ dependencies met
▼
┌─────────────┐
│ ready │
└──────┬──────┘
│
│ worker spawned
▼
┌─────────────┐
│ in_progress │
└──────┬──────┘
│
┌──────────┴──────────┐
│ │
│ success │ failure
▼ ▼
┌─────────────┐ ┌─────────────┐
│ completed │ │ failed │
└─────────────┘ └──────┬──────┘
│
│ retry (attempt_count++)
▼
┌─────────────┐
│ pending │
└─────────────┘
State Transitions:
pending → ready: All dependencies completedready → in_progress: Worker spawned by coordinatorin_progress → completed: Worker reports success via SendMessagein_progress → failed: Worker reports failure or timeoutfailed → pending: Coordinator triggers retry (with exponential backoff)
Terminal States: completed
Retry Logic: Failed tasks return to pending with incremented attempt_count. Max retries configurable (default: 3).
4.2 Session Lifecycle State Machine
┌─────────────┐
│ created │ (initial state)
└──────┬──────┘
│
│ first task spawned
▼
┌─────────────┐
│ active │◀──────────┐
└──────┬──────┘ │
│ │
┌──────────┴──────────┐ │
│ │ │
│ user pause │ resume│
▼ │ │
┌─────────────┐ │ │
│ paused │──────────────┘ │
└─────────────┘ │
│
┌─────────────┐ │
│ active │───────────┘
└──────┬──────┘
│
┌──────────┴──────────┐
│ │
│ all tasks done │ unrecoverable error
▼ ▼
┌─────────────┐ ┌─────────────┐
│ completed │ │ failed │
└──────┬──────┘ └──────┬──────┘
│ │
│ archive │ archive
▼ ▼
┌─────────────┐ ┌─────────────┐
│ archived │ │ archived │
└─────────────┘ └─────────────┘
State Transitions:
created → active: Coordinator spawns first batch of tasksactive → paused: User issues pause command or checkpoint requires reviewpaused → active: User issues resume commandactive → completed: All tasks in task_list reachcompletedstatusactive → failed: Unrecoverable error (e.g., circular dependency, resource exhaustion)completed → archived: Session archived after retention periodfailed → archived: Failed session archived after investigation
Terminal States: archived
Checkpoint Behavior: Session transitions to paused at quality checkpoints (e.g., after QUALITY-001). User actions (resume, improve, revise) transition back to active.
4.3 Artifact Validation State Machine
┌─────────────┐
│ pending │ (initial state)
└──────┬──────┘
│
│ validation triggered
▼
┌─────────────┐
│ validating │
└──────┬──────┘
│
┌──────────┴──────────┐
│ │
│ validation success │ validation failure
▼ ▼
┌─────────────┐ ┌─────────────┐
│ passed │ │ failed │
└─────────────┘ └──────┬──────┘
│
│ fix applied
▼
┌─────────────┐
│ pending │
└─────────────┘
State Transitions:
pending → validating: Coordinator triggers validation (e.g., quality gate check)validating → passed: Artifact meets quality criteriavalidating → failed: Artifact fails quality criteriafailed → pending: Worker applies fix and re-submits artifact
Terminal States: passed
Validation Gating: Downstream tasks blocked until upstream artifacts reach passed state.
5. Invariants and Constraints
5.1 Task Invariants
- Unique Task IDs: No two tasks in a session can have the same
id - Acyclic Dependencies: Task dependency graph must be a DAG (no cycles)
- Valid Dependencies: All task IDs in
dependenciesarray must exist in session's task_list - Priority Ordering: P0 tasks execute before P1, P1 before P2 (within same dependency level)
- Single Active Worker: A task can only be
in_progressfor one worker at a time
5.2 Artifact Invariants
- Unique Artifact IDs: No two artifacts in a session can have the same
artifact_id - Valid Creator Role:
creator_rolemust match a defined role in the system - Path Uniqueness: No two artifacts can have the same
pathwithin a session - Dependency Validity: All artifact IDs in
dependenciesarray must exist in artifact_registry
5.3 Session Invariants
- Unique Session IDs: No two sessions can have the same
session_id - Monotonic Timestamps:
updated_at>=created_at - Task Completeness: All tasks in
task_listmust reach terminal state before session can becompleted - Artifact Registry Consistency: All artifacts referenced in task metadata must exist in
artifact_registry
6. Usage Examples
6.1 Creating a Task
{
"id": "IMPL-001",
"role": "executor",
"phase": "impl",
"dependencies": ["PLAN-001"],
"status": "pending",
"priority": "P0",
"metadata": {
"created_at": "2026-03-05T10:00:00Z",
"updated_at": "2026-03-05T10:00:00Z",
"attempt_count": 0
}
}
6.2 Creating an Artifact Manifest
{
"artifact_id": "auth-service-impl-v1",
"artifact_type": "code",
"path": "artifacts/auth-service.ts",
"creator_role": "executor",
"version": "1.0",
"validation_status": "passed",
"validation_summary": "Code review passed: 95% test coverage, no security issues",
"dependencies": ["auth-service-plan-v1"],
"metadata": {
"created_at": "2026-03-05T11:30:00Z",
"task_id": "IMPL-001",
"priority": "P0",
"file_size": 15420,
"checksum": "sha256:abc123..."
}
}
6.3 Session State Example
{
"session_id": "TLS-auth-impl-20260305",
"slug": "auth-impl",
"created_at": "2026-03-05T09:00:00Z",
"updated_at": "2026-03-05T12:00:00Z",
"status": "active",
"pipeline_type": "impl-only",
"artifact_registry": {
"auth-service-plan-v1": { ... },
"auth-service-impl-v1": { ... }
},
"task_list": [
{"id": "PLAN-001", "status": "completed", ...},
{"id": "IMPL-001", "status": "in_progress", ...},
{"id": "TEST-001", "status": "pending", ...}
],
"injected_roles": ["security-expert"],
"checkpoint_history": [],
"session_directory": ".workflow/.team/TLS-auth-impl-20260305/"
}
7. Cross-References
- Artifact Contract Specification: artifact-contract-spec.md
- Execution Flow: execution-flow.md
- Core Concepts: core-concepts.md
- Role Specifications: ../roles/README.md