Files
management/analysis/findings/F-014-issue-hygiene-is-real.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

50 lines
3.2 KiB
Markdown

# F-014: The issue discipline the docs describe is actually lived — measurably
category: works-well
confidence: high
evidence: all measured against `analysis/data/gitlab_issues.json` (111 issues, 71 open).
- **Milestone duty** (`CLAUDE.md:98-103`, "Jedes Issue gehört zu genau einem Meilenstein"):
**0 of 71** open issues lack a milestone. Across all four active projects, in every one.
- **Exactly one status label** (`CLAUDE.md:76-78`, `README.md:60`): **0** issues carry more
than one `status:` label.
- **WIP limit 2** (`CLAUDE.md:77`, "**WIP-Limit 2** — auch sessionübergreifend zu
verteidigen"): `status:doing` = **0**. The limit is not merely respected, there is no
work parked as in-progress at all.
- **No priority in titles** (`CLAUDE.md:90-97`, cleaned up 2026-08-06 after 34 migrated
issues carried prefixes and two contradicted their own label): **0** open issues carry a
`[HIGH]`/`[MEDIUM]`/`[LOW]` prefix. Priority lives only in `priority:*` labels
(48 medium, 37 low, 12 high, 4 critical).
- **Legacy IDs preserved and never reused** (`README.md:64-66`, "IDs … werden **nie
wiederverwendet**; sie leben in Issue-Titeln weiter"): **23** issues carry a leading
legacy ID (`^ID:`), across **23 distinct** IDs — no ID identifies two issues. Three
further titles mention an ID belonging to another issue (`LABNET-02` in management#15,
#26 and #27), which is the scheme used as intended: per `CLAUDE.md:92-93` the IDs
"benennen den Gegenstand", so referring to one from another issue is a cross-reference,
not a collision.
- **Closed, not deleted** (`README.md:72-74`): 40 closed issues are present and readable
alongside the 71 open ones.
- Link hygiene in the management repo is likewise clean: of 161 links in its documents,
**0 broken** (`analysis/data/links.tsv`); the two broken links in the whole corpus are
malformed upstream Element changelog entries in `ThreadNet-Web`.
impact: The rule set is not aspirational. Where a rule is mechanically checkable and the
tracker enforces it — a milestone field, a label — compliance is total. That is the
strongest single argument for the migration: this project already works the way neckbeard
assumes, and the failures found elsewhere in this report are concentrated exactly where no
mechanism enforces anything (prose, branches, commit metadata, cross-document consistency).
root-cause pattern: **Where the tool can hold the rule, the rule holds.** The inverse of the
pattern behind F-001, F-004, F-005 and F-010.
neckbeard mechanism: Preserved and extended by ADR-0002
(`docs/adr/0002-in-repo-issues.md`) plus `schema.yaml:76-84`, which makes `status` an enum
(`[open, in-progress, done, rejected]`) that `scripts/validate.py` enforces via
`check_fields` — the file-level equivalent of "exactly one status label", but checkable in
CI rather than by convention. Note the direction of loss to plan for: neckbeard's issue
schema has **no milestone and no priority field**, and
`docs/aar/2026-08-09-neckbeard-v1-creation.md` lists "priority field on issues (YAGNI,
revisit via refinement)" among the ideas deliberately not adopted. This project uses both,
on 100% and 101 of 111 issues respectively. Recorded here as field-test evidence, not as a
proposal — see REPORT.md's gap list.