* chore: ignore .kommandr/ directory * fix(sync): resolve cross-file refs when an edit adds or removes the satisfying symbol (#1240) Incremental sync scoped reference resolution to the changed files' own refs, and a completed pass deleted every ref it failed to resolve — so a symbol change in one file could never repair references in UNCHANGED files, in either direction, until a full re-index: - New-export case: a.ts imports/calls `greet` before b.ts defines it. The failed refs were deleted at index time; when b.ts later gained `greet`, nothing revisited a.ts — the calls/imports edges stayed missing while status reported a clean index. - Removal case: when a re-index (or file deletion) dropped a symbol, the incoming edges cascade-deleted and the callers — whose resolved refs had been consumed — never got a chance to rebind to an alternative definition or reconnect when the symbol returned. Fix, sharing one lifecycle: - Schema v8: unresolved_refs gains status ('pending'/'failed') and name_tail (last dotted segment, so `h.greet` is findable by `greet`). Both resolver persist paths now park unresolvable refs as failed instead of deleting them. All pending-work readers (batched drain, non-progress guard, #1187 orphan sweep, status pendingRefs) filter to pending, preserving their invariants and keeping status honest. - Sync retry: after scoped resolution, failed refs whose name tail matches a symbol name now present in the changed files are re-resolved through a per-ref-yielding path (watchdog-safe, #1091 class). Names matching >500 failed refs are skipped as external/builtin noise (#999 rationale). - Removal side: createEdges stamps each resolution edge with its originating reference (metadata.refName, + refKind when kind promotion rewrote it). When the #899 restore misses a target or sync deletes a file, the dropped edge is resurrected as exactly that ref — re-resolved in the same sync (rebinding to an alternative definition) or parked failed until the symbol reappears. Edges without the stamp (pre-upgrade, synthesized) still drop silently: reconstructing from the target's plain name would strip receiver context and risk a rebind a full re-index would never make. - Pure-removal syncs clear resolver caches so a long-lived daemon can't resolve resurrected refs against the pre-removal graph. Validated: issue repro now yields a graph byte-identical to a full re-index; move/remove-readd/file-deletion scenarios all rebind or heal; baseline-vs-new A/B on express and gin shows identical node/edge counts and no timing regression (DB grows ~25% from the parked ref rows — pure cache, reset by any full re-index). 8 regression tests added. Fixes #1240 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
73 lines
969 B
Plaintext
73 lines
969 B
Plaintext
# Dependencies
|
|
node_modules/
|
|
|
|
# Build output
|
|
dist/
|
|
|
|
.cmem
|
|
|
|
# IDE
|
|
.idea/
|
|
.vscode/
|
|
*.swp
|
|
*.swo
|
|
*~
|
|
|
|
# OS
|
|
.DS_Store
|
|
Thumbs.db
|
|
|
|
# Test coverage
|
|
/coverage/
|
|
.nyc_output/
|
|
|
|
# Environment
|
|
.env
|
|
.env.local
|
|
.env.*.local
|
|
|
|
# Logs
|
|
*.log
|
|
npm-debug.log*
|
|
|
|
# TypeScript build info
|
|
*.tsbuildinfo
|
|
|
|
# SQLite WAL mode files
|
|
*.db-wal
|
|
*.db-shm
|
|
|
|
# Local Claude settings
|
|
.claude/settings.local.json
|
|
.claude/scheduled_tasks.lock
|
|
.claude/handoffs/
|
|
|
|
# Parallels Windows VM SSH/connection config (local machine, see CLAUDE.md)
|
|
.parallels
|
|
|
|
# Confidential business / product / strategy docs — must NOT land in the
|
|
# public engine repo (see the IP boundary in CLAUDE.md)
|
|
docs/business/
|
|
|
|
# CodeGraph data directories (in test projects)
|
|
.codegraph/
|
|
|
|
test_frameworks
|
|
|
|
# Test language repos for manual testing
|
|
test-languages/
|
|
|
|
nul
|
|
release/
|
|
|
|
.antigravitycli/
|
|
|
|
# Local-only: browser-based tmux session launcher (see tmux-web/README.md)
|
|
tmux-web/
|
|
|
|
assets/__pycache__/
|
|
|
|
assets/generate-waitlist.py
|
|
|
|
.kommandr/
|