Skip to content

Commit b02015e

Browse files
jgravelleclaude
andcommitted
docs: record the #378 merge+fix, the #380 close, and the #375 findings
PR queue is now empty. Traps recorded rather than outcomes, since those are the expensive part to re-derive: #378 - tree-sitter-toml nests dotted_key LEFT-RECURSIVELY, so a walker matching only leaf key types keeps the last segment and silently drops the rest. Two-level paths still look right under that bug, which is why it survived review and the PR's own tests. Generalises to any new nested-grammar walker. #380 - closed on demand, NOT on principle. MiniMax/GLM/OpenRouter are the same branded-alias shape and are already merged, and the close comment concedes that publicly. A future close must not claim we reject branded providers. #375 - two of four sub-problems closed by source inspection (B is the default WARNING log level, not a defect; D is capped at 60s and raises, so it cannot be unbounded silence). Records the new finding that index_folder is missing from _AUTO_WATCH_EXCLUDED, and, more importantly, WHY neither available fix was shipped: one races the watch task's initial index onto the same indexwrite lock, the other silently drops auto-start-watching. Also records that the .claude/ repro is too small to be explained by slow work, so the stall is a block, not a grind, and the py-spy dump is the decisive artifact. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
1 parent f0eda7b commit b02015e

1 file changed

Lines changed: 52 additions & 9 deletions

File tree

CLAUDE.md

Lines changed: 52 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -405,15 +405,58 @@ wiring absent. Verified against a TRIAL MERGE onto current main (branch-green is
405405
not merged-green), 210 neighbouring import/language tests green. Landed AFTER the
406406
1.108.170 release commit, so it rides the NEXT release, not that one.
407407

408-
**Open PRs (2026-07-25):** #378 TOML symbol extraction (@zuoYu-zzz, unreviewed;
409-
verify no collision with dbt/SQLMesh column work or jcm's own `configs/*.toml`).
410-
**#380 Atlas Cloud summarizer — HELD pending demand** (jjg's call). It correctly
411-
adds `atlascloud` to `_PAID_CLOUD_PROVIDERS` (money-safety guard respected), but
412-
it is a branded wrapper over `_make_openai_compat` — identical behavior is already
413-
reachable via `OPENAI_API_BASE`. Costs: SIX permanent env-var spellings under the
414-
1.x no-removal contract, no README/USER_GUIDE/CONFIGURATION/CHANGELOG updates, and
415-
the author account forked minutes before opening it. Precedent exists (MiniMax/GLM/
416-
OpenRouter are branded aliases), so this is a demand question, not a quality reject.
408+
**Merged 2026-07-25: #378 (@zuoYu-zzz) TOML symbol extraction** — tables → `type`,
409+
array tables → `class`, key-value pairs → `constant`. Merged rather than
410+
review-round-tripped, then fixed on top in **`f0eda7b`**. ⚠ **The defect worth
411+
remembering: `_extract_key` scanned a `dotted_key`'s DIRECT children for
412+
`bare_key`/`quoted_key`, but tree-sitter-toml nests `dotted_key`
413+
LEFT-RECURSIVELY** (`[tool.ruff.lint]` = `dotted_key(dotted_key(tool, ruff),
414+
lint)`), so every segment but the last was dropped. **Two-level paths worked,
415+
which is exactly why it read as correct** — the bug only shows at three-plus, and
416+
on jcm's OWN pyproject.toml `[tool.hatch.build.targets.wheel]` came back as
417+
`wheel` with signature `[wheel]`, **a header that appears nowhere in the file**
418+
(search_symbols would have handed an agent fabricated source text). Fix returns
419+
path SEGMENTS and recurses; building from segments also fixed `name`/
420+
`qualified_name`, which the PR set to the same value (now leaf / full dotted path,
421+
matching every other extractor). New test asserts three- AND five-deep tables plus
422+
a signature-occurs-in-source check, proven non-vacuous. **The PR's own test used
423+
only single-segment headers, so nothing in the suite could have caught it** — the
424+
general lesson for any new nested-grammar walker. Rides the next release with #379.
425+
426+
**Closed 2026-07-25: #380 Atlas Cloud summarizer** (@binyangzhu000-sudo). Closed on
427+
DEMAND, not quality: CLA unsigned (hard blocker), and the capability is fully
428+
reachable today via `OPENAI_API_BASE` + `SUMMARIZER_PROVIDER=openai` since Atlas
429+
Cloud is OpenAI-compatible. Cost of merging was **8** permanent env-var spellings
430+
(`ATLASCLOUD_`/`ATLAS_CLOUD_` × `API_KEY`/`API_BASE`/`BASE_URL`/`MODEL`) plus 3
431+
aliases, permanent under the 1.x no-removal contract. ⚠ **Do NOT re-close a future
432+
one of these "we don't take branded providers"** — MiniMax/GLM/OpenRouter are
433+
exactly this shape and already merged; the comment concedes that on the record.
434+
The bar is a user asking, same as platform installers. It correctly added
435+
atlascloud to `_PAID_CLOUD_PROVIDERS`, so the money-safety guard was respected.
436+
**Open issues (2026-07-25): #375 + #377 only, both jjg-filed; ZERO open PRs.**
437+
438+
**#375 (index_folder silent 1800s+ on Linux) — investigated 2026-07-25, NOT fixed,
439+
awaiting a py-spy dump.** Of the four sub-problems: **B (zero `index_folder` log
440+
lines) is CLOSED as not-a-defect** — that file has 16 `logger.info`/18
441+
`logger.debug` against 6 warnings/2 errors and the default `log_level` is
442+
`WARNING` (`config.py:432`), so a healthy run emits nothing; setting `log_level`
443+
to `INFO` is the cheapest heartbeat available today. **D (two-instance lock
444+
contention) is near-ruled-out** — every `indexwrite` acquire passes
445+
`wait_seconds=60.0` and RAISES naming the holder (`sqlite_store.py` 875/1323/1674/
446+
2966, `import_scip.py:83`), so it cannot present as unbounded silence. **A
447+
(no emission without `progressToken`) confirmed** (`progress.py:213`). **C
448+
(freshness lies) NOT yet investigated.****NEW finding not in the issue:
449+
`index_folder` is MISSING from `_AUTO_WATCH_EXCLUDED` (`server.py:4499`) while
450+
`index_file` is present, so `_auto_watch_if_needed` (`server.py:4531`) awaits a
451+
full `ensure_indexed(X)` BEFORE the tool dispatches and then the tool indexes X
452+
again — a silent double index, independent of progressToken.****Deliberately
453+
NOT patched: dropping the redundant `ensure_indexed` while keeping `add_folder`
454+
would let the watch task's own initial index race the tool's index on the same
455+
`indexwrite` lock (60s waits, plausibly WORSE); excluding `index_folder` outright
456+
silently removes auto-start-watching. Both wait on localisation.** The stall is
457+
still unexplained — one repro was a `.claude/` chunk, far too small for 1800s, so
458+
something BLOCKS rather than grinds.
459+
417460
**#381 (MCP Toplist badge) CLOSED by jjg** — 120 identical drive-by PRs from that
418461
author; the badge renders "Top 1% of 81,432", not the rank the PR body promised,
419462
and it is live third-party-controlled content in a README that also renders on PyPI.

0 commit comments

Comments
 (0)