# EVT-01 domain-event reproduction

This work-in-progress fixture tests one narrow decision: a required answer is a
direct application dependency, while `OrderPlaced` is a fact recorded only
after the synthetic aggregate accepts its transition.

The clean Laravel 13.20.0 application has two explicitly registered
in-process listeners and disables automatic event discovery. Its nine-case
matrix retains:

- accepted and refused direct credit checks;
- a fact recorded only after aggregate acceptance;
- two named subscribers inside the order transaction;
- the same subscribers after commit;
- rollback and post-commit listener failures;
- an empty subscriber comparison; and
- duplicate delivery with one guarded and one unguarded reaction.

Nine isolated mutations prove the assertions or analyzer detect a fact
recorded before validation, a prerequisite disguised as an event, missing
registration, persistence hidden behind an event, dispatch before save,
transaction-timing drift, a removed duplicate guard, and a framework import in
the domain model.

Run the full retained matrix with:

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

The runner replaces only this fixture's generated `results/` subdirectories,
builds the pinned container, records environment and Laravel source evidence,
runs every positive and negative control, retains each mutation diff, and
verifies the result inventory.

Verify the exact committed tree after the evidence commit with:

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

The order rules and subscriber behavior are experimental controls. They are
not production rules or Brian's reported experience. The evidence brief may
allow drafting only after the clean-export record names the tested commit.
