luplo.core.import_pipeline.manifest

Pydantic models for the ImportManifest contract.

The manifest is what begin emits to the calling agent. Schema changes are contract-breaking — all surfaces (CLI, MCP, slash command, future Codex/Gemini wrappers) consume this shape. Snapshot tests in tests/snapshots/import/ guard against accidental drift.

Classes

SourceFile

One source markdown file (spec or plan) bundled into the manifest.

ManifestSources

Source bundle: spec and/or plan. At least one must be present.

ProtocolBlock

Agent-facing protocol rules and verification metadata.

ImportManifest

Contract emitted by begin — read by the agent, agent-agnostic.

Module Contents

class luplo.core.import_pipeline.manifest.SourceFile

Bases: pydantic.BaseModel

One source markdown file (spec or plan) bundled into the manifest.

model_config
path: str
content_hash: str
raw_markdown: str
class luplo.core.import_pipeline.manifest.ManifestSources

Bases: pydantic.BaseModel

Source bundle: spec and/or plan. At least one must be present.

spec: SourceFile | None = None
plan: SourceFile | None = None
class luplo.core.import_pipeline.manifest.ProtocolBlock

Bases: pydantic.BaseModel

Agent-facing protocol rules and verification metadata.

rules: list[str]
verification: dict[str, Any]
notices: list[str]
class luplo.core.import_pipeline.manifest.ImportManifest

Bases: pydantic.BaseModel

Contract emitted by begin — read by the agent, agent-agnostic.

bundle_id: str
dest_lang: str | None
repo_root: str
sources: ManifestSources
protocol: ProtocolBlock
at_least_one_source() ImportManifest

Ensure the manifest carries at least one of spec or plan.