Intent
Make controlled changes to persistent state with safety guarantees. This is the primary capability for modifications and REQUIRES a checkpoint for rollback capability.
CRITICAL: This capability requires checkpoint to have been called first.
Success criteria:
- State change applied correctly
- Previous state captured for rollback
- Change is verifiable
- Audit trail recorded
Compatible schemas:
schemas/output_schema.yaml
Inputs
| Parameter | Required | Type | Description |
|-----------|----------|------|-------------|
| target | Yes | string | What to modify (file path, resource identifier) |
| operation | Yes | object | The modification to apply |
| checkpoint_id | Yes | string | Checkpoint ID for rollback (from checkpoint capability) |
Procedure
-
Verify checkpoint exists: Ensure recovery is possible
- Confirm checkpoint_id references valid checkpoint
- Verify checkpoint covers the target
- STOP if no valid checkpoint
-
Capture previous state: Record what will change
- Read current state of target
- Store for comparison and rollback
- Document what specifically will change
-
Apply mutation: Make the change
- Execute the specified operation
- Use appropriate tool (Edit for files, Bash for commands)
- Capture any errors during modification
-
Verify change: Confirm mutation succeeded
- Read new state
- Compare to expected result
- Note any unexpected side effects
-
Record mutation: Document what changed
- Store diff between previous and new state
- Record timestamp and operation details
- Link to checkpoint for audit trail
-
Return result: Provide complete mutation record
- Include success/failure status
- Provide before/after state
- Reference checkpoint for rollback
Output Contract
Return a structured object:
success: boolean # Whether mutation completed
target: string # What was modified
operation: string # What was done
previous_state:
snapshot: any # State before mutation
captured_at: string # When captured
new_state:
snapshot: any # State after mutation
verified_at: string # When verified
diff:
type: string # unified, structural, summary
content: string # The actual diff
checkpoint_id: string # For rollback reference
rollback_command: string # How to undo this change
evidence_anchors: ["file:line", "command:output"]
Field Definitions
| Field | Type | Description |
|-------|------|-------------|
| success | boolean | Whether mutation completed successfully |
| target | string | Resource that was modified |
| operation | string | Description of the change |
| previous_state | object | State before modification |
| new_state | object | State after modification |
| diff | object | Difference between states |
| checkpoint_id | string | Reference for rollback |
| rollback_command | string | How to undo the change |
Examples
Example 1: File Modification
Input:
target: "src/services/user_service.rb"
operation:
type: "edit"
description: "Add null check for user parameter"
changes:
- line: 42
old: "user.email"
new: "user&.email"
checkpoint_id: "chk-20240115-001"
Output:
success: true
target: "src/services/user_service.rb"
operation: "Added safe navigation operator for null user handling"
previous_state:
snapshot: "def get_email(user)\n user.email\nend"
captured_at: "2024-01-15T10:30:00Z"
new_state:
snapshot: "def get_email(user)\n user&.email\nend"
verified_at: "2024-01-15T10:30:01Z"
diff:
type: "unified"
content: |
@@ -42 +42 @@
- user.email
+ user&.email
checkpoint_id: "chk-20240115-001"
rollback_command: "git checkout src/services/user_service.rb"
evidence_anchors:
- "src/services/user_service.rb:42"
Example 2: Database Mutation
Input:
target: "users table"
operation:
type: "sql"
description: "Add status column with default value"
sql: "ALTER TABLE users ADD COLUMN status VARCHAR(20) DEFAULT 'active'"
checkpoint_id: "chk-20240115-002"
Output:
success: true
target: "users table"
operation: "Added status column with default 'active'"
previous_state:
snapshot:
columns: ["id", "email", "created_at"]
captured_at: "2024-01-15T11:00:00Z"
new_state:
snapshot:
columns: ["id", "email", "created_at", "status"]
verified_at: "2024-01-15T11:00:05Z"
diff:
type: "structural"
content: "+ status VARCHAR(20) DEFAULT 'active'"
checkpoint_id: "chk-20240115-002"
rollback_command: "ALTER TABLE users DROP COLUMN status"
evidence_anchors:
- "command:psql:schema_after"
Example 3: Mutation Failure
Input:
target: "config/database.yml"
operation:
type: "edit"
description: "Update connection pool size"
checkpoint_id: "chk-20240115-003"
Output:
success: false
target: "config/database.yml"
operation: "Update connection pool size (FAILED)"
previous_state:
snapshot: "pool: 5"
captured_at: "2024-01-15T12:00:00Z"
new_state:
snapshot: null
verified_at: null
diff:
type: "none"
content: "Mutation failed: file locked by another process"
checkpoint_id: "chk-20240115-003"
rollback_command: "N/A - mutation did not complete"
evidence_anchors:
- "error:file_locked"
error:
message: "File locked by another process"
recoverable: true
suggestion: "Retry after process releases lock"
Verification
- [ ] Checkpoint exists and is valid
- [ ] Previous state captured before mutation
- [ ] New state verified after mutation
- [ ] Diff accurately reflects change
- [ ] Rollback command is correct
Verification tools: Read (to verify state changes)
Safety Constraints
mutation: truerequires_checkpoint: truerequires_approval: truerisk: high
Capability-specific rules:
- NEVER mutate without valid checkpoint
- Always capture previous state before modification
- Verify change matches intended operation
- Provide working rollback mechanism
- Stop immediately on unexpected errors
- Do not chain multiple mutations without intermediate checkpoints
Composition Patterns
Commonly follows:
checkpoint- REQUIRED before any mutationplan- Mutations execute planned changesverify- Verify preconditions before mutating
Commonly precedes:
verify- Verify mutation resultsaudit- Record mutation for audit trailrollback- Undo mutation if verification fails
Anti-patterns:
- NEVER mutate without checkpoint
- Never combine multiple risky mutations
- Avoid mutation in exploratory workflows
Workflow references:
- See
reference/workflow_catalog.yaml#debug_code_changefor mutation in bug fixes - See
reference/workflow_catalog.yaml#digital_twin_sync_loopfor mutation in sync loops
Scan to join WeChat group