> DragonScale is now a four-mechanism, opt-in memory layer for LLM wiki vaults. ![DragonScale Memory mechanism overview](https://raw.githubusercontent.com/AgriciDaniel/claude-obsidian/main/wiki/meta/dragonscale-mechanism-overview.png) ## TL;DR - Shipped: DragonScale now has fold rollups, deterministic page addresses, semantic tiling lint, and boundary-first autoresearch. - Gated on: `bash bin/setup-dragonscale.sh`, plus local dependencies per mechanism. - Did not ship: fold-of-folds, calibrated tiling thresholds, hosted mode, or multi-vault rollup. ## Same-day release sequence The plugin version is `1.6.0` and the annotated tag `v1.6.0` points at the release commit on `main`. The narrative below includes `1.5.0`, `1.5.1`, and `1.6.0` because 2026-04-24 bundled three local release states into one cycle. `1.5.0` was Phase 3.5. It hardened the DragonScale base. It added the installer, test harness, changelog, Makefile targets, and opt-in wiring for the first three mechanisms. It also synced plugin metadata to `1.5.0`. `1.5.1` was Phase 3.6. It fixed five narrow issues before Phase 4. Those fixes covered tiling report path confinement, rollout baseline date, AGENTS wording, `.raw/` manifest wording, and install-guide version drift. `1.6.0` was Phase 4. It shipped Mechanism 4: boundary-first autoresearch. It added `scripts/boundary-score.py`, wired no-topic `/autoresearch` into frontier suggestions, added boundary-score tests, and bumped the DragonScale spec to v0.4. ## Four mechanisms ### 1. Fold operator What: extractive rollups of `wiki/log.md` entries into fold pages under `wiki/folds/`. Invoke: ask `fold the log, dry-run k=3`, then `fold the log, commit k=3` if the output is right. Skip: skip when the log has no coherent batch, or when you want deletion-based compaction. Folds summarize. They do not garbage collect. Status: shipped in `1.5.0`. First real run: `wiki/folds/fold-k3-from-2026-04-23-to-2026-04-24-n8.md`. Observed output: 115 lines. 8 children. Flat extractive fold. ### 2. Deterministic page addresses What: stable `address: c-NNNNNN` frontmatter for new non-meta wiki pages. Invoke: run `./scripts/allocate-address.sh` directly, or let `wiki-ingest` assign addresses after DragonScale setup. Skip: skip when you do not need stable page IDs, or when more than one writer may assign addresses at the same time. Status: shipped in `1.5.0`. Format: `c-000042`. Important limit: this is a creation-order counter. It is not a content hash. Validation run: counter advanced from 2 to 3. It returned `c-000002`. The unassigned reservation gap is acceptable under the spec. ### 3. Semantic tiling lint What: embedding-based duplicate-page detection for the wiki. Invoke: run `python3 ./scripts/tiling-check.py --peek` for readiness, or `python3 ./scripts/tiling-check.py --report wiki/meta/tiling-report-YYYY-MM-DD.md` for a saved report. Skip: skip when `ollama` or `nomic-embed-text` is unavailable, or when uncalibrated review bands would create more noise than signal. Status: shipped in `1.5.0`. Default model: local `nomic-embed-text` through `ollama`. Default bands: `>= 0.90` error. `0.80` to `0.90` review. Below `0.80` pass. Important limit: the defaults are seed values. They are not calibrated to this vault. First full report: `wiki/meta/tiling-report-2026-04-24.md`. ### 4. Boundary-first autoresearch What: frontier scoring for wiki pages, used as candidate selection for no-topic `/autoresearch`. Invoke: run `/autoresearch` with no topic in a DragonScale-enabled vault, or run `python3 ./scripts/boundary-score.py --json --top 5`. Skip: skip when you want explicit topic control only, or when you want DragonScale limited to pure memory operations. Status: shipped in `1.6.0`. Formula: `boundary_score(p) = (out_degree(p) - in_degree(p)) * exp(-days_since_updated / 30)`. What it does: finds pages that point outward, receive few inbound links, and are still recent enough to be useful. What it is not: it is not pure memory. It is agenda control. The user still chooses the topic. First run artifact: `wiki/meta/boundary-frontier-2026-04-24.md`. Top frontier facts: 22 scoreable pages. 7 positive-score pages reported. Top score was `4.693`. `DragonScale Memory` scored `4.000`. ## The dragon curve, briefly The Heighway dragon is built by paperfolding recursion. Each construction step folds a turn sequence into a larger self-similar sequence. The turn sequence is the regular paperfolding sequence, OEIS A014577. See [Dragon curve](https://en.wikipedia.org/wiki/Dragon_curve). Its boundary has fractal dimension about `1.5236`. That number is useful here as orientation, not as proof. It says the boundary is not a simple line and not a filled plane. It is structured frontier. That makes it a good analogy for a memory layer. Recursive structure suggests hierarchical rollup. Self-similar boundary suggests frontier-first agenda. But this is analogy, not derivation. DragonScale does not prove optimal memory behavior from curve geometry. ## Enablement Run: ```bash bash bin/setup-dragonscale.sh ``` Prereqs: base vault setup first, `flock` for allocator and tiling locks, `python3` for Mechanisms 3 and 4, and local `ollama` plus `nomic-embed-text` for Mechanism 3. Guide: [docs/dragonscale-guide.md](../dragonscale-guide.md). ## Validation ![Six-test validation flow](https://raw.githubusercontent.com/AgriciDaniel/claude-obsidian/main/wiki/meta/dragonscale-6-test-flow.png) Validation date: 2026-04-24. Source: `wiki/log.md`, entry `DragonScale end-to-end validation pass (Teams, 6 tests)`. Result: the six-test menu passed. `make test` stayed green throughout. T0: pulled `nomic-embed-text` for local embeddings. Observed: 274 MB. 15 seconds wall time. T1: ran Mechanism 1 dry-run with `k=3`. Observed: dry-run OK. 8 children. No em dashes in generated fold content. T2: ran Mechanism 2 real allocation. Observed: counter advanced from 2 to 3. Returned `c-000002`. The address was an unassigned reservation. Gap accepted by spec. T3: ran Mechanism 3 full tiling with model present. Observed: 41 pages scanned. 21 pages embedded. 20 pages skipped. 0 errors at `>= 0.90`. 15 review pairs in `0.80` to `0.90`. Top review pair: `0.8822` for `Compounding Knowledge` and `LLM Wiki Pattern`. Interpretation: legitimate semantic neighbor. Not an automatic merge. Report: `wiki/meta/tiling-report-2026-04-24.md`. T4: ran Mechanism 1 commit. Observed: first real fold committed. 115 lines. 8 children. Flat extractive fold. Fold: `wiki/folds/fold-k3-from-2026-04-23-to-2026-04-24-n8.md`. Why it matters: it flips the old status from dry-run only to one committed fold in this vault. Closeout test status: `make test` passed. Closeout counts: 12 shell assertions for address allocation. 18 Python assertions for tiling. 44 Python assertions for boundary scoring. Zero `ollama` dependency. T6: ran Mechanism 4 no-topic autoresearch. Observed: selected `How does the LLM Wiki pattern work?`. Score `1.7022`. It was candidate number 3 after skipping the top source page and top self-reference. Fetches: 6 web fetches. Inputs included: Karpathy gist. RAG paper `arXiv:2005.11401`. MemGPT paper `arXiv:2310.08560`. Obsidian docs. Output: 3 new concept pages filed. Each included Primary Sources. New concept pages: - `wiki/concepts/Persistent Wiki Artifact.md` - `wiki/concepts/Source-First Synthesis.md` - `wiki/concepts/Query-Time Retrieval.md` Integration: the new concepts were added to `wiki/index.md` and `wiki/concepts/_index.md`. They extend `How does the LLM Wiki pattern work?`. They cross-reference `LLM Wiki Pattern`. ![Boundary-first autoresearch: frontier picked, pages filed](https://raw.githubusercontent.com/AgriciDaniel/claude-obsidian/main/wiki/meta/dragonscale-frontier-graph.png) ## What is not in v1.6.0 - No fold-of-folds. - No hierarchical level stacking beyond one flat committed fold. - No automatic deletion or compaction of child pages. - No calibrated M3 thresholds. - No literature-backed M3 bands for this specific vault. - No automatic merging from tiling results. - No pure-memory claim for M4. - No hidden topic choice in M4. - No hosted or managed mode. - No multi-vault fold rollup. - No multi-writer address-assignment guarantee. - No alias-aware full Obsidian wikilink resolver in boundary scoring. - No persistent boundary-score cache. - No automatic autoresearch trigger. ## Upgrade from v1.4.x This is non-breaking for base users. Upgrade path: 1. Pull `main`. 2. Reinstall as a plugin if your agent setup requires it. 3. Keep using the normal v1.4.x wiki workflow if you do not want DragonScale. 4. Opt into DragonScale only when ready: ```bash bash bin/setup-dragonscale.sh ``` If you do not opt in, nothing changes from your v1.4.x workflow. DragonScale is feature-detected. `wiki-ingest`, `wiki-lint`, and `/autoresearch` fall back when the setup state or helper dependencies are absent. ## Attribution Diagrams in this release note are original SVGs under the repo license (MIT). The dragon curve and paperfolding references are text-only. For images and construction history, see the Wikipedia article linked above. Fonts used in the SVGs: Space Grotesk (SIL Open Font License), with system-ui fallback. ## Credits - Karpathy LLM Wiki pattern. - Heighway paperfolding and the dragon curve analogy. - Codex sub-agent delegation for the release validation and review loop.