b1d5fbefcba02fdc6c19fef85cec1c4e82fc8dea
7
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
736649b3b7 |
fix(812): classify the narrative sites by who-benefits; keep the detector's reach (#882)
Build ErsatzTV Image / CI toolchain image resolves (push) Successful in 7s
Build ErsatzTV Image / Delimiter ban (release path) (push) Successful in 22s
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 9m18s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 6m33s
Build ErsatzTV Image / Functional E2E (curl + UI contracts) (push) Skipped
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Skipped
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 4m52s
Co-authored-by: Timothy <timothy@noreply.gitea.tblindustries.be> |
||
|
|
b16ec15d6c |
docs(781,799): re-measure the tooling audit from a derived population, and adopt serena (#862)
Build ErsatzTV Image / CI toolchain image resolves (push) Successful in 9s
Build ErsatzTV Image / Delimiter ban (release path) (push) Successful in 23s
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 8m36s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 6m11s
Build ErsatzTV Image / Functional E2E (curl + UI contracts) (push) Successful in 6m10s
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Skipped
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 4m13s
§5.3's verdicts rested on a single surface, which manufactured four false zeros: codex is driven through `codex exec` inside Bash, security-guidance and ralph-loop expose no tool at all and run as hooks (1,086 executions each), and feature-dev is used through its agents. The audit also compared current enablement against historical usage — six of the eight plugins it called "genuinely unused" were disabled for 16 of the 30 corpus days. The retirement half of #781 is answered *no* on evidence: the zeros split six ways and only one is grounds for removal. Eight plugins are kept by operator decision. #799's observation was correct and its cause is now established. serena was `false` in settings.json until 2026-08-14T12:31Z, when a concurrent session enabled it; its tools appear in no transcript before 12:42:54Z. #799's session started at 12:01Z and never reloaded, so its probe correctly found nothing while the settings file already said `true`. serena is adopted and documented as the third code-intelligence surface. Four review rounds, two independent cold reviewers (one cross-family); rounds 1-3 BLOCKED. fixes #781 fixes #799 Co-authored-by: Timothy <timothy@noreply.gitea.tblindustries.be> |
||
|
|
d4c72697f2 |
feat(780): commit a ruff config and enforce it in CI (#813)
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Skipped
Build ErsatzTV Image / Delimiter ban (release path) (push) Successful in 28s
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 8m29s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 5m54s
Build ErsatzTV Image / Functional E2E (curl + UI contracts) (push) Successful in 5m59s
Build ErsatzTV Image / Build & push image (amd64) (push) Failing after 15s
Python lint here was a property of the operator's laptop: the global instructions
say to run ruff, no workflow ran it, and with no committed config ruff fell back
to whichever ~/.config/ruff/ruff.toml the machine happened to have.
- ruff.toml at the root, pinned ruff==0.12.11 in the script-tests job.
- Both lint steps pass an EXPLICIT population from `git ls-files` with
`--no-force-exclude`, never `ruff check .` — an `exclude` empties a
discovery-based run into a GREEN one (top level empties both commands, [lint]
empties check, [format] empties format --check), and `ruff check .` over zero
files exits 0 with only a stderr warning. Guarded by an empty-population arm.
- Tree clean: 74 findings at
|
||
|
|
107716fa4f |
docs(781): re-measure §5.3 from a derived population — the zeros split four ways (#800)
Build ErsatzTV Image / Delimiter ban (release path) (push) Successful in 26s
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 9m21s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 6m49s
Build ErsatzTV Image / Functional E2E (curl + UI contracts) (push) Successful in 6m24s
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Skipped
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 4m42s
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Skipped
The §5.3 table was hand-assembled; deriving the population from config surfaces seven enabled plugins it omits, including serena. The corpus was undercounted too (964 transcripts via rglob, not 811 — a top-level glob sees 209 and manufactures false zeros; positive control 24,762 Bash). Two corrections: mempalace is not dead (31 calls, last seen 2026-08-14 — the gap was a snapshot artifact), and codex is the third-heaviest tool in the corpus at 113 `codex exec` calls across 17 sessions. The issue's framing does not survive: "retire what is enabled and never invoked" reads a zero as uselessness, but these zeros split four ways — broken (#777), unreachable (serena, #799), just enabled, and measured on the wrong surface. Establishing WHY a counter is zero is a precondition for acting on it. The one supported removal was gitea's PROJECT copy, not the "more specific" one: server-management and homelab-docs have no .mcp.json and depend on user scope. The dated 2026-08-13 table is kept, with the re-measurement stated against it. refs #781 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Co-authored-by: Timothy <timothy@noreply.gitea.tblindustries.be> |
||
|
|
499dd348ab |
feat(776): every hook reports that it fired, and the report is measured (#795)
Build ErsatzTV Image / Delimiter ban (release path) (push) Successful in 25s
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 9m14s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 6m37s
Build ErsatzTV Image / Functional E2E (curl + UI contracts) (push) Successful in 6m16s
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Skipped
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 4m19s
Co-authored-by: Timothy <timothy@noreply.gitea.tblindustries.be> |
||
|
|
4bead26326 |
fix(777): repair both broken LSPs, and name the surface a subagent can actually reach (#793)
Build ErsatzTV Image / Delimiter ban (release path) (push) Successful in 26s
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 9m34s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 6m35s
Build ErsatzTV Image / Functional E2E (curl + UI contracts) (push) Successful in 6m22s
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Skipped
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 5m12s
Both C#/TS language servers and the csharp-lsp MCP server were dead; all three are fixed and each demonstrated with a real find-all-references call in this repo. Root causes were one shape — a config naming a path this machine does not have, with nothing checking. None returned a wrong answer; each refused to start: - csharp-ls: MSBuildLocator needs a dotnet root owning host/fxr; Homebrew's bin has none, libexec does. - typescript-language-server: the LSP workspace root is the repo root but `typescript` lives in web/node_modules, and the plugin cannot pass a tsserver path (v5 dropped --tsserver-path; lspServers cannot set initializationOptions). - the csharp-lsp MCP server: .mcp.json named a dotnet install that no longer existed, while ~/.codex/config.toml's copy of the same server had been migrated. Both files are gitignored, so nothing could compare them. Corrects defect-shapes-773.md §5.1: the "workflow agents must use csharp-lsp" note names the MCP server's tools, which subagents DO reach — it was dead because the server could not start, not because agents cannot call it. The LSP tool is the one no subagent has been observed to resolve. Six cold review rounds. Five false greens were found in this PR's own verification code, each introduced by the fix for the previous one — extracted as #796. fixes #777 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Co-authored-by: Timothy <timothy@noreply.gitea.tblindustries.be> |
||
|
|
e1937674cd |
docs(773): root-cause the recurring defect shapes across the full closed-issue corpus (#782)
Build ErsatzTV Image / Delimiter ban (release path) (push) Successful in 23s
Build ErsatzTV Image / Build & test (.NET) (push) Successful in 9m24s
Build ErsatzTV Image / EF migration integrity (SQLite + MySql) (push) Successful in 6m42s
Build ErsatzTV Image / Functional E2E (curl + UI contracts) (push) Successful in 6m23s
Build ErsatzTV Image / API docs in sync (OpenAPI + endpoint index) (push) Skipped
Build ErsatzTV Image / Formatting (changed .cs conform to .editorconfig) (push) Skipped
Build ErsatzTV Image / Build & push image (amd64) (push) Successful in 4m38s
Analysis over all 349 closed issues (95 carry a `## Closing record`), classified by five independent raters against a written taxonomy that permitted `NEW:<name>`, with two controls: a blind inter-rater re-rating (12/15 agreement) and a backward-generalization sample over the 254 pre-convention issues. Findings that change the picture #773 started from: - The ranking reverses. Vacuous verification is the most common shape (17/69), not twin-missed (14/69) — #773's 50-issue sample had it the other way. - #773's central hypothesis holds and extends: twin-missed, vacuous-by-sampling and symptom-keyed guards are one error (reasoning about a representative instead of a population), 27/69 (39%), one detector — already reinvented six times in this repo under six names. - The shapes predate the closing-record convention (#1, #215, #232, #403, #473), so they are not an artifact of recent guard-building. That confound was tested and refuted, not assumed away. - A class the taxonomy missed entirely: check-and-use races over mutable state (#536, #622, #632, #706, #707). - Overclaim drops to 4% as a primary cause — a modifier, not a class. Round-churn likewise: 33 of 69 records narrate >=3 review rounds, spread across every family, only 2 in the class named after it. Part 2, measured rather than assumed: csharp-lsp cannot initialize and typescript-lsp cannot resolve typescript, the LSP tool has 0 calls across 811 transcripts, ruff/pyright are enforced nowhere despite the global instruction, no hook scripts are dead — but PreToolUse/PostToolUse execution leaves no durable trace, so we cannot tell whether our own guards fire. Names the classes where no mechanical detector is plausible rather than inventing weak ones, and strikes one proposed tool (shellcheck) after testing showed it does not catch the case it was proposed for. Provenance, kept here rather than in the document because a reader never saw the earlier drafts: six cold review rounds, worktree-isolated. Rounds 2-5 each found a real defect in the text written to fix the round before — two fabricated quotes, a Family A/C double-count, a miscited precedent (#711 argues FOR the enumeration it was cited as rejecting), a false floor-rounding claim, and a round-count built by pattern-matching that undercounted by half. Every one landed in new prose, never in the text under review, which is the document's own thesis operating on its author and the reason the final pass was whole-file rather than delta-scoped. Spawns #774-#781 and #784, tracked in the "Defect-shape hardening" milestone. fixes #773 Co-authored-by: Timothy <timothy@noreply.gitea.tblindustries.be> |