add claude-obsidian
This commit is contained in:
@@ -0,0 +1,344 @@
|
||||
> DragonScale is now a four-mechanism, opt-in memory layer for LLM wiki vaults.
|
||||
|
||||

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

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

|
||||
|
||||
## 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.
|
||||
Reference in New Issue
Block a user