Interface DucCharter

The project-level identity and reasoning anchor.

A Charter holds what an engineer or agent needs to understand what the project is trying to achieve and why the current artifact state exists.

interface DucCharter {
    closedReason?: string;
    constraints: DucCharterConstraint[];
    decisions: DucCharterDecision[];
    description?: string;
    objective: string;
    phase: DucCharterPhase;
    requirements: DucCharterRequirement[];
    stakeholders?: { actor: Actor; role: string }[];
    title: string;
    updatedAt: number;
}

Properties

closedReason?: string

Required when phase is "closed". Records the reason for the Charter to be closed.

constraints: DucCharterConstraint[]

Conditions that bound the solution space, including explicit scope exclusions. Hard constraints are non-negotiable; soft constraints are strong preferences.

decisions: DucCharterDecision[]

The resolved choices that define the current project direction. Only decisions significant enough to explain why the artifact is in its current state belong here. Everything else lives in issues.

description?: string

Orientation: what kind of project this is and the context needed to read the charter

objective: string

Why this project exists and what concrete outcome it must reach. This is the single most important field in the Charter — every requirement, constraint, and decision should be traceable back to it.

requirements: DucCharterRequirement[]

What the project outcome must do or be. Scope exclusions and solution-space limits belong in constraints, not here.

stakeholders?: { actor: Actor; role: string }[]

Everyone with a stake in the project outcome — active contributors or not.

title: string
updatedAt: number

Unix epoch milliseconds of the last Charter update.