Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Run the design-review tracer

The tracer demonstrates a storage-substitution review, including a counterexample and stale-decision refusal. Use a Unix machine with Rust, Cargo and a C compiler; run these commands from the repository root.

Build and run

cargo build --locked
cargo run --locked -- tracer target/my-tracer

Both commands exit 0 on success. The tracer prints a JSON report with "passed": true and expected/actual assertions. The directory must not already exist; choose a new name on subsequent runs.

Open target/my-tracer/view.html in your browser. Inspect the bad, good and stale proposals. The bad backend advertises the required operations but allows shipment before persistence. The compatible replacement uses direct payment and permits shipment only within the supplied policy’s allowed traces. Its pass is conditional on that finite corpus and observation map.

Inspect evidence and replay

cargo run --locked -- replay target/my-tracer/workspace.db
cargo run --locked -- view target/my-tracer/workspace.db

Replay exits 0 and prints "replayed": true with the reconstructed state. View exits 0 and prints source-addressed JSON, including all proposal evidence, applicability and export limitations. The HTML file is a read-only snapshot; use view DB NEW.html to generate a refreshed one.

ArtifactMeaning
report.jsonExpected versus actual tracer assertions and fixture fingerprints
workspace.dbPersisted decisions, proposals and evidence
source.jsonOriginal policy and declared initial binding
export.jsonDerived inventory with an explicit loss report
view.htmlRead-only inspection of accepted/proposed bindings and evidence

Try your own action

Initialize a separate workspace using the checked-in source fixture:

cargo run --locked -- init target/manual.db fixtures/pilot/workspace.json

Expected: exit 0, JSON state with revision 0. Copy one of the action examples from the CLI reference, then run apply target/manual.db ACTION.json. A failed decision exits 2 with a structured error and commits no effect.

Troubleshooting

destination means the output already exists; use a fresh path. source_changed means the original source changed or disappeared; historical replay remains available, but mutations require restoring the exact bytes or starting a new workspace. unresolved means the strict acceptance conditions are unmet; inspect checker results and declared counterexamples. stale means the action targets an earlier accepted revision.

If bundled SQLite compilation fails because a compiler cache points to a read-only directory, give the cache a writable location, for example CCACHE_DIR=/tmp/funkalization-ccache cargo build --locked.

Run just ci for the Rust checks and python3 scripts/reproduce_baselines.py for the recovered Python experiments. These establish different evidence; neither establishes that a production payment service is correct.