evt-03 reproduction

Public source retained with the related article. Generated results, dependency directories, runtime storage, secrets, and oversized binary artifacts are intentionally excluded.

README

# EVT-03 transactional-outbox reproduction

This fixture tests one narrow claim: storing a business change and outbox
message in one local transaction closes the missing-publication-record gap. It
does not make the later broker send and local confirmation atomic.

The pinned PHP 8.4.12 and SQLite experiment retains twelve behavior cases:

- direct send-after-commit and send-before-rollback failures;
- atomic order and outbox commit and rollback;
- clean relay, broker rejection, and retry backoff;
- a crash after broker acceptance followed by duplicate delivery;
- an idempotent consumer inbox and effect;
- per-aggregate relay ordering;
- expired claim release and named requeue;
- safe confirmed-row retention; and
- deterministic pending, age, attempt, claim, and blocked-follower metrics.

Ten isolated mutations prove those checks detect missing or non-atomic outbox
writes, premature confirmation, unstable retry identity, swallowed rejection,
ordering drift, missing consumer deduplication, unsafe claim release, unsafe
retention, and bulk repair.

Run the complete retained experiment with:

```bash
./run.sh
```

The broker is an in-memory failure control. Its acknowledgement and duplicate
behavior are not claims about a production broker or Brian's experience.

After committing the evidence, verify its exact tree with:

```bash
./bin/run-clean-export.sh HEAD
```

The clean export compares its semantic verifier, crash-after-acceptance
evidence, and operational snapshot to the retained results.

Retained files