This directory is the failing companion to starter-embedded/.
Read ../HOWTO.md first if you want the full model, especially the determinism gate, the provider host contract, and the difference between standalone and embedded host modes.
It keeps the same real Rust embedded provider flow:
- compile an application binary with Cargo
- keep normal app behavior outside the
observesubcommand - inspect raw
observe listoutput - derive inventory
- run a simple Observer suite
- emit and verify canonical artifacts
The difference is that one exported test is intentionally wrong:
ledger/broken-running-totalasserts the wrong expected total
That makes the app-owned failing path as obvious as the standalone failing path.
Contents:
src/lib.rs: tiny Rust code under testsrc/main.rs: application main plus embedded Observer routing and one intentional failureobserver.toml: provider resolution config usingargs = ["observe"]tests.obs: simple-surface Observer suiteMakefile: end-to-end commandstests.inv: derived inventory snapshotexpected.inventory.sha256: expected canonical inventory hashexpected.suite.sha256: expected canonical suite hashexpected.default.jsonl: expected canonical report snapshot for the failing run
Suggested reading order:
- read
src/main.rs - run
make app-run - run
make list - run
make host-run TARGET='ledger/broken-running-total' - run
make inventory - inspect
tests.inv - run
make run - run
make verify
Useful commands:
make app-run
make list
make host-run TARGET='ledger/broken-running-total'
make inventory
make run
make report
make verify