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>
109 lines
3.6 KiB
Plaintext
109 lines
3.6 KiB
Plaintext
*.swp
|
|
*.*~
|
|
project.lock.json
|
|
.DS_Store
|
|
# Code-coverage output (dotnet test --results-directory ./coverage, ersatztv#15)
|
|
/coverage/
|
|
*.pyc
|
|
.worktrees/
|
|
|
|
# Claude Code
|
|
.mcp/
|
|
.mcp.json
|
|
# Machine-local settings (DOTNET_ROOT and friends — see docs/local-lsp-tooling.md).
|
|
# Ignored here rather than relying on a personal ~/.config/git/ignore, so a second
|
|
# contributor following that doc cannot accidentally commit their own Homebrew paths.
|
|
/.claude/settings.local.json
|
|
.agents/
|
|
plugins/
|
|
nupkg/
|
|
|
|
# Visual Studio Code
|
|
.vscode
|
|
|
|
# Rider
|
|
.idea
|
|
|
|
# User-specific files
|
|
*.suo
|
|
*.user
|
|
*.userosscache
|
|
*.sln.docstates
|
|
|
|
# Build results
|
|
[Dd]ebug/
|
|
[Dd]ebugPublic/
|
|
[Rr]elease/
|
|
[Rr]eleases/
|
|
x64/
|
|
x86/
|
|
build/
|
|
bld/
|
|
[Bb]in/
|
|
[Oo]bj/
|
|
[Oo]ut/
|
|
msbuild.log
|
|
msbuild.err
|
|
msbuild.wrn
|
|
|
|
# Visual Studio 2015
|
|
.vs/
|
|
|
|
*.sqlite3*
|
|
# Core dumps. MUST stay anchored/qualified (ersatztv#485): a bare `core` matches any path
|
|
# component named `core`, and on a case-insensitive filesystem (macOS default) that includes
|
|
# every `*/Core/` source directory — silently excluding NEW files under e.g.
|
|
# ErsatzTV.Scanner/Core/ from `git add -A`. Tracked files are unaffected, so the symptom is a
|
|
# clean local build and a CI checkout that fails to compile.
|
|
#
|
|
# Both patterns are anchored to the repo root ON PURPOSE — an unanchored `core.[0-9]*` would
|
|
# re-introduce exactly the silent-exclusion class this fixes. Tradeoff, accepted: a dump written
|
|
# into a SUBdirectory is no longer ignored (the old bare `core` did catch those). In practice the
|
|
# processes that could drop one, run from the repo root or from `bin/` — and `[Bb]in/` already covers
|
|
# the latter. An un-ignored dump is visible noise; a wrongly-ignored source file is not.
|
|
/core
|
|
/core.[0-9]*
|
|
|
|
scripts/generate-api-sdk/swagger.json
|
|
scripts/download-test-content.sh
|
|
|
|
docker-compose.override.yml
|
|
|
|
ErsatzTV/wwwroot/v2/
|
|
ErsatzTV/wwwroot/app/
|
|
web/dist/
|
|
web/node_modules
|
|
|
|
# Root-level link that makes `typescript` resolvable from the repo root, which is
|
|
# the LSP workspace root — without it typescript-language-server refuses to start
|
|
# (ersatztv#777). See docs/local-lsp-tooling.md.
|
|
/node_modules/
|
|
|
|
# E2E / screenshot scratch (from Playwright/live-E2E runs) — never committed
|
|
/*.png
|
|
.playwright-mcp/
|
|
# UI-E2E run artifacts: traces/screenshots Playwright writes on failure (outputDir in
|
|
# web/playwright.config.ts), plus the report dir it would use if a reporter is ever added (#445).
|
|
web/e2e/.output/
|
|
web/playwright-report/
|
|
|
|
# Per-session worktree-ownership marker (H7, ersatztv#303) — local, never committed
|
|
.claude-worktree-owner
|
|
|
|
# Codex CLI project scaffolding — a machine-local mirror of the .claude hooks, generated by
|
|
# `codex exec`. Deliberately NOT tracked even though `.claude/` is: its config.toml embeds a
|
|
# plaintext Gitea credential and absolute /Users paths, so it is neither portable nor safe to
|
|
# commit. See ersatztv#711 for the related merge-gate gap.
|
|
.codex/
|
|
|
|
# serena's per-project state, written by `activate_project` (ersatztv#799): project.yml,
|
|
# project.local.yml, a language-server cache, and memories/.
|
|
#
|
|
# This deliberately rejects serena's own versioning model. Its nested .serena/.gitignore excludes
|
|
# only `cache` and `project.local.yml`, and project.local.yml says project.yml "is intended to be
|
|
# versioned" — but activation here is per DIRECTORY, and every worktree generates a project.yml
|
|
# whose project_name is that worktree's folder (e.g. `781-tooling`). A committed copy would name
|
|
# the wrong project in every checkout but the one that produced it. memories/ is ignored with it:
|
|
# it is serena's own written notes, and this repo's durable knowledge lives in docs/ instead.
|
|
.serena/
|