Does a periodic, internally generated exploration process ("controlled mind-wandering" in the DMN-inspired sense documented in limitations.md) improve generator usefulness and long-horizon task performance versus the three controls?
| Cond | Recall context | Reflect first | Wander | Evaluator gate |
|---|---|---|---|---|
baseline |
no | no | no | n/a |
memory |
yes (verified) | no | no | n/a |
reflection |
yes + reflection summary | yes | no | n/a |
wandering |
yes | optional | yes (bounded) | yes (only suggest_to_active_agent reaches the agent) |
All four conditions instantiate the same ActiveAgent answering the same
tasks from the same 30-task benchmark file; only context construction
differs. This isolates the effect of the added internal process from model
choice, prompt ordering, and tooling (none of which change).
- Deterministic seeds (default seed 0; more for variance accounting).
- (For
memory,reflection,wanderingonly) the agent is given a memory store that may carry task-relevant verified memories. - The agent answers the task with a concise answer + internal memory-ID citations + facts/assumptions + uncertainty.
- Every model call, memory retrieval, hypothesis, and decision is logged as an event row.
- The run emits metrics (see below) into per-experiment JSON + Markdown and a summary table.
| Metric | Definition |
|---|---|
accuracy / task_success |
deterministic rubric (keyword match) OR progress level, per task |
rubric_score |
0..1 partial credit when applicable |
memory_retrieval_precision |
fraction of retrieved memories actually used/cited |
unsupported_claim_rate |
fraction of FACTS claims whose content tokens have <60% overlap with evidence (task context, retrieved memories, answer framing) |
contradiction_rate |
contradictions detected / number of speculative items |
hypothesis_usefulness |
fraction of generated items passing evaluator gate AND marked relevant+testable |
hypothesis_novelty |
fraction of generated items with novelty score above threshold |
latency_s, approximate_token_cost, model_calls |
timing / cost accounting |
memory_retrieval (bool) |
whether any memory was actually used by the active agent |
No inferential statistics are computed in this MVP. Reported numbers are raw summaries; the docs and README state this explicitly to prevent over-claiming.
- Speculative items are labeled
[SPECULATION]at every output surface. - Evaluator gating is deterministic for hard-rejection rules.
- No hard-coded model names or vendor API usage.
- No conscious-experience claims are made in any prompt (a hard-reject flag actively rejects such claims in generated content).
- Wandering/reflection/evaluator have no tool access, shell, network, or file write path in this repository.
tests/test_experiments.pyverifies deterministic output across repeated mock runs and that different agents produce the same benchmark table schema.- The mock provider is seeded and returns protocol-shaped text, so parsing and validation paths are exercised identically offline and live.
- Outputs are written to
experiments/results/as JSON + Markdown with anelapsed_sfield and a machine-readable comparison table.
python experiments/run_benchmark.py --provider mock --out experiments/resultsThe script reads experiments/benchmark_tasks.json (30 tasks across 10
categories), runs each condition, and writes the summary. The benchmark
records every decision and step in the per-experiment SQLite database
(data/bench-<...>.db) for later audit.
python -m app.cli init-db- Add a few observations.
python -m app.cli wander --strategy relevant --seed 1python -m app.cli ask "..." --mode wandering- Review the labeled, gated, speculative output and the event log.