GitNexus/gitnexus/test/unit
Gergő Magyar d15f8bef54
feat(ingestion): log deferred resolution progress when verbose (#1741) (#1773)
* feat(ingestion): log deferred resolution progress when verbose

Add [deferred-profile] timing logs for post-chunk import, heritage, heritage-map, and legacy call resolution. Enabled on GITNEXUS_VERBOSE / analyze -v (and optionally GITNEXUS_PROFILE_DEFERRED) to diagnose analyze stalls on large repos (issue #1741).

Co-authored-by: Cursor <cursoragent@cursor.com>

* chore(autofix): apply prettier + eslint fixes via /autofix command

* fix(ingestion): address PR #1773 production-readiness review

Move deferred call progress logs after the registry-primary skip so sites= counts match files actually resolved. Only time buildHeritageMap when heritage records exist; otherwise log an explicit skip. Add wiring tests that assert [deferred-profile] emission from buildHeritageMap and processCallsFromExtracted. Snapshot GITNEXUS_PROFILE_DEFERRED env vars in analyze CLI isolation.

Co-authored-by: Cursor <cursoragent@cursor.com>

* fix(ingestion): address PR #1773 code-review findings

P0
- Replace forbidden toBeGreaterThanOrEqual/toBeLessThan in
  profileElapsedMs test with exact-arithmetic vi.spyOn(hrtime.bigint)
  asserting .toBe(2.5) and .toBe(0). DoD §2.7 compliance.

P2
- Use Number() (not parseInt) when parsing
  GITNEXUS_PROFILE_DEFERRED_SLOW_MS so scientific notation like '1e9'
  doesn't silently parse to 1 and turn the slow-file log into a per-file
  log storm.
- Introduce startTimer(enabled): bigint | null and endTimer(start,
  format) helpers in deferred-resolution-profile.ts; refactor 6+
  timing blocks in parse-impl.ts and call-processor.ts to use them.
  Removes the 0n sentinel that conflated 'disabled' with 'zero
  elapsed time' and let TS narrow correctly.
- Split the call-processor file counter: filesProcessed (all iterated)
  vs resolvedFiles (post registry-primary skip). Key the every-N
  progress log and the start-of-phase log on resolvedFiles so mixed
  Python+JVM repos where the skipped language sorts first still emit
  'calls 1/1 file=...' on the first non-skipped file. Adds a wiring
  test for the mixed-language ordering case.

P3
- Restore the original isDev '🔗 E1: Seeded ...' logger.info line so
  log scrapers keyed on the emoji marker still match; emit the
  [deferred-profile] variant only when deferredProfile && !isDev.
- Move tFile = startTimer(profileCalls) below the registry-primary
  skip so skipped files don't trigger an hrtime.bigint() call.
- Document GITNEXUS_PROFILE_DEFERRED and
  GITNEXUS_PROFILE_DEFERRED_SLOW_MS in the README env-var table.

* refactor(ingestion): extract parseTruthyEnv to shared utils (U5)

Three narrow-form env-var truthy checkers (verbose.ts, registry-primary-flag.ts,
deferred-resolution-profile.ts) each had their own `'1' | 'true' | 'yes'` parser
with subtle divergences (trim or no trim, set vs disjunction). Consolidate on a
single `parseTruthyEnv(raw)` helper in utils/env.ts — the module already serves
as the centralization point for shared ingestion env constants.

logger.ts's broader `isTruthyEnv` (negative-list, pino-debug convention) stays
untouched — different intent, different semantics.

New table-driven test at test/unit/env.test.ts covers case variants,
whitespace, and rejection of falsy / unknown tokens.

* refactor(ingestion): named constants for deferred-profile log gates (U6)

Replace magic literals 10 / 100 / 3_000 / 5_000 in
deferred-resolution-profile.ts with module-private named constants
LOG_EVERY_N_VERBOSE, LOG_EVERY_N_PROFILE, DEFAULT_SLOW_MS_VERBOSE,
DEFAULT_SLOW_MS. Not exported — internal tuning knobs. Pure refactor;
existing tests assert the exact values and still pass unchanged.

* fix(ingestion): pre-pass denominator for deferred call progress (U1, A1)

The live per-file denominator in processCallsFromExtracted previously
read `totalFiles - skippedRegistryPrimaryFiles` at log time. On mixed
Python+JVM repos where the skipped language interleaves with the
resolved one, the denominator drifts upward as the loop iterates —
files iterated before later skips have been seen carry an inflated
denominator. The live ratio only self-corrects after the final file
has been classified.

Fix: one-pass pre-count over byFile.keys() before the work loop
computes resolvedTotal once. The denominator is then stable from the
first emission onward. The pre-pass runs only on the enabled path
(profileCalls=true) so the disabled path keeps zero extra work.

Adds a wiring test exercising the alternating [ts, py, ts, py, ...]
order that triggered the drift, asserting every emitted line uses
`/4` and no other denominator slips through.

* fix(ingestion): E1 enrichment log emits on both dev and profile flags (U2, A2)

The post-chunk E1 enrichment log used `if (isDev) {...} else if
(deferredProfile) {...}` which is mutually exclusive. On combined runs
(NODE_ENV=development + GITNEXUS_PROFILE_DEFERRED=1) the [deferred-
profile] line was silently swallowed — operators grepping that prefix
saw a gap between wildcard-synth and heritage timings, while the
inline comment promised dual emission.

Fix: two independent `if` statements so both branches fire when both
flags are set. The original emoji-prefixed `🔗 E1: Seeded` line keeps
its phrasing for any dev-mode log scrapers that depend on the marker.

Pinning test (parse-impl-e1-emission-shape.test.ts) reads the source
and asserts (a) both branches exist as standalone `if` statements and
(b) the closing `}` of the isDev branch is followed by `if`, not
`else if`. Source-shape pins are the right test scope for a purely
structural change — the regression we are guarding against is exactly
how a future reader greps for it.

* feat(ingestion): unresolved-side counters in heritage-map profile (U7)

The existing maxNameCartesian / ambiguousHeritageRecords counters in
buildHeritageMap only observed records where BOTH the child and parent
name lookups resolved. On JVM monorepos the actual pathological case is
one side empty (typically an unresolved external supertype with many
same-named children, or vice versa) — those records were silently
dropped from the metric.

Add `unresolvedChildLookups` and `unresolvedParentLookups` in a
separate `if (profileHeritage)` block placed immediately after the two
`lookupClassByName` calls (so it observes the unresolved cases the
length-guarded ambiguity block below cannot see). Both counters reuse
the existing childDefs / parentDefs values — no additional lookups.

Done-summary log extended to include the two new counters. Wiring test
covers both directions (unresolved parent, unresolved child) plus the
existing "both resolved" baseline now asserts the new counters report
zero for that case.

* fix(ingestion): endTimer formatter exception safety (U3)

Wrap the format callback in endTimer in a try/catch so a throwing
formatter (custom toString, JSON.stringify on a circular object,
future heavier serializers) cannot abort the deferred resolution
band. Observability code must never escalate to a load-bearing
failure mode.

On catch we emit a single `[deferred-profile] formatter error: …`
line via logDeferredProfile and return; the caller's stage continues
as if profiling had no-op'd for this timer. DoD §2.8 is satisfied —
the failure is surfaced, not silently swallowed.

Tests cover the four cases: happy path emits the formatted line, null
start no-ops without invoking the formatter, throwing formatter is
caught and surfaces one error line, non-Error throws are coerced via
String() in the message.

* fix(ingestion): defensive wrap + dropped-line counter for logDeferredProfile (U4)

Wrap logger.info inside logDeferredProfile in a try/catch so a throwing
underlying logger cannot abort the deferred resolution band. Pino with
sync:false (the current SonicBoom destination) does not throw
synchronously for `info(string)` calls, but first-use construction
paths (pino-pretty resolve, level validation) and any future transport
reconfiguration could. The wrap is belt-and-suspenders coverage; the
counter makes silent failures visible.

A module-private droppedLogLines counter accumulates dropped lines.
Two helpers — getDeferredProfileDroppedCount() and
resetDeferredProfileDroppedCount() — expose the counter. The handler
deliberately does NOT call the failing logger; that would risk an
infinite loop if the failure is steady-state.

processCallsFromExtracted resets the counter at entry (so each analyze
run gets a fresh count rather than accumulating across the process
lifetime — relevant for the MCP server, eval harness, integration
tests), and surfaces the count in the done-summary as `note: N profile
log lines dropped (logger errors)` when greater than zero. DoD §2.8
(no silent diagnostic catches) is satisfied.

Tests cover the helper API (zero at entry, idempotent reset) and the
happy path; the catch arm is pinned via source-shape assertion since
the logger Proxy can't be vi.spyOn'd directly (lazy `get` trap, no
own-property to wrap).

* docs(readme): clarify GITNEXUS_PROFILE_DEFERRED_SLOW_MS coercion (U8)

The env-var row mentioned integer / scientific notation only, but the
underlying parser (`Number(raw)` since the U2 fix in PR #1773) also
accepts decimals like `.5` and hex like `0x10`. Document the actual
acceptance set plus the non-finite / non-positive fallback so operators
setting unusual values know what to expect.

---------

Co-authored-by: Test <test@example.com>
Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2026-05-22 12:37:30 +01:00
..
call-routing feat(ingestion): language-agnostic heritage extractor with config+factory pattern (#890) 2026-04-17 17:51:17 +01:00
group fix(group): detect httpx AsyncClient alias imports (#1687) 2026-05-21 18:24:27 +01:00
import-resolution feat: configure prettier with pre-commit hook (#563) 2026-03-28 14:58:04 +00:00
integrations feat: shared resilient-fetch (retries + circuit breaker) (#1448) 2026-05-09 15:18:09 +01:00
mcp fix(search): surface warning when FTS indexes are missing (#1418) 2026-05-08 17:05:18 +01:00
model perf(scope-resolution): use owner-keyed lookup for Step 2 member resolution (#1657) 2026-05-18 13:14:27 +01:00
named-bindings refactor: SICP-informed LanguageProvider architecture (#488) 2026-03-24 13:42:39 +00:00
scope-resolution fix(workers): resilient + zero-copy ingestion worker pool — prevent analyze hangs on TS-root-scale loads (#1693) 2026-05-20 20:39:35 +01:00
shadow chore(shared): apply Ring 2 SHARED review follow-ups in one diff (#964) 2026-04-18 18:40:29 +01:00
workers fix(workers): resilient + zero-copy ingestion worker pool — prevent analyze hangs on TS-root-scale loads (#1693) 2026-05-20 20:39:35 +01:00
ai-context.test.ts fix(cli): apply --no-stats to keep-marker stats line (#1706) (#1765) 2026-05-22 07:03:40 +01:00
analyze-api.test.ts feat: configure prettier with pre-commit hook (#563) 2026-03-28 14:58:04 +00:00
analyze-community-skills-gate.test.ts feat(cli): add --skip-skills and --index-only flags to analyze (resubmit of #742) (#1485) 2026-05-11 15:00:58 +01:00
analyze-embeddings-limit.test.ts feat(core): adopt pino structured logger (#1336) 2026-05-07 20:56:25 +01:00
analyze-heap-respawn.test.ts fix(analyze): prevent cache-hit native workers from aborting (#1751) 2026-05-21 16:17:02 +01:00
analyze-job.test.ts feat: configure prettier with pre-commit hook (#563) 2026-03-28 14:58:04 +00:00
analyze-no-stats-bridge.test.ts feat: Add analyze --repair-fts, enforce FTS verification, and harden repair safeguards (#1720) 2026-05-20 13:37:04 +01:00
analyze-respawn-progress-terminal.test.ts fix(analyze): prevent cache-hit native workers from aborting (#1751) 2026-05-21 16:17:02 +01:00
analyze-wal-error.test.ts fix(lbug): issue #1647, detect WAL corruption in schema init and surface recovery (#1650) 2026-05-17 10:46:45 +01:00
analyze-worker-pool-size.test.ts fix(workers): resilient + zero-copy ingestion worker pool — prevent analyze hangs on TS-root-scale loads (#1693) 2026-05-20 20:39:35 +01:00
analyze-worker-timeout.test.ts fix(workers): resilient + zero-copy ingestion worker pool — prevent analyze hangs on TS-root-scale loads (#1693) 2026-05-20 20:39:35 +01:00
api-file-route.test.ts fix(server): close js/path-injection cluster — /api/file + docker-server.mjs (U2) (#1322) 2026-05-04 12:28:02 +01:00
api-graph-streaming.test.ts [codex] fix large repository graph loading (#732) 2026-04-09 17:40:24 +01:00
api-query-readonly-wiring.test.ts fix: Use Ladybug native read-only enforcement and prepared statement execution for Cypher query paths (#1655) 2026-05-18 06:54:24 +01:00
api-readonly-wiring.test.ts fix(api): open lbug read-only for /api/graph, /api/search, /api/grep (#1686) 2026-05-18 19:57:35 +01:00
ast-cache.test.ts fix: guard createASTCache against zero maxSize to prevent LRU cache crash 2026-03-02 08:47:20 +00:00
ast-utils.test.ts fix(windows): 32767-char tree-sitter crash + VECTOR extension SIGSEGV (#1433) 2026-05-10 16:00:36 +01:00
binding-accumulator.test.ts refactor(pipeline): DAG-based phase architecture + container-logic extraction to LanguageProvider (#809) 2026-04-13 20:31:05 +01:00
bm25-search.test.ts feat: Add analyze --repair-fts, enforce FTS verification, and harden repair safeguards (#1720) 2026-05-20 13:37:04 +01:00
call-attribution-issue-1166.test.ts fix(typescript): name HOC-wrapped const declarations (forwardRef / memo / useCallback / useMemo / observer) (#1261) 2026-05-03 13:58:09 +01:00
call-extraction.test.ts feat(ingestion): language-agnostic call extractor with config+factory pattern (#877) 2026-04-16 11:45:30 +01:00
call-form.test.ts Extract registries into model/ module with SemanticModel interface (#786) 2026-04-12 01:06:55 +01:00
call-processor.test.ts feat(ingestion): TypeScript registry-primary scope resolution (Ring 3) (#1050) 2026-04-26 08:23:08 +01:00
calltool-dispatch.test.ts fix(mcp): disambiguate duplicate-name repo resolution for worktrees (#1753) 2026-05-21 19:21:25 +01:00
chunker.test.ts feat(embeddings): structural chunking with data-driven CHUNKING_RULES dispatch (#987) 2026-04-20 08:25:31 +01:00
cli-commands.test.ts fix(install): materialize vendored grammars to fix Windows EPERM (#1728) (#1729) 2026-05-21 16:47:22 +01:00
cli-index-help.test.ts feat: Add analyze --repair-fts, enforce FTS verification, and harden repair safeguards (#1720) 2026-05-20 13:37:04 +01:00
cli-message.test.ts feat(core): adopt pino structured logger (#1336) 2026-05-07 20:56:25 +01:00
cobol-copy-expander.test.ts feat: configure prettier with pre-commit hook (#563) 2026-03-28 14:58:04 +00:00
cobol-preprocessor.test.ts feat: configure eslint with unused import removal (#564) 2026-03-28 15:28:09 +00:00
cohesion-consistency.test.ts feat: configure prettier with pre-commit hook (#563) 2026-03-28 14:58:04 +00:00
community-processor.test.ts feat: configure prettier with pre-commit hook (#563) 2026-03-28 14:58:04 +00:00
compatible-stdio-transport.test.ts feat: configure prettier with pre-commit hook (#563) 2026-03-28 14:58:04 +00:00
cors.test.ts feat: configure prettier with pre-commit hook (#563) 2026-03-28 14:58:04 +00:00
cpp-ue-preprocessor.test.ts feat(extractors): strip Unreal Engine reflection macros before C++ parsing (#1439) 2026-05-09 12:28:32 +01:00
cross-file-impl.test.ts fix: resolve cross-file type propagation stall on large repos (#1626) 2026-05-16 10:02:40 +01:00
cross-file.test.ts refactor(pipeline): DAG-based phase architecture + container-logic extraction to LanguageProvider (#809) 2026-04-13 20:31:05 +01:00
csv-escaping.test.ts refactor: migrate from KuzuDB to LadybugDB v0.15 (#275) 2026-03-15 15:53:01 +00:00
cursor-hook.test.ts fix(hooks): cap concurrent augment subprocesses (#1486) (#1510) 2026-05-13 08:56:27 +01:00
dart-import-resolver.test.ts refactor(ingestion): split ImportSemantics into per-strategy hooks (Strategies 1-4) (#886) 2026-04-16 19:31:44 +01:00
dart-type-extractor.test.ts feat: configure eslint with unused import removal (#564) 2026-03-28 15:28:09 +00:00
deferred-resolution-profile-wiring.test.ts feat(ingestion): log deferred resolution progress when verbose (#1741) (#1773) 2026-05-22 12:37:30 +01:00
deferred-resolution-profile.test.ts feat(ingestion): log deferred resolution progress when verbose (#1741) (#1773) 2026-05-22 12:37:30 +01:00
detect-changes-worktree.test.ts fix(detect-changes): guard resolveWorktreeCwd against overriding a separately-indexed worktree (#1691) 2026-05-20 06:46:16 +01:00
embedder.test.ts test: add test suite with vitest (unit + integration + fixtures) 2026-03-01 20:07:02 +05:30
embedding-chunking.test.ts feat(embeddings): structural chunking with data-driven CHUNKING_RULES dispatch (#987) 2026-04-20 08:25:31 +01:00
embedding-config.test.ts fix: add platform-aware semantic fallback (#1150) 2026-04-28 12:21:25 +01:00
embedding-pipeline.test.ts fix: add platform-aware semantic fallback (#1150) 2026-04-28 12:21:25 +01:00
entry-point-scoring.test.ts refactor(ingestion): consolidate per-language patterns into LanguageProvider (#1279) 2026-05-03 10:34:00 +01:00
env.test.ts feat(ingestion): log deferred resolution progress when verbose (#1741) (#1773) 2026-05-22 12:37:30 +01:00
esm-extension-resolution.test.ts fix: apply ESM .js extension fallback to tsconfig path alias resolution (#1530) 2026-05-14 16:15:17 +01:00
eval-formatters.test.ts fix(eval-server): localhost now doesn't normalize into IPv4 instead lets OS decide which to bind (#1722) 2026-05-20 16:14:13 +01:00
exact-search.test.ts fix: add platform-aware semantic fallback (#1150) 2026-04-28 12:21:25 +01:00
expo-routes.test.ts feat: add Expo Router file-based route detection (#503) 2026-03-25 11:05:55 +00:00
extract-element-type-from-string.test.ts feat: Phase 6 type resolution — for-loop Tier 1c, pattern matching, container descriptors, 10-language coverage (#318) 2026-03-17 17:10:22 +00:00
extract-generic-type-args.test.ts feat: configure prettier with pre-commit hook (#563) 2026-03-28 14:58:04 +00:00
fetch-reason-parsing.test.ts feat: configure prettier with pre-commit hook (#563) 2026-03-28 14:58:04 +00:00
field-extraction.test.ts Extract registries into model/ module with SemanticModel interface (#786) 2026-04-12 01:06:55 +01:00
framework-detection.test.ts refactor(ingestion): consolidate per-language patterns into LanguageProvider (#1279) 2026-05-03 10:34:00 +01:00
git-clone.test.ts fix(server): sanitize repo name to prevent argument injection (#1305) 2026-05-11 09:38:07 +01:00
git-utils.test.ts fix(git): suppress stderr leak in getCurrentCommit and getGitRoot (#1172) (#1341) 2026-05-05 14:29:42 +01:00
git.test.ts fix(server): sanitize repo name to prevent argument injection (#1305) 2026-05-11 09:38:07 +01:00
graph.test.ts feat(python): scope-based call resolution + registry-primary flip + perf + generalization (RFC #909 Ring 3) (#980) 2026-04-21 15:50:00 +01:00
group-service-not-found.test.ts fix(group): surface friendly error when group name not found (#903 regression test) (#989) 2026-04-21 15:52:36 +01:00
has-method.test.ts feat: MethodExtractor configs for Python, PHP, Swift, Dart, Rust, Ruby (#624) 2026-04-03 16:11:31 +01:00
heritage-extraction.test.ts feat(ingestion): language-agnostic heritage extractor with config+factory pattern (#890) 2026-04-17 17:51:17 +01:00
heritage-map.test.ts Extract registries into model/ module with SemanticModel interface (#786) 2026-04-12 01:06:55 +01:00
heritage-processor.test.ts Extract registries into model/ module with SemanticModel interface (#786) 2026-04-12 01:06:55 +01:00
hf-env.test.ts feat: shared resilient-fetch (retries + circuit breaker) (#1448) 2026-05-09 15:18:09 +01:00
hooks.test.ts fix: skip Claude augment hook when GitNexus server owns DB (#1493) 2026-05-14 16:39:30 +01:00
http-embedder.test.ts feat(embeddings): forward dimensions param in HTTP embedding requests (#1498) 2026-05-11 13:56:10 +01:00
hybrid-search.test.ts fix(search): guard against undefined bm25Results when FTS unavailable (#1489) (#1540) 2026-05-13 12:30:21 +01:00
ignore-service.test.ts feat: add IncludeExtractor for C++ cross-repo include tracking (group) (#1156) 2026-05-09 09:31:59 +01:00
impact-batching-grouping.test.ts feat(group): add sync pipeline, CLI, MCP tools, and monorepo fixture 2026-04-02 00:40:31 +03:00
impact-confidence.test.ts feat: METHOD_IMPLEMENTS edges, overload disambiguation, MethodExtractor unification (#574) (#642) 2026-04-04 18:41:47 +01:00
import-processor.test.ts Extract registries into model/ module with SemanticModel interface (#786) 2026-04-12 01:06:55 +01:00
import-resolver-factory.test.ts fix(python): avoid local matches for external dotted imports (#899) 2026-04-17 11:35:59 +01:00
incremental-file-hash.test.ts feat(analyze): incremental indexing (parse cache + DB writeback + scope-res short-circuit) (#1479) 2026-05-12 13:14:56 +01:00
incremental-orchestration.test.ts feat(analyze): incremental indexing (parse cache + DB writeback + scope-res short-circuit) (#1479) 2026-05-12 13:14:56 +01:00
incremental-parse-cache.test.ts fix: shard parse cache persistence on large repos (#1580) 2026-05-16 07:19:06 +01:00
incremental-shadow-candidates.test.ts feat(analyze): incremental indexing (parse cache + DB writeback + scope-res short-circuit) (#1479) 2026-05-12 13:14:56 +01:00
incremental-subgraph-extract.test.ts feat(analyze): incremental indexing (parse cache + DB writeback + scope-res short-circuit) (#1479) 2026-05-12 13:14:56 +01:00
index-repo-command.test.ts fix(cli): keep GitNexus ignores inside .gitnexus (#1248) 2026-05-01 16:46:05 +01:00
ingestion-utils.test.ts fix(ingestion): two-channel binding lifecycle (closes #1066) + scope-resolution I8 hardening (#1082) 2026-04-26 12:16:09 +01:00
jcl-parser.test.ts feat: configure eslint with unused import removal (#564) 2026-03-28 15:28:09 +00:00
kotlin-scope-captures.test.ts feat(ingestion): add Kotlin scope resolver (#1727) 2026-05-21 08:52:23 +01:00
language-skip.test.ts fix(swift): use official prebuilt parser runtime (#1130) 2026-04-28 09:57:42 +01:00
lazy-action.test.ts Improve MCP startup compatibility and lazy-load CLI commands (#207) 2026-03-07 07:47:09 +00:00
lbug-adapter-wal-schema.test.ts fix(lbug): keep serve stable when sidecars are missing (#1747) 2026-05-21 12:35:43 +01:00
lbug-checkpoint-lifecycle.test.ts fix: Use Ladybug native read-only enforcement and prepared statement execution for Cypher query paths (#1655) 2026-05-18 06:54:24 +01:00
lbug-checkpoint.test.ts fix(lbug): drain checkpoint result before close (#1506) 2026-05-12 14:03:45 +01:00
lbug-config-wal.test.ts fix(lbug): recover from WAL corruption by quarantining .wal file (#1402) (#1417) 2026-05-08 11:28:19 +01:00
lbug-embedding-hashes.test.ts feat(embeddings): AST-aware chunking with offset-based splitting (#889) 2026-04-16 22:55:04 +01:00
lbug-extension-loader.test.ts fix(deps): upgrade @ladybugdb/core to 0.16.0 to resolve native segfaults (#1235) 2026-04-30 17:40:39 +01:00
lbug-pool-win-fts-probe.test.ts fix(lbug): probe-then-load FTS extension on Windows (#1690) (#1692) 2026-05-19 12:09:21 +01:00
lbug-readonly-error.test.ts fix(hook): resolve canonical repo root + guard read-only FTS ensure (#1226) 2026-04-30 18:12:03 +01:00
local-backend-maxbuffer.test.ts fix: ENOBUFS in detect_changes by setting maxBuffer on git/rg execFileSync (#957) 2026-04-18 15:58:31 +01:00
logger.test.ts feat(core): adopt pino structured logger (#1336) 2026-05-07 20:56:25 +01:00
max-file-size.test.ts feat(core): adopt pino structured logger (#1336) 2026-05-07 20:56:25 +01:00
mcp-stdout-sentinel.test.ts fix(mcp): close MCP server timeout — stdout discipline + cold-start friction (#1383) 2026-05-07 09:14:33 +01:00
mcp-wal-feedback.test.ts fix: Use Ladybug native read-only enforcement and prepared statement execution for Cypher query paths (#1655) 2026-05-18 06:54:24 +01:00
method-extraction.test.ts fix(swift): use official prebuilt parser runtime (#1130) 2026-04-28 09:57:42 +01:00
method-props.test.ts feat: same-arity overload disambiguation via type-hash suffix (#651) (#658) 2026-04-05 21:51:55 +01:00
mro-processor.test.ts perf(mro): replace O(n³) C3 merge loop with O(n²) head-pointer algorithm (#1316) 2026-05-04 10:49:24 +01:00
noise-filter.test.ts refactor: split global BUILT_IN_NAMES into per-language provider fields (#523) 2026-03-26 12:15:29 +00:00
parse-diff-hunks.test.ts fix: map diff hunks to symbol line ranges in detect_changes (#779) 2026-04-11 11:29:52 +01:00
parse-impl-chunk-concurrency.test.ts fix(workers): resilient + zero-copy ingestion worker pool — prevent analyze hangs on TS-root-scale loads (#1693) 2026-05-20 20:39:35 +01:00
parse-impl-deferred-extraction.test.ts fix(workers): resilient + zero-copy ingestion worker pool — prevent analyze hangs on TS-root-scale loads (#1693) 2026-05-20 20:39:35 +01:00
parse-impl-e1-emission-shape.test.ts feat(ingestion): log deferred resolution progress when verbose (#1741) (#1773) 2026-05-22 12:37:30 +01:00
parse-impl-env-reads.test.ts fix(workers): resilient + zero-copy ingestion worker pool — prevent analyze hangs on TS-root-scale loads (#1693) 2026-05-20 20:39:35 +01:00
parse-impl-fallback.test.ts fix(workers): resilient + zero-copy ingestion worker pool — prevent analyze hangs on TS-root-scale loads (#1693) 2026-05-20 20:39:35 +01:00
parse-impl-progress-monotonic.test.ts fix(workers): resilient + zero-copy ingestion worker pool — prevent analyze hangs on TS-root-scale loads (#1693) 2026-05-20 20:39:35 +01:00
parse-impl-worker-lazy-cache.test.ts fix(analyze): prevent cache-hit native workers from aborting (#1751) 2026-05-21 16:17:02 +01:00
parser-loader.test.ts fix(deps): pin tree-sitter-c/cpp to fix Windows segfault (#1242) (#1243) 2026-05-01 08:02:16 +01:00
parsing-worker-fallback.test.ts feat(ingestion): Link object literal methods to exported bindings (#1718) 2026-05-21 17:18:27 +01:00
phase-timer.test.ts feat(search): per-phase timing instrumentation for the query pipeline (#953) 2026-04-18 16:30:07 +01:00
pipeline-exports.test.ts test: add test suite with vitest (unit + integration + fixtures) 2026-03-01 20:07:02 +05:30
pipeline-runner.test.ts refactor(pipeline): DAG-based phase architecture + container-logic extraction to LanguageProvider (#809) 2026-04-13 20:31:05 +01:00
platform-capabilities.test.ts fix: add platform-aware semantic fallback (#1150) 2026-04-28 12:21:25 +01:00
pool-wal-recovery.test.ts fix(lbug): keep serve stable when sidecars are missing (#1747) 2026-05-21 12:35:43 +01:00
process-processor.test.ts feat: configure prettier with pre-commit hook (#563) 2026-03-28 14:58:04 +00:00
publish.test.ts feat(cli): add gitnexus publish for opt-in understand-quickly registry (#1425) 2026-05-09 09:52:26 +01:00
query-fts-parameterization.test.ts fix: Use Ladybug native read-only enforcement and prepared statement execution for Cypher query paths (#1655) 2026-05-18 06:54:24 +01:00
query-params.test.ts fix: Use Ladybug native read-only enforcement and prepared statement execution for Cypher query paths (#1655) 2026-05-18 06:54:24 +01:00
rate-limit.test.ts fix(server): restore gitnexus serve startup under Express 5 (#1749) 2026-05-21 10:18:09 +01:00
receiver-extraction.test.ts Fix HTTP client vs Express route detection and Spring interface attribution (#780) 2026-04-11 11:24:47 +01:00
registry-primary-flag.test.ts feat(cpp): migrate C++ to scope-based resolution model (#938) (#1520) 2026-05-14 09:30:52 +01:00
rel-csv-split.test.ts test(gitnexus): stabilize rel-csv-split stream teardown on Windows (expect.poll) (#1052) 2026-04-23 20:11:54 +01:00
repo-manager-ensure-ignore-readonly.test.ts fix(cli): tolerate read-only workspace in ensureGitNexusIgnored (#1549) (#1550) 2026-05-14 17:26:34 +01:00
repo-manager-finalize-invariant.test.ts fix(cli): surface silent finalize-skips so analyze cannot exit 0 without persisting (#1169) (#1237) 2026-04-30 21:36:28 +01:00
repo-manager.test.ts fix(cli): tolerate read-only workspace in ensureGitNexusIgnored (#1549) (#1550) 2026-05-14 17:26:34 +01:00
resolve-enclosing-owner.test.ts feat(ingestion): language-agnostic heritage extractor with config+factory pattern (#890) 2026-04-17 17:51:17 +01:00
resources.test.ts feat: cross-repo impact analysis (#794) — @repo MCP routing + group resources (#984) 2026-04-20 11:55:07 +01:00
route-tool-detection.test.ts feat: configure prettier with pre-commit hook (#563) 2026-03-28 14:58:04 +00:00
ruby-self-call.test.ts feat(ingestion): language-agnostic heritage extractor with config+factory pattern (#890) 2026-04-17 17:51:17 +01:00
run-analyze-fts-repair.test.ts feat: Add analyze --repair-fts, enforce FTS verification, and harden repair safeguards (#1720) 2026-05-20 13:37:04 +01:00
run-analyze.test.ts feat: add optional limit arg to --embeddings flag (closes #382) (#1375) 2026-05-06 16:31:28 +01:00
safe-parse.test.ts fix(windows): 32767-char tree-sitter crash + VECTOR extension SIGSEGV (#1433) 2026-05-10 16:00:36 +01:00
schema.test.ts fix(csharp): include generic typed properties in context and impact (#1399) 2026-05-09 09:07:24 +01:00
security.test.ts fix: Use Ladybug native read-only enforcement and prepared statement execution for Cypher query paths (#1655) 2026-05-18 06:54:24 +01:00
semantic-chunk-search.test.ts feat(embeddings): AST-aware chunking with offset-based splitting (#889) 2026-04-16 22:55:04 +01:00
sequential-language-availability.test.ts feat(core): adopt pino structured logger (#1336) 2026-05-07 20:56:25 +01:00
server-cors-stack.test.ts fix(server): restore gitnexus serve startup under Express 5 (#1749) 2026-05-21 10:18:09 +01:00
server-validation.test.ts fix(server): close critical type-confusion + add validation helper module (#1317) 2026-05-04 10:50:00 +01:00
server.test.ts feat(mcp): add tool safety annotations (#1127) 2026-05-03 09:06:41 +01:00
setup-codex.test.ts fix(mcp): setup fallback on Windows when global gitnexus resolves to a non-spawnable shim (#1694) 2026-05-19 08:17:26 +01:00
setup-jsonc.test.ts fix(mcp): setup fallback on Windows when global gitnexus resolves to a non-spawnable shim (#1694) 2026-05-19 08:17:26 +01:00
setup.test.ts fix(mcp): setup fallback on Windows when global gitnexus resolves to a non-spawnable shim (#1694) 2026-05-19 08:17:26 +01:00
shape-check.test.ts fix: shape_check false positives — quoted keys, DOM leaks, errorKeys (#501) 2026-03-26 05:43:37 +00:00
shared-type-extractors.test.ts feat: configure prettier with pre-commit hook (#563) 2026-03-28 14:58:04 +00:00
sibling-clone-drift.test.ts fix(mcp): avoid git from non-repo cwd in sibling cwd match (#1138) (#1293) 2026-05-03 09:17:12 +01:00
sidecar-recovery.test.ts fix(lbug): keep serve stable when sidecars are missing (#1747) 2026-05-21 12:35:43 +01:00
skill-gen.test.ts feat: configure prettier with pre-commit hook (#563) 2026-03-28 14:58:04 +00:00
skip-git-cli.test.ts feat: Add analyze --repair-fts, enforce FTS verification, and harden repair safeguards (#1720) 2026-05-20 13:37:04 +01:00
staleness.test.ts perf(mcp): parallelize staleness checks in list_repos (#1416) 2026-05-08 10:36:20 +01:00
stdout-silence.test.ts fix(mcp): unify stdout silencing to prevent embedder/pool-adapter conflicts (#645) 2026-04-04 11:56:49 +01:00
structure-processor.test.ts feat: configure prettier with pre-commit hook (#563) 2026-03-28 14:58:04 +00:00
suffix-index-ambiguity.test.ts feat: configure prettier with pre-commit hook (#563) 2026-03-28 14:58:04 +00:00
symbol-resolver.test.ts refactor(pipeline): DAG-based phase architecture + container-logic extraction to LanguageProvider (#809) 2026-04-13 20:31:05 +01:00
symbol-table.test.ts feat(ingestion): language-agnostic heritage extractor with config+factory pattern (#890) 2026-04-17 17:51:17 +01:00
text-generator.test.ts feat(embeddings): structural chunking with data-driven CHUNKING_RULES dispatch (#987) 2026-04-20 08:25:31 +01:00
tool-direct-cli.test.ts fix: expose detect-changes in direct CLI (#892) 2026-04-20 17:12:25 +01:00
tool-process-linking.test.ts fix(mcp): project tool_map flows from handlers (#1113) 2026-04-27 17:13:02 +01:00
tools.test.ts fix: Use Ladybug native read-only enforcement and prepared statement execution for Cypher query paths (#1655) 2026-05-18 06:54:24 +01:00
topological-sort.test.ts refactor(pipeline): DAG-based phase architecture + container-logic extraction to LanguageProvider (#809) 2026-04-13 20:31:05 +01:00
transitive-include-closure.test.ts fix: resolve C/C++ cross-file calls through transitive #include chains (#816) 2026-04-14 09:39:17 +01:00
tree-sitter-queries.test.ts feat(ingestion): language-agnostic variable extractor with config+factory pattern (#878) 2026-04-16 13:57:25 +01:00
type-env.test.ts fix(swift): use official prebuilt parser runtime (#1130) 2026-04-28 09:57:42 +01:00
utils.test.ts feat: configure prettier with pre-commit hook (#563) 2026-03-28 14:58:04 +00:00
variable-extraction.test.ts feat(ingestion): language-agnostic variable extractor with config+factory pattern (#878) 2026-04-16 13:57:25 +01:00
vue-sfc-extractor.test.ts fix(security): close URL/regex/tag-filter sanitization cluster (U7) (#1330) 2026-05-08 07:11:29 +01:00
web-ui-serving.test.ts fix(lbug): keep serve stable when sidecars are missing (#1747) 2026-05-21 12:35:43 +01:00
wiki-flags.test.ts feat(wiki): added --lang <lang> flags to gitnexus wiki for multilanguage wiki generation support (#1613) 2026-05-17 19:54:02 +01:00
wiki-llm-client.test.ts fix(wiki): Remove the hidden 60s default timeout, validate gitnexus wiki timeout/retry flags, and surface timeout errors (#1651) 2026-05-17 12:03:54 +01:00
wiki-mermaid-sanitizer.test.ts fix(wiki): sanitize generated mermaid diagrams (#1539) 2026-05-13 11:53:09 +01:00
wildcard-synthesis.test.ts refactor(pipeline): DAG-based phase architecture + container-logic extraction to LanguageProvider (#809) 2026-04-13 20:31:05 +01:00
worker-pool-cumulative-timeout.test.ts fix(workers): resilient + zero-copy ingestion worker pool — prevent analyze hangs on TS-root-scale loads (#1693) 2026-05-20 20:39:35 +01:00
worker-pool-options.test.ts fix: recover worker parse stalls (#1121) 2026-04-27 20:07:03 +01:00
worker-pool-resilience.test.ts fix(workers): resilient + zero-copy ingestion worker pool — prevent analyze hangs on TS-root-scale loads (#1693) 2026-05-20 20:39:35 +01:00
worker-pool-slot-generation.test.ts fix(workers): resilient + zero-copy ingestion worker pool — prevent analyze hangs on TS-root-scale loads (#1693) 2026-05-20 20:39:35 +01:00
worker-pool-transferlist.test.ts fix(workers): resilient + zero-copy ingestion worker pool — prevent analyze hangs on TS-root-scale loads (#1693) 2026-05-20 20:39:35 +01:00
worker-pool-windows-quarantine.test.ts fix(workers): resilient + zero-copy ingestion worker pool — prevent analyze hangs on TS-root-scale loads (#1693) 2026-05-20 20:39:35 +01:00