The deletion test

Remove the memory layer, and Firsthand stops being able to answer. The hackathon's gate is whether that is true, so Firsthand ships the tool that checks it.

python scripts/deletion_test.py --agent 0x01f9...84d3 --db data/memory.db

Real output against the indexed set:

  memory ON      standing=grounded  confidence=0.82  basis=3  observations
  memory OFF     standing=thin      confidence=-     basis=0  observations
                 verdict engine returned NO_BASIS

  Firsthand's core function is unavailable without the memory layer.  PASS

How the swap works

evaluate() takes a Store. MemoryStore reads the record; NullStore satisfies the same interface with empty reads and no-op writes. The swap is one line at the call site, not a branch inside the engine, which is why the adapter boundary is enforced by a test that parses imports.

What counts as failure

Confidence decays with recency, so this is a recorded run from 2026-09-08 rather than a live figure. The explorer reads the current number.

The run exits non-zero if the memory-off side returns any standing other than thin, any confidence at all, or a single observation in the basis. Each of those would mean the engine found something to say without the record.

Try it in the browser

Every read endpoint takes ?memory=off, and it is a real bypass at the adapter boundary rather than an empty state faked in the front end. Open the network tab and compare:

curl -s "localhost:8000/v1/lookup/0x01f9...84d3"
curl -s "localhost:8000/v1/lookup/0x01f9...84d3?memory=off"