Skip to content

Synapse v1.7.0 — "llm_wiki 1:1 core parity, link-regression fix, editorial redesign"

Aligns the three core operations (Ingest, Review, Lint) and the generated page types 1:1 with nashsu/llm_wiki v0.6.3, fixes the wikilink-density regression introduced in 1.6.0, brings the new-vault onboarding to parity, and refreshes the entire frontend with a new "editorial knowledge workspace" visual language. Behavior spec: docs/reference/LLMWIKI-CORE-LOGIC-v0.6.3.md; decisions: ADR-0076 through ADR-0083.

Added

  • Block-based ingest pipeline (ADR-0076): a provider-neutral port of llm_wiki's two-stage text pipeline — markdown analysis → ---FILE: / ---REVIEW: block generation → schema-validated block writer. New modules ingest/{prompts,blocks,sanitize,block_loop,block_writer,context,writer,pipeline}.py. In "blocks" mode every provider — Local, API, and the agentic CLI — runs the block loop via complete(). "blocks" is now the default; "json" is kept as a rollback lever.
  • Schema-driven page routing + open page-type set (ADR-0077): wiki/schema.py parses the schema.md "Page Types" table into an authoritative type → dir map; custom types persist as a raw page_type string.
  • New-vault onboarding wizard (ADR-0081; migration 0032): a 3-step modal (name + parent dir → mandatory AI output language → scenario template) that auto-activates the new vault. The 5 scenario templates carry extra_dirs + custom page types; per-vault vault_state.output_language drives the ingest language directive.
  • index.md "Recently Updated" — a code-owned bounded catalogue section alongside the K3 per-type catalogue (ADR-0078); manual POST /ops/overview/regenerate.
  • Parity E2E harness (ADR-0083): deterministic 3-doc corpus + scripts/parity_e2e/compare.py (tolerance bands + a total-links ≥ 1.5.6 baseline regression sentinel) + runbook.
  • Editorial frontend redesign — a new design-token language (ink #0F1729, cool neutrals, legible categorical page-type palette), a grouped nav rail (Create / Understand / Maintain), an editorial Wiki reader with a Connections panel (server FA2 coords, I2), a Review decision-trace card, and a shared button/badge/mono-metadata kit. Light + dark, EN/IT parity.
  • Home dashboard, second pass — a composition hero (total pages set large over a jewel-tone per-type bar + legend), semantic KPI states, and a primary Create action on review-preview rows.

Changed

  • Wikilink density fixed at the prompt — the regression was diagnosed as prompt-only: the 6-type JSON scaffold had buried the single [[wikilink]] instruction. The ported prompts restore prominent, repeated wikilink guidance and a "Connections to Existing Wiki" analysis section.
  • Wikilink enrich post-pass defaults OFF (ADR-0076) — llm_wiki produces links inline only; the post-pass would double-count. One opt-in toggle away.
  • Review (ADR-0079): the auto-resolve sweep fires on queue drain (not per run); Create Page defaults to a deterministic stub (mode="stub"); block-loop REVIEW blocks are enqueued.
  • log.md entries use llm_wiki's ## [YYYY-MM-DD] ingest | Title format. overview.md is regenerated once per queue-drain batch via complete() at a 120s ceiling.
  • Generation covers all derived page types — query, comparison and synthesis pages from open questions / commensurable subjects / cross-cutting conclusions.
  • Wikilinks are emitted as bare kebab-case slugs ([[cloud-cost-explorer-api]]), the form the reference writes.
  • The orchestrator (3,851 → 1,493 lines) is decomposed behind a re-export facade.

Fixed

  • The 1.6.0 wikilink-density regression.
  • Onboarding no longer strands a new vault un-activated.
  • Dangling wikilinks under the CLI provider — routing the CLI through the block loop lifts link resolution to ~90–100% on the 1:1 E2E.
  • Block-loop non-convergence — the validator no longer counts app-managed index/log/overview FILE blocks as routing errors.
  • overview.md stayed an empty stub — the drain-time complete() path now produces a rich synthesis.
  • Review auto-resolve did nothing under the CLI — fixed with complete() + a 120s ceiling.
  • Frontend showed the wrong vault — the dashboard never synced vault_id from /status.

Upgrade

  1. Run Alembic migration 0032 (additive, nullable vault_state.output_language; NULL = auto).
  2. wikilink_enrich_enabled now defaults false.
  3. ingest_pipeline_format now defaults to "blocks" (the E2E-verified parity path). Set it to "json" to roll back to the 1.6.x loop (removal slated for 2.0.0).
  4. Review/overview single-call timeouts default to 120s (review_sweep_timeout_seconds, review_propose_timeout_seconds, overview_timeout_seconds).