# Inkhaven 1.5.9 — Places, Refutation, a Stability Pass & a Book

_A broad release that finishes the Project Gutenberg track, opens **RESRCH-6-lite**
(a bounded, trust-first slice of the deep-research frontier), hardens the Research
Assistant with a full stability audit, adds an editor comfort feature, and ships a
complete companion **book**. No new runtime crates._

## Research Assistant — RESRCH-6-lite

The full RESRCH-6 "agentic research" idea was judged high-risk (no hard cost cap,
autonomy amplifies error); this release takes the two highest value / lowest risk
pieces of it.

- **`/geonames` — real places.** A new structured-source adapter over the GeoNames
  gazetteer: region, country, feature type, coordinates, population, cited by id
  (glyph `⊕`, gate-skipped like `/wikidata`). Needs a free
  `research.geonames.username`. Grounds fiction and non-fiction in real geography —
  and the coordinates feed `/calc`.
- **Adversarial refutation gate (R6-A).** `research.refute_gate` (off by default)
  adds a cheap, offline **skeptic pass** before a plain `model`/`document` `/fact`
  commits: the model actively tries to *refute* the claim (the mirror of
  `/triangulate`'s corroboration). `SOUND` inserts; `REFUTED` shows the reason and
  asks again — advisory, never blocking.

## Project Gutenberg — finished (PG-P3/P4 + CLI)

- **`/gutenberg` auto-cites (PG-P3):** an ingested book files a SOURCES-1 `BibEntry`,
  so it appears in `/bibliography`.
- **Chapters & picker (PG-P4):** `--chapter N` ingests one chapter; a bare
  `/gutenberg <PG#>` fetches an exact edition, and the reply lists alternatives.
- **Headless:** `inkhaven research --gutenberg "<query|PG#>"`.

## Stability pass — a full ripple-effect audit

A four-track parallel audit (gate state machine · adapters/async · core infra ·
broad panic sweep) produced a ranked plan
([`BUGFIX_PLAN_1.5.9.md`](../PROPOSALS/BUGFIX_PLAN_1.5.9.md)); **BUG-1..12 fixed**
across three commits, each with regression tests:

- **P0 (critical/high):** an Esc-during-gate receiver leak that could force-insert
  an unvetted fact with the wrong provenance (widened by the new refutation gate);
  `pick_corroborator`/`summarize_triangulation` counting `NOT SUPPORTED` /
  hyphen-split reasons as *support* (silent tier promotion); a multibyte panic in
  the in-chat search highlighter (`ẞ`/`İ`).
- **P1:** `/upgrade` no longer parses a partial judge stream as a verdict or leaves
  an orphaned spinner; CLI ingest paths no longer orphan vectors on partial failure.
- **P2:** web-ingest slug collisions, a `config_tui` hex-parse panic, `--chapter 0`,
  stuck poll status lines, a tri-gate gather-disconnect, and a byte-slice in the
  utopia grounding — all hardened.

## Editor — reflow paragraph (REFLOW-1)

**`Ctrl+V j`** ("justify") re-wraps the paragraph at the cursor to the editor's
current text width — fixing prose pasted as one long line, or hard-wrapped at some
other width. One editor edit, so `Ctrl+Z` undoes it; prose only (skips read-only /
hjson / bund / markdown buffers).

## A companion book

**"Grounding Your Book in Fact"** ([`Book/RESEARCH/`](../../Book/RESEARCH/)) — a
complete, ~101-page beginner's guide to the Research Assistant for **fiction and
non-fiction** authors, assuming no prior knowledge of research or Inkhaven. It
teaches the whole workflow — the trust ladder, provenance, sources, cross-checking,
composing out — with fletcher diagrams rather than screenshots, and compiles
warning-free with a bare `typst compile`.

## Notes

- **No new runtime crates.** New commands `/geonames`; new config `research.geonames`
  + `research.refute_gate`; new provenance origin `geonames`; new CLI flag
  `--gutenberg`; new editor chord `Ctrl+V j`.
- CI: the two `gen_fixture` fixture tests that need the network-fetched ONNX model
  are now `#[ignore]`d (they pass locally with `--ignored`).
- RESRCH-6-lite continues in a future release (R6-B hard cost budget, R6-C
  `/snowball`, R6-D a bounded `/deep`).
