Files
김경종 72dad72703
Tests / Hermetic test suite (push) Has been cancelled
Tests / Skill frontmatter validation (push) Has been cancelled
add claude-obsidian
2026-05-28 10:57:16 +09:00

9.3 KiB

DragonScale is now a four-mechanism, opt-in memory layer for LLM wiki vaults.

DragonScale Memory mechanism overview

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.

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

Validation

Six-test validation flow

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

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