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:

yaml
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:

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

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

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

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

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

yaml
# 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.

yaml
# 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.

yaml
# 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:

yaml
# 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:

bash
cco task --repo /path/to/project --task "Add retry logic to payment processor"

CCO's retrieval system:

  1. Matches task scope to the payments component based on path patterns
  2. Boosts documents in src/payments by +15
  3. Boosts documents mentioning payment-analyst by +8
  4. Routes the task to agents specialized in payments

Python API

CCO provides a Python API for programmatic manifest operations:

python
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:

python
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:

python
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:

python
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:

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