Repository navigation
v1.3.0 — Safer, Cleaner, guided upgrades, dormant nodes and a modern visualization
Synaptic Core — Release Notes v1.3.0
Date: 2026-07-02 · Engine: 1.2.0 → 1.3.0 · Brain schema: unchanged (still 1.0)
One combined release. This single MINOR folds the migration-&-upgrade-hardening work
(originally scoped as a standalone PATCHv1.2.1) together with the additive structural
improvements.v1.2.1is not released standalone — its entries ship inside 1.3.0.
The brain schema is unchanged; no/synaptic-upgradeis required to adopt this release.
Reinstall the skill for the new engine behavior.
This document has two parts. Part A is for a brain owner or user — plain language, no
jargon. Part B is the change-level technical detail.
TL;DR — which path are you on?
- Already on Synaptic v1 (v1.0.0+)? → This is an UPGRADE, not a migration. No schema change,
nothing to migrate. Update/reinstall the skill so the engine is1.3.0; optionally start tagging
lifecycle:on nodes. The new interactive graph, god-node audit and hardened checks come for free.
→ Followdocs/UPGRADE-v1.x-to-v1.3.0.md. (Invoking
/synaptic-upgradeon an already-1.0brain just refreshes the engine + offers PARA — it does not
run a full migration.) - Still on v0.3 (pre-1.0)? → This is a MIGRATION and it lands you on v1.3.0. Back up first,
run it guided, one commit per phase, and pass the retrieval drill before cutover (git fast-forward).
→ Followdocs/UPGRADE-v0.3-to-v1.md(paste-to-agent runbook:
docs/UPGRADE-v0.3-to-v1.AGENT.md). Needs Node for the tools (else the
documented manual fallbacks). - Brand new? →
/synaptic-init.
Part A — What v1.3.0 gives you
-
Safer, more honest migrations. A brain can be structurally clean and still be hard to
retrieve from — well-formed files, but too few links between them. Before, the checker said
"all good" and stopped there. Now it prints a plain retrieval-readiness summary and, when your
brain looks structurally fine but poorly connected, it tells you so with an advisory caveat.
A brain that "passes" is no longer silently allowed to be retrieval-poor — you're told. -
A "dormant" shelf for finished or idle knowledge. You can now mark a note as
dormantso
it stops cluttering your everyday working context, while staying fully searchable and one flip
away from active again. Nothing is deleted; the note, its index entry, and its links all stay
intact. It's an archive-don't-delete cooling shelf — reversible with a single field change. -
A real interactive graph you can actually explore. The old graph produced a static picture
that was unreadable once a brain grew. v1.3.0 ships a single self-contained HTML file you open
in a browser and use: search for a note, filter by cluster or link type, zoom and pan, and
expand or collapse busy hubs. No internet connection, no external downloads — one local file. -
Cleaner, guided upgrades. Bringing an older brain up to date is now walked through step by
step, with a clear checklist you tick off per phase and a short "does retrieval actually work?"
test at the end. The default mode keeps things quiet and safe; the safety checks run the same
either way. You end up with a short before/after record of what moved and why. -
Nothing new to install, and your data stays where it is. The upgrade is files in, files
out — no server, no database. Migrations run on a copy and only switch over once you're happy,
and a new short document spells out plainly what stays 100% on your machine.
Part B — Technical detail
No schema bump — the brain schema stays 1.0; a v1.2.0 or skill-less agent simply ignores
the one new optional frontmatter key. Engine moves 1.2.0 → 1.3.0. Two paths are served:
the v0.3 → v1.3 migration (for late adopters bringing an old brain forward) and the
v1.2 → v1.3 upgrade (an existing v1 brain has nothing to migrate — reinstall the skill).
Migration & upgrade hardening
(Originally scoped as v1.2.1. Ships inside 1.3.0.)
-
Retrieval-readiness report + structural-green ≠ retrieval-green.
tools/check.jsnow
prints a retrieval-readiness summary (nodes, edges, clusters, orphans, edges/node,
MOC-reachable) computed over one canonical knowledge-scoped, MOC-excluded, undirected-deduped
edge/degree universe (new sharedtools/lib/brain-graph.js, used verbatim bytools/graph.js
and the audit heuristics so the tools can never disagree on topology). When the brain is
structurally clean (0 errors) yet a connectivity heuristic trips (orphan ratio > 20% or
edges/node < 0.5), it prints an advisory CAVEAT — structural-green ≠ retrieval-green —
that never changes the exit code. -
Non-live-artifact check in
knowledge/+audits/exclusion.tools/check.jsgains a
fence-aware check: an ERROR only for exact-name / path-segment leaks (MIGRATION_DONE.md
insideknowledge/, a_migration-staging/path segment insideknowledge/), and WARN-only
fuzzy heuristics (surviving prose carrying a{{...}}placeholder; a filename matching a
closed-audit-report pattern).audits/is wired into both the exclusion set and the link index;
playgrounds/and_migration-staging/are treated as brain-root siblings ofknowledge/,
never children. -
lint: allow-largesuppresses the soft-budget WARN. A node may carrylint: allow-large
(scalar or list form) to opt out of the soft size-budget WARN, decoupling the budget policy from
the node type (type: referencecontinues to suppress it as well). -
MIGRATION_DONEgate + mandatory retrieval drill + one-commit-per-phase. The v0.3 → v1
migration now closes each phase against a binary checklist artifact — a new
templates/MIGRATION_DONE.md(Phase M / C / V boxes, added toMANIFEST.txt) that lives at the
brain root or_migration-staging/, never inknowledge/(aMIGRATION_DONE.mdunder
knowledge/is acheck.jsERROR). A phase is DONE only when every box under it is checked.
Phase V adds a mandatory retrieval drill with a deterministic question-selection recipe
(3 most-linked nodes + 2 registry lookups + 1 cross-cluster synthesis, answered by MOC
navigation only) and a binary pass bar (all 5 fact-lookups via navigation, 0 grep-fallbacks; the
synthesis question may miss as a/synaptic-weavegap) — because check.js green is necessary
but NOT sufficient. The runbook prescribes ≥3 distinct, named, independently-revertible
commits on the upgrade branch (migrate: Phase M …→refactor: Phase C …→ `chore: cleanup- cutover …
), each passingcheck.jsbefore the next begins, with the commit hash recorded per phase in the ledger. The AGENT runbook andreferences/upgrade-to-v1.md` mirror the drill and the
gate.
- cutover …
-
Git fast-forward cutover (Windows/OneDrive-safe) + guided-default mode + owner orientation.
The cutover now leads withgit switch main && git merge --ff-only <upgrade-branch>— files
rewritten in place, no live-folder rename — with the folder rename/swap demoted to a non-git
fallback and an explicit Windows/OneDrive lock/half-move/conflict-copy warning; if--ff-only
refuses, that surfaces concurrent writers and routes to the shared-brain freeze path. A git
worktree is noted as the safe way to build the v1 copy. ROLLBACK is reconciled to match (a git
brain rolls back via git — reset to / forward-revert thepre-v1tag; the rename is the non-git
path only). A "Mode: guided (default) vs interactive" callout enumerates the ONLY questions
guided mode may ask (topology intake, any deletion, private-vs-shared, cutover ack) and states
that guided vs interactive changes verbosity, NOT the safety gates (conservation gate,
no-silent-deletion ledger, and the Phase V drill run identically in every mode). Step 9 gains an
owner-facing "how to use your new brain" orientation plus a soak/cleanup checklist.
references/upgrade-to-v1.mdmirrors the FF cutover, the mode definition, and the worktree note. -
Tooling / environment notes + deletion ledger as a standing rule. The AGENT runbook gains a
"Tooling / environment notes" appendix framing four host quirks as ENV diagnostics, not
Synaptic rules: Git Bash has norg(usegrep -rn/git grep/ the agent's search — every
grep-style instruction stays portable);apply_patch/ VS Code fs-write failures fall back to
direct writes; OneDrive/Dropbox locks → move to a local path (cross-links the Step 2 SYNC GUARD
and the FF-cutover rationale); and PowerShellGet-Content/WriteAllTextround-trips
corrupt non-ASCII (em-dash, arrows, curly quotes) → prefer UTF-8-aware writes and keep tool
source ASCII-safe. The deletion/move/archive ledger is promoted to a STANDING rule (not
migration-only): a one-line note (what, why, loser → winner or destination, recoverable-via-git;
git is the archive) is added toreferences/consolidate.md,references/maintain.md, and
references/weave.md, matching the disciplinereferences/upgrade-to-v1.mdalready uses. -
CORE breadcrumb as an instruction, robust when hooks are absent (issue #2). The per-turn
journal breadcrumb is now stated as an instruction the agent follows, not only a hook — the
floor underneath the automation, so a session that reaches compaction is never
breadcrumb-empty (the issue #2 failure mode: a session neared recompact with no breadcrumbs
written).templates/BRAIN.mdCapture Contract names the failure mode and instructs the agent to
append the breadcrumb per meaningful turn itself; theStophook automates it where wired, but
it is written even when no hook fires — "nothing fires without you acting, there is no idle
daemon."references/consolidate.mdmirrors the instruction-first framing and adds a
provisional note — the per-turn breadcrumb is a token-optimization to revisit when a
Cortex T2 Engram-style FTS journal lands (cross-linksROADMAP.md), never a CORE dependency.
SKILL.md§d adds a per-host degradation floor (Claude Code / Copilot / Codex / Cursor /
Gemini) spelling out the instruction-only breadcrumbs + manual/synaptic-consolidatefallback
when a host has no usable hooks, plus a "PreCompact not fired? SessionStart-rescue is the net"
cross-reference. The size-lockedBEGIN:SYNAPTICbridge block is left byte-for-byte untouched
(the instruction already lives in CORE viaBRAIN.md).
Structural improvements
-
PARA
lifecycleaxis (optional, backward-compatible). Knowledge nodes MAY carry one
optional frontmatter field —lifecycle: project | area | resource | dormant— an
actionability axis orthogonal to the editorialstatus: active | stale | archivedfield
(the enums share no token —dormantdeliberately differs fromarchivedto prevent cross-field
bleed). It scopes the active working set:project+area+ (absent → area) load by
default;resource+dormantare lazy-pull. Absence is legal and behaves exactly as a
pre-1.3.0 node, so no schema bump and a v1.2.0 / skill-less agent simply ignores the unknown
key. Demotion is archive-don't-delete: fliplifecycle: dormant(a reversible cooling that
keeps the file, its_index.mdentry, and its edges intact — decoupled fromstatus; do not
also setstatus: archived); promotion is a single-field flip back.projectis a lifecycle
value, not a newtype:token (thetype:enum is unchanged); aprojectnode should link
OUT to a durablearea/resourcenode. Documented across the node template (commented-out
block),SKILL.md(new "Lifecycle axis" section),references/consolidate.md(Step 4 + a
status-vs-lifecycleorthogonality table),references/audit.md(a WARN completion-cadence
pass:projectquiet > 60d /areaquiet > 90d, with an explicit note thatdormant/resource
are NOT orphans), andBRAIN.md.tools/check.jsadds an advisory WARN when a present
lifecycle:value is out of enum — never required, never an ERROR. -
Interactive force-directed
graph.html(replaces the static viz).tools/graph.jsis
rewritten to emit a single self-contained, zero-network HTML file (inline CSS + a
deterministic force-directed simulation seeded from node count) — no CDN, no<script src>, no
fetch. It is typed-edge aware (colours/dashes per edge kind) with cluster / edge-type /
lifecycle filters, search, pan/zoom, and expand/collapse hubs. The graph shares the exact same
buildBrainGraphuniverse ascheck.js(edge parity guaranteed by construction, via the shared
tools/lib/brain-graph.js), and node ids/labels/tags reach the DOM only via safe sinks
(textContent/setAttribute), with the embeddedDATApayload escaped so a filename
containing</script>can't break out of the inline script. Force-directed layout + MIT/Graphify
attribution lines carried intools/README.md.--formatis swallowed for CLI back-compat; an
empty brain renders a graceful empty state. -
God-node / surprising-edge audit heuristics.
/synaptic-auditgains two diagnose-only
graph-health passes (prose-CORE, WARN, no runtime required): a god-node check that flags an
over-connected hub (edge degree ≥ 15, or ≥ 3× the brain's median node degree — whichever is
lower) as a candidate to split into atomic sub-nodes or confirm as a legitimate hub, and a
surprising-edge check that lists authored edges whose endpoints live in different top-level
knowledge/clusters (the high-value multi-hop links embeddings can't infer) for the owner to
confirm or correct. Both route to/synaptic-weave, make no auto-discovery claim (edges are
authored, never inferred), and compute "degree" over the same knowledge-scoped, MOC-excluded,
undirected-deduped edge universe ascheck.js/graph.js.check.jsadditionally emits both as
advisory WARN-class counts when the brain is otherwise clean — never an ERROR, never a gate. -
Local-vs-remote data-boundary governance doc. New
docs/concepts/local-vs-remote-boundary.md(linked from the concepts_index.md) draws the
explicit line between what stays 100% local and what — if anything — leaves the machine: a
four-layer boundary table (CORE files / TOOLS / host LLM / future Cortex), the reusable
governance one-liner, the "only one egress point" argument (the host LLM's context is the sole
boundary, governed by the host's policy, not ours — Synaptic adds no server, DB, telemetry, or
new network boundary), regulated-enterprise applicability (locked-down laptop, auditable by
inspection, no platform rollout), an honest Cognee contrast framed community-over-combat (opaque
runtime vs inert auditable files, no overclaim), and an honest-limits section stating plainly that
Synaptic adds no new egress but does not police it — access control is the host's and
filesystem's job. Swedbank-agnostic ("a regulated enterprise client"). -
Verb-contract note (memify deferred to P4, gated on usage signal). New
docs/concepts/verb-contract.md(linked from the concepts_index.md) maps our authored verbs
(consolidate/weave/synthesize/maintain) against Cognee's (add/cognify/
memify/search) and records the sharpened conclusion:memifyis NOT a separate CORE verb
— it overlaps weave+maintain; the only genuinely new part (usage-reweighting) needs a usage log
CORE lacks, so it is deferred to Phase 4 gated on a usage signal. The note makes no
present-tense self-improvement / usage-weighting claim — usage-weighted self-improvement is framed
as a P4 direction only, keeping the four-verb contract crisp and non-overlapping.
Honest caveat
This release is author-complete and inspection-verified only. Node was unavailable in the
authoring environment, so no tool was executed here — every executable acceptance criterion is at
most pass-by-inspection. The first real runtime validation rides on a Node environment,
specifically the late-adopter v0.3 → v1.3 migration (running tools/check.js for the
retrieval-readiness figures and caveat behavior, and opening the generated graph.html to walk the
render / filters / search / pan-zoom / expand-collapse / empty-state / determinism checklist). Two
independent adversarial inspection passes verified the shared edge/degree universe, the injection
safety of graph.html, the advisory-never-gates behavior, and the byte-untouched BEGIN:SYNAPTIC
bridge; a short list of flagged UX and edge-extraction nits is tracked for follow-up. Treat runtime
behavior as expected-correct pending that first execution.