# TeXise Autonomous Roadmap Ledger

Updated: 2026-08-28 (Australia/Sydney)


## R14.28.20 BF51 — Growth, Comparison Intelligence, Ollama AI & Search Hardening (2026-08-28)
- Status: feature implementation and dependency-free release certification complete; local packaging is the final phase.
- AI: three explicit execution modes — Browser Local AI, keyless loopback Ollama local service, and BYOK AI. Ollama supports connection/version checks, automatic localhost detection, installed-model discovery, Suggest/Review/Paper Memory paths, Privacy Mode and automatic fallback to the last configured BYOK AI provider when Ollama becomes unavailable and Privacy Mode is off.
- Search: favicon MIME/head/HTTP health hardening, legacy template-route redirect probes, persistent IndexNow key ownership and non-fatal post-health changed-URL submission.
- Comparisons: one canonical evidence registry drives nine `/compare/<competitor>` pages, four comparison guides, client metadata, SSR SEO and sitemap; competitor facts are dated/sourced and unknowns remain Not verified.
- Reliability: shared bounded AI structured-output recovery, local-only R6 diagnostics without telemetry or eligibility expansion, cumulative BF51 source/release guards.
- Verification: BF50 guard PASS; BF51 guard PASS; BF51 regression 6/6; R6 regression 3/3; static audit 389/389; branding PASS; 17/17 changed TS/TSX syntax PASS; JS/shell syntax PASS; whitespace/temp scan PASS. Runtime hardening remains 97/102 with exactly the same five BF50.23 baseline failures. R14 regression and SaaS static audit each reproduce their unchanged baseline historical failure.
- Production gates still required: provisioned pnpm/tsgo/Biome/unit/build/Chromium R4-R6, live SEO/favicon checks and real Ollama browser certification.

## R14.28.20 BF50.23 — Live PDF R6 Instant Rendering (2026-08-28)
- Baseline: user-supplied `texise-saas-r14.28.20-bf50-configurable-free-project-limit-fix37-public_html.zip`; TeXpile reference: user-supplied `texpile-master.zip`.
- Status: R6 source implementation complete in this working tree; dependency-free R6/source/release verification green. Full dependency-backed pnpm/Vitest/Vite/Playwright and real provisioned BusyTeX browser certification remain release gates because this extracted archive has no `node_modules` and npm access is unavailable.
- Architecture: R6 is a disposable browser-local accelerator over exact R5. A separate pre-warmed BusyTeX LuaLaTeX worker renders one proven-safe prose block into a tiny transient PDF; PDF.js paints it over the exact page using same-generation R5 SyncTeX geometry; existing R5 still reconciles the whole canonical document after the normal debounce.
- Safety: only one explicit Source/ordinary-Visual edit, one dirty `.tex`/`.ltx` file, one top-level plain body paragraph, unchanged preamble/tail, one-page exact SyncTeX target. Structural LaTeX, active environments, math, AI/review/collaboration/programmatic origins, ambiguous/stale generations and cloud-sticky projects fail closed to R5.
- Authority: manual `ProjectCompileService`, exact R5 PDF/SyncTeX, PDF export/watermark, selectable PDF.js text, source storage/history/Git, collaboration and AI remain authoritative/unmodified. R6 helper TeX/PDF bytes are in-memory only and can never be exported.
- Browser constraint: unlike TeXpile Desktop's stdin-driven native LuaLaTeX daemon, current BusyTeX browser APIs do not expose a persistent TeX command loop. R6 uses the safe equivalent available now: a warm isolated BusyTeX worker plus tiny block-only LuaLaTeX compile with bibliography/index/rerun passes disabled.
- Verification: `scripts/bf50-live-pdf-r6-regression.test.mjs` 3/3 PASS; `scripts/repair-buildfix50-source.mjs .` PASS; `scripts/texise-release-audit.mjs` 388/388 PASS after R6 contract addition; modified TS/TSX syntax-transpile sweep PASS. Runtime hardening has no R6-introduced failures; its five failures are reproduced unchanged in the uploaded baseline and concern legacy AI-label expectations.
- Release E2E: `latex-live-pdf-r5.e2e.ts` now includes an R6 Chromium workflow proving instant overlay, exact reconciliation, SyncTeX continuity and manual Compile isolation. It cannot execute in this source-only sandbox.
- Detailed design/state: `docs/LIVE_PDF_R6_INSTANT_RENDERING.md`.
- Autonomous continuation/context rule: `plans/AUTONOMOUS_EXECUTION_HANDOFF.md` and root `AGENTS.md`.

## Baselines and cumulative checkpoints
- Authoritative R11 input: `texise-r14.28.12-r11-claim-evidence-public_html.zip`
- R11 SHA-256: `6109fb4b669c5dfb0343814fed1ba0cfa37d4b18f8e86e50e16918d8ec8501dc`
- Later cumulative implementation baseline: `texise-r14.28.12-r23-r29-public_html.zip`
- Cumulative baseline SHA-256: `a08b13ee96a2bd1b259136711db6f132a41ed22c0a97e9882132746831c156c5`
- Release layout rule: exactly one top-level `public_html/` tree.


## Hotfix10 — Visual Fidelity Firewall + Template Thumbnail Upload (2026-08-24)
- Baseline: user-supplied R14.28.20 BuildFix49 Hotfix10 source; this source remains authoritative.
- Status: source implementation complete, clean-tree dependency-free certification green, and final one-root `public_html/` source packaging complete; full dependency-backed pnpm/Vitest/Vite/Playwright certification remains an external release gate because dependencies cannot be provisioned here.
- Visual: generic fail-closed projection; all common structural headings; protected preamble/bibliography/unsupported constructs; standalone and complex graphics proxies; PDF.js previews with explicit asset failure states; exact protected-node Source navigation.
- Fidelity: top-level source comments/whitespace are stored in a serializer sidecar rather than invisible ProseMirror atoms, eliminating separator-comment bars without sacrificing exact no-op source preservation.
- Regression fixture: supplied ICASSP source resolves 14/14 headings and the complex figure exposes image1/image3/image4 through generic asset semantics; no production ICASSP/spconf/image-name special case.
- Templates: Admin can upload/replace/remove PNG/JPEG/WebP catalog thumbnails; managed storage is deterministic and audited; `/templates` uses A4 portrait cards and the supplied global WebP fallback when no custom thumbnail exists. Template Preview remains separate.
- Verification: clean tree after removing temporary dependency symlinks/staging assets; server 121/121; all script tests 278/278; runtime hardening 101/101; static release audit 362/362; SaaS static audit 44/44; BuildFix49 repair/source guard PASS; changed TS/TSX syntax parser and modified MJS syntax PASS; supplied/fallback thumbnail SHA-256 match PASS.
- Detailed state: `docs/HOTFIX10_VISUAL_FIDELITY_TEMPLATE_THUMBNAILS_IMPLEMENTATION_STATE.md`.

## R14.28.15 Build Fix 34 — TX7.2 Collaborative Review
- Baseline: completed BF33/TX7.1 production-hardening tree.
- Status: collaborative review implementation and dependency-free source certification complete; dependency-backed build/browser gates remain external in this source-only environment.
- Core: one Y.Text manuscript authority; shared Yjs comments/changes/events beside text; encoded relative anchors; nested CRDT replies; insert/delete/replace lifecycle and explicit conflict resolution.
- Review: existing local projection backend preserved; live backend uses immediate Y.Text + shared metadata; per-user Track Changes; local review state is not silently published.
- Reliability: change coalescing, Yjs Undo/Redo metadata reconciliation, deletion-context conflict guards, reconnect/snapshot lifecycle, programmatic edit attribution.
- UX: persistent Visual collaboration notice removed while Visual remains disabled; collaborative Review sidebar/history; Projects empty-state spacing/height scoped to Projects.
- Verification: BF34 14/14, historical R14 22/22, runtime 101/101, audit 351/351, SaaS 43/43, server 70/70, deployment/script 18/18, templates 13/13, lock/dependency/barrel gates and changed-file syntax PASS. Full dependency-backed tests are not available in the packaging sandbox.

## R14.28.14 Build Fix 33 — TX7.1 Production Security & Collaboration Lifecycle Hardening
- Baseline: completed BF32/TX7 Source-collaboration package.
- Status: source implementation and all dependency-free certification are complete. The BF33 final source archive is produced from this exact tree after the final parser/static sweep; dependency-backed browser/build/runtime certification remains an external staging gate.
- Admin: no universal bootstrap password; explicit interactive `texise-saas admin-create`; exact historical `admin/admin` upgrade credential is revoked with its sessions; secure existing administrators are preserved; admin throttling is DB-backed by IP/account.
- Relay: bounded rooms/connections/new-room rate/Y.Doc size; active-Yjs-only file channels; duplicate client IDs rejected; targeted binary routing, transfer quotas/TTL and coalesced document-size checks.
- Lifecycle: Host role/session identity survives refresh; Stop waits for outbound drain; explicit Stop/Leave forgets reconnect credentials and clears collaboration persistence; ordinary refresh retains recovery state.
- Structure/rejoin: project structure seals at Host readiness; same-room local divergence is copied into `.texise-local-recovery/<timestamp>/...` using snapshot hash baselines before authoritative rematerialisation.
- Persistence: old per-session v1 migration removed from the hot path; TX7 IndexedDB retention and snapshot baselines are bounded/garbage-collected.
- Canonical Source: collaboration-sensitive Source editor, AI, citation, TikZ and Paper Memory reads resolve active Y.Text; semantic re-indexing is debounced.
- Security floors: direct `ws 8.21.3`, Nodemailer `9.0.5`, production CSP removes arbitrary WSS destinations.
- Installer integrity: repaired duplicate snapshot keys and the missing `@types/qrcode@1.5.6` package/snapshot closure in `pnpm-lock.yaml`; lock preflight now detects duplicate direct YAML mapping keys and traverses all reachable importer/snapshot dependency nodes before pnpm install, and the BF33 source guard runs that preflight.
- Trust model: Project link remains a bearer trusted-editor capability; Host state is lifecycle coordination, not cryptographic authorization.
- Verification green: BF33+BF32 source guards; duplicate-key + reachable dependency-closure lockfile preflight (1171 reachable snapshots) plus strict recursive YAML unique-key parse; duplicate-key and missing-QR-closure negative fixtures correctly rejected; 69 lock importers; 68 workspace dependency sets; 67 public barrels; administrator auth 11/11; R14 22/22; runtime hardening 101/101; release audit 350/350; SaaS audit 43/43; modified Node/shell/package-JSON syntax and `git diff --check` PASS.
- External gates: dependency-backed TypeScript/Biome/Vitest/Vite/Playwright, actual formal 10,000-edit soak, and deployed `/collab-live` relay certification cannot execute in this dependency-free archive and remain mandatory before production activation.

## R14.28.14 Build Fix 32 — TX7 TeXlyre Source Collaboration Core
- Baseline: BF31 TX6 collaboration archive supplied by the user and unpacked into the BF32 working tree.
- Status: implementation, all dependency-free release certification and final source packaging are complete. Dependency-backed browser/runtime certification remains the external production gate.
- Protocol: internal TX7; user-facing sharing is a Project link plus QR, not a TX token.
- Live manuscript scope: Source only. Visual and Track Changes are disabled for the session.
- Canonical path: CodeMirror ↔ `y-codemirror.next` ↔ Y.Text. Remote caret/selection/name comes only from y-codemirror Awareness.
- Removed live machinery: TeXise custom cursor/selection positions, authorship CRDT/decorations, Visual collaboration, Follow/Open, current mode/file awareness, shared review maps and live file-tree operation CRDTs.
- Y.Text is authoritative; LatexSource/project storage are one-way mirrors. Programmatic existing-Source edits use the collaboration Yjs gateway; compilation flushes the mirror first.
- Supported collaborative files: `.tex`, `.ltx`, `.bib`, `.bst`, `.cls`, `.sty`, `.txt`. Project structural/binary mutations are locked until collaboration ends.
- Join: `/join/<roomId>#<256-bit-secret>`, fragment scrub, compatible live-host verification before workspace allocation, same-room browser-workspace reuse and local-only reconnect descriptor.
- Identity: stable browser collaborator ID/name/color; account identity for logged-in users.
- Session stop: host writes `sessionStatus=stopped` before leaving.
- Dependencies: Yjs collaboration set pinned exactly to TeXlyre-tested versions; QR dependency added; CodeMirror core unchanged.
- Attribution: TeXlyre 0.10.16 AGPL-3.0-or-later notice/source header added.
- Verification: BF32 source guard PASS; lockfile sync 69 importers PASS; workspace dependency consistency 68 packages PASS; public barrels 67 entries PASS; R14 regression 22/22 PASS; runtime hardening 101/101 PASS; release audit 350/350 PASS; SaaS static audit 43/43 PASS; all 29 modified/untracked TS/TSX syntax checks PASS; Node/shell/package JSON syntax PASS; `git diff --check` PASS. The real Playwright 10,000-edit soak, dependency-backed type/lint/unit/build, and production `/collab-live` run remain external gates because this archive has no installed dependency/browser runtime.

## R14.28.14 Build Fix 31 — TX6 Collaboration V2
- Baseline: uploaded `texise-saas-r14.28.14-buildfix30-join-loader-aria-progress-publichtml-final(1).zip`, SHA-256 `b3999b2b4698ed096cd81b549765b6eab0c93af3d7c8d891321731cc45d22c30`.
- Status: implementation complete in the BF31 working tree; dependency-free verification complete. Final dependency-backed browser/runtime certification remains an external release gate because the extracted archive has no `node_modules`/pnpm.
- Protocol: TX6; TX5 and older tokens are legacy and intentionally rejected.
- Presence: application cursor/selection awareness is encoded as Yjs relative positions and resolved locally after convergence.
- Source: one `y-codemirror.next` binding, one authorship renderer, per-file Yjs shared undo/redo.
- Canonical/Yjs bridge: exact source splices flow into one Yjs transaction; whole-source diff is fallback-only for external/system-style operations.
- Visual: native PM transactions emit minimal LaTeX splices; remote Yjs transactions capture/resolve a relative selection bookmark and reconcile the existing EditorState incrementally; rapid remote projection reparses are coalesced to one animation frame.
- Review: live collaboration and Track Changes cannot silently coexist; pending Track Changes must be resolved before hosting.
- UI: collaboration modal is responsive/overflow-safe with bounded scrolling and truncation for long names/paths.
- New regression coverage: Source and Visual semantic-caret scenarios where one collaborator inserts lines before the other's caret and the second collaborator must remain attached to the intended text.
- Additional hardening: Source remote collaboration revisions cannot remount CodeMirror; Visual remote bookmark batching only opens for an actual active-file Y.Text change; Visual undo/redo uses Yjs history so peer edits survive another user's undo; the production live-health probe is TX6 end-to-end.
- Added concurrency regression: Guest Visual undo removes the Guest edit but must retain `HOST-REMOTE-KEPT` inserted by the Host afterward.
- Verification: BF31 source guard PASS; release audit 350/350 PASS; R14 regression 22/22 PASS; runtime hardening 101/101 PASS; SaaS static audit 43/43 PASS; TS/TSX parser, shell/Node syntax, 69 lock importers, 68 workspace dependency sets and 67 public barrels PASS.
- Environment gate: `server/signaling.spec.mjs` cannot load `vitest`; full `tsgo`/Biome/Vitest/Playwright cannot run without the dependency tree. Production CI/installer must execute them before deployment.

## Current phase state
- R1-R3: complete.
- R4: candidate/production gate implementation complete. The real BusyTeX browser LuaLaTeX feasibility run is **not certified in this sandbox** because the provisioned BusyTeX WASM/data runtime is absent and the dependency/build environment is unavailable. The source includes the genuine browser gate; do not claim R4 feasible until that browser gate passes on a provisioned build.
- R5: production Live PDF source implementation complete **behind the real R4 gate**. It consumes only genuine BusyTeX LuaLaTeX PDF bytes after `directlua`, MEMFS shipout records and PDF output are all verified. It is not production-certified here because the real R4 browser gate cannot execute in this sandbox. It fails closed and leaves the last manual Compile authoritative.
- R6-R20: implementation complete.
- R21: implementation complete.
- R22: implementation complete.
- R23-R29: implementation complete. Final full production certification remains environment-dependent because pnpm/node_modules/browser build tooling is unavailable here.

## R12 — Citation intelligence
Implemented:
- Shared Citation Context for Source and Visual with `Open | Verify | More` progressive actions.
- Existing semantic/bibliography index remains authoritative; no second citation data model.
- Bibliography-to-local-Papers matching by DOI/arXiv/title-author-year logic.
- Canonical claim extraction and `SourceAnchor` revalidation before verification.
- Local verification stages retrieval before generation and retains application-owned paper/page evidence.
- Conservative support labels and local-verification-unavailable behavior when no local paper maps to the bibliography entry.
- Other manuscript locations using the same citation surfaced on demand.
- Citation sufficiency reports a short issue count first, with progressive details for likely uncited scientific claims, weak/unverified local evidence, and incomplete bibliography metadata.

## R13-R20 — Local research workflow
Implemented:
- Browser-local many-to-many Collections and evidence-linked Research Notes.
- Server-side scholarly provider gateway with administrator credentials kept off the browser.
- Unified scholarly search with deterministic cross-provider deduplication and explicit Add to Papers.
- Related-paper discovery combining local similarity and available scholarly relationships with offline fallback.
- Human-authoritative Systematic Review workflow: Question → Search → Screen → Extract → Synthesise.
- Cancellable bounded Local Deep Research pipeline.
- Independent Chain of Verification with application-owned provenance.
- Research Insights with explicit corpus/search coverage and conservative gap/novelty wording.

## R21 — Living literature review
Implemented:
- Opt-in saved literature searches persisted browser-locally with Paper Memory state.
- Manual `Check now` uses Research Search and records known identities so only newly discovered results are surfaced.
- Reports `N new papers found` and provides `Review new papers`.
- Does not automatically download PDFs; Add to Papers is an explicit user action.

## R22 — Pro AI Review
Implemented:
- Compact AI Review toolbar entry kept separate from existing human Review/comments/Track Changes.
- Configuration before quota consumption: Full manuscript / Current section / Selection; optional Include my papers.
- BYOK-first vendor routing for OpenAI, Anthropic, Gemini and OpenRouter.
- Admin OpenAI fallback is server-side only; browser receives capability booleans, never the administrator key.
- Server and application enforce a maximum 2,000-word final review narrative.
- Six scores: Methodology, Novelty, Significance, Writing, Technical, Reproducibility.
- Verdict: Accept / Minor Revision / Major Revision / Reject.
- Major/minor issues, questions for authors, priorities and radar chart.
- Explicit label: `AI pre-submission review`.
- Application-created canonical fragment IDs are the only anchors accepted from the model; model-invented fragment IDs are rejected.
- Accepted anchored issues reuse the existing review/comment architecture without mutating TeX source.
- `Fix` actions: Suggest rewrite / Find evidence / Find citation / Explain / Ignore.

## R23-R29 — Accounting, routing, privacy, storage and certification contracts
Implemented:
- 50-call Pro AI Review quota with atomic SQLite reservations and pre-generation refund rules.
- `/var/www/texise.com/public_html/texise-data/audit/ai-review-audit.sqlite3` operational audit without manuscript/prompt/answer/API-key content.
- Central LOCAL / LOCAL+SEARCH / PRO capability routing and understandable Private Local / Research Search / Vendor AI modes.
- Progressive-disclosure UI simplicity contracts.
- Bounded browser-local structured research artifact persistence.
- Historical Papers browser tests migrated away from obsolete `Paper Memory` and `Find citation` UI; release matrix includes 1/10/30/50-paper and desktop-browser coverage.

## R4/R5 architecture and external gate
- `ProjectLiveDraftService` remains independent from `ProjectCompileService`.
- BusyTeX source instrumentation uses reserved `__texise_live__/` wrapper/probe files; canonical user source is never instrumented in place.
- Lua shipout instrumentation writes structured JSONL layout/page records to MEMFS.
- R5 activation calls the real R4 probe first and requires all of: BusyTeX runtime, LuaLaTeX, `directlua`, readable MEMFS records, at least one page, and non-empty genuine PDF bytes.
- Only after certification do canonical source mutations schedule isolated Live PDF refreshes.
- Live PDF has separate transient PDF state and never overwrites the authoritative manual compile result.
- Reverse SyncTeX is disabled for the live-only PDF because mappings belong to the last manual Full/SyncTeX compile.
- Any live refresh failure disables Live PDF and preserves manual Compile output.
- Browser E2E exists to require the real gate and fail if PDF bytes are absent.

## Validation actually performed in this sandbox
- `node scripts/texise-release-audit.mjs`: **314/314 passed**.
- `node --test scripts/release-runtime-hardening.test.mjs`: **88/88 passed**.
- Direct dependency-free AI Review/quota/scholarly server tests: **8/8 passed**.
- BusyTeX runtime ABI compatibility tests: **2/2 passed**.
- `node --check` on changed server modules: passed.
- TypeScript 5.8.3 `transpileModule()` across all 25 changed TS/TSX files relative to the cumulative R23-R29 baseline: **25/25 passed**.

## Validation unavailable here
- Real R4 BusyTeX browser feasibility execution: BusyTeX WASM/data payload is not present in the source bundle and is normally provisioned during build/deployment.
- `pnpm` workspace validation, full project typecheck, Biome, Vitest workspace suite, production build and release Playwright suite: unavailable because the source has no `node_modules` and pnpm/runtime provisioning cannot be completed in this sandbox.
- Consequently R5 source is implemented and hard-gated, but R4/R5 must not be described as production-certified until the provisioned release-browser tests pass.

## Persistent decisions / constraints
- TeX source is canonical for all editor/research mutations.
- No mandatory login or cloud storage.
- Local AI by default; vendor AI only for explicit Pro capabilities.
- Ordinary UI hides embeddings/RAG/provider-planner internals.
- No silent manuscript/paper upload to vendor AI.
- Administrator scholarly/API-review credentials remain server-side.
- Release ZIPs contain exactly top-level `public_html/`.
- Deployment upgrades preserve `/etc/texise/texise.env`.

## R14.28.20 Build Fix 50.23 — Live PDF R6 Instant Browser Rendering (2026-08-28)
- Status: implementation complete in `/mnt/data/texise_r6_work/public_html`; dependency-free certification complete. Provisioned dependency/browser certification remains an external deployment gate.
- Objective: make eligible LaTeX prose edits appear in the PDF pane before the existing R5 full Live PDF reconciliation, using TeXpile's warm/incremental preview architecture as a reference without replacing or weakening any TeXise compile, SyncTeX, collaboration, AI, editor, export, storage or cloud-fallback behavior.
- Architecture: exact R5 PDF + SyncTeX + canonical source snapshot remain authoritative. R6 owns a separate pre-warmed BusyTeX/LuaLaTeX worker, classifies one conservative plain top-level paragraph edit, compiles only that block in a transient in-memory wrapper, paints it through a PDF.js canvas overlay, and lets the existing 800 ms R5 path reconcile the exact document.
- Browser limitation: current BusyTeX browser API does not expose TeXpile Desktop's native persistent stdin-driven LuaTeX daemon. R6 therefore uses the safest available browser equivalent: a dedicated warm BusyTeX worker with a tiny block-only LuaLaTeX compile behind the same disposable service boundary.
- Fail-closed eligibility: Source/ordinary Visual only; one explicit edit; one dirty `.tex`/`.ltx` file; unchanged preamble/document tail; exactly one changed plain paragraph; no commands/math/special structural tokens; no active environment; exact matching R5 generation; one SyncTeX page/column target; current source revision. All other edits use R5 only.
- Final geometry hardening: R6 records the exact baseline SyncTeX line-band count and the PDF.js overlay independently counts the transient LuaLaTeX block's rendered baselines. If line count changes, the overlay is rejected because R6 cannot safely move following page content. This prevents fake/incorrect temporary page reflow; exact R5 remains visible until reconciliation.
- Isolation: `ProjectCompileService` is byte-identical to the supplied Fix37 baseline. R6 never writes project files, never becomes `ProjectPdfService`'s authoritative PDF, never enters PDF export/download/watermark paths, never fabricates SyncTeX, and is disabled on Docker/cloud Live PDF. AI/review/MathLive/collaboration/structural origins fail closed to R5.
- Main new files: `project-live-instant.ts`, `project-live-instant.spec.ts`, `LIVE_PDF_R6_INSTANT_RENDERING.md`, `bf50-live-pdf-r6-regression.test.mjs`, and `AUTONOMOUS_EXECUTION_HANDOFF.md`.
- Verification: modified TS/TSX syntax transpile 13/13 PASS with TypeScript 5.8.3; dependency-free R6 regression 3/3 PASS; BF50 source guard PASS; release static audit 388/388 PASS; `git diff --no-index --check` reports no whitespace diagnostics; source-tree diff contains only 21 expected R6/guard/doc/autonomy paths; no temporary/cache/reject/backup artifacts found.
- Runtime hardening comparison: R6 tree 97/102 PASS with exactly five failures; untouched Fix37 baseline 96/101 PASS with the exact same five pre-existing failures (R14.26.0 Local Gemma label, R31 BF3 local-model identity, BF24 UI/AI assertion, R27 privacy labels, R22 AI Review assertion). R6's additional hardening test passes and introduces no new failure.
- External release gates still mandatory before production activation: provision dependencies/pnpm; run workspace typecheck/lint/unit suite, production build, and real Chromium BusyTeX R4/R5/R6 Playwright certification. In particular the real browser R6 E2E must prove an eligible edit paints before R5 reconciliation and that R5 exact PDF/SyncTeX replaces the overlay while manual Compile remains unchanged.
- Autonomous execution/chat handoff rule is persisted in `plans/AUTONOMOUS_EXECUTION_HANDOFF.md` and referenced by root `AGENTS.md`.


## R14.28.20 Build Fix 51.1 — Production Privacy, AI, PDF & Search Hardening (2026-08-29)
- Status: implementation complete in the BF51.1 working tree; dependency-free certification is being finalized before archive creation.
- Ollama: remote/cloud-backed models exposed through localhost are explicitly detected and blocked from TeXise local-service AI. Selected models are revalidated through `/api/tags` + `/api/show` before manuscript context is sent. No automatic Ollama→BYOK fallback exists.
- AI structured output: finite LaTeX command recovery was removed; bounded generic control-word collision recovery protects uncommon/custom LaTeX controls while citation/evidence semantics remain independently validated.
- R6: viewer accept/reject outcomes and worker lifecycle are observable; the isolated instant worker can be reclaimed without touching R5. No eligibility expansion was made.
- Compare/SEO: canonical guides are substantive, row claims carry official-source IDs, sitemap entries have verification `lastmod`, and comparison routes include visible initial HTML from the canonical registry.
- Search: optional IndexNow changed-URL manifest support is additive; canonical fallback remains. Free-plan comparison claims do not hard-code the default project count.
- Release coherency: BF51.1 app-shell cache uses `buildfix51-1`; production dist parser and cumulative guards recognize point-build release identities.
- Baseline parity after release-coherency fix: runtime hardening 97/102 with BF51's same five historical failures; R14 22/23 with BF51's same historical failure; SaaS static audit same historical CMS sanitization failure.
- Production dependency/browser gates remain mandatory and must not be represented as having run in this source-only environment.

## BF51.1 final release-orchestration hardening — 2026-08-29
- Closed a formal-release coverage gap: the deterministic BF51.1 Ollama browser E2E is now in `packages/tooling/e2e-tests/scripts/run-release-e2e.ts`.
- Expanded production SEO verification from two comparison samples to every canonical `/compare/*` competitor/guide route plus `/docs/ollama`, with prerender-marker assertions.
- Added `scripts/verify-ollama-local.mjs` / `pnpm run release:ollama-local` for an actual verified-local Ollama API/inference smoke gate; local-success and remote-model rejection paths were self-tested.
- Re-ran BF50/BF51/BF51.1 guards/regressions, comparison/SEO/index/migration tests and 390-check release audit successfully. Runtime/R14 failures remain at the known BF51 baseline only.
- A superseding BF51.1 archive should be packaged from this state; dependency-backed server/browser/deployed-network gates remain external.

### BF51.2 — Texposit-style user-side Ollama workflow
- Ollama is installed/run only by the user on their computer; the TeXise server has no Ollama dependency.
- AI Assistant automatically detects `localhost:11434`, exposes **Use Local Ollama**, and provides the discovered model dropdown.
- Local Ollama outage can automatically fall back to the last configured BYOK AI profile when Privacy Mode is off. Privacy Mode disables cloud fallback.
- Remote/cloud-backed Ollama models remain blocked from Local Ollama by BF51.1 validation.

### BF51.3
- Added explicit Ollama Cloud support with Privacy Mode gating and Local-vs-Cloud execution labels.
- Preserved user-side Ollama architecture and cumulative BF51.1/BF51.2 safeguards.

## R14.28.20 Build Fix 51.4 — Public Change Log CMS (2026-08-29)
- Status: feature implementation and dependency-free certification complete; final archive packaging follows this ledger update.
- Added DB-backed `/change-log` with editable page heading/introduction and dated Draft/Published change events managed from `/admin/change-log`.
- Public route is linked in the external footer and public search, included in sitemap/SEO/prerender, and only exposes published sanitized events newest-first.
- Admin mutations are audited and protected by existing authenticated same-origin/CSRF controls.
- Configurable Free-plan token rendering is consistent between API and server prerender.
- BF51.4 source guard/regression and 393-check release audit are green; broad historical suites match BF51.3 baseline after stale release predicates were updated narrowly.
- ProjectCompileService/PDF/R6/Ollama runtime boundaries are unchanged from BF51.3.
- Provisioned workspace TypeScript/Biome/full build/browser gates remain external deployment certification.


### BF51.4 Fix 3 — Ollama Local Network Access on demand
- Removed AI Assistant / AI Settings open-time probes of `localhost:11434`.
- Ollama discovery no longer runs during passive app startup, even when Ollama was saved previously. It starts only from explicit **Use Ollama**, provider selection, manual refresh, or an actual AI request while Ollama is already the selected provider.
- Added browser E2E source contract requiring zero Ollama discovery requests before explicit selection.
- Added schema/docs migration 25 and public Change log event describing the permission behavior.
- Change log prerender is paint-guarded until the production SaaS stylesheet is ready, preventing the raw unstyled SSR flash while retaining substantive initial HTML for SEO.
- Preserved Local/Ollama Cloud distinction, Privacy Mode, BYOK outage fallback and user-browser → user-Ollama architecture.
