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
- .dockerignore
- analyze.php
- bin/run-clean-export.sh
- bootstrap.php
- Dockerfile
- mutate.php
- README.md
- run.sh
- source-evidence.php
- src/FixtureDatabase.php
- src/OrderCountConsumer.php
- src/OrderPublisher.php
- src/OutboxDatabase.php
- src/OutboxOperations.php
- src/OutboxRelay.php
- src/RecordingBroker.php
- tests/run.php
- verify-results.php