From 2f4d9af25d7637ccdd807abe05c7c71fc69777a4 Mon Sep 17 00:00:00 2001 From: safishamsi Date: Tue, 20 Oct 2026 15:43:03 +0100 Subject: [PATCH] =?UTF-8?q?docs(changelog):=200.9.93=20=E2=80=94=20add=20t?= =?UTF-8?q?he=20skill=20partial-read=20recovery=20(#3987)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Land #3987 (@nothariharan, reported by @Ryanm218): on the skill extraction path a long file a subagent only skimmed was cached as complete and its unread tail silently dropped on the next replace-on- re-extract. The chunk coverage self-report is now checked against each file's real line count; a short file is cached partial and left unstamped so --update retries it, reusing the library's existing partial_source_files contract (#933, #1950). Co-Authored-By: Claude Opus 4.8 --- CHANGELOG.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 75c312998..b8e9ddb77 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,7 +4,7 @@ Full release notes with details on each version: [GitHub Releases](https://githu ## 0.9.93 (2026-10-20) -Twenty-one community pull requests. Extraction: a reference to a Kotlin type alias, C# delegate, Swift macro, Dart typedef, Python module function or Rust sibling-module `use` now resolves to its real declaration instead of minting a sourceless stub; Metal/CUDA GPU qualifiers no longer mint god nodes; `extern "C"` headers route to the C++ extractor; an extensionless script with a versioned-interpreter shebang is classified; and Obsidian vault-relative wikilinks resolve. Plus a credential-redaction pass on rationale labels, a node-confidence fold, a truncated-reply label decode, a `.graphifyrc` BOM fix, a GraphML multigraph export fix, two-repo file disambiguation in explain and path, a PDF-read warning, no skill writes on `--version`/`--help`, and two PR-tooling fixes (slashed default branch, legacy CI statuses). The AST cache schema is bumped, so the first build after upgrading re-extracts. +Twenty-two community pull requests. Extraction: a reference to a Kotlin type alias, C# delegate, Swift macro, Dart typedef, Python module function or Rust sibling-module `use` now resolves to its real declaration instead of minting a sourceless stub; Metal/CUDA GPU qualifiers no longer mint god nodes; `extern "C"` headers route to the C++ extractor; an extensionless script with a versioned-interpreter shebang is classified; and Obsidian vault-relative wikilinks resolve. Plus a credential-redaction pass on rationale labels, a node-confidence fold, a truncated-reply label decode, a `.graphifyrc` BOM fix, a GraphML multigraph export fix, two-repo file disambiguation in explain and path, a PDF-read warning, no skill writes on `--version`/`--help`, two PR-tooling fixes (slashed default branch, legacy CI statuses), and a skill partly-read-file recovery so a long file a subagent only skimmed is retried on the next `--update` instead of silently kept half-read. The AST cache schema is bumped, so the first build after upgrading re-extracts. - Fix: **Kotlin** a `typealias` declaration is extracted, so a field or parameter typed as the alias resolves to it instead of minting a sourceless cross-file stub (#4553, #4557, thanks @rajatnagda45). - Fix: **C#** a `delegate` declaration is extracted, so references resolve to it instead of a sourceless stub; built-in `Func<>`/`Action<>` stay external (#4552, #4556, thanks @rajatnagda45). @@ -27,6 +27,7 @@ Twenty-one community pull requests. Extraction: a reference to a Kotlin type ali - Fix: **explain / path** two same-path files from different repos in a merged graph are kept distinct: an ambiguous name names each repo and the retry hint points at the full node id, instead of conflating them as one file (#4512, thanks @Deepjyoti-Sarmah; reported by @kaka-in-home). - Fix: **cli** `graphify --version` and `--help` no longer rewrite or back up an installed skill file; only a real command refreshes skills (the staleness warning still prints) (#4545, thanks @bercedev; reported by @EmanuelFaria). - Fix: **query** a bare name that is the exact name of several nodes (for example a `.nonce()` method in two files) is refused with the candidates listed and the ambiguous exit code, matching `explain` and `path`; a keyword that only prefix- or substring-matches labels still runs a normal search (#4511, #4517, thanks @shivampal46011; reported by @kaka-in-home). +- Fix: **skill** a long file a subagent only partly read is no longer a silent, permanent loss. On the skill extraction path each chunk now self-reports the lines it covered; a file whose reported coverage falls short of its real length is written to `.graphify_partial.txt`, cached as partial (which the loader treats as a miss) and left unstamped in the manifest, so the next `--update` re-dispatches it and replace-on-re-extract swaps the half-read node set for a complete one. This mirrors the library path's truncated-reply recovery (#933, #1950); the already-extracted nodes are kept, and a file no subagent reported is not falsely flagged (#3987, #2225, thanks @nothariharan; reported by @Ryanm218). ## 0.9.92 (2026-10-16)