Data Model: Autonomous Runtime Safety Follow-ups
RetrospectiveRecord
Existing on-disk YAML record at .kittify/missions/<mission_id>/retrospective.yaml.
Relevant fields:
mission_idmission_slugmission_typetarget_branchcreated_atcreated_bypolicy_sourcefindings_statusevidence_refsgenerator_versionprovenance_history- proposal/findings fields already consumed by synthesize
Invariant: any field written by retrospect create must be accepted by agent retrospect synthesize.
DecisionRecord
Existing persisted decision state used by decision open, defer, resolve, cancel, verify, and acceptance gates.
Relevant statuses:
explicit closure-verb approach
opendeferredresolvedcanceled- optional new
resolved_with_defaultonly if implementation chooses the
Invariant: a decision that was deferred may be terminally closed by an explicit final/default answer. Closed decisions do not require an inline [NEEDS CLARIFICATION] marker.
WorkPackageFrontmatter
Existing YAML frontmatter on kitty-specs/<slug>/tasks/WP##-*.md.
Relevant fields:
work_package_iddependenciesowned_filesauthoritative_surfaceexecution_moderequirement_refs
Invariant: code-change WP owned_files must not include kitty-specs/ paths unless the runtime has a first-class mission-branch routing model for those paths. This mission plans rejection at finalization time.
BulkEditPlanningClassification
Derived runtime classification for one claimed WP during implementation pre-flight.
Inputs:
- mission
meta.jsonchange_mode - spec bulk-edit inference score
- claimed WP id
- claimed WP
owned_files - presence/validity of
occurrence_map.yaml
Invariant: a WP that authors occurrence_map.yaml is a planning-artifact WP, not an active rewrite WP. Active rewrite WPs still require the existing bulk-edit gate.
LanesManifest
Existing lanes.json structure.
Relevant fields:
lanes[].lane_idlanes[].wp_idslanes[].write_scopelanes[].depends_on_laneslanes[].parallel_groupcollapse_report.events[]
Invariant: lane collapse must prevent write conflicts but should not serialize disjoint upstream workstreams solely because they feed a downstream fan-in WP.