Skip to content

Synapse 1.3.5 β€” Allineamento dei file-cardine a llm_wiki πŸ—‚οΈ

Release di paritΓ  di formato con nashsu/llm_wiki sui quattro file-cardine del vault (schema.md, log.md, overview.md, purpose.md) e sul frontmatter delle pagine generate. overview.md e purpose.md erano giΓ  allineati; questa release chiude i due divari residui β€” schema.md (era uno stub) e log.md (era un marker log macchina) β€” mantenendo gli invarianti.

πŸ“œ schema.md β€” da stub a contratto completo

Lo schema di bootstrap (vault.py) e il vault reale ora descrivono l'intero contratto che l'AI di ingest e i curatori umani seguono, in stile llm_wiki ma fedele a Synapse: - Page Types β†’ directory (entity/concept/source/query/comparison/synthesis + overview/index/log) - Naming Conventions (kebab-case, author-year-topic per le fonti, question-slug per le query) - Frontmatter completo, inclusi lang (F3) e i campi opzionali delle fonti (authors/year/url/venue) - Index Format, Log Format, Cross-referencing Rules, Contradiction Handling

πŸ“– log.md β€” da marker macchina a diario narrativo (K4)

append_log ora scrive un log narrativo, raggruppato per giorno, allineato a llm_wiki e ancora append-only + machine-parseable (K4 preservato):

## 2026-07-06

- 19:52:54Z Β· indexed Β· concept Β· [[Cloud Licensing]] β€” wiki/concepts/cloud-licensing.md
- 19:53:10Z Β· deleted Β· wiki/concepts/stale-page.md
  • Header ## YYYY-MM-DD scritto una volta al giorno; esattamente un bullet per ingest (AC-K4-1)
  • Verbo azione (indexed/deleted), tipo pagina e wikilink al titolo quando noti
  • Formato centralizzato: anche la cancellazione pagina (DELETE /pages) passa da append_log
  • Lo storico esistente non viene riscritto (append-only, I5/K4); le voci nuove usano il nuovo formato

🏷️ Frontmatter β€” created / updated

Ogni pagina generata (write_wiki_page) ora porta created e updated (date-only, Obsidian-friendly): - created Γ¨ impostato una volta e preservato attraverso le rigenerazioni (letto dal file su disco) - updated avanza a ogni scrittura - L'hash Γ¨ calcolato sugli stessi byte scritti su disco β†’ nessun falso mismatch nell'optimistic-lock (ADR-0035)

πŸ€– CI β€” stop alla deprecation Node 20

GitHub Actions forzava su Node 24 le action ancora su Node 20. Pin aggiornati alle major correnti (luglio 2026) su tutti i workflow (ci.yml, desktop-release.yml, release-cut.yml, release-notes-sync.yml): - actions/checkout v4 β†’ v5 - docker/build-push-action v5 β†’ v7 - docker/login-action v3 β†’ v4 - docker/setup-buildx-action v3 β†’ v4 - docker/setup-qemu-action v3 β†’ v4

βœ… Verifica

  • Suite backend verde sulle aree toccate (ingest incrementale, save-to-wiki, obsidian-check, cascade-delete, smoke provider 3-backend); ruff/mypy puliti sui moduli modificati
  • Fallimenti locali residui = sole dipendenze opzionali non installate in dev (fa2_modified/igraph, pypdf) β€” verdi in CI/Docker
  • Nessuna modifica agli invarianti: K4 resta append-only + parseable; I5 Obsidian-valid; I1 indice incrementale

Note

  • AC-K4-1/2 evolvono nel formato (una voce narrativa per ingest) mantenendo la semantica (append-only, una voce per ingest); test test_ingest_incremental aggiornati di conseguenza
  • La popolazione automatica di authors/year/url/venue sulle source page resta un'estensione futura (richiede estrazione lato provider); lo schema li documenta e extra="allow" li round-trippa se un provider li emette