Manifest System
Structured project configuration for large project scaling.
What is the Manifest System?
The Manifest System provides structured project configuration that enables CCO to understand your project's architecture at scale. When working with large projects containing multiple components, the manifest file helps the orchestrator:
- Understand component boundaries and dependencies
- Route tasks to the most appropriate agent based on component ownership
- Prioritize context retrieval from relevant component paths
- Detect structural issues before they cause problems
When to Use Manifest
Scaling beyond simple repository structure
Use the manifest system when your project has:
- Multiple independently deployable components
- Complex dependency graphs between modules
- Different teams owning different parts of the codebase
- Need for precise context boosting based on task scope
Manifest File
The codified-manifest.yaml file lives at your workspace root and defines the complete structure of your project:
workspace/ ├── codified-manifest.yaml # Project manifest ├── src/ ├── tests/ └── docs/
The manifest is optional. CCO will function without it, but without the context boosting and validation features described in this guide.
Manifest Schema
The manifest uses a structured YAML format with components, dependencies, and agent assignments:
name: "project-name"
version: "1.0"
components:
- name: "component-name"
path: "src/component"
dependencies: ["other-component"]
agents: ["planner", "implementer"]
This schema enables:
- Project-wide naming for tooling integration
- Version tracking for migration and compatibility
- Component-level isolation for safe refactoring
- Agent-based routing for specialized handling
Component Definition
Each component in the manifest consists of four key fields:
name Required
Unique identifier for the component
A lowercase identifier used to reference this component from dependencies and agent routing. Must be unique within the project.
components:
- name: "user-service" # Unique name
path: "services/user"
path Required
Location of component files
Relative path from the workspace root where this component's files are located. Used for context boosting and boundary detection.
components:
- name: "auth"
path: "src/auth" # All auth-related code
dependencies Optional
Components this component depends on
List of other component names that this component depends on. Used for dependency validation and topological ordering.
components:
- name: "api"
path: "src/api"
dependencies: # These components must exist
- "database"
- "auth"
agents Optional
Specialized agents for this component
List of agent names that have special knowledge about this component. Used for task routing when the task scope matches this component.
components:
- name: "payments"
path: "src/payments"
agents: # Route payment tasks to specialist
- "payment-analyst"
- "compliance-reviewer"
Validation Features
CCO performs rigorous validation on manifest files to catch errors early:
Circular Dependency Detection
Prevents impossible component relationships
CCO builds a dependency graph and detects cycles. If component A depends on B, and B depends on A, validation fails with a clear error message.
# This will fail validation:
# Error: Circular dependency detected: api -> database -> api
components:
- name: "api"
dependencies: ["database"]
- name: "database"
dependencies: ["api"]
Forward Reference Support
Order-independent component definitions
Components can reference other components regardless of definition order. CCO resolves all references before validation.
# Valid: ui can depend on api even if api is defined later
components:
- name: "ui"
dependencies: ["api"] # Forward reference - OK
- name: "api"
path: "src/api"
Duplicate Name/Path Checking
Ensures unique identifiers and paths
Validation fails if two components share the same name or if a component's path overlaps with another's path.
# This will fail validation:
# Error: Duplicate component name 'auth'
components:
- name: "auth"
path: "src/auth"
- name: "auth" # Duplicate - validation fails
path: "lib/auth"
Integration with Retrieval
When a manifest is present, CCO boosts the relevance scores of documents based on task scope and component matching:
# Manifest component path matching
components:
- name: "payments"
path: "src/payments"
agents: ["payment-analyst"]
Context Boosting Rules
CCO applies scoring bonuses when retrieving context:
Component Path Boost (+15)
Documents in manifest component paths
Any document located within a component's defined path receives a +15 relevance bonus. This ensures component-specific documents are prioritized when working within that component's scope.
Agent Role Boost (+8)
Documents matching manifest agent roles
Documents that mention agents listed in a component's agents field receive an +8 bonus. This helps route tasks to documents that are relevant to the specialized agents involved.
Boost scores are cumulative. A document matching both component path and agent role would receive +23 total boost.
Example: Task Routing with Manifest
When you run a task that modifies payment logic:
cco task --repo /path/to/project --task "Add retry logic to payment processor"
CCO's retrieval system:
- Matches task scope to the
paymentscomponent based on path patterns - Boosts documents in
src/paymentsby +15 - Boosts documents mentioning
payment-analystby +8 - Routes the task to agents specialized in payments
Python API
CCO provides a Python API for programmatic manifest operations:
from codified_orchestrator.manifest import load_manifest, validate_manifest
manifest = load_manifest(Path("/path/to/workspace"))
is_valid, errors = validate_manifest(manifest)
Loading a Manifest
The load_manifest function reads and parses a manifest file:
from pathlib import Path
from codified_orchestrator.manifest import load_manifest
# Load manifest from workspace root
workspace = Path("/path/to/your/project")
manifest = load_manifest(workspace)
print(f"Project: {manifest.name}")
print(f"Components: {len(manifest.components)}")
Validating a Manifest
The validate_manifest function checks for structural issues:
from pathlib import Path
from codified_orchestrator.manifest import load_manifest, validate_manifest
workspace = Path("/path/to/your/project")
manifest = load_manifest(workspace)
is_valid, errors = validate_manifest(manifest)
if not is_valid:
print("Manifest validation failed:")
for error in errors:
print(f" - {error}")
else:
print("Manifest is valid!")
Working with Components
Access component data programmatically:
from pathlib import Path
from codified_orchestrator.manifest import load_manifest
manifest = load_manifest(Path("/path/to/workspace"))
# Iterate over all components
for component in manifest.components:
print(f"{component.name}: {component.path}")
print(f" Dependencies: {component.dependencies}")
print(f" Agents: {component.agents}")
# Find specific component
payment_component = next(
(c for c in manifest.components if c.name == "payments"),
None
)
if payment_component:
print(f"Payments path: {payment_component.path}")
Dependency Resolution
Resolve component dependencies in topological order:
from pathlib import Path
from codified_orchestrator.manifest import load_manifest, get_build_order
manifest = load_manifest(Path("/path/to/workspace"))
# Get components in dependency order
build_order = get_build_order(manifest.components)
for component in build_order:
print(f"Build: {component.name}")
The Manifest System is ready to use. Add a codified-manifest.yaml to your project root to enable structured configuration and context boosting.