# 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.