> 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

<!-- overview diagram rendered at the top of the page. -->

### 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.
