docs(781,799): re-measure the tooling audit from a derived population, and adopt serena #862
5
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
9b4844c1a8 |
fix(781,799): remove the last startup-cause clause, and two count nits
PR Gates / CI image pin matches docker/ci (pull_request) Successful in 9s
review-verdict/h10 Review-verdict: MERGEABLE @ 9b4844c (base: main)
Build ErsatzTV Image / Delimiter ban (release path) (pull_request) Successful in 20s
PR Gates / Fix proofs (Proves trailers) (pull_request) Successful in 16s
PR Gates / Docs update reminder (pull_request) Successful in 44s
Build ErsatzTV Image / CI toolchain image resolves (pull_request) Successful in 17s
Review verdict / Set review-verdict status (pull_request_target) Successful in 11s
PR Gates / decisions lifecycle (pull_request) Successful in 17s
PR Gates / Script lint and tests (ruff + pytest) (pull_request) Successful in 5m30s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (pull_request) Successful in 6m42s
Build ErsatzTV Image / Functional E2E (curl + UI contracts) (pull_request) Successful in 6m13s
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (pull_request) Successful in 7s
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (pull_request) Successful in 6s
Build ErsatzTV Image / Build & test (.NET) (pull_request) Successful in 8m44s
Build ErsatzTV Image / Build & push image (amd64) (pull_request) Skipped
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 — `<local-command-stdout>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) <noreply@anthropic.com> |
||
|
|
d040c031fb |
fix(781,799): bound the reload claim, and measure what was asserted
Second review round, both reviewers again. The reload account was right in substance but overreached: two sessions cannot establish the harness's contract, and "started at 12:01Z, SO its tool set never contained them" implied a startup cause that the evidence contradicts — the enabling session also started before the toggle. It now states what separates the two (one reloaded, one did not) and gives the operating rule rather than a mechanism. The /reload-plugins count was itself a substring count, in the paragraph that establishes "count invocations, not substrings". Replaced with the cause-effect pair: reload at 12:54:32.694Z, `Reloaded: 17 plugins`, serena in the next delta 19s later at 12:54:51.402Z. The codex figure took three parsers to three answers (117, 112/126, 109), which is the point at which a hand-written command-position grammar stops earning its keep. Stated as 109-126 with the grammar named, and the range left unresolved on purpose. The truncation trap claimed the degraded form was "still complete on files and symbols" without ever re-running at a higher limit. Re-run at 60000: same 7 files, same 17 symbols, only the content_around_reference snippets lost. Now measured instead of assumed. Also: activation is no longer described as what made serena look broken (it is a second prerequisite, met only after the tools resolve); the subagent claim in the serena intro no longer contradicts the caveat in the surfaces table; both hook rows carry the same triple; and the identical-cadence claim is tied to both plugins registering a Stop hook in hooks.json rather than asserted as necessity. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> |
||
|
|
dabbd4c3e8 |
fix(781,799): correct the serena causal story and the enablement-blind verdicts
Two independent cold reviews (one cross-family) blocked the previous revision, both on the same defect the section exists to name: a zero read as "unused" without checking whether the thing was switched on. They were right. serena was not "reachable all along". It was `false` in ~/.claude/settings.json until 2026-08-14T12:31Z, when a concurrent session enabled it; its tools appear in no transcript before 12:42:54Z that day. The #799 session had started at 12:01Z and never ran /reload-plugins, so its probe at 13:41Z correctly reported the tools absent — while the settings file already said `true`. Both reviewers had half of this; the reload boundary is what reconciles them, since the session that performed the toggle DID acquire serena mid-run after reloading three times. So #799's observation was accurate and its cause is now established, rather than refuted as the previous revision claimed. The error underneath it was dating transcript evidence by file mtime instead of record timestamp, which places a session's records at the moment it last wrote and made a first-appearance look like a pre-existing state. Both rules are now recorded in the section. Six of the eight plugins called "genuinely unused" were disabled for 16 of the 30 corpus days (settings.json.bak-doctor), and ralph-loop is not unused at all — its Stop hook has 1,083 executions, the same cadence as security-guidance, since both fire on every stop. It is the sole enabled plugin owning hooks/stop-hook.sh, so the attribution is unambiguous. That is a fourth instance of the wrong-surface mistake, found in the act of documenting the first three. Also: "256 codex exec calls" counted Bash inputs *containing* the string, including pgrep and echo; at command position it is 117. The surface list no longer claims a fixed count, omits neither `LSP` nor `attributionSkill`, and says what was not separately identified. In local-lsp-tooling.md the subagent claim is marked expected-but-undemonstrated, "the only surface not C#-only" is dropped as false, ~30 language servers becomes the config's actual 73, and the multi-minute warm-up assertion is replaced by the one cold run's real timings. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> |
||
|
|
3f99aecddc |
docs(781): tighten two claims that outran their evidence
The surface enumeration asserted "six surfaces exist", which is an absolute claim about the world rather than about this corpus. MCP resources/prompts are a seventh; they measure 0 across every server, so naming them costs a sentence and removes a hole a reader could fall into. The security-guidance row said "fires on 20 distinct days" from a loose grep that would also match a session merely discussing the hook. Recounted against `stop_hook_summary` records naming the hook itself: 1,080 executions across 79 transcripts, same 20 days. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> |
||
|
|
b760de8b77 |
docs(781,799): re-measure the tooling audit from a derived population, and adopt serena
§5.3's verdicts rested on a single surface (tool/skill invocation counts), which manufactured three false zeros: `codex` is used via `codex exec` inside Bash, `security-guidance` exposes no tool at all and runs as a hook, and `feature-dev` is used through its agents rather than its skill. Re-measured across all six surfaces a thing can actually be used through, with the population derived from the config files instead of listed by hand. The retirement half of #781 is answered *no* on evidence rather than left open: the zeros split five ways (broken, wrong surface, reachable-but-uncalled, aged out of a rolling corpus, genuinely unused) and only the last is grounds for removal. Eight plugins are genuinely unused and are deliberately kept — operator decision, recorded in the table. #799's premise is refuted rather than fixed: serena's tools appear in the tool-availability listing of six transcripts on 2026-08-14, the day the issue claimed they never reach a session, and in 191 transcripts since. It was never unreachable, only never called — what was missing is an `activate_project`. Adopted and documented as the third code-intelligence surface, with `.serena/` gitignored because activation writes it into the project root. Also removed the disabled `nuget` entry from the local `.mcp.json` (its command names `/usr/local/share/dotnet/dotnet`, verified absent) and the dangling `nuget` reference it left in `disabledMcpjsonServers`. Both files are gitignored, so that part is not visible in this diff. fixes #781 fixes #799 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> |