# Walkthrough: "What do you know about me, and why?" This is the canonical demo flow of the FablePool reference node, written as a usability document: what you type, what you should see, and what each step means. The same flow is automated in `scripts/demo_walkthrough.py` (run `python scripts/demo_walkthrough.py` to watch it end-to-end) and exercised by `tests/test_demo_walkthrough.py`. > **Note on transcripts.** Claim and evidence ids are content-derived and > will differ on your machine, and human-readable formatting is not a > stability contract. The transcripts below are illustrative; the *shape* > of what you see is what matters. The exact machine-readable contracts are > in [`docs/cli-reference.md`](cli-reference.md). --- ## 0. Setup Use a throwaway node directory so you can experiment freely: ```console $ export FABLEPOOL_NODE_DIR=/tmp/fablepool-demo $ fablepool seed-demo Initialized node in /tmp/fablepool-demo Ingested sample evidence: calendar, notes, photo metadata Derivation complete: evidence and derived claims recorded. ``` `seed-demo` ingests the bundled sample dataset — a fictional person's calendar events, notes, and mock photo metadata — and runs the derivation engine. Every ingestion and every derived claim is a **signed operation in an append-only log**; nothing that follows will ever delete anything. --- ## 1. "What do you know about me?" Start broad: what topics does the node hold claims about? ```console $ fablepool topics TOPIC CLAIMS ACTIVE schedule 4 4 places 3 3 health 2 2 preferences 2 2 ``` Drill into one: ```console $ fablepool claims --topic schedule ID CONF STATUS STATEMENT clm-a1f3… 0.86 active Attends a recurring Thursday 18:00 appointment clm-9c02… 0.74 active Typically starts the workday around 09:30 ... ``` Two things to notice: * **Confidence is explicit.** Every claim carries the confidence the derivation engine assigned it, and you will see exactly where that number comes from in the next step. * **Status is explicit.** Claims are `active`, `refuted`, `invalidated`, or `superseded` — never silently mutated. --- ## 2. "…and why?" Pick a claim and ask for its derivation: ```console $ fablepool why clm-a1f3… Attends a recurring Thursday 18:00 appointment conf 0.86 [active] └─ rule: recurring-event-pattern ├─ evidence ev-77b2… (calendar) "Therapy — Thu 18:00" ×8 occurrences └─ evidence ev-31d9… (notes) "remember: therapy moved to Thursdays" ``` This is the heart of the system: **every claim explains itself down to raw evidence**. The tree shows the rule that fired, the inputs it consumed (other claims or raw evidence), and per-node confidence. Nothing is "the model just thinks so." Inspect the raw evidence itself, including the original ingested payload: ```console $ fablepool evidence ev-77b2… --raw ``` You are looking at *your* data: the actual calendar entry the adapter ingested, with the ingestion operation that signed it into the log. --- ## 3. Correct or refute a claim Suppose the claim is wrong — the Thursday appointment ended months ago. You have two tools: * `correct` — "this is wrong, here is the right value" (the claim is *superseded* by a user-asserted claim with confidence 1.0); * `refute` — "this is wrong, full stop" (the claim is *refuted*). ```console $ fablepool refute clm-a1f3… --reason "That appointment ended in March" Refuted clm-a1f3… (op op-58ee…) Cascade: 2 downstream claims invalidated: clm-bb41… "Keeps Thursday evenings blocked" → invalidated clm-04c7… "Has a standing weekly commitment" → invalidated ``` The **cascade** is the point. Other claims had been derived *from* the one you refuted; the derivation graph knows that, so they are mechanically invalidated rather than left silently stale. Verify: ```console $ fablepool claims --topic schedule --status all ID CONF STATUS STATEMENT clm-a1f3… 0.86 refuted Attends a recurring Thursday 18:00 appointment clm-bb41… 0.71 invalidated Keeps Thursday evenings blocked ... ``` And the refutation explains itself the same way everything else does: ```console $ fablepool show clm-a1f3… ``` shows the refutation operation, your reason, and the dependents it invalidated. Your correction is now part of the record — signed, timestamped, and exportable like every other operation. --- ## 4. Export your graph The whole graph — evidence, claims, derivations, your refutation — is yours to take: ```console $ fablepool export --out my-graph.jsonl $ wc -l my-graph.jsonl ``` Each line is one signed operation envelope in the milestone #2 wire format. Another implementation can replay this file and reconstruct the same graph, including your correction and its cascade. You can also export a **narrow slice** — the precursor to capability-based sharing in the next milestone: ```console $ fablepool export --topic preferences --out prefs-only.jsonl ``` This emits only the operations needed to reconstruct the `preferences` claims (their derivation ancestry and referenced evidence), nothing else. --- ## 5. Audit the log Finally, prove the history is intact — every signature, every link in the chain: ```console $ fablepool audit Audit OK: 47/47 operations verified. $ echo $? 0 ``` If anything had been tampered with, `audit` would list every failing operation and exit with code 3. --- ## 6. Explore interactively Everything above is also available in a REPL that keeps context between commands (so you can refer to claims by list index instead of pasting ids): ```console $ fablepool shell fablepool> claims --topic places fablepool> why 2 fablepool> refute 2 --reason "moved last year" fablepool> quit ``` --- ## Recap | You did | The system guaranteed | |---|---| | Browsed claims by topic | Every claim has explicit confidence and status | | Asked *why* | Every claim explains itself down to raw, signed evidence | | Refuted a claim | The correction is an append-only signed operation; downstream claims cascade-invalidate mechanically | | Exported | The full graph (or a topic slice) leaves in an open, replayable wire format | | Audited | The entire history verifies cryptographically, end to end | That is the substrate: not a chatbot, but memory you can inspect, dispute, take with you, and verify.