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.
47 lines
3.0 KiB
Markdown
47 lines
3.0 KiB
Markdown
# F-004: Open work items live only in host markdown, against the repo's own "no backlog markdown" rule
|
|
|
|
category: process-drift
|
|
confidence: high
|
|
|
|
evidence:
|
|
- The rule, twice stated: `CLAUDE.md:72-75` — "**Alles Offene ist ein Issue** … Kein neues
|
|
Backlog-Markdown anlegen; `hosts/`/`shared/` sind nur Bestand + Historie" — and
|
|
`README.md:47` — "Alle offenen Punkte sind **Issues in diesem Projekt**".
|
|
- Open next steps that exist only as prose in `hosts/` and `shared/`:
|
|
- `hosts/overmind.md:90` — "**Nächster Schritt:** `element-desktop-build` von rohana in
|
|
die Lab-Registry umziehen … bewusst zurückgestellt" (section OVERMIND-01, marked
|
|
"Status: erledigt").
|
|
- `hosts/overmind.md:111-115` — "**Offen:** … Falls der Hang trotz EEE-off + neuer
|
|
Firmware wiederkehrt: gezielter ASPM-Fix statt globalem Kernel-Parameter".
|
|
- `hosts/cfgmon.md:148` — "**Nächster Schritt:** die drei manuellen Schritte oben, dann
|
|
→ erledigt" (section CFGMON-11).
|
|
- `shared/branding.md:210` — a whole `## Offen` section.
|
|
- Section IDs in `hosts/`/`shared/` with **no** corresponding issue anywhere in the group
|
|
(checked against all 111 issues in `analysis/data/gitlab_issues.json`):
|
|
`OVERMIND-01`, `CFGMON-11`, `CFGMON-12`, `CFGMON-13`, `MATRIX-05`.
|
|
For contrast, `OVERMIND-02` -> management#4 and `LABNET-01` -> management#11 do exist.
|
|
- `hosts/overmind.md:146` even routes readers to a markdown-only item as if it were
|
|
tracked: "CFGMON-11 (Gitea-CI-Rückbau)".
|
|
|
|
impact: An item like the `element-desktop-build` migration is invisible to the group board,
|
|
carries no milestone, no priority and no owner, and appears in no refinement. It is
|
|
deferred with a reason — a good reason — inside a file the process declares to be history.
|
|
`README.md:74` names the distinction between "gemacht" and "bewusst gelassen" as the most
|
|
frequent question; for these five IDs the answer exists in exactly one place and it is not
|
|
the one the process points at.
|
|
|
|
root-cause pattern: **Two backlogs, one rule.** The rule says one system; the host
|
|
documents are the natural place to write while working on a host, so items land there and
|
|
the migration to an issue is a separate act of discipline that sometimes does not happen.
|
|
|
|
neckbeard mechanism: Directly prevented by ADR-0002
|
|
(`docs/adr/0002-in-repo-issues.md`, Decision: "In-repo Markdown issues
|
|
(`docs/issues/NNNN-slug.md`, status in frontmatter, generated `STATUS.md` as index)").
|
|
Under it there is no gap between "writing in the doc" and "filing an issue" — both are
|
|
markdown files in the same tree, and `scripts/validate.py` enforces that an issue has a
|
|
`status` from `schema.yaml`'s enum `[open, in-progress, done, rejected]` (`check_fields`,
|
|
`schema.yaml:76-84`), so an open item cannot exist as a bold prose label. `scripts/gen_status.py`
|
|
then lists it in `STATUS.md` whether or not anyone remembered it.
|
|
Residual gap: nothing in neckbeard would stop a wiki page under `docs/wiki/` from carrying
|
|
an "Offen" section; the guard is `WORKFLOW.md:126` wiki lint, a human ritual.
|