""" Change Tracking Schema Defines changes made during incremental updates to enable: - Traceability (what changed and why) - Reversibility (ability to undo changes) - Version history (changelog generation) """ # ============================================================================ # Change Operations # ============================================================================ schema AddTaskservChange: """Add a new taskserv requirement""" taskserv_name: str version: str profile: str = "default" reason: str schema RemoveTaskservChange: """Remove a taskserv requirement""" taskserv_name: str reason: str schema UpdateTaskservChange: """Update an existing taskserv""" taskserv_name: str old_version?: str new_version?: str old_profile?: str new_profile?: str reason: str schema UpdateFieldChange: """Update a configuration field""" schema_name: str field_name: str old_value?: str new_value: str reason: str schema PreserveCustomizationChange: """Marker: this customization was preserved""" location: str # Path in declaration value: str # Preserved value reason: str = "User customization preserved" # ============================================================================ # Change Record # ============================================================================ schema Change: """ Single tracked change during merge """ kind: str # "add_taskserv", "update_field", etc. timestamp: str # ISO 8601 author?: str breaking: bool = False # Is this a breaking change? details: {str: str} # Operation-specific details check: len(kind) > 0, "Change kind required" # ============================================================================ # Merge Result # ============================================================================ schema MergeResult: """ Result of incremental merge operation """ success: bool changes: [Change] = [] preserved_customizations: [str] = [] conflicts: [str] = [] version_bumped?: "major" | "minor" | "patch" new_version?: str warning_messages: [str] = [] # ============================================================================ # Changelog Entry # ============================================================================ schema ChangelogEntry: """ Entry in workspace changelog """ version: str date: str # ISO 8601 changes_summary: [str] breaking_changes: [str] = [] merged_by?: str