Files
management/analysis/findings/F-007-mirror-scope-claims-contradict-each-other.md
T
Thore Cimbal eaa00f0ed2 analysis: add 16 evidence-backed drift findings
Twelve drift findings and four works-well findings, each citing file
paths, line numbers, commit hashes or rows in analysis/data/. Every
'neckbeard mechanism' field names a concrete rule in neckbeard v0.1.1 or
states explicitly that none exists.
2026-08-10 12:00:00 +00:00

3.2 KiB

F-007: How many repos are mirrored has three different answers, and one of them is wrong

category: claim-vs-reality confidence: high

evidence:

  • CLAUDE.md:36-37 — "Gespiegelt wird nur die Gruppe axion1337.chat (die fünf Produkt-Repos und management)" — i.e. six repos.
  • hosts/overmind.md:27-31 — "Stand 2026-08-09 sieben: die sechs Produkt-Repos (ThreadNet-Web, threadnet-call, thread-net-git, threadnet-operating, axion1337.chat-gitops, seit heute auch game-operating) und management".
  • Both files were last committed on the same day, 2026-08-09 (git log -1 main -- <file>), so this is not a lag between an old and a new statement; the repo asserts five and six product repos simultaneously.
  • Measured (git ls-remote against both hosts, heads of main):
    • management, axion1337.chat-gitops, ThreadNet-Web, threadnet-call, thread-net-git, threadnet-operating -> all six in sync, identical SHAs.
    • game-operating -> git.lab ead1272823, rohana.axion1337.de/sorb/game-operating -> no repository. The "seit heute auch game-operating" claim does not hold.
    • gameserver -> git.lab d5c6ccb2e9, Gitea 48441a500f, diverged — which is exactly what hosts/overmind.md:33-35 says and management#32 tracks.
  • Caveat on the negative result: the mirror naming convention is sorb/<name> for all six verified repos; a game-operating mirror under a different name would not have been found. Confidence high on the contradiction, medium on the specific cause.

impact: The mirror set is the answer to "what can the Hetzner cluster still reach when the lab is down" — the reason the two-host topology exists at all (CLAUDE.md:26-33). A repo believed mirrored but not mirrored is a gap in exactly that guarantee, and the belief is recorded in the file that is meant to be authoritative for host questions. management#28 ("MIRROR-01: Ein Ausfall der Push-Mirrors bleibt unbemerkt") shows the risk class is known; it sits in the backlog at priority:low with no status label.

root-cause pattern: Decision executed in the tool, documentation not carried along — here in the inverse direction: the document was updated ahead of the tool, and the number in the other document was not touched at all.

neckbeard mechanism: WORKFLOW.md:136-138 (Knowledge Handling) is the governing rule: "Contradictions are resolved or explicitly flagged — never left silently coexisting", with the detection ritual at WORKFLOW.md:126 (refinement item 4: "Wiki lint (content-level, beyond validate.py): contradictions between pages, claims superseded by newer sources"). AGENTS.md:50-52 adds "Never claim something works without evidence". Partial gap: the rule exists, the detection is a human ritual on a weekly cadence, and scripts/validate.py checks structure and link targets only — two numbers contradicting each other across two files is invisible to it. AGENTS.md:101-103 ("If a deterministic job lacks a script, propose one") points the right way, but "is this claim still true" is not deterministic in general. The tractable subset — a claim of the form "N repos are mirrored" — is checkable, and this field test wrote such a check ad hoc.