agent-file-tools 0.52.1

Agent File Tools — tree-sitter powered code analysis for AI agents
Documentation
# Hashline oracle corpus

This directory is the slice-1 parity boundary for the hashline surface.  The
semantic oracle is `oh-my-pi/packages/hashline` at revision
`45e12e5bb758198a920c6070e7e64cb33b21beac`.  The full revision is repeated in
`manifest.json` and `oracle_revision.txt`; it must not be replaced by a branch
name or a moving dependency.

## Reproducible generation

Regeneration uses only Python 3's standard library.  It does not import AFT,
load a Cargo workspace, access Bun, or read a network checkout:

```text
python3 crates/aft/src/hashline/oracle/regenerate.py
python3 crates/aft/src/hashline/oracle/regenerate.py --check
```

The second command compares every generated byte with the committed files.
The manifest records each output's SHA-256 and the fixture count.  JSONL rows
use sorted keys and one newline per row; this keeps diffs reviewable and makes
byte-for-byte reproduction observable.

## Corpus contract

`fixtures.jsonl` contains the pinned operation corpus.  It has both accepted
and rejected rows for `PUT`, `CUT`, `REM`, and `MV`, plus LF, CRLF, mixed
terminators, BOM, empty files, missing final newlines, BOF, EOF, `$`, gaps,
one-line files, empty-file boundaries, all four repair layers, register
shapes, and mutation-checked negative controls.  Every row records the oracle
revision and exact initial bytes as base64.

The only registered deviation categories are exactly:

1. `block-resolver-span` — native BlockResolver spans may differ for JSX.
2. `strict-exact-byte-verification` — AFT rejects addressed raw-byte drift
   even when normalized oracle text would remain accepted.
3. `same-path-section-composition` — AFT composes sections resolving to one
   canonical path in patch order against tag-anchored pre-request coordinates,
   while the pinned oracle's `assertUniqueCanonicalPaths` rejects that input.
   The owner approved this model-ergonomics deviation on 2026-08-23.

The manifest's deviation-control rows are required to fail if either row-level
registered deviation silently disappears.  The third category uses the named
pinned-oracle rejection and AFT end-to-end patch controls because JSONL rows are
single-operation, single-address fixtures.  A fourth category requires the same
explicit owner-decision, written-justification, and two-sided-control process.

## xxHash32 parity

`xxhash32_seed_zero.json` contains seed-zero vectors and
`tag_normalization.json` contains raw/normalized tag vectors.  The three
literal anchors in the generator and the Rust unit tests (`empty`, `a`, and
`abc`) are independent cross-language checks.  `xxhash32_vectors.rs` lets the
Rust tests validate every committed digest without a JSON or AFT dependency.
The tag implementation strips only `[ \\t\\r]+` immediately before LF and at
EOF, then renders the low sixteen bits as uppercase hexadecimal.