KeiSeiKit-1.0/_primitives/_rust/kei-conflict-scan
Parfii-bot 6cd999820c fix(kei-conflict-scan): wikilink path-norm + drop handoff false-positives
Two architectural bugs in orphans scanner — both surfaced by morning
/sleep-review of deep-sleep/2026-05-12-0400 (108 false-positive
orphan-wikilinks; the engine was scanning sync-repo MEMORY.md and
flagging every `[[../../../rules/X]]` cross-repo ref as broken).

1. Asymmetric normalization in extract_wikilinks
   - `all_basenames(root)` indexed file_stem (lowercase, no path)
   - `extract_wikilinks` returned lowercased FULL link text including
     `../../../`-prefix and `subdir/` segments
   - Result: `[[chatlogs/X/Y]]` never matched `Y.md` in index, every
     `[[../../../rules/X]]` always flagged orphan

   Fix: `normalize_target(raw) -> Option<String>` strips path prefix,
   strips `.md` suffix, returns None for `../`-rooted refs that escape
   the scan tree (engine cannot validate cross-repo targets).

2. extract_handoffs scanner removed
   - Regex `^\s*-\s*\*\*([a-z0-9][a-z0-9_-]{2,})\*\*` was matching every
     prose bold-bullet, e.g. `- **english-jargon** — last 7d:` in
     backlog.md or `- **L1-Path-C**:` in chatlogs.
   - sync-repo scan: 0 real handoff sections present, 100% of matches
     were prose. Real handoff syntax in agent-graph repos uses YAML
     frontmatter, not prose markdown bullets.
   - Scanner deleted along with its helper; wikilink scanner alone
     covers the explicit `[[...]]` ref use case.

## Result on sync-repo (live data)

| Metric         | Before | After |
|----------------|-------:|------:|
| orphan refs    |    108 |     1 |
| false-positive |    107 |     0 |

Remaining 1 = legitimate `[[wikilink]]` literal in backlog.md prose.

## Tests added (already present in HEAD via prior fleet commit)

- `tests::cross_repo_ref_skipped` — `../../../foo` -> None
- `tests::path_prefixed_target_basenamed` — `chatlogs/X/Y` -> "Y"
- `tests::plain_basename_passes_through`
- `tests::md_suffix_stripped`
- integration `cross_repo_wikilink_not_flagged` (E2E)
- integration `path_prefixed_wikilink_matches_basename` (E2E)

12/12 tests pass. Release binary rebuilt + installed to ~/.cargo/bin/.
Private mirror at ~/Projects/KeiSeiKit/_primitives/... synced.

Closes backlog.md "engine bug #4" (added by user via prior /sleep-review).
2026-05-12 16:52:03 +08:00
..
src fix(kei-conflict-scan): wikilink path-norm + drop handoff false-positives 2026-05-12 16:52:03 +08:00
tests feat(kei-buddy fleet): 5 atomics — google/apple contacts + classifier + tick + slash-commands 2026-05-12 16:33:58 +08:00
Cargo.toml chore: author email + Cargo metadata SSoT (parfionovich@keilab.io) 2026-05-03 13:55:28 +08:00