MilestoneMilestone
retention: operational
state machine: milestone
A time-bound event in the programme (e.g., 'Entity incorporated', 'First payroll run from GCC'). Milestones are sequenced under Gates and blocked by open Decisions.
RACI requirements
decision_maker- required
approver- optional
reviewer- optional
contributor- optional
informed- optional
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://gcc.bootminds.com/ontology/node-types/milestone.json",
"title": "Milestone",
"description": "A time-bound event in the programme (e.g., 'Entity incorporated', 'First payroll run from GCC'). Milestones are sequenced under Gates and blocked by open Decisions.",
"type": "object",
"x-node-type": "Milestone",
"x-lifecycle-state-machine": "milestone",
"x-raci-requirements": {
"decision_maker": "required",
"approver": "optional",
"reviewer": "optional",
"contributor": "optional",
"informed": "optional"
},
"x-retention-class": "operational",
"required": [
"node_id",
"node_type",
"tenant_id",
"attributes",
"state",
"created_at",
"created_by"
],
"properties": {
"node_id": {
"type": "string",
"format": "uuid"
},
"node_type": {
"const": "Milestone"
},
"tenant_id": {
"type": "string",
"format": "uuid"
},
"state": {
"type": "string",
"enum": [
"Planned",
"InFlight",
"AtRisk",
"Slipped",
"Achieved"
],
"description": "Milestone lifecycle state. Transitions governed by the 'milestone' state machine. MilestoneSlipped emits a first-class event used by Programme Confidence scoring."
},
"attributes": {
"type": "object",
"additionalProperties": false,
"required": [
"name",
"due_date",
"exit_criteria"
],
"properties": {
"name": {
"type": "string",
"minLength": 1,
"description": "Short milestone name."
},
"description": {
"type": "string",
"description": "Optional longer description of what 'achieving' this milestone means."
},
"due_date": {
"type": "string",
"format": "date",
"description": "Committed due date (ISO 8601 date)."
},
"owner_id_ref": {
"type": [
"string",
"null"
],
"format": "uuid",
"description": "Stakeholder UUID accountable for this milestone (RACI Decision-maker, denormalised for convenience)."
},
"exit_criteria": {
"type": "array",
"description": "Free-text criteria that must be satisfied for the milestone to transition to Achieved.",
"items": {
"type": "string",
"minLength": 1
}
},
"achieved_at": {
"type": [
"string",
"null"
],
"format": "date-time",
"description": "Actual achievement timestamp; null until state == Achieved."
},
"slipped_to_date": {
"type": [
"string",
"null"
],
"format": "date",
"description": "If state == Slipped, the revised target date. Used by Programme Confidence schedule realism component."
}
}
},
"created_at": {
"type": "string",
"format": "date-time"
},
"created_by": {
"type": "string",
"format": "uuid"
},
"updated_at": {
"type": "string",
"format": "date-time"
}
}
}