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.
3.1 KiB
F-001: Milestone M5 was decided and executed, but the steering docs still call it an open question
category: claim-vs-reality confidence: high
evidence:
roadmap.md:6-14(last commit 2026-08-09,git log -1 main -- roadmap.md) states the milestone set as "M1–M4", gives the distribution "M1 33 · M2 21 · M3 4 · M4 12 von 70" under "Stand 2026-08-06", and frames the Härtung milestone as an explicitly open question: "Ob das ein eigener Meilenstein „Härtung" werden soll oder M1 bewusst breit bleibt, ist offen — zu entscheiden im Refinement, nicht nebenbei."CLAUDE.md:98(last commit 2026-08-09) likewise binds every issue to "Gruppen-Milestones M1–M4".- Measured against the live tracker (
analysis/data/gitlab_issues.json, 71 open issues): M1 19 · M2 22 · M3 4 · M4 12 · M5 — Härtung 14. The milestone exists and is populated. - All 14 M5 issues live in
axion1337.chat-gitopsand carryupdated_at2026-08-09. verfahren/retro/2026-08-09.md:115-117records the decision: "M5 — Härtung angelegt, 14 Issues aus M1 verschoben", with the dividing line and the resulting distribution "M1 18 · M2 21 · M3 4 · M4 13 · M5 14".- No ADR covers it:
decisions/holds 0001-0009, none mentions M5 or Härtung (grep -rn 'M5\|Härtung' decisions/-> no match). - The retro's own numbers are already stale on the day they were written: retro says M1 18 / M2 21 / M4 13 / 70 total, the tracker says M1 19 / M2 22 / M4 12 / 71 total.
impact: The two documents a new session is told to read first (CLAUDE.md, then
roadmap.md) describe a milestone set that no longer exists, and pose as undecided a
question that was decided. An agent following CLAUDE.md:98 would file a hardening issue
into M1, silently undoing the split. The decision itself survives only as a bullet in a
dated retro file — the one place the repo's own rules do not point sessions to.
CLAUDE.md:79-82 makes an ADR mandatory for process decisions and calls documenting an
exception instead of deciding it "ein Fehler"; by the repo's own standard this decision is
under-recorded.
root-cause pattern: Decision executed in the tool, documentation not carried along. The change was made where the work is (GitLab milestones), noted where the session ended (the retro), and never propagated to the documents that claim to be canonical.
neckbeard mechanism: Partly prevented, partly a gap.
Prevented: ADR-0002 (docs/adr/0002-in-repo-issues.md, Decision) puts issues in the repo
as docs/issues/NNNN-slug.md, so re-bucketing 14 issues is a commit in the same tree as
roadmap.md — a reviewer sees the docs that were not updated alongside it. AGENTS.md:79
plus scripts/gen_status.py make STATUS.md a generated index ("do not edit by hand"), so
counts are never hand-copied prose that can rot. WORKFLOW.md:128 puts "STATUS review:
anything stale or surprising" on the refinement agenda.
Gap in neckbeard: it has no milestone or roadmap concept at all — no artifact type in
schema.yaml groups issues into a delivery bucket, and nothing would have flagged the
M1-vs-M5 split as needing an ADR. Session 2 must decide where "worauf zahlt es ein" lives.