COS v0.2 Draft ChaptersSingle pageJSON Schema

Context Object Specification (COS)

Version: 0.2
Chapter: 310 — Pipeline Stages
Status: Normative — Runtime Profile
Category: Pipeline Model


1. Purpose

This chapter defines the Pipeline Stage Model of the Context Object Specification (COS).

Pipeline Stages are the fundamental execution units responsible for progressively enriching ContextState during Pipeline execution.

This chapter defines:


2. Definition

A Pipeline Stage is an isolated enrichment unit that receives ContextState and produces an updated ContextState.

Conceptually:

ContextState
|
▼
Pipeline Stage
|
▼
Enriched ContextState

A Stage represents one specific capability within the Context Enrichment Pipeline.


3. Core Principle

Pipeline Stages follow:

Single Responsibility + Incremental Enrichment

Each Stage:

MUST:

MUST NOT:


4. Stage Model

A Pipeline Stage is represented as:

interface PipelineStage {
  id: string;
  name: string;
  execute(
    context: ContextState
  ): Promise<StageResult>;
}

5. Stage Identity

Each Stage MUST have a unique identifier.

interface StageIdentity {
  id: string;
  version: string;
}

The identity is used for:

6. Stage Input

Each Stage receives:

interface StageInput {
  context: ContextState;
}

A Stage MUST NOT require hidden state.

All required information MUST be accessible through:

7. Stage Output

A Stage returns:

interface StageResult {
  status: StageStatus;
  context?: ContextState;
  metadata?: StageMetadata;
}

8. Stage Status

type StageStatus =
  | "success"
  | "failed"
  | "skipped";

9. Successful Execution

A successful Stage:

MUST:

Example:

Before:

ContextState
 ├── Selection
 └── Document


After SemanticStage:

ContextState
 ├── Selection
 ├── Document
 └── Semantic

10. Failed Execution

A failed Stage MUST:

Example:

SemanticStage

FAILED

Result:

ContextState
 ├── Selection
 ├── Document
 └── Metadata(error)

A failed Stage MUST NOT destroy previously generated context.

11. Skipped Execution

A Stage MAY be skipped when:

Skipped execution MUST be observable through metadata.

12. Stage Ordering

Stages execute according to Pipeline configuration.

Default COS execution order:

Selection Stage
        ↓
Source Stage
        ↓
Context Stage
        ↓
Meta Stage

Optional stages MAY run after the lean Context Object is constructed:

Extension Stage
        ↓
Product Recommendation Stage

13. Stage Dependency

A Stage MAY depend on previous enrichment results.

Example:

Context Stage

requires:

Selection
Source

A Stage MUST explicitly declare required capabilities.

14. Stage Capability Model

Stages SHOULD expose their capabilities.

interface StageCapability {
  provides: string[];
  requires: string[];
}

Example:

{
  "provides": [
    "context.segments"
  ],
  "requires": [
    "selection",
    "source"
  ]
}

15. Built-in Stages

COS v0.2 defines the following standard stages:

15.1 Selection Stage

Purpose:

Initialize ContextState from Adapter output or direct Pipeline input.

Provides:

Selection Context

Responsibilities:

15.2 Source Stage

Purpose:

Attach source-level context.

Provides:

Source Context

Responsibilities:

15.3 Context Stage

Purpose:

Construct the local context needed by Consumers.

Provides:

Context

Responsibilities:

15.4 Meta Stage

Purpose:

Record minimal object generation metadata.

Provides:

Meta

Responsibilities:

15.5 Extension Stage

Purpose:

Attach optional platform-specific or debug information.

Provides:

Extensions

Responsibilities:

15.6 Product Recommendation Stage

Purpose:

Derive optional product-level actions outside the lean core object.

Product Recommendations

Responsibilities:

16. Stage Isolation

Each Stage MUST be isolated.

A Stage:

MAY:

MUST NOT:

17. Custom Stages

Implementations MAY introduce custom stages.

Custom stages MUST:

Examples:

PDFAnnotationStage

CodeAnalysisStage

VisionSemanticStage

Custom stages MAY be contributed by Plugins.

A Plugin MAY register multiple custom stages.

Each registered Stage MUST declare the Plugin that provides it.

One Stage SHOULD belong to one Plugin for lifecycle and compatibility purposes.

If multiple stages provide the same capability, the Pipeline configuration MUST select one provider explicitly or define a deterministic ordering rule.

A custom Stage MUST NOT silently override a built-in Stage that provides the same capability.

18. Stage Observability

Each Stage execution SHOULD produce trace information:

interface StageMetadata {
  stageId: string;
  startedAt?: number;
  completedAt?: number;
  durationMs?: number;
}

This information is consumed by Metadata Layer.

19. Relationship to Pipeline

Pipeline manages:

Stages manage:

Relationship:

Pipeline
    |
    +-- Stage 1
    |
    +-- Stage 2
    |
    +-- Stage 3

20. Summary

Pipeline Stages define the executable units of COS enrichment.

A Stage is intentionally small, isolated, and additive.

Through Stage composition, COS enables different implementations while preserving a stable Context Object model.