Files
management/analysis/findings/F-001-milestone-m5-decided-but-absent-from-steering-docs.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.1 KiB
Raw Blame History

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 "M1M4", 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 M1M4".
  • 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-gitops and carry updated_at 2026-08-09.
  • verfahren/retro/2026-08-09.md:115-117 records 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.