add claude-obsidian
This commit is contained in:
@@ -0,0 +1,348 @@
|
||||
---
|
||||
type: meta
|
||||
title: "2026-04-24 v1.6.0 Release Session"
|
||||
created: 2026-04-24
|
||||
updated: 2026-04-24
|
||||
tags:
|
||||
- meta
|
||||
- session
|
||||
- release
|
||||
- dragonscale
|
||||
status: evergreen
|
||||
related:
|
||||
- "[[log]]"
|
||||
- "[[hot]]"
|
||||
- "[[DragonScale Memory]]"
|
||||
- "[[claude-obsidian-v1.4-release-session]]"
|
||||
---
|
||||
|
||||
# 2026-04-24 v1.6.0 Release Session
|
||||
|
||||
A same-day release cycle covering v1.5.0, v1.5.1, and v1.6.0.
|
||||
|
||||
This session took DragonScale from a three-mechanism opt-in extension to a four-mechanism opt-in extension, with a hardening point release in the middle.
|
||||
|
||||
**Public release notes**: [docs/releases/v1.6.0.md](../../docs/releases/v1.6.0.md). That file is the user-facing artifact and the source to paste into a `gh release create v1.6.0` body. This session page is the internal engineering record.
|
||||
|
||||
Ground truth for this page comes from:
|
||||
|
||||
- `CHANGELOG.md` entries `[1.5.0]`, `[1.5.1]`, and `[1.6.0]`
|
||||
- `wiki/log.md` entries for 2026-04-24 covering Phase 3.5, Phase 3.6, and Phase 4
|
||||
- current repository state for file existence, tags, and commit history
|
||||
|
||||
## Release Sequence
|
||||
|
||||
- `v1.5.0`: Phase 3.5, morning. Cross-phase hardening, opt-in DragonScale installer, reproducible tests, `CHANGELOG.md`, `Makefile`, version sync.
|
||||
- `v1.5.1`: Phase 3.6, afternoon. Five surgical hardening fixes across tiling security, rollout baseline, AGENTS docs, wiki-ingest wording, and install guide versioning.
|
||||
- `v1.6.0`: Phase 4, late. DragonScale Mechanism 4 shipped as opt-in boundary-first autoresearch, with the new scorer script, new tests, and no-topic autoresearch candidate flow.
|
||||
|
||||
## Release Summary
|
||||
|
||||
The morning release, v1.5.0, was the hardening pass that closed the hold-ship audit items accumulated across Phases 1 through 3.
|
||||
|
||||
The afternoon release, v1.5.1, was a narrow correction pass that fixed five remaining inconsistencies and one tiling write-path confinement issue before Phase 4 moved forward.
|
||||
|
||||
The late release, v1.6.0, shipped the previously deferred fourth DragonScale mechanism and completed the opt-in DragonScale set described in `[[DragonScale Memory]]`.
|
||||
|
||||
No git tag was created for v1.5.0, v1.5.1, or v1.6.0.
|
||||
|
||||
No push to `origin/main` happened during this release cycle.
|
||||
|
||||
`git tag` verifies that only pre-DragonScale tags exist locally:
|
||||
|
||||
- `v1.1`
|
||||
- `v1.4.0`
|
||||
- `v1.4.1`
|
||||
- `v1.4.2`
|
||||
- `v1.4.3`
|
||||
|
||||
## Phase Timeline For 2026-04-24
|
||||
|
||||
### Morning: Phase 3.5 to v1.5.0
|
||||
|
||||
This was the cross-phase hardening release.
|
||||
|
||||
The goal was to close the 10 hold-ship items found by the holistic audit across the earlier DragonScale phases.
|
||||
|
||||
The release added the missing installer, test harness, and changelog artifacts that made the extension reproducible instead of partially documented.
|
||||
|
||||
Mechanism 4 remained intentionally unshipped at this point.
|
||||
|
||||
The spec still marked it as not implemented, and `/autoresearch` was unchanged.
|
||||
|
||||
The release also synchronized plugin and marketplace version strings to `1.5.0`.
|
||||
|
||||
### Afternoon: Phase 3.6 to v1.5.1
|
||||
|
||||
This was a targeted hardening point release.
|
||||
|
||||
The work did not expand scope.
|
||||
|
||||
It corrected five issues that mattered for correctness, consistency, or security:
|
||||
|
||||
- tiling report path confinement
|
||||
- rollout baseline date
|
||||
- AGENTS skill-table and compatibility wording
|
||||
- wiki-ingest wording about immutable `.raw/` versus maintained manifest
|
||||
- install guide version drift
|
||||
|
||||
The result was a smaller, cleaner release state before Mechanism 4 moved from proposal to shipped code.
|
||||
|
||||
### Late: Phase 4 to v1.6.0
|
||||
|
||||
This was the feature release that shipped boundary-first autoresearch as DragonScale Mechanism 4.
|
||||
|
||||
The new scorer computes frontier candidates from the wikilink graph and exposes them when `/autoresearch` is invoked without a topic in a DragonScale-enabled vault.
|
||||
|
||||
The mode remained opt-in and was labeled as agenda control throughout the implementation and documentation.
|
||||
|
||||
Versions were then synced to `1.6.0` in `plugin.json` and `marketplace.json`.
|
||||
|
||||
## What Shipped In v1.5.0
|
||||
|
||||
### Added
|
||||
|
||||
- `skills/wiki-fold/` as the shipped opt-in fold operator for Mechanism 1. The changelog describes it as extractive and structurally idempotent, with dry-run by default and explicit commit mode.
|
||||
- `scripts/allocate-address.sh` and the `address: c-NNNNNN` convention for Mechanism 2. The allocator is flock-guarded and supports re-ingest idempotency through `.raw/.manifest.json address_map`.
|
||||
- `scripts/tiling-check.py` for Mechanism 3. The checker uses local `nomic-embed-text` through ollama and exposes conservative seeded thresholds for duplicate-page review.
|
||||
- `wiki/concepts/DragonScale Memory.md` as the full design spec for the extension at v0.3 during this release.
|
||||
- `bin/setup-dragonscale.sh` as the idempotent DragonScale installer.
|
||||
- a reproducible `tests/` suite for allocator and tiling checks, runnable through `make test`
|
||||
- `Makefile` developer targets for testing, setup, and cleanup
|
||||
- `CHANGELOG.md` as the first explicit release ledger for this branch of work
|
||||
|
||||
### Changed
|
||||
|
||||
- `hooks/hooks.json` stages `.vault-meta/` in addition to `wiki/` and `.raw/`, so DragonScale runtime state is captured by the auto-commit hook
|
||||
- `skills/wiki-ingest/SKILL.md` and `skills/wiki-lint/SKILL.md` gained opt-in DragonScale sections behind feature detection, while preserving default behavior for vaults that have not adopted DragonScale
|
||||
- `agents/wiki-ingest.md` added the single-writer rule for address assignment
|
||||
- `agents/wiki-lint.md` documented Address Validation and Semantic Tiling checks
|
||||
- stale `allowed-tools` frontmatter was removed from `wiki-ingest` and `wiki-lint` to match the kepano-style `name` plus `description` convention for those files
|
||||
- version strings were synced across plugin metadata and documentation
|
||||
|
||||
### Security
|
||||
|
||||
`scripts/tiling-check.py` defaults `OLLAMA_URL` to localhost only.
|
||||
|
||||
Remote endpoints require the `--allow-remote-ollama` flag.
|
||||
|
||||
Symlinks and vault-root escapes are rejected before any read.
|
||||
|
||||
### Explicitly Not In v1.5.0
|
||||
|
||||
Mechanism 4 was still a future proposal in this release.
|
||||
|
||||
The changelog states that boundary-first autoresearch did not ship in v1.5.0 and that `skills/autoresearch/SKILL.md` was unchanged.
|
||||
|
||||
That matters because the same day later reversed this state in v1.6.0.
|
||||
|
||||
## What Shipped In v1.5.1
|
||||
|
||||
v1.5.1 was intentionally narrow.
|
||||
|
||||
It fixed five concrete issues and did not introduce a new mechanism.
|
||||
|
||||
### Fixed
|
||||
|
||||
- `scripts/tiling-check.py`: the `--report PATH` flag is now resolved against `VAULT_ROOT` and rejected if it escapes, preventing accidental or hostile writes outside the vault
|
||||
- `.vault-meta/legacy-pages.txt`: rollout baseline corrected from `2026-04-24` to `2026-04-23`, which matches the earliest addressed page in the seed vault
|
||||
- `AGENTS.md`: `wiki-fold` added to the skills table, and the blanket statement about all skills using only `name` and `description` was narrowed to newer skills only
|
||||
- `skills/wiki-ingest/SKILL.md`: clarified the difference between immutable user-dropped source documents in `.raw/` and the maintained `.raw/.manifest.json`
|
||||
- `docs/install-guide.md`: version updated from `1.2.0` to `1.5.0`, with a DragonScale optional-install callout
|
||||
|
||||
### Why v1.5.1 Existed
|
||||
|
||||
The log entry describes this as pre-Phase-4 hardening.
|
||||
|
||||
That is the right framing.
|
||||
|
||||
It reduced drift across docs, setup state, and security behavior before the Mechanism 4 rollout.
|
||||
|
||||
## What Shipped In v1.6.0
|
||||
|
||||
### Added
|
||||
|
||||
- boundary-first autoresearch as DragonScale Mechanism 4, still opt-in
|
||||
- `scripts/boundary-score.py`, which computes `(out_degree - in_degree) * recency_weight` over the wikilink graph
|
||||
- `/autoresearch` without a topic now offers the top five frontier pages as candidate research targets when DragonScale is present
|
||||
- `tests/test_boundary_score.py` with 35 unit tests covering parsing, recency weight, wikilink extraction, graph construction, scoring, and CLI behavior
|
||||
- `make test-boundary`, integrated into `make test`
|
||||
|
||||
### Changed
|
||||
|
||||
- `skills/autoresearch/SKILL.md` gained a Topic Selection section with explicit, boundary-first, and user-ask paths
|
||||
- `commands/autoresearch.md` documents no-topic usage for the two relevant modes
|
||||
- `wiki/concepts/DragonScale Memory.md` flipped Mechanism 4 from not implemented to shipped, added the exact scoring formula, and bumped the spec to v0.4
|
||||
- version metadata was synced to `1.6.0` across plugin metadata
|
||||
|
||||
### Scope And Behavior
|
||||
|
||||
The log entry is more detailed than the changelog and records the operating constraints clearly:
|
||||
|
||||
- the mode is opt-in
|
||||
- the mode is labeled as agenda control
|
||||
- helper failure falls back to asking the user
|
||||
- self-loops, unresolved targets, meta-targets, symlinks, and vault escapes are excluded
|
||||
- code-fence parsing handles both backticks and tildes with length-aware closure rules
|
||||
- stale pages approach zero recency weight instead of receiving a floor
|
||||
|
||||
### Why v1.6.0 Matters
|
||||
|
||||
This is the release that completed the originally proposed four-part DragonScale design in shipped form.
|
||||
|
||||
It also changed `/autoresearch` from topic-only operation to a dual-mode flow that can surface candidate frontiers while still keeping user choice explicit.
|
||||
|
||||
## DragonScale Mechanisms: Opt-In Status
|
||||
|
||||
All four mechanisms are opt-in.
|
||||
|
||||
No mechanism is always-on for base vault adopters.
|
||||
|
||||
1. Fold operator (Mechanism 1). Shipped as `skills/wiki-fold/`. Dry-run verified. No fold committed in this vault.
|
||||
2. Deterministic page addresses (Mechanism 2). Shipped via `scripts/allocate-address.sh` and `address: c-NNNNNN`. Feature-detected by ingest and lint flows.
|
||||
3. Semantic tiling lint (Mechanism 3). Shipped via `scripts/tiling-check.py`. Uses local ollama embedding flow and remains optional.
|
||||
4. Boundary-first autoresearch (Mechanism 4). Shipped in v1.6.0 via `scripts/boundary-score.py` and no-topic `/autoresearch` candidate selection.
|
||||
|
||||
## Verified New Files Mentioned In This Session
|
||||
|
||||
The following files were explicitly requested for verification and do exist in the repository:
|
||||
|
||||
- `scripts/boundary-score.py`: yes. New Mechanism 4 scorer in v1.6.0.
|
||||
- `tests/test_boundary_score.py`: yes. New Mechanism 4 unit tests in v1.6.0.
|
||||
- `bin/setup-dragonscale.sh`: yes. New opt-in installer in v1.5.0.
|
||||
- `CHANGELOG.md`: yes. Created in v1.5.0.
|
||||
- `Makefile`: yes. Created in v1.5.0 and later extended in v1.6.0.
|
||||
|
||||
Additional new files recorded in the 2026-04-24 log for Phase 3.5 also include:
|
||||
|
||||
- `tests/test_allocate_address.sh`
|
||||
- `tests/test_tiling_check.py`
|
||||
|
||||
## Testing And Validation Notes
|
||||
|
||||
The release log gives exact validation points that are worth preserving here.
|
||||
|
||||
For v1.5.0:
|
||||
|
||||
- `make test` ran 12 shell assertions for the allocator
|
||||
- `make test` ran 18 Python assertions for tiling-check
|
||||
- no ollama dependency was required for those core tests
|
||||
|
||||
For v1.6.0:
|
||||
|
||||
- `tests/test_boundary_score.py` added 35 unit tests
|
||||
- `make test-boundary` was added and folded into `make test`
|
||||
|
||||
The session also records adversarial review rounds for each phase:
|
||||
|
||||
- Phase 3 reached final verdict `10/10 accept`
|
||||
- Phase 3.5 recorded `5/5 accept` on the doc and agent fixes plus `10/10 accept` on the final holistic audit pass
|
||||
- Phase 4 reached pass after three adversarial rounds
|
||||
|
||||
Those review outcomes explain why the day was split into a hardening release, a point release, and then the final feature release.
|
||||
|
||||
## Git State And Release State
|
||||
|
||||
### Version State
|
||||
|
||||
Local metadata was bumped to `1.5.0`, then `1.5.1`, then `1.6.0` across the release cycle.
|
||||
|
||||
The user explicitly noted that v1.6.0 shipped locally and that no release tag exists for it.
|
||||
|
||||
Current repo checks support that statement.
|
||||
|
||||
### Tag State
|
||||
|
||||
`git tag` returns:
|
||||
|
||||
- `v1.1`
|
||||
- `v1.4.0`
|
||||
- `v1.4.1`
|
||||
- `v1.4.2`
|
||||
- `v1.4.3`
|
||||
|
||||
There is no local tag for `v1.5.0`, `v1.5.1`, or `v1.6.0`.
|
||||
|
||||
### Push State
|
||||
|
||||
The 2026-04-24 log entries repeatedly state `No push` or `no push`.
|
||||
|
||||
This release session remained local.
|
||||
|
||||
There was no push to `origin/main`.
|
||||
|
||||
### DragonScale Commit Range
|
||||
|
||||
The earliest DragonScale-labeled commit in repository history is:
|
||||
|
||||
- `16d9923` `feat: add flock-guarded address allocator for DragonScale Mechanism 2`
|
||||
|
||||
The latest commit in the release-phase DragonScale range before later wiki auto-commits is:
|
||||
|
||||
- `09399ae` `chore: bump to v1.6.0 with Phase 4 + Phase 3.6 CHANGELOG entries`
|
||||
|
||||
For the feature endpoint specifically, the latest DragonScale mechanism commit is:
|
||||
|
||||
- `ad1a1d0` `feat: autoresearch integrates DragonScale Mechanism 4 (opt-in)`
|
||||
|
||||
This page treats `16d9923` through `09399ae` as the practical release-session range, because the latter is the final version-sync commit that closed the feature release.
|
||||
|
||||
## Key Lessons
|
||||
|
||||
These are pulled from the `wiki/hot.md` Key Lessons section current at the time of this session.
|
||||
|
||||
1. Cross-phase audits are essential. Individual phase reviews miss drift between phases.
|
||||
2. Opt-in feature detection (`[ -x script ] && [ -f state ]`) preserves default plugin behavior for adopters and non-adopters alike.
|
||||
3. PostToolUse hook matcher is `Write|Edit`. Bash writes do not fire it. Scripts that mutate tracked state must be Bash-only to avoid side-effect commits.
|
||||
4. Seed-vault self-consistency matters. If the spec says post-rollout pages need addresses, the concept page itself has to have one.
|
||||
5. Codex adversarial review rounds stop when the punch list is empty, not when the author feels done.
|
||||
|
||||
## Session Shape Compared With v1.4
|
||||
|
||||
The earlier `[[claude-obsidian-v1.4-release-session]]` documented a broad ecosystem-response cycle that bundled research, audit response, style cleanup, security history rewrite, and a plugin install hotfix.
|
||||
|
||||
This 2026-04-24 session was narrower and more implementation-focused.
|
||||
|
||||
The main pattern was:
|
||||
|
||||
- complete the missing hardening work for existing DragonScale mechanisms
|
||||
- correct the remaining drift with a point release
|
||||
- then ship the previously deferred fourth mechanism
|
||||
|
||||
That sequencing was justified by the log and changelog.
|
||||
|
||||
Mechanism 4 was not simply appended to an unstable tree.
|
||||
|
||||
It was delayed until the earlier mechanism set had been hardened and the docs aligned.
|
||||
|
||||
## What This Session Did Not Do
|
||||
|
||||
It did not create release tags for the three versions shipped that day.
|
||||
|
||||
It did not push any of the DragonScale release work to `origin/main`.
|
||||
|
||||
It did not make DragonScale mandatory for users who only want the base wiki plugin.
|
||||
|
||||
It did not change the fact that all DragonScale mechanisms remain feature-detected and opt-in.
|
||||
|
||||
## Canonical Release Narrative
|
||||
|
||||
If this day needs to be summarized in one paragraph later, the clean version is this:
|
||||
|
||||
Morning v1.5.0 made DragonScale reproducible and internally consistent. Afternoon v1.5.1 cleaned up the remaining hardening issues. Late v1.6.0 shipped the previously deferred boundary-first autoresearch mechanism, completing the four-part DragonScale extension without changing the plugin's opt-in default posture.
|
||||
|
||||
## Verified Facts Worth Reusing
|
||||
|
||||
- `CHANGELOG.md` contains explicit entries for `[1.5.0]`, `[1.5.1]`, and `[1.6.0]`
|
||||
- `wiki/log.md` contains same-day entries for Phase 3.5, Phase 3.6, and Phase 4
|
||||
- `plugin.json` and `marketplace.json` are at `1.6.0`
|
||||
- the DragonScale installer exists as `bin/setup-dragonscale.sh`
|
||||
- the Mechanism 4 scorer exists as `scripts/boundary-score.py`
|
||||
- the Mechanism 4 tests exist as `tests/test_boundary_score.py`
|
||||
- `Makefile` and `CHANGELOG.md` exist
|
||||
- only pre-DragonScale tags are present locally
|
||||
- there was no push to `origin/main`
|
||||
|
||||
## Closing Note
|
||||
|
||||
The important distinction for future sessions is that `v1.5.0`, `v1.5.1`, and `v1.6.0` are real local release states with changelog and log backing, but they are not git-tagged releases in this repository snapshot.
|
||||
Reference in New Issue
Block a user