From 9b4844c1a8a9246d050dbc33c61a03eaedb79132 Mon Sep 17 00:00:00 2001 From: Timothy Date: Fri, 28 Aug 2026 16:09:37 +0200 Subject: [PATCH] fix(781,799): remove the last startup-cause clause, and two count nits MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Round 3. The startup-cause clause the previous commit set out to delete survived one paragraph above its own refutation: :560 still read "started at 12:01Z, so its tool set never contained them" while :564 said start time separates nothing. Sweeping to where the reviewer pointed rather than to every site making the claim is the trap this repo calls "sweep by subject, not verb". The clause now carries the variable that actually differs — "and never reloaded" — so the two paragraphs agree. Dropping the /reload-plugins count was the right call and is now proven so: the 12:05:35Z record I had counted as a second invocation is a /doctor command whose arguments quote the words "run /reload-plugins". The reliable instrument is the harness's own receipt — `Reloaded: N plugins`, which occurs exactly three times corpus-wide — not the command string. Two nits: the codex range is paired with ~21-26 transcripts rather than the strict parse's 21 alone, and the truncation comparison says 17 reference entries across 16 distinct symbols, since GetChannelPlaylistHandler/Handle is referenced twice. Also "the system reporting the cause" now reads "this prerequisite", since the paragraph above it establishes that activation was not #799's cause. Co-Authored-By: Claude Opus 5 (1M context) --- docs/defect-shapes-773.md | 6 +++--- docs/local-lsp-tooling.md | 10 +++++----- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/defect-shapes-773.md b/docs/defect-shapes-773.md index 4ea87d81e..11801fe8d 100644 --- a/docs/defect-shapes-773.md +++ b/docs/defect-shapes-773.md @@ -506,7 +506,7 @@ every shape that exists. | Entry | Scope / surface | Measured | Verdict | |---|---|---|---| | `gitea` MCP | user `~/.claude.json` | **975 calls**, 105 transcripts, last 2026-08-28 | Keep — heaviest tool in the corpus | -| `codex` plugin | `codex exec` inside `Bash`, plus `SessionStart`/`SessionEnd`/`Stop` hooks | **109–126 `Bash` inputs invoke it at command position** across ~21 transcripts, last 2026-08-28 — 109 under a quote- and heredoc-aware parse, rising toward 126 if wrappers such as `nohup` are admitted. The range is stated rather than resolved: three successive parsers gave three answers, which is the point at which a hand-written command-position grammar stops being worth another round. **258** inputs merely *contain* the string — `pgrep -f "codex exec"` polling loops and heredoc bodies mention it — so a substring count overstates it roughly twofold | Keep — heavily used, and invisible to a skill-name search | +| `codex` plugin | `codex exec` inside `Bash`, plus `SessionStart`/`SessionEnd`/`Stop` hooks | **109–126 `Bash` inputs invoke it at command position** across ~21–26 transcripts, last 2026-08-28 — 109 under a quote- and heredoc-aware parse, rising toward 126 if wrappers such as `nohup` are admitted. The range is stated rather than resolved: three successive parsers gave three answers, which is the point at which a hand-written command-position grammar stops being worth another round. **258** inputs merely *contain* the string — `pgrep -f "codex exec"` polling loops and heredoc bodies mention it — so a substring count overstates it roughly twofold | Keep — heavily used, and invisible to a skill-name search | | `playwright` | plugin MCP | 64 calls, last 2026-08-27 | Keep | | `security-guidance` | **hooks** (`SessionStart`, `UserPromptSubmit`, `PostToolUse`, `Stop`) | **1,086 execution records** in `hookInfos` naming `security_reminder_hook`, across 78 transcripts / 23 UTC days, last 2026-08-28 | Keep — **not** dead; it exposes no tool at all | | `ssh-mcp` | project `.mcp.json` | 16 calls, 9 transcripts, last 2026-08-22 | Keep | @@ -556,8 +556,8 @@ sessions here. What was demonstrably wrong with this configuration was **duplica `~/.claude/settings.json.bak-doctor`, written moments earlier, still records `serena: false`. Its tools appear in **no transcript before 2026-08-14T12:42:54Z**, then in 6 transcripts that day and 186 across the 10 days since, always in a harness-emitted availability listing rather than prose -(counts as of the 2026-08-28 snapshot; the corpus is live and grows). The -#799 session had started at 12:01Z, so its tool set never contained them; its `ToolSearch` probe at +(counts as of the 2026-08-28 snapshot; the corpus is live and grows). The #799 session had started +at 12:01Z **and never reloaded**, so its tool set never contained them; its `ToolSearch` probe at 13:41Z correctly reported them absent, and that probe *did* carry a positive control — two other `ToolSearch` queries resolved in the same session minutes before. diff --git a/docs/local-lsp-tooling.md b/docs/local-lsp-tooling.md index 57557fc46..b53336609 100644 --- a/docs/local-lsp-tooling.md +++ b/docs/local-lsp-tooling.md @@ -179,8 +179,8 @@ No active project. Ask the user to provide the project path or to select a proje from this list of known projects: ['adversarial-reviewer', 'server-management', ...] ``` -That error is the tell, and it is the system reporting the cause rather than the caller inferring it -from an empty result. Activate by absolute path, once per directory: +That error is the tell, and it is the system reporting this prerequisite rather than the caller +inferring it from an empty result. Activate by absolute path, once per directory: ``` mcp__plugin_serena_serena__activate_project project=/Users/timothy/ersatztv @@ -215,9 +215,9 @@ Traps specific to it: - **A truncated answer degrades into a summary, and says so only in its first line.** `find_referencing_symbols` with `max_answer_chars: 4000` on `ChannelPlaylist` returned *"The answer is too long (5758 characters)"* followed by a "References without surrounding lines" list. Re-run - at `max_answer_chars: 60000`, the full answer names the **same 7 files and the same 17 symbols** — - so on this query the degraded form lost only the `content_around_reference` snippets, not - coverage. One comparison is not a guarantee for every query: raise the limit and diff the two + at `max_answer_chars: 60000`, the full answer names the **same 7 files and the same 17 reference + entries across 16 distinct symbols** (`GetChannelPlaylistHandler/Handle` is referenced twice) — so + on this query the degraded form lost only the `content_around_reference` snippets, not coverage. One comparison is not a guarantee for every query: raise the limit and diff the two before treating a truncated result as exhaustive. ## Traps