My own corner of monopam
README.md

Reference-transaction oracle #

REGEN=1 dune build @ocaml-git/test/interop/reference-transaction/traces/regen records the public Git CLI behavior. The generator requires Git 2.54.0, records the exact distribution string in traces/git-version, and refuses a changed version or changed observed rejection semantics. Python uses only its standard library. No personal checkout or oracle build is required.

The committed CSV records prepared rejection, exact phases, successful same-ref CAS reentry during aborted, the original and final tips, and owned lock count. Normal native tests replay it; system Git is used only as the concurrent CAS actor, with its hooks disabled and file-lock retry set to zero.

The oracle was generated with Git 2.54.0 (Apple Git-157). The published githooks reference-transaction documentation says aborted follows released locks, but its final paragraph says rejected preparing/prepared hooks do not receive aborted. This trace records actual behavior, rather than treating that paragraph as support for rejection phases. The tagged Git 2.54.0 refs.c functions ref_transaction_prepare and ref_transaction_abort confirm the observation: rejected prepared calls abort, which aborts the backend before invoking aborted. No upstream report has been sent.