24 files. Implements the `hashline_edit` tool — hash-anchored file editing where every line reference includes a content hash (`LINE#ID`). Validates hashes before applying edits, rejecting stale references.
## THREE-OP MODEL
All edits use exactly 3 operations:
| Op | pos | end | lines | Effect |
|----|-----|-----|-------|--------|
| `replace` | required | optional | required | Replace single line or range pos..end |
| `append` | optional | optional | required | Insert after anchor (or EOF if no anchor) |
| `prepend` | optional | optional | required | Insert before anchor (or BOF if no anchor) |
`lines: null` or `lines: []` with `replace` = delete. `delete: true` at tool level = delete file.
## EXECUTION PIPELINE
```
hashline-edit-executor.ts
→ normalize-edits.ts # Parse RawHashlineEdit → HashlineEdit (validate op schema)
→ validation.ts # Validate LINE#ID references (hash match, line exists)
→ edit-ordering.ts # Sort bottom-up (by line number, descending)
→ edit-deduplication.ts # Remove duplicate ops
→ edit-operations.ts # Apply each op using edit-operation-primitives.ts