You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit a5c2eeb
Browse filesBrowse the repository at this point in the historyBrowse files
Copy file name to clipboardExpand all lines: README.md
+8-7Lines changed: 8 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -52,7 +52,7 @@ Remote LLM endpoints must use HTTPS; HTTP is accepted only on loopback.
52
52
53
53
**Synonyms:** Each node (file or directory) gets 5–12 LLM-generated synonyms via batched API calls to an OpenAI-compatible endpoint. For example, `Skeletons.tsx → ["skeletons", "loading", "placeholder", "animation"]`. Names are smart-batched (up to 60 per request, 10 parallel by default). The prompt includes extracted symbols and, for JS/TS files, ESM imports to generate contextual terms. Use `--offline` to guarantee that no LLM requests are made.
54
54
55
-
**Bootstrap diff:** On subsequent runs, `init` diffs the filesystem against the existing snapshot using file modification times. Deleted files are removed, new files are added, modified files are re-extracted. No LLM calls for existing synonyms — run `ctxt sync` to fill gaps. Synonym keys use `parentDir/basename` (e.g., `webhook/route.ts`) instead of bare basenames to prevent duplicate filenames from overwriting each other in the synonym map.
55
+
**Bootstrap diff:** On subsequent runs, `watch` diffs the filesystem against the existing snapshot using file modification times and sizes. Timestamp-preserving edits with a different size are detected; edits preserving both size and timestamp require a full rebuild. Deleted files are removed, new files are added, modified files are re-extracted. No LLM calls for existing synonyms — run `ctxt sync` to fill gaps. Synonym keys use `parentDir/basename` (e.g., `webhook/route.ts`) instead of bare basenames to prevent duplicate filenames from overwriting each other in the synonym map.
56
56
57
57
### Search mechanics
58
58
@@ -77,7 +77,7 @@ The `--explain` flag reveals this breakdown:
77
77
basename contains +7: skeleton + syn exact +8: loading + sym contains +5: PageSkeleton = total 148
78
78
```
79
79
80
-
Results are ranked by total score. Low-signal short/common words are filtered from query and synonym matching to reduce noise. Results are truncated at confidence gaps — if there's a 50%+ score drop between consecutive results, lower-scoring results are omitted even if `--limit` would include them.
80
+
Results are ranked by total score. Low-signal short/common words are filtered from query and synonym matching to reduce noise. Results are truncated at confidence gaps — if there's a 50%+ score drop between consecutive results, lower-scoring results are omitted even if `--limit` would include them. Exact filename/symbol lookups can return just one strong match; conceptual queries retain up to three alternatives. Zero-score candidates are never returned.
81
81
82
82
### Watch mode
83
83
@@ -145,7 +145,7 @@ Flags:
145
145
-`--memory` (default true) — query live watch index first, fall back to snapshot
146
146
-`--memory-only` — fail if live memory unavailable
147
147
-`--runtime-file` — path to runtime discovery file (default `.ctxt/ctx_runtime.json`)
148
-
-`--hybrid` — augment index results with content matching via ripgrep (default false)
148
+
-`--hybrid` — augment index results by searching indexed files with ripgrep (default false); honors type and minimum-score filters
149
149
-`--hybrid-score` — score assigned to content-matched results (default 1)
150
150
-`--hybrid-root` — project root for content matching (defaults to index root)
151
151
@@ -272,11 +272,12 @@ Contexting loads common `.gitignore` patterns by default. Additional ignores com
272
272
2.**`.gitignore` patterns** — loaded from the project root
273
273
3.**`ignore` in config** — extra patterns merged with defaults
274
274
275
-
Ignore sources are additive. Negated `.gitignore` rules (`!path`) are not
276
-
supported, so a later rule cannot re-include an earlier ignored path. Symlink
277
-
entries are not followed or indexed.
275
+
Root `.gitignore` rules support ordered negation (`!path`), rooted patterns,
276
+
directory-only patterns, and `**` globs. Negation can undo earlier Git rules,
277
+
but cannot re-include an excluded parent directory or override built-in/config
278
+
exclusions. Symlink entries are not followed or indexed.
278
279
279
-
**Dot files** are skipped by default (any path segment starting with `.`). whitelisted dot files (`.env`, `.prettierrc`, `.editorconfig`, etc.) are kept. Add more via `dot_whitelist` in config.
280
+
**Dot files** are skipped by default (any path segment starting with `.`). whitelisted dot files (`.env.example`, `.prettierrc`, `.editorconfig`, etc.) remain eligible unless explicitly ignored. Add more via `dot_whitelist` in config.
Copy file name to clipboardExpand all lines: docs/contexting_feedback.md
+5Lines changed: 5 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,5 +1,10 @@
1
1
# Benchmark Feedback — ctxt search quality
2
2
3
+
> Historical feedback from a separate monorepo. Exact basename boosts and symbol
4
+
> scoring are implemented; confidence-gap behavior has since been refined. See
5
+
> [the 2026-10-10 local evaluation](../bench_results/002_search_quality_2026-10-10.md)
6
+
> for current results on this repository’s offline index.
7
+
3
8
Ran `ctxt bench` with a 45-case file across a multi-language monorepo (Go + TypeScript + Svelte). 4 engines compared: ctxt, find, grep, combined. Overall results:
0 commit comments