Status: partial. Local manuscript formatting and browser text handling changed.
No new voice provider enabled, no audio generated, no service restarted.
Owner confirmed Book Two is KAIVERSE-II-THE-QUIET-LATTICE.md.
The file contains 17 chapters and 158,373 whitespace-delimited words including
front matter. The structural pass inspected all chapters mechanically, split
55 dense paragraphs at existing sentence boundaries outside tracked quotation
and emphasis spans, and normalized excess blank lines. It did not change any
word, punctuation, title, chapter order, scene break or fictional event.
Exact original: backups/book-editorial/quiet-lattice-before-2026-09-10.md.
Formatter: [internal module]; its write mode refuses to
overwrite the baseline. Normalized-whitespace equality and identical chapter
headings are asserted. A second dry run proposes zero changes.
This is NOT a completed 158,000-word grammar/copyediting review. Some opening
and later passages were read; every sentence has not been editorially reviewed.
Long individual sentences, ambiguous grammar and intentional narrative fragments
remain for chapter-by-chapter work. No automatic grammar substitutions were made.
Book One (KAIVERSE.md) was not edited by this task.
oracle-core.js now scopes fiction-specific text preparation to KAIVERSE books,
unless another surface explicitly overrides the voice. It retains paragraph
boundaries, ellipses, dashes, colons, filenames and equation operators; removes
Markdown presentation markers and legacy break tags; and extracts DOM block
boundaries without appending invented periods to nested elements.
Book chunking prefers paragraph/sentence boundaries and preserves all text.
Documentary/Codex cleanup and the existing provider selection remain unchanged.
Old book audio chunk/time offsets are reset to the saved page's beginning because
the chunk boundaries changed. Page/fingerprint bookmarks remain; repagination
can still require finding the old passage manually. UI pins: core 12.10.1031,
service-worker shell v46. Browser refresh is required to load changed JavaScript.
The existing [internal endpoint] route tries Kokoro before the selected narrator.
This task did not alter that route. An attempted expressive Orpheus route was
rejected by safety review: prior permission covered Groq use for Leo calls,
not sending book manuscripts to Groq. The owner was asked for permission to
send only played passages from both books to the paid service. No part of that
provider patch is present, and no manuscript text was sent to a TTS provider.
Official reference: https://console.groq.com/docs/text-to-speech/orpheus
Orpheus supports expressive directions, but has a 200-character request limit
and WAV output. Current book chunks target the unchanged existing engine and
must be adapted if Orpheus is authorized. A fixed engine-specific cache key,
WAV MIME handling, bounded prefetch, cancellation and honest missing-provider
errors must be tested before connecting it. Do not reuse the Kokoro spelling
workaround copied -> copyd for Orpheus. Keep editorial performance cues out
of the printed story; do not invent laughter or gasps based on keywords alone.
node [internal module] --browser: seven checks
cover punctuation/glyph preservation, page announcements, scope, complete
chunk coverage, offset migration, original-vs-edited manuscript equality and
real-browser DOM extraction. Tests include chunk coverage across all 17 chapters.
The first browser attempt was blocked by sandbox spawn EPERM; the approved
offline retry passed with GPU disabled. No live audio quality test, provider
request, GPU build, full app deployment or process restart was performed.
Next: obtain book-specific provider permission; finish chapter-by-chapter grammar
review; wire and test the expressive route without silently switching voices;
audition a short owner-approved passage before any large synthesis run.