ProgrammeMemoryEventProgrammeMemoryEvent
retention: memory
A durable, immutable record of WHY a thing happened: opposition, off-record context, similar-pattern citations, assumptions, invalidations, reversal reasons, lessons learned. Not an audit log entry (the events table is that). Programme Memory is a first-class entity that drives Programme Memory queries and embeddings-based retrieval. Per-type visibility defaults per Q3 / scope spec section 3.6. Immutable: corrections require a new event.
RACI requirements
decision_maker- n/a
approver- n/a
reviewer- n/a
contributor- n/a
informed- n/a
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://gcc.bootminds.com/ontology/node-types/programme_memory_event.json",
"title": "ProgrammeMemoryEvent",
"description": "A durable, immutable record of WHY a thing happened: opposition, off-record context, similar-pattern citations, assumptions, invalidations, reversal reasons, lessons learned. Not an audit log entry (the events table is that). Programme Memory is a first-class entity that drives Programme Memory queries and embeddings-based retrieval. Per-type visibility defaults per Q3 / scope spec section 3.6. Immutable: corrections require a new event.",
"type": "object",
"x-node-type": "ProgrammeMemoryEvent",
"x-lifecycle-state-machine": null,
"x-raci-requirements": {
"decision_maker": "n/a",
"approver": "n/a",
"reviewer": "n/a",
"contributor": "n/a",
"informed": "n/a"
},
"x-retention-class": "memory",
"required": [
"node_id",
"node_type",
"tenant_id",
"attributes",
"state",
"created_at",
"created_by"
],
"properties": {
"node_id": {
"type": "string",
"format": "uuid"
},
"node_type": {
"const": "ProgrammeMemoryEvent"
},
"tenant_id": {
"type": "string",
"format": "uuid"
},
"state": {
"const": "captured",
"description": "Programme Memory Events are immutable upon capture. Corrections are new events that reference the original via supersedes edges, not in-place edits."
},
"attributes": {
"type": "object",
"additionalProperties": false,
"required": [
"type",
"narrative",
"target_object_refs",
"captured_by_ref",
"captured_at",
"visibility_tier",
"is_immutable"
],
"properties": {
"type": {
"type": "string",
"enum": [
"opposition",
"off_record_context",
"similar_pattern",
"assumption",
"invalidation",
"reversal_reason",
"lessons_learned"
],
"description": "Memory event type. Per-type visibility defaults are encoded in registry data (section 3.6)."
},
"narrative": {
"type": "string",
"minLength": 1,
"description": "The why narrative. Embedded for AI retrieval; surfaces on object detail views subject to the visibility tier and the AI-output-side visibility filter (section 3.6.1)."
},
"target_object_refs": {
"type": "array",
"minItems": 1,
"description": "Objects this memory event annotates (typically a Decision, but may include Capability, Milestone, Assumption, etc.).",
"items": {
"type": "object",
"additionalProperties": false,
"required": [
"object_type",
"object_id"
],
"properties": {
"object_type": {
"type": "string",
"enum": [
"Decision",
"Capability",
"Milestone",
"Gate",
"TransitionWave",
"Risk",
"Assumption",
"Issue",
"Stakeholder",
"Document",
"Workstream"
]
},
"object_id": {
"type": "string",
"format": "uuid"
}
}
}
},
"captured_by_ref": {
"type": "string",
"format": "uuid",
"description": "Stakeholder UUID of the capturer."
},
"captured_at": {
"type": "string",
"format": "date-time",
"description": "Wall-clock time of capture."
},
"visibility_tier": {
"type": "string",
"enum": [
"AdvisorOnly",
"RaciInner",
"RaciInnerPlusContributors",
"RaciInnerPlusInformed",
"AllStakeholders"
],
"description": "Q3: visibility tier for this event. Defaults per type (section 3.6); capturer may widen; Tenant Admin may raise globally; never narrows below the per-type minimum."
},
"is_immutable": {
"type": "boolean",
"const": true,
"description": "Always true. Memory events cannot be edited; corrections are new events linked via supersedes edges."
},
"supersedes_event_ref": {
"type": [
"string",
"null"
],
"format": "uuid",
"description": "If this event supersedes a prior memory event (e.g., a correction or expansion), the prior ProgrammeMemoryEvent UUID. Null for original events."
}
}
},
"created_at": {
"type": "string",
"format": "date-time"
},
"created_by": {
"type": "string",
"format": "uuid"
},
"updated_at": {
"type": "string",
"format": "date-time"
}
}
}