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.