diff --git a/.trail/learnings/2026-11-09-the-readme-s-spelled-out-language-shrish.md b/.trail/learnings/2026-11-09-the-readme-s-spelled-out-language-shrish.md new file mode 100644 index 000000000..81cde806f --- /dev/null +++ b/.trail/learnings/2026-11-09-the-readme-s-spelled-out-language-shrish.md @@ -0,0 +1,30 @@ +--- +title: "The README's spelled-out language count makes every new-language PR conflict with every other" +author: Shrish +date: 2026-11-09 +branch: docs/readme-language-count +cost: { minutes: 39, tokens: 83938 } +id: l-e43790d6 +scope: repo +status: active +src: agent +touches: + - test/mcp-server.test.ts + - src/claude/settings-merge.ts + - test/claude-init.test.ts + - test/claude-settings-merge.test.ts + - test/hosts-claude-global.test.ts + - test/hosts-retract.test.ts + - src/ai/llm/recover-tool.ts + - test/llm-ops.test.ts + - src/graph/build.ts + - src/graph/extract-cache.ts +--- + +## Watch out +The README says "Twenty-four languages, plus Vue, Svelte and Astro..." in words, and lists the languages in a bullet a few lines up. Every PR that adds a language (Julia, Bash, GLSL, PowerShell landed in the same week) edits both lines, so they all conflict with each other and each needs a rebase after the previous one merges. + +## Decided +When several language PRs land together, resolve their README conflicts by keeping main's count line and fix the count once in a follow-up after the batch merges, instead of rebasing each PR through CI again. + +In the code: README.md, the "N languages, plus Vue..." sentence and the "symbols only" language list; src/graph/generic.ts registry rows are the source of truth for what's supported. diff --git a/README.md b/README.md index 6a08f6384..44f79c59b 100644 --- a/README.md +++ b/README.md @@ -489,7 +489,7 @@ compiler-grade layer, all `$0` and deterministic (no model, no key): - **Broad**: symbols (functions, classes, methods, types, …) plus name-resolved call edges via a generic tree-sitter extractor, one grammar per language: **Rust, C, C++, C#, Ruby, Scala, Elixir, Solidity, - Dart, Clojure, Nix, Lua, Gleam, Julia**, and **OCaml, Zig, GLSL** (symbols only for now, no call edges). + Dart, Clojure, Nix, Lua, Gleam, Julia, PowerShell**, and **OCaml, Zig, GLSL** (symbols only for now, no call edges). **Bash** (`.sh`, `.bash`) also uses this tier for function symbols; Bash call edges and extensionless shell scripts are not yet supported. @@ -507,7 +507,7 @@ compiler-grade layer, all `$0` and deterministic (no model, no key): own files. It's best-effort: a missing or failed server leaves those languages on the AST graph while the other servers still run. -Twenty-five languages, plus Vue, Svelte and Astro single-file components. A file whose language isn't listed is skipped, not +Twenty-eight languages, plus Vue, Svelte and Astro single-file components. A file whose language isn't listed is skipped, not indexed. Adding a broad-tier language is a small contribution; see [CREDITS.md](CREDITS.md) for the folks who added the current set.