What runs autonomously
Once started with valid credentials, the live daemon requires no human intervention to:- Ingest both TxLINE SSE streams, reconnect on disconnect, and renew credentials on expiry
- Verify every message’s source proof before admission
- Reprice, classify, risk-check, and quote on every admitted message
- Halt itself on any of the conditions in Core Concepts → Discipline Engine
- Recover deterministically after a crash — on restart, it verifies the persisted ledger prefix against a fresh replay of the authoritative corpus and repairs only the deterministic missing suffix, never trusting a locally cached receipt as source authority
- Submit pre-match and periodic checkpoint anchoring transactions
- Record signed policy snapshots when the effective policy changes across a restart
Why there is no autonomous policy mutation
policy.toml is the single source of truth for every tunable constant in the pricing
and risk logic. That is a real, checkable property of this codebase: any judge can
grep the code and confirm no magic numbers exist outside it. A nightly job that
silently rewrote thresholds based on overnight results would erase that property —
every constant would no longer be traceable to a specific, explainable human decision
in git history.
The honest alternative: human-reviewed tuning suggestions
Instead,evaluate:tuning runs a real evaluation:
strategy.edge_threshold_bps) against the calibration split only — it never
touches the holdout fixtures, preserving the same calibration/holdout discipline used
throughout evaluation — and prints ranked suggestions with their evidence:
policy.toml. A human reads the output, verifies it against the
holdout split (evaluate:calibration), and manually edits the config — exactly like
any other change to this codebase, reviewable in a diff.
With only two real captured fixtures so far, the tool honestly reports itself as
underpowered rather than presenting a confident recommendation. That flag is the
point — it exists specifically to stop this tool from overfitting itself to noise.
Why the analyst layer never feeds back into strategy
The analyst service is a read-only forensics layer — it answers questions about what the desk already did, using an LLM over a read-only SQLite projection of the ledger. It opens its database connection withreadOnly: true at the SQLite layer, has no write,
post, or execute tool of any kind, and this isolation is a tested guarantee (see
Verifiability).
Feeding the analyst’s output — or a “memory” built from it — back into pricing or
strategy would mean an LLM’s narration could eventually influence a real decision. That
is exactly the boundary this project refuses to cross. The analyst can find patterns
(see find_similar_decisions) and explain them to
a human, but it cannot act, and it cannot change what Tissue will do next.