From bbb69e2e0a8e3e1be8125cb5073cbdbbea33d1fa Mon Sep 17 00:00:00 2001 From: Roger Deng <13251150+rogerdigital@users.noreply.github.com> Date: Fri, 18 Sep 2026 01:35:58 +0800 Subject: [PATCH] docs: note A2 code drift from merged link-scanner fixes Record that PRs #174 and #176 changed the broken-links heading/block branch after this plan was authored: A2.2's patch instructions no longer match the code structure, A2.1's block case is partially satisfied but still lacks the metadata-unavailable distinction, and the A2.3 comparison-version comment must cover both semantics changes. Documentation only. --- .../plans/2026-09-13-v1-core-reliability.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/docs/superpowers/plans/2026-09-13-v1-core-reliability.md b/docs/superpowers/plans/2026-09-13-v1-core-reliability.md index a333528..d0d4d8b 100644 --- a/docs/superpowers/plans/2026-09-13-v1-core-reliability.md +++ b/docs/superpowers/plans/2026-09-13-v1-core-reliability.md @@ -127,6 +127,17 @@ function makeApp(content: string) { - Modify: `src/snapshot/scan-snapshot.ts` — comparison semantics. - Modify: `src/tests/scan-snapshot.test.ts`, `src/tests/result-diff.test.ts`, `src/tests/cli.test.ts` — compatibility assertions for older versions. +> **Execution note (2026-09-18):** This plan was authored against baseline `fdcc77d`. Since then, link-scanner fixes landed on main and changed the A2 target area: +> +> - PR #174 (issue #170) restructured the `!found` branch in `resolveLinkIssues`: block-id misses are now unconditionally `unverified`/`info` with no fix action (Obsidian's implicit block ids are not in metadata, so a miss is not evidence), reported under the title "Unverified block reference"; heading misses remain `confirmed`/`warning`. `makeIssue` gained an eighth `unverified` presentation parameter that suppresses the fix action. +> - PR #176 (issue #173) replaced `slugifyHeading` with a replace-with-space normalization matching Obsidian heading anchors. +> +> Consequences when executing A2: +> +> - A2.2's instruction to "leave the subsequent existing `isBlock`/`found` branches unchanged" no longer matches the code. Adapt the null-cache guard to the two-branch structure instead of applying the snippet verbatim. +> - A2.1's `^block-id` case now passes except for `evidence.reason` and the message: with a null target cache the current code still says "not found among explicit block ids", which misdescribes an unindexed target. The null-cache vs id-not-declared distinction (including the "wait for indexing" guidance) remains open A2 work; the heading null-cache case is untouched. +> - A2.3's `COMPARISON_VERSION` bump must cover both semantics changes in its comment — block-id misses became unverified (#174) and missing target metadata will no longer confirm a link (A2) — per the master plan's increment-once rule for the unreleased series. + ### A2.1 — Fix the fixture blind spot and write the RED test - [ ] Do not let `getFileCache` in `makeScanContext` erase null through `?? {}`; replace it with: