# Paper 15 reproducibility record

## Status

- Manuscript: provisional and unreviewed.
- Paper acceptance: `OBSTRUCTED`.
- Accepted code evidence: bounded, computational Slice 0--4 evidence.
- PDF policy: build only in a temporary directory until paper review accepts
  the source. Do not place `paper.pdf`, auxiliary files, or a cover in this
  directory.

## Accepted source boundary

- Repository: `CatDB-Research`
- Branch: `catdb-paper-p1`
- Accepted Slice 4 commit:
  `056915834fcc2f172a4a72efe3629f4f753e45cf`
- Date: 2026-07-23
- Workspace manifest:
  `8d639b43fd8806b8b8a5341c86af626d95cc2bb68ed85d9074c1722caea40a34`
- Lockfile:
  `117abb87d3ec22ebfd2ce0f97f80f373b72043601b79464fb259de192c2b9643`
- Fixture manifest:
  `a817c292e879dcd8eb8f5ec2143dd0029464fde66925cdc8374ce9a599046f54`

The hashes are reproduced from an isolated `git archive` of `0569158`.
Later working-tree changes are outside the paper's evidence boundary and are
neither counted nor characterized here. Paper 15 did not edit shared code,
fixtures, coordination records, other papers, the root README, CITATION,
website, or Slack.

## Toolchain observed

```text
rustc 1.94.0 (4a4ef493e 2026-03-02)
cargo 1.94.0
Python 3.12.9
cabal-install 3.16.1.0
GHC 9.14.1
```

The verification host has obsolete Cabal/GHC binaries under `/usr/local/bin`.
Use the active Homebrew tools explicitly:

```text
/opt/homebrew/bin/cabal
/opt/homebrew/bin/ghc
```

## Native semantic verification

Extract the accepted commit without switching the shared working tree, then
run inside that extraction. Keep build state and logs outside the repository:

```bash
ACCEPTED_SRC="$(mktemp -d /tmp/catdb-p15-slice4-src.XXXXXX)"
VERIFY_DIR="$(mktemp -d /tmp/catdb-p15-verify.XXXXXX)"
git archive 056915834fcc2f172a4a72efe3629f4f753e45cf |
  tar -x -C "$ACCEPTED_SRC"
cd "$ACCEPTED_SRC"
export CARGO_TARGET_DIR="$VERIFY_DIR/cargo-target"

python3 scripts/validate-fixtures.py \
  --schema fixtures/schema-v1.schema.json \
  --cases fixtures/cases \
  >"$VERIFY_DIR/validate-fixtures.log" 2>&1

python3 scripts/audit-fixture-manifest.py fixtures/manifest-v1.json \
  >"$VERIFY_DIR/audit-manifest.log" 2>&1

python3 -m unittest discover -s scripts/tests -p 'test_*.py' \
  >"$VERIFY_DIR/python-tests.log" 2>&1

cargo fmt --all --check \
  >"$VERIFY_DIR/cargo-fmt.log" 2>&1

cargo clippy --workspace --all-targets --all-features -- -D warnings \
  >"$VERIFY_DIR/cargo-clippy.log" 2>&1

cargo test --workspace --all-features \
  >"$VERIFY_DIR/cargo-test.log" 2>&1

cargo run -p catdb-cli -- fixtures verify fixtures/cases \
  --implementation rust --capability-set slice-1 \
  >"$VERIFY_DIR/rust-slice1.log" 2>&1

cargo run -p catdb-cli -- fixtures verify fixtures/cases \
  --implementation rust --capability-set slice-4 \
  >"$VERIFY_DIR/rust-slice4.log" 2>&1

CATDB_CABAL=/opt/homebrew/bin/cabal \
CATDB_GHC=/opt/homebrew/bin/ghc \
cargo run -p catdb-cli -- fixtures compare fixtures/cases \
  --left rust --right haskell --capability-set slice-4 \
  >"$VERIFY_DIR/compare-slice4.log" 2>&1

sha256sum "$VERIFY_DIR"/*.log
```

Expected semantic summaries:

```text
slice-1: total=33 semantic=16 structural=17 failed=0
slice-4: total=33 semantic=29 structural=4 failed=0
compare: total=33 semantic-compared=29 structural-compared=4 disagreements=0
```

The explicit Haskell comparison may emit Haddock missing-documentation
warnings while still returning the successful semantic summary. Do not call
the whole command warning-free.

## Fresh log digests

The fresh isolated accepted run used
`/tmp/catdb-p15-slice4-src.YLIjCX` and
`/tmp/catdb-p15-slice4-gates.AiuaYb`. It produced:

| Log | SHA-256 |
|---|---|
| `validate-fixtures.log` | `96ecc0c1bad6cab3dfe80329a5a3d835c48d57ee781dc5d3737f1eed8c4d4c79` |
| `audit-manifest.log` | `57d0ab5c2024ca07085c148144bf81eaa67f781f7868c671a2897bad777b31fe` |
| `python-tests.log` | `d238d441d1595dacce99a6b5e49c2b9645e5e548f19d16f7a79b0f50b31cfc02` |
| `cargo-fmt.log` | `e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855` |
| `cargo-clippy.log` | `ef28b05c6ac3fd38cfe705b3b871c8e9882901131ea76a7718a1eed898cadfbf` |
| `cargo-test.log` | `8b3477cbb51c6ab66ee9b0da8d584bd8629d417b41961423b3edb8d922cf5519` |
| `rust-slice1.log` | `712ef20b795309ef1075d24285fa376f15089ae531b978b1db91c92278b7f36d` |
| `rust-slice4.log` | `1a88813b6fff79101fdb01bf81cc015cb4bf05b4b9c203c4c476d2b951a7fe06` |
| `compare-slice4.log` | `3b85deb889761c77f032a8af8c349d2194c4366453cc2fbdd4cfff19e9ddcc92` |

These are ephemeral-run identifiers, not accepted repository release logs.

## Isolated manuscript build

Copy only the manuscript sources into a fresh directory:

```bash
BUILD_DIR="$(mktemp -d /tmp/catdb-p15-paper.XXXXXX)"
cp papers/15-rust-runtime/paper.tex "$BUILD_DIR/"
cp papers/15-rust-runtime/references.bib "$BUILD_DIR/"
cd "$BUILD_DIR"

pdflatex -interaction=nonstopmode -halt-on-error paper.tex
bibtex paper
pdflatex -interaction=nonstopmode -halt-on-error paper.tex
pdflatex -interaction=nonstopmode -halt-on-error paper.tex

pdfinfo paper.pdf
rg -n 'Warning|undefined|Overfull|Underfull|multiply defined' \
  paper.log paper.blg
sha256sum paper.tex references.bib paper.pdf
```

Render every page for inspection:

```bash
mkdir rendered
pdftoppm -png -r 110 paper.pdf rendered/page
```

Inspect every rendered page, not only the first page. Check:

- first-page sidebar and title;
- equations and TikZ figures;
- long tables in portrait and landscape;
- line wrapping of hashes, URLs, and commands;
- references;
- blank or clipped pages;
- footer/page-number collisions;
- any text, equation, table, or link overlap.

Keep the built PDF and rendered pages in the temporary directory. Record their
hashes in the handoff; do not copy them into the repository before peer review.

### Observed author-side build

The corrected source was built at
`/tmp/catdb-p15-paper-final.E8rqBF`. The result was a 29-page, US-Letter,
PDF 1.7 document. TeX and BibTeX reported:

- no undefined citation or reference;
- no multiply defined label;
- no overfull box;
- no BibTeX error or warning; and
- one harmless underfull box in the first-page sidebar.

Citation closure was exact: all 19 cited keys exist in `references.bib`, and
all 19 bibliography entries are cited.

Every page was rendered at 130 dpi under
`/tmp/catdb-p15-render-final.9B4VP0` and inspected through five contact sheets
under `/tmp/catdb-p15-contact-final.wYaiWC`. The author inspection found no
clipped or overlapping text, equations, figures, tables, links, code blocks,
page numbers, or references. The landscape evidence and claim tables remained
inside their page bounds.

| Artifact | SHA-256 |
|---|---|
| `paper.tex` | `5cfd1902dbf26a9e152e2e7cec448f026634a81983343ec09b7db01ef2f440d4` |
| `references.bib` | `3a571f931886f38aed728bd27543947c97756b0a557719d29fc6a2d1e0e9f5fa` |
| temporary `paper.pdf` | `1c55a02c28baf90a48e89db57bf85a07d8317f9edb95a06a18e649b86441ba8e` |
| ordered source-manifest digest (author audit) | `062251a41e5734bc9ad22a7c56e59578ed9f20cbf52daf1120f1293bce9772b7` |
| author evidence-package digest | `8f11ab95d2ce987d40ebdf00e8e78ebd556571eb86578e44549932e6935ef631` |

The evidence-package digest is the hash of the `sha256sum` manifest for
`paper.tex`, `references.bib`, the three claim/related-work ledgers, the
primary-source bibliography, `review-contract.md`,
`research/evidence-dossier.md`, and
`humanizer-scope.md`, in that order. It intentionally excludes this
self-recording file.

## Terminal manuscript gate

The canonical CatDB verifier digest for `paper.tex` plus `references.bib` is:

```text
6468ec234542afb2bbe643fb29d9a8539af6067f9a78040103a64e6feb17e7ef
```

AGY round 1 reviewed that exact digest and ended in `VERDICT: ACCEPT`; the
canonical review is byte-identical to round 1. The repository artifact hashes
are:

```text
paper.pdf  1c55a02c28baf90a48e89db57bf85a07d8317f9edb95a06a18e649b86441ba8e
paper.log  b35afa3266ce176c49353986e3b5a192bd3e9b954c5930e4ac9ca5c97815b727
cover.png  59ecee3b83a4235b904b071f81feaf91ad412bc25cd57e7d5fc90bbaa51d892d
review     560a952ce048970c7d1be6dd5072797aaa96704ac19f8735c6bb61017f2874aa
```

The final verifier passed source and review digest identity, PDF freshness,
29-page minimum, LaTeX-log inspection, 300-DPI cover resolution, and terminal
review verdict. This internal manuscript acceptance remains pinned to accepted
Slice 4 at `056915834fcc2f172a4a72efe3629f4f753e45cf`; later Slice 5 work is
excluded from every accepted P15 count and claim.

## What this reproduction does not establish

The commands do not establish:

- general correctness beyond the shared fixtures;
- Rust/Haskell semantic equivalence;
- a verified refinement between Lean and Rust;
- Sigma or Pi migration;
- accepted Slice 4 information-loss or schema-diff computation;
- global losslessness, invertibility, semantic rename inference, or arbitrary
  schema matching;
- SQL or storage execution;
- transaction correctness;
- performance;
- async execution or cancellation;
- server, embedded API, or WASM compatibility;
- deterministic operation replay; or
- distributed behavior.

Those claims require the future gates described in `paper.tex` and
`research/evidence-dossier.md`.
