2025-12-11 22:17:44 +00:00

102 lines
2.6 KiB
Plaintext

"""
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