Files
chemenu/kb/concepts/problems/Green Suite Blind Spot.md
torben 54d9540c08
CI / verify (push) Successful in 56s
Release / release (push) Successful in 36s
stack: Konfidenz-Mechanismus ersatzlos entfernt, Korpus migriert (schliesst #60, #86)
Files changed:
- .wikitool-kb.json
- AGENTS.md
- CHANGES.md
- INSTALL-MCP.md
- INSTALL.md
- README.md
- VERSION
- instructions/capture-session.md
- instructions/dev/issue-tracking.md
- instructions/german-terminology.md
- instructions/kb-profiles.md
- instructions/migrate-corpus.md
- instructions/migrations/5.0.0-confidence-removal.md
- instructions/private-instance.md
- instructions/setup-instance.md
- instructions/wiki-lint/SKILL.md
- instructions/wiki-manage/SKILL.md
- instructions/wiki-query/SKILL.md
- kb/CONTRACT.md
- kb/CONVENTIONS.md
- kb/CONVENTIONS.md.template
- kb/concepts/architectures/Consolidation Tiers.md
- kb/concepts/architectures/Context Isolation.md
- kb/concepts/architectures/Cross-platform Agent Skills.md
- kb/concepts/architectures/Episodic Memory.md
- kb/concepts/architectures/Hybrid Search.md
- kb/concepts/architectures/Implementation Spectrum.md
- kb/concepts/architectures/Knowledge Graph.md
- kb/concepts/architectures/LLM Wiki Pattern.md
- kb/concepts/architectures/MCP-Leseserver.md
- kb/concepts/architectures/Memory Lifecycle.md
- kb/concepts/architectures/OKF Compatibility.md
- kb/concepts/architectures/Optional Instance Context File.md
- kb/concepts/architectures/Personalization Plane.md
- kb/concepts/architectures/Procedural Memory.md
- kb/concepts/architectures/RAG.md
- kb/concepts/architectures/Scale Ceiling.md
- kb/concepts/architectures/Semantic Memory.md
- kb/concepts/architectures/Three-Layer Architecture.md
- kb/concepts/architectures/Token Economics.md
- kb/concepts/architectures/Working Memory.md
- kb/concepts/decisions/Delete Rather Than Anonymize.md
- kb/concepts/decisions/Denylist over Allowlist.md
- kb/concepts/decisions/Diff-Reviewable Agent Edits.md
- kb/concepts/decisions/Dual Licensing by File Plan.md
- kb/concepts/decisions/Issue Label Scheme.md
- kb/concepts/decisions/KB Stack Versioning.md
- kb/concepts/decisions/Structural Enforcement over Documented Rule.md
- kb/concepts/patterns/Audit Trail.md
- kb/concepts/patterns/BM25.md
- kb/concepts/patterns/Command Round-Trip Integrity.md
- kb/concepts/patterns/Confidence Scoring.md
- kb/concepts/patterns/Contradiction Resolution.md
- kb/concepts/patterns/Entity Extraction.md
- kb/concepts/patterns/Filter on Ingest.md
- kb/concepts/patterns/Forgetting.md
- kb/concepts/patterns/Graph Traversal.md
- kb/concepts/patterns/Mesh Sync.md
- kb/concepts/patterns/Quality Scoring.md
- kb/concepts/patterns/Reciprocal Rank Fusion.md
- kb/concepts/patterns/Self-Healing.md
- kb/concepts/patterns/Shared vs Private.md
- kb/concepts/patterns/Typed Relationships.md
- kb/concepts/patterns/Vector Search.md
- kb/concepts/patterns/Work Coordination.md
- kb/concepts/problems/Ambient Environment Dependency.md
- kb/concepts/problems/Detect-Repair Asymmetry.md
- kb/concepts/problems/Green Suite Blind Spot.md
- kb/concepts/problems/Naming Convention Conflict.md
- kb/concepts/problems/Write-Once Frontmatter Fields.md
- kb/concepts/protocols/CPPC.md
- kb/concepts/protocols/Modbus.md
- kb/concepts/protocols/SSD TRIM.md
- kb/concepts/workflows/Anti-Cramming Heuristic.md
- kb/concepts/workflows/Bulk Operations.md
- kb/concepts/workflows/CI Integration.md
- kb/concepts/workflows/Checkpoint Audit.md
- kb/concepts/workflows/Claude Code Auto Mode.md
- kb/concepts/workflows/Content Quality Control.md
- kb/concepts/workflows/Crystallization.md
- kb/concepts/workflows/Event-Driven Automation.md
- kb/concepts/workflows/Hooks.md
- kb/concepts/workflows/Index Scaling.md
- kb/concepts/workflows/Iteration and Cost Limits.md
- kb/concepts/workflows/KB Migration.md
- kb/concepts/workflows/Knowledge Compounding.md
- kb/concepts/workflows/Lint Workflow.md
- kb/concepts/workflows/Mass-Update Gate.md
- kb/concepts/workflows/Multi-Agent Collaboration.md
- kb/concepts/workflows/Privacy and Governance.md
- kb/concepts/workflows/Publish-Remote Gate.md
- kb/concepts/workflows/Quality and Self-Correction.md
- kb/concepts/workflows/Semantic Lint Automation.md
- kb/concepts/workflows/Session Orientation.md
- kb/concepts/workflows/Split Merge Reclassify.md
- kb/concepts/workflows/Split Threshold.md
- kb/concepts/workflows/Stub Threshold.md
- kb/concepts/workflows/Supersession.md
- kb/concepts/workflows/User Management.md
- kb/concepts/workflows/Workflow Extraction.md
- kb/concepts/workflows/Workflow Orchestration.md
- kb/entities/people/Andrej Karpathy.md
- kb/entities/people/E3DC GmbH.md
- kb/entities/people/Rohit Gupta.md
- kb/entities/people/Vannevar Bush.md
- kb/entities/projects/BCDModule.md
- kb/entities/projects/Chemenu.md
- kb/entities/projects/andybalholm-edl.md
- kb/entities/projects/goresponsiveness.md
- kb/entities/projects/ha-core.md
- kb/entities/projects/hacs-e3dc.md
- kb/entities/projects/hacs-integration-blueprint.md
- kb/entities/projects/llm-wiki-skills.md
- kb/entities/projects/plugnburn-edl.md
- kb/entities/projects/wiki-skills-vanillaflava.md
- kb/entities/projects/wiki-skills.md
- kb/entities/systems/AGENTS.md.md
- kb/entities/systems/CLAUDE.md.md
- kb/entities/systems/E3DC.md
- kb/entities/systems/ENVIRONMENT.md.md
- kb/entities/systems/Memex.md
- kb/entities/systems/Tolkien Gateway.md
- kb/entities/technologies/Arch Linux.md
- kb/entities/technologies/Disk Encryption.md
- kb/entities/technologies/Docker.md
- kb/entities/technologies/GRUB.md
- kb/entities/technologies/Gitea Actions.md
- kb/entities/technologies/Gitea.md
- kb/entities/technologies/Go.md
- kb/entities/technologies/Home Assistant.md
- kb/entities/technologies/Kernel PM Governors.md
- kb/entities/technologies/LVM.md
- kb/entities/technologies/Linux Kernel.md
- kb/entities/technologies/MQTT.md
- kb/entities/technologies/OPC UA.md
- kb/entities/technologies/Python.md
- kb/entities/technologies/Rust.md
- kb/entities/technologies/Wine GE.md
- kb/entities/technologies/Wine-Staging.md
- kb/entities/technologies/acpi-cpufreq.md
- kb/entities/technologies/amd-pstate.md
- kb/entities/technologies/iii Engine.md
- kb/entities/tools/AUR.md
- kb/entities/tools/Act Runner.md
- kb/entities/tools/Agent Memory.md
- kb/entities/tools/Aura.md
- kb/entities/tools/Bottles.md
- kb/entities/tools/ChatGPT.md
- kb/entities/tools/Claude Code.md
- kb/entities/tools/Codex CLI.md
- kb/entities/tools/Dataview.md
- kb/entities/tools/GPG.md
- kb/entities/tools/GitHub Copilot.md
- kb/entities/tools/Gitea MCP Server.md
- kb/entities/tools/Lutris.md
- kb/entities/tools/Marp.md
- kb/entities/tools/Mistral Vibe.md
- kb/entities/tools/NotebookLM.md
- kb/entities/tools/Obsidian Web Clipper.md
- kb/entities/tools/Obsidian.md
- kb/entities/tools/OpenAI Codex.md
- kb/entities/tools/OpenCode.md
- kb/entities/tools/Pi.md
- kb/entities/tools/Proton.md
- kb/entities/tools/Steam.md
- kb/entities/tools/Wine.md
- kb/entities/tools/awesome-llm-wiki.md
- kb/entities/tools/farzaa gist.md
- kb/entities/tools/gdeploy.md
- kb/entities/tools/makepkg.md
- kb/entities/tools/pascalandy schema.md
- kb/entities/tools/qmd.md
- kb/entities/tools/wikitool.md
- kb/index.md
- kb/log.md
- raw/CONTRACT.md
- tools/CONTRACT.md
- tools/README.md
- tools/chemenu/api.py
- tools/chemenu/cli.py
- tools/chemenu/commands/confidence_decay.py
- tools/chemenu/commands/docs_verify.py
- tools/chemenu/commands/doctor.py
- tools/chemenu/commands/index_build.py
- tools/chemenu/commands/new_page.py
- tools/chemenu/commands/search.py
- tools/chemenu/commands/touch.py
- tools/chemenu/commands/version_cmd.py
- tools/chemenu/conventions.py
- tools/chemenu/corpus_diff.py
- tools/chemenu/frontmatter_io.py
- tools/chemenu/lint_core.py
- tools/chemenu/mcp/server.py
- tools/chemenu/page.py
- tools/chemenu/search/base.py
- tools/chemenu/search/filters.py
- tools/chemenu/search/ripgrep.py
- tools/chemenu/search/service.py
- tools/chemenu/search/types.py
- tools/chemenu/tests/conftest.py
- tools/chemenu/tests/test_api.py
- tools/chemenu/tests/test_confidence_decay.py
- tools/chemenu/tests/test_corpus_diff.py
- tools/chemenu/tests/test_docs_verify.py
- tools/chemenu/tests/test_frontmatter_io.py
- tools/chemenu/tests/test_index_build.py
- tools/chemenu/tests/test_kb_scan.py
- tools/chemenu/tests/test_lint.py
- tools/chemenu/tests/test_mcp_server.py
- tools/chemenu/tests/test_new_page.py
- tools/chemenu/tests/test_page_ops.py
- tools/chemenu/tests/test_provenance.py
- tools/chemenu/tests/test_raw_cmd.py
- tools/chemenu/tests/test_search.py
- tools/chemenu/tests/test_touch.py
- tools/chemenu/tests/test_type_resolver.py
- tools/chemenu/tests/test_version_cmd.py
- tools/chemenu/tests/test_xref.py
- tools/chemenu/version.py
- types/concept.md
- types/concept.schema.yaml
- types/entity.md
- types/entity.schema.yaml
- types/instruction.md
- types/type-spec.md
2026-09-10 19:51:48 +02:00

8.8 KiB

type, concept_type, tags, created, modified, related, sources, provenance, summary
type concept_type tags created modified related sources provenance summary
types/concept.md problem
tests
regression
tooling
quality
2026-08-31 2026-08-31
see-also
Command Round-Trip Integrity
exemplifies
wikitool
see-also
Denylist over Allowlist
see-also
Ambient Environment Dependency
rests-on
Lint Workflow
Source - Conversation - Two Round-Trip Defects Found by an Ingest Session 2026-08-31
Source - Conversation - Hardening the Test Suite Against Silent Environment Dependencies Session 2026-08-31
sourced Defekt, der eine vollstaendig gruene Testsuite ueberlebt, weil nie ein Test das richtige Verhalten behauptet hat - belegt an drei prio/1-2-Defekten (Round-Trip, Zitat-Notation-als-Code, Zitat-Limit)

Green Suite Blind Spot

Typ: Problem

Definition

Ein Green Suite Blind Spot ist ein Defekt, der eine vollständig grüne Testsuite überlebt, weil nie ein Test das richtige Verhalten behauptet hat. Die Suite ist nicht falsch und sie ist nicht kaputt - sie prüft nur, wovon sie weiß. Ein nie formuliertes Verhalten kann nicht fehlschlagen, also meldet ein grüner Lauf für diesen Bereich nichts, und die Grünfärbung wird als Aussage über den gesamten Code gelesen statt über den abgedeckten Ausschnitt.

Die Lücke wächst dort am schnellsten, wo zwei Komponenten sich erst in der Kombination widersprechen: jede für sich ist getestet, das Zusammenspiel hat nie jemand aufgeschrieben.

Kernpunkte

  • Der Beleg aus diesem Stack (2026-08-31): zwei prio/1-Datenintegritätsdefekte lagen unter einer vollständig grünen Suite. 678 Tests waren grün, bevor die Zitat-Tests zu Gitea-Issue #17 geschrieben wurden; 67 Gate-Tests waren grün vor der Zählungsänderung desselben Tages. In keinem der beiden Fälle hatte je ein Test das falsche Verhalten festgehalten - genau deshalb hat es überlebt1 .
  • Die Zahl der grünen Tests sagt nichts über den ungetesteten Bereich. Sie misst, wie viel bekanntes Verhalten abgesichert ist. Ein Defekt in unbekanntem Verhalten ist von einer grünen 678er-Suite genauso wenig ausgeschlossen wie von einer grünen 60er-Suite1 .
  • Das ist etwas anderes als eine falsche Zusicherung. Ein Test, der das falsche Verhalten festschreibt, wird beim Fix rot und zwingt zur Entscheidung. Der blinde Fleck erzeugt gar keinen Widerstand: der Fix ändert Verhalten, das nie jemand behauptet hat, und die Suite bleibt grün - vorher wie nachher1 .
  • Gegenmittel 1 - den neuen Test rot beweisen, bevor man ihm glaubt. Bei der Reparatur von Issue #17 wurde nicht behauptet, der neue Test hätte den Defekt gefangen: die alte Implementierung wurde rekonstruiert und gegen ihn laufen gelassen (ALTER Code -> Beziehungen erhalten: False, NEUER Code -> Beziehungen erhalten: True)1 .
  • Gegenmittel 2 - den Umfang messen statt schätzen. Der Scan über den Korpus ergab 8 Seiten mit 74 Zeilen in der gefährdeten Position und hielt damit einen laufenden Ingest an, der cite add auf genau diese Seiten aufgerufen hätte. Eine Schätzung hätte diese Entscheidung nicht getragen1 .
  • Gegenmittel 3 - einen Bericht aus zweiter Hand nachstellen, nicht übernehmen. Die Meldungen eines Subagenten wurden am Code nachvollzogen, bevor etwas geändert wurde, und die Prüfung erweiterte den Umfang zweimal: um rename und den cite sync-Verlustpfad beim ersten Defekt, und um die Feststellung, dass xref remove das undeklarierte Feld gar nicht erreichen konnte, beim zweiten1 .
  • Ein dritter Beleg: lint maß Zeilenbreite statt Zitat-Anzahl, und niemand hatte je über die eigene Zitat-Syntax geschrieben. Gitea-Issue #20 stellte selbst fest: "auch dieser Fall war von keinem Test abgedeckt, weil bisher niemand eine Seite über die Zitat-Notation geschrieben hatte." Das Zitat-Limit (Issue #22) zählte parallel >-Zeilen statt Zitate - ein Defekt, den eine einzige Testseite mit einem umbrochenen Zitat sofort zeigt, aber den niemand geschrieben hatte, bis eine reale Seite genau das tat. Beide behoben in 1.7.2. Gegenmittel 1 griff erneut: acht neue Tests wurden gegen eine auf No-op zurückgesetzte Implementierung scharf geprüft und liefen rot, bevor der Fix als bewiesen galt.
  • Eine Ablehnung, die auf ein anderes Kommando verweist, ist selbst ein blinder Fleck. Die Denylist aus 1.4.0 war richtig, ihr Verweisziel nicht: sie behauptete ungeprüft, xref add und xref remove deckten die Seiten-Referenz-Felder ab, was für eine Source-Seite falsch war. Die Regel dazu steht bei Denylist over Allowlist1 .
  • Der Befund stützt die Prämisse von Gitea-Issue #8 - dass eine grüne Suite kein Beleg für Vollständigkeit ist und ein Bereich seinen eigenen Nachweis braucht1 .
  • Issue #8 wurde am 2026-08-31 mit 1.7.1 geschlossen, und zwar über eine Isolierung der Testausführung statt über weitere Einzeltests2 . Der dort behandelte Fall ist aber eine eigene Klasse und kein blinder Fleck: dort behauptete ein Test das richtige Verhalten und war grün, weil die Umgebung lieferte, was der Code hätte liefern müssen. Abgrenzung und Beleg bei Ambient Environment Dependency.
  • Gegenmittel 1 hat sich dort erneut bewährt. Vor der Härtung war die Suite unter der gehärteten Umgebung bereits grün (695 Tests), der Schutz also durch keinen roten Lauf belegt. Erst die Gegenprobe - dieselbe Funktion antwortet ohne Isolierung mit dem globalen git-Namen des Entwicklers, mit Isolierung None - zeigte, dass er greift2 .

Beispiele

  • wikitool - Issue #17 (cite add löschte Inhalt hinter dem Fußnotenblock) und Issue #18 (Referenz-Arrays einer Source-Seite unerreichbar), beide unter grüner Suite entstanden und beide durch einen Ingest, nicht durch einen Testlauf, gefunden
  • Command Round-Trip Integrity - die Defektklasse, die besonders anfällig ist, weil jeder beteiligte Aufruf für sich getestet und für sich korrekt ist
  • Lint Workflow - Issue #20 ([^cite-id]/[[Wikilink]] in Backticks oder einem Fence zählte als echte Referenz) und Issue #22 (Zitat-Limit zählte >-Zeilen statt Zitate), beide gefunden bei einer Seite, die tatsächlich über die eigene Notation schrieb, nicht durch einen Testlauf

Wann zu verwenden

  • Wenn eine grüne Suite als Argument für die Korrektheit einer Änderung angeführt wird: die Frage ist nicht, wie viele Tests grün sind, sondern welcher Test rot geworden wäre.
  • Beim Schreiben eines Regressionstests: erst gegen den alten Code laufen lassen. Ein Test, der nie rot war, belegt nichts.
  • Wenn ein Defekt im Betrieb auffällt statt im Testlauf: die Frage nach dem fehlenden Test gehört zur Ursachenanalyse, nicht zur Nacharbeit.

Wann NICHT zu verwenden

  • Als Argument gegen Testabdeckung. Der Befund entwertet keinen einzigen der 678 grünen Tests; er bestreitet nur, dass ihre Zahl eine Aussage über das trifft, was niemand aufgeschrieben hat.
  • Für Defekte, die ein Test sehr wohl abgedeckt hätte und die durch einen übersprungenen oder nicht ausgeführten Lauf durchgerutscht sind. Das ist ein Prozessfehler, kein blinder Fleck.

Verwandte Concepts

Beziehungen

Siehe auch

Fußnoten

Beziehungen