Skip to content

symfonic.devtools.ownership.model

model

Value types for the task-and-module ownership manifest (T1.2.7).

OwnershipManifest dataclass

OwnershipManifest(path: Path, authoritative_waves: tuple[str, ...], scheduled_wave: str, waves: dict[str, tuple[str, ...]], tasks: dict[str, TaskRow], plan: str = '')

The parsed rolling manifest: wave rosters plus per-task rows.

OwnershipViolation dataclass

OwnershipViolation(rule: str, message: str, tasks: tuple[str, ...] = tuple())

One validation failure; tasks lists every implicated task ID.

TaskRow dataclass

TaskRow(task_id: str, wave: str, status: str, title: str = '', agent: str = '', complete: bool = False, current: tuple[str, ...] = (), target: tuple[str, ...] = (), exclusive_write: tuple[str, ...] = (), shared_read: tuple[str, ...] = (), split_points: tuple[str, ...] = (), handoff: tuple[str, ...] = ())

One manifest row: what a plan task may read, write, and hand off.

exclusive_write globs are the only paths the task may create or modify; shared_read names the read-only contracts it consumes; handoff lists the task IDs whose outputs it builds on (the plan's depends_on edges, which also order tasks for the overlap check). Rows with status advisory are speculative sketches for later waves and are never treated as authoritative.