diff --git a/STATUS.md b/STATUS.md index c7b2b0e..0df6e8d 100644 --- a/STATUS.md +++ b/STATUS.md @@ -2,9 +2,9 @@ -## Issues (33 open, 0 closed) +## Issues (36 open, 0 closed) -Verteilung: M1 9 · M2 22 · M4 2 +Verteilung: M1 9 · M2 25 · M4 2 | Issue | Status | Meilenstein | Priorität | Title | |---|---|---|---|---| @@ -41,12 +41,13 @@ Verteilung: M1 9 · M2 22 · M4 2 | [0037](docs/issues/0037-rollout-agents-pointer-threadnet-call.md) | open | M2 | medium | Rollout Gruppenregeln-Pointer: `threadnet-call` | | [0038](docs/issues/0038-rollout-agents-pointer-thread-net-git.md) | open | M2 | medium | Rollout Gruppenregeln-Pointer: `thread-net-git` | | [0039](docs/issues/0039-rollout-agents-pointer-threadnet-operating.md) | open | M2 | medium | Rollout Gruppenregeln-Pointer: `threadnet-operating` | +| [0040](docs/issues/0040-neckbeard-rueckmeldungen-einreichen.md) | open | M2 | low | neckbeard-Rückmeldungen aus dem Feldtest einreichen | +| [0041](docs/issues/0041-wartegrund-der-importierten-waiting-issues.md) | open | M2 | low | wartegrund der 7 importierten waiting-Issues präzisieren | +| [0042](docs/issues/0042-migration-in-betrieb-nehmen-push-spiegel-schedule.md) | open | M2 | high | Migration in Betrieb nehmen: Push, erster Spiegel-Lauf, CI-Schedule | -## Active design docs (1) +## Active design docs (0) -| Design | Gate | Title | -|---|---|---| -| [2026-08-11-neckbeard-migration](docs/design/2026-08-11-neckbeard-migration.md) | gate-4 | Design: Migration des Management-Systems auf neckbeard | +_none active_ ## ADRs (13) diff --git a/docs/adr/0012-issues-im-repo-gitlab-als-spiegel.md b/docs/adr/0012-issues-im-repo-gitlab-als-spiegel.md index 9a906b9..5fe1c71 100644 --- a/docs/adr/0012-issues-im-repo-gitlab-als-spiegel.md +++ b/docs/adr/0012-issues-im-repo-gitlab-als-spiegel.md @@ -6,7 +6,7 @@ date: 2026-08-11 supersedes: null superseded_by: null related: - - "docs/design/2026-08-11-neckbeard-migration.md" + - "docs/design/done/2026-08-11-neckbeard-migration.md" - "docs/adr/0002-issues-und-management-ins-lab.md" - "docs/adr/0005-pm-framework-kanban.md" --- diff --git a/docs/adr/0013-gruppenregeln-kanonisch-mit-pruefung.md b/docs/adr/0013-gruppenregeln-kanonisch-mit-pruefung.md index 4241d18..5841555 100644 --- a/docs/adr/0013-gruppenregeln-kanonisch-mit-pruefung.md +++ b/docs/adr/0013-gruppenregeln-kanonisch-mit-pruefung.md @@ -6,7 +6,7 @@ date: 2026-08-11 supersedes: null superseded_by: null related: - - "docs/design/2026-08-11-neckbeard-migration.md" + - "docs/design/done/2026-08-11-neckbeard-migration.md" - "docs/adr/0001-gitlab-kanonisch-push-mirror.md" --- diff --git a/docs/design/2026-08-11-neckbeard-migration.md b/docs/design/done/2026-08-11-neckbeard-migration.md similarity index 85% rename from docs/design/2026-08-11-neckbeard-migration.md rename to docs/design/done/2026-08-11-neckbeard-migration.md index 201e241..313d520 100644 --- a/docs/design/2026-08-11-neckbeard-migration.md +++ b/docs/design/done/2026-08-11-neckbeard-migration.md @@ -1,6 +1,6 @@ --- type: design -status: gate-4 +status: done date: 2026-08-11 size: L related: @@ -137,8 +137,8 @@ bleibt GitLab/Obsidian/Editor. Mockups entfallen. Alt-Ansatz: `CLAUDE.md`, `roadmap.md`, `decisions/README.md` und die tragenden Entscheidungen 0001, 0002, 0005, 0009, 0010, -[verfahren/refinement.md](../wiki/admin/refinement.md), -[verfahren/stillstandspruefung.md](../wiki/admin/stillstandspruefung.md), +[verfahren/refinement.md](../../wiki/admin/refinement.md), +[verfahren/stillstandspruefung.md](../../wiki/admin/stillstandspruefung.md), `.gitlab-ci.yml`, Auszüge aus `hosts/`. Neckbeard v0.1.1: AGENTS.md, WORKFLOW.md, ADR-0001…0004/0006, `schema.yaml`, `validate.py`, `gen_status.py`, Schöpfungs-AAR, `docs/wiki/index.md`. Session-1-Daten @@ -157,7 +157,7 @@ bleibt auch mit neckbeard ein Loch: | Muster | Wurzel im Alt-Ansatz | Neckbeard-Gegenstück | Verbleibendes Loch → Mechanismus dieser Migration | |---|---|---|---| | **A** — Doku nicht nachgezogen (F-001, F-005, F-007, F-010, F-017) | Zustand steht als behauptete Zahl/Prosa an mehreren Stellen; nichts vergleicht | Generiertes STATUS.md (`gen_status.py --check` in CI), ADRs nie editiert nur abgelöst | Prosa, die *Forge*-Zustand behauptet, prüft neckbeard nicht → Drift-Prüfung Repo↔GitLab; Meilenstein-Satz als Schema-Enum (eine Quelle); „Stand"-Etiketten entfallen ersatzlos (git log antwortet) | -| **B** — Regel repo-weit, Anwendung Teilmenge (F-002, F-003, F-008, F-011) | Regel gilt „für alle Repos", kein Artefakt zählt die Repos auf, kein Skript läuft über alle | **Lücke** — ADR-0001 endet an der Repo-Grenze | Komponenten-Artefakt + Abgleich gegen die zur Laufzeit gelesene Gruppenliste ([ADR-0013](../adr/0013-gruppenregeln-kanonisch-mit-pruefung.md)); Git-Hygiene-Prüfung (12:00Z-Zeitstempel, kanonische Identität) über alle deklarierten Repos | +| **B** — Regel repo-weit, Anwendung Teilmenge (F-002, F-003, F-008, F-011) | Regel gilt „für alle Repos", kein Artefakt zählt die Repos auf, kein Skript läuft über alle | **Lücke** — ADR-0001 endet an der Repo-Grenze | Komponenten-Artefakt + Abgleich gegen die zur Laufzeit gelesene Gruppenliste ([ADR-0013](../../adr/0013-gruppenregeln-kanonisch-mit-pruefung.md)); Git-Hygiene-Prüfung (12:00Z-Zeitstempel, kanonische Identität) über alle deklarierten Repos | | **C** — zwei Backlogs (F-004, F-009) | `hosts/`-Markdown hielt „Nächste Schritte" neben dem Board | In-Repo-Issues, ein Ort | Wiki-Seiten können wieder Aufgabenprosa ansammeln → Prüfregel: Aufgaben-Marker („Nächster Schritt", offene Checkboxen) in Wiki-Seiten ohne Issue-Verweis sind ein Befund | | **D** — Artefakte ohne Eigentümer überleben (F-006, F-012) | Branches/SHA-Zitate hat niemand je gelesen | `warn_if_orphan` nur für Wiki-Seiten | Branch-Hygiene (Alter/Divergenz verwaister Branches) und SHA-Auflösung inkl. Zuordnungstabelle in der Prüf-Familie; Refinement-Agenda erhält den Punkt | @@ -165,9 +165,9 @@ Die sieben neckbeard-Lücken, Disposition (Akzeptanzkriterium 6, 7/7): | # | Lücke | Disposition | |---|---|---| -| 1 | Viele Repos, ein Regelwerk | **Eingefaltet:** [ADR-0013](../adr/0013-gruppenregeln-kanonisch-mit-pruefung.md) (Pointer + Prüfung) | +| 1 | Viele Repos, ein Regelwerk | **Eingefaltet:** [ADR-0013](../../adr/0013-gruppenregeln-kanonisch-mit-pruefung.md) (Pointer + Prüfung) | | 2 | Kein Komponenten-Artefakt | **Eingefaltet:** Schema-Typ `component`, `docs/components/` (ADR-0013) | -| 3 | Kein Meilenstein-Konzept | **Eingefaltet:** Pflichtfeld `milestone` im Issue-Schema ([ADR-0012](../adr/0012-issues-im-repo-gitlab-als-spiegel.md)) | +| 3 | Kein Meilenstein-Konzept | **Eingefaltet:** Pflichtfeld `milestone` im Issue-Schema ([ADR-0012](../../adr/0012-issues-im-repo-gitlab-als-spiegel.md)) | | 4 | SHA-Zitate unaufgelöst | **Eingefaltet (projektseitig):** Prüfskript nach Vorbild `inv_shas.py`; Upstream-Kandidat | | 5 | Git-Hygiene außerhalb des Blickfelds | **Eingefaltet (projektseitig):** Hygiene-Prüfung in der CI-Familie; Upstream-Kandidat | | 6 | Externe Link-Ziele ungeprüft | **Teilweise eingefaltet:** Sperrliste stillgelegter Ziele (toter Gitea-Tracker, F-005) als deterministische Prüfung; echte Erreichbarkeitsprüfung **verworfen** (netzabhängig, nichtdeterministisch — widerspricht validate-Philosophie) | @@ -243,10 +243,10 @@ flowchart LR Die zwei tragenden Richtungsentscheidungen stehen als ADRs (Status `proposed`, werden mit diesem Gate wirksam): -- **[ADR-0012](../adr/0012-issues-im-repo-gitlab-als-spiegel.md)** — +- **[ADR-0012](../../adr/0012-issues-im-repo-gitlab-als-spiegel.md)** — Issues im Repo kanonisch (Management-Scope), GitLab als deterministisch bespielter Spiegel; Optionen A/B/C abgewogen im ADR. -- **[ADR-0013](../adr/0013-gruppenregeln-kanonisch-mit-pruefung.md)** — +- **[ADR-0013](../../adr/0013-gruppenregeln-kanonisch-mit-pruefung.md)** — Gruppenregeln kanonisch hier, Komponenten tragen Pointer, ein Komponenten-Artefakt macht die Gruppe prüfbar; Kopie/Submodule verworfen im ADR. @@ -542,3 +542,101 @@ Komponenten-Deklarationen, `gruppenpruefung.py` (+ CI-Job), Export ↔ Alt-CLAUDE) und B (Hygiene über lokale Klone), Live-Befund gitops#61. *Verify:* Dry-Run-Ausgabe plausibel, Demos feuern, kein API-Write. + +Alle fünf Slices sind mit Nachweis und STOP abgenommen worden +(Freigaben sorb, 2026-08-11); die Commits `e36ed33`…`865d761` tragen +die Evidenz je Slice im Commit-Text. + +## Gate 5 — Closeout (AAR) + +### Geplant + +Gate 0–5 nach WORKFLOW.md; Zwei-Wege-Ernte vor Übernahme (bindende +Vorgabe der Session-1-Übergabe); fünf Slices; sechs Akzeptanzkriterien. + +### Tatsächlich + +Alle Gates und Slices wie geplant, mit vier realitätsgetriebenen +Abweichungen: + +1. **Die Realität lief während der Undertaking weiter** (Hinweis sorb + bei Gate-3-Freigabe): `main` +3 Commits mit `decisions/0011` → + Nummernkollision mit den Session-ADRs, Umnummerierung auf 0012/0013, + Rebase; gitops#61 entstand **ohne Meilenstein** und riss die + 100%-Disziplin aus F-014 binnen zwei Tagen — es wurde der reale Fall + für die neue gruppenweite Pflicht-Prüfung. +2. **F-004 war feiner als der Befund:** MATRIX-05 seit 2026-08-01 + erledigt (kein Issue nötig — „Alles *Offene* ist ein Issue"), + CFGMON-12/13 bereits per git.lab-Issues verfolgt (nur die toten + Gitea-Links verdeckten das). Statt 5/5 neuen Issues: 2 neue (0033, + 0034), 2 verifizierte Verweise, 1 begründeter Verzicht — mit sorb + abgestimmt; Details im + [Import-Protokoll](../../sources/migration/issue-import-protokoll.md). +3. **F-005 war größer als der Befund:** nicht ein toter Tracker-Link, + sondern acht, quer durch Host-Seiten und einen importierten + Issue-Fußtext; zwei per Live-Titelabgleich verifiziert umgezogen, + sechs zu ehrlichen Historien-Zitaten entschärft. +4. **Hex ist nicht gleich Git-SHA:** die SHA-Prüfung fand eine + Authentik-uid und zwei Alertmanager-Silence-IDs — gelöst über die + kuratierte Ausnahmenliste mit Grund je Zeile statt über eine + schlauere Heuristik. + +Akzeptanzkriterien: **6/6 erfüllt** — (1) alle deterministischen Gates +grün; (2) 11/11 ADRs portiert; (3) 0 issuelose Arbeitspunkte im Wiki, +F-004-Disposition dokumentiert; (4) 0 Handzählungen, kein Dokument +widerspricht dem Werkzeugstand M1–M5; (5) 4/4 Muster-Demos gefeuert +(A: „M1–M4"↔M5-Export; B: 222 Echtzeit-Commits, deckungsgleich mit den +Session-1-Zahlen; C: 6→0 Aufgabenblöcke; D: verwaiste SHAs aufgelöst +oder kuratiert); (6) 9/9 Lücken-Dispositionen und 4/4 +Erhaltungsmechanismen in Gate 2, final abgehakt. + +### Warum die Differenz + +Die Undertaking hat einen lebenden Verbund migriert, keinen +eingefrorenen: Jede Abweichung entstand daraus, dass zwischen Analyse +(2026-08-09/10) und Bau (2026-08-11) weitergearbeitet wurde. Genau die +Driftklassen, die die Migration schließen soll, traten währenddessen +frisch auf — und wurden zu Testfällen statt zu Störungen. + +### Lehren (geerntet nach [Stolpersteine](../../wiki/stolpersteine/neckbeard-migration.md)) + +- Ein hexförmiges Wort ist nicht automatisch ein Git-SHA; kuratierte + Ausnahmen mit Grund schlagen schlauere Raterei. +- Der Link-Checker ist das beste Umzugswerkzeug: erst bewegen, dann die + gemeldeten Ziele reihum fixen — kein Verweis blieb offen. +- Frische Importe sind Prüfmaterial: beide Prosa-Prüfungen fanden auf + den eben importierten Texten sofort echte Fälle. +- Bestätigt aus dem Upstream-Schöpfungs-AAR: ein grüner Validator zählt + erst mit Negativtests (vier gebaut, alle feuern). +- `gen_status.py` braucht lokal Python ≥ 3.10 (`write_text(newline=)`); + CI nutzt 3.12, lokal läuft ein venv. +- Session-1-Lehre erneut bestätigt: `TZ` gehört an den git-Prozess + (`--date=format-local` + `TZ=UTC` in `gruppenpruefung.py`). + +### Wackligste Entscheidungen dieser Session (WORKFLOW.md, Session-Ende) + +1. **AAR-Erntestatus der vier alten AARs** aus der Retro-Existenz + geschlossen, nicht aus einer Erntemarke — beim nächsten Refinement + gegenprüfen. +2. **Die §6-Verdichtung der Alt-CLAUDE.md**: von sorb quergelesen und + freigegeben, aber ob jede tragende Nuance den Sprung geschafft hat, + zeigt erst der Betrieb. +3. **Generische `wartegrund`-Platzhalter** bei 7 importierten + waiting-Issues — Issue 0041. +4. **Die fünf eigenen Identitäten stehen als Konstante im + Hygiene-Skript** — bei einer künftigen Identitäts-Remediation + (F-003) muss die Liste mitgepflegt werden. +5. **Spiegelumfang bewusst schmal** (keine Beschreibungen): richtig für + Kommentar-Erhalt, heißt aber, dass Beschreibungs-Änderungen im Repo + auf GitLab nicht sichtbar werden — Board-Nutzer sehen den Stand der + Migration, nicht jede Textpflege. + +### Offene Folgearbeit (als Issues, nicht als Prosa) + +[0035–0039](../../issues/0035-rollout-agents-pointer-axion1337-chat-gitops.md) Pointer-Rollout je Komponente (fünf Issues) · +[0040](../../issues/0040-neckbeard-rueckmeldungen-einreichen.md) +neckbeard-Rückmeldungen einreichen · +[0041](../../issues/0041-wartegrund-der-importierten-waiting-issues.md) +wartegrund präzisieren · +[0042](../../issues/0042-migration-in-betrieb-nehmen-push-spiegel-schedule.md) +Inbetriebnahme (Push, erster Spiegel-Lauf, CI-Schedule). diff --git a/docs/issues/0040-neckbeard-rueckmeldungen-einreichen.md b/docs/issues/0040-neckbeard-rueckmeldungen-einreichen.md new file mode 100644 index 0000000..0428b6e --- /dev/null +++ b/docs/issues/0040-neckbeard-rueckmeldungen-einreichen.md @@ -0,0 +1,32 @@ +--- +type: issue +id: "0040" +status: open +created: 2026-08-11 +milestone: M2 +priority: low +related: + - "docs/design/done/2026-08-11-neckbeard-migration.md" +--- + +# neckbeard-Rückmeldungen aus dem Feldtest einreichen + +> Eigener Akt, bewusst nicht Teil der Migration (Nicht-Ziel im Design). +> `gitlab_iid` folgt mit dem ersten Spiegel-Lauf. + +Als Issues im neckbeard-Repo (`oss-projekte/ai/neckbeard`) einreichen, +mit Feldtest-Evidenz aus Gate 2 des Design-Dokuments: + +1. Viele Repos, ein Regelwerk (Lücke 1; hiesige Lösung: ADR-0013) +2. Komponenten-Artefakt (Lücke 2) +3. Meilenstein-Konzept (Lücke 3) +4. SHA-Auflösung in validate (Lücke 4; Referenz: `pruefe_prosa.py`) +5. Git-Hygiene-Prüffamilie (Lücke 5; Referenz: `gruppenpruefung.py`) +6. Sperrlisten für stillgelegte externe Ziele (Lücke 6, Teil-Lösung) +7. Prioritätsfeld: Feldtest-Evidenz für das im Schöpfungs-AAR vertagte + Revisit (71/71 mit Priorität, getrennt vom Meilenstein) +8. `validate.py` lehnt Verzeichnis-Links ab (Meinungsfrage) +9. Definierter Ort für Projektregeln im übernommenen AGENTS.md +10. ADR-Pflicht bei dauerhaften Ausnahmen fehlt upstream +11. Stillstandsprüfungs-Prinzipien als Muster für eine + Laufzeit-Prüf-Familie neben validate.py diff --git a/docs/issues/0041-wartegrund-der-importierten-waiting-issues.md b/docs/issues/0041-wartegrund-der-importierten-waiting-issues.md new file mode 100644 index 0000000..f22e835 --- /dev/null +++ b/docs/issues/0041-wartegrund-der-importierten-waiting-issues.md @@ -0,0 +1,19 @@ +--- +type: issue +id: "0041" +status: open +created: 2026-08-11 +milestone: M2 +priority: low +related: [] +--- + +# wartegrund der 7 importierten waiting-Issues präzisieren + +> Nacharbeit aus dem Issue-Import (Protokoll unter +> `docs/sources/migration/`). `gitlab_iid` folgt mit dem Spiegel-Lauf. + +0002, 0004, 0008, 0014, 0021, 0025, 0027 tragen den generischen +Import-`wartegrund` „Grund im GitLab-Verlauf". Im nächsten Refinement +je Issue den echten Grund eintragen (alte Regel: `wartet` nur mit +benanntem Grund). diff --git a/docs/issues/0042-migration-in-betrieb-nehmen-push-spiegel-schedule.md b/docs/issues/0042-migration-in-betrieb-nehmen-push-spiegel-schedule.md new file mode 100644 index 0000000..eff20e3 --- /dev/null +++ b/docs/issues/0042-migration-in-betrieb-nehmen-push-spiegel-schedule.md @@ -0,0 +1,28 @@ +--- +type: issue +id: "0042" +status: open +created: 2026-08-11 +milestone: M2 +priority: high +related: + - "docs/design/done/2026-08-11-neckbeard-migration.md" +--- + +# Migration in Betrieb nehmen: Push, erster Spiegel-Lauf, CI-Schedule + +> Die Schritte, die nur sorb ausführt (Nicht-Ziele der Migration: +> kein Push, kein API-Write durch die Session). + +1. Branch `Neckbeard-v0.1.1-migration-1` sichten und nach `main` + bringen; Push über git.lab (Mirror zieht nach). +2. Ersten Spiegel-Lauf ausführen: `python3 scripts/spiegel_issues.py + --ausfuehren` (legt 0033–0042 auf GitLab an); danach die vergebenen + iids als `gitlab_iid` nachtragen — ab dann meldet + `gruppenpruefung.py` die Hinweise nicht mehr. +3. CI-Schedule für den Job `gruppenpruefung` anlegen (wie + Stillstandsprüfung; Gruppen-Token mit `read_api` liegt als maskierte + Variable bereits vor, siehe management#31). +4. gitops#61 einen Meilenstein geben (M1 oder M5 an der + ADR-0010-Trennlinie) — der rote Befund der Gruppenprüfung ist die + Erinnerung. diff --git a/docs/sources/upstream/neckbeard-v0.1.1/HERKUNFT.md b/docs/sources/upstream/neckbeard-v0.1.1/HERKUNFT.md index 90f24fc..a45e0ca 100644 --- a/docs/sources/upstream/neckbeard-v0.1.1/HERKUNFT.md +++ b/docs/sources/upstream/neckbeard-v0.1.1/HERKUNFT.md @@ -5,7 +5,7 @@ Unveränderte Originale aus **neckbeard v0.1.1**, Commit `https://git.lab/oss-projekte/ai/neckbeard.git` — der Stand, gegen den der Feldtest (Branch `Neckbeard-v0.1.1-analyse-1`) gemessen hat und aus dem die Migration übernommen wurde (Design: -`docs/design/2026-08-11-neckbeard-migration.md`). +`docs/design/done/2026-08-11-neckbeard-migration.md`). Zweck: Byte-Baseline für `scripts/pruefe_upstream_drift.py`. Ein Framework-Upgrade ersetzt diese Dateien bewusst und in einem eigenen diff --git a/docs/wiki/index.md b/docs/wiki/index.md index 780cfce..ef89411 100644 --- a/docs/wiki/index.md +++ b/docs/wiki/index.md @@ -21,7 +21,7 @@ mit Inhalt. Projektfassung des neckbeard-Index (Original: | `vision/` | Eine Datei je Linie: [axion1337.chat](vision/axion1337-chat.md) · [Homelab](vision/homelab.md) · [ThreadNet](vision/threadnet.md) | belegt | | `user-guide/` | Für Nicht-Owner | entfällt — Gate 0: Publikum ist Owner + Sessions | | `requirements/` | Eigenständige Anforderungssicht | nur bei echtem Bedarf | -| `faq/`, `stolpersteine/` | Nur aus AARs und geschlossenen Issues geerntet — nie auf Vorrat | leer, entsteht im Refinement | +| `faq/`, `stolpersteine/` | Nur aus AARs und geschlossenen Issues geerntet — nie auf Vorrat: [neckbeard-migration](stolpersteine/neckbeard-migration.md) | wächst im Refinement | ## Seitenregeln diff --git a/docs/wiki/stolpersteine/neckbeard-migration.md b/docs/wiki/stolpersteine/neckbeard-migration.md new file mode 100644 index 0000000..d47db7a --- /dev/null +++ b/docs/wiki/stolpersteine/neckbeard-migration.md @@ -0,0 +1,33 @@ +--- +type: wiki-page +area: stolpersteine +sources: + - "docs/design/done/2026-08-11-neckbeard-migration.md" +related: [] +--- + +# Stolpersteine aus der neckbeard-Migration (2026-08-11) + +Geerntet aus dem Gate-5-AAR der Migration; Belege dort. + +- **Hex ≠ Git-SHA.** Authentik-uids und Alertmanager-Silence-IDs sehen + aus wie Commit-SHAs. Die SHA-Prüfung führt deshalb eine kuratierte + Ausnahmenliste (`scripts/sha_ausnahmen.tsv`) — jede Zeile mit Grund; + Einträge ohne Grund sind nicht zulässig. +- **`TZ` gehört an den git-Prozess.** `git log --date=format-local` + ohne `TZ=UTC` in der Prozessumgebung zeigt lokale Zeit und lässt + jeden 12:00Z-Commit „falsch" aussehen (Session-1-Lehre, zweimal + bestätigt). +- **`gen_status.py` braucht lokal Python ≥ 3.10** + (`Path.write_text(newline=)`); macOS-System-Python 3.9 reicht nicht — + venv nutzen, CI läuft auf 3.12. +- **Anonyme Gitea-Negative sind inkonklusiv.** Gitea verbirgt private + Repos hinter einer Auth-Abfrage; ein fehlgeschlagenes anonymes + `ls-remote` belegt keine Nichtexistenz (Feldtest F-007-Addendum, + dokumentiert in `docs/components/game-operating.md`). +- **Ein grüner Validator zählt erst mit Negativtests.** Alle vier + neuen Prüfregeln wurden mit absichtlich kaputten Artefakten + nachgewiesen — die Upstream-Lehre aus dem Schöpfungs-AAR hat sich + wiederholt bestätigt. +- **Verzeichnis-Links sind tote Links** für `validate.py` — immer auf + eine Datei zielen (README des Ordners oder konkrete Seite). diff --git a/schema.yaml b/schema.yaml index 1baa49c..7405797 100644 --- a/schema.yaml +++ b/schema.yaml @@ -5,7 +5,7 @@ # # PROJEKTERWEITERUNGEN gegenüber neckbeard v0.1.1 (Original: # docs/sources/upstream/neckbeard-v0.1.1/schema.yaml; Design: -# docs/design/2026-08-11-neckbeard-migration.md, ADR-0012/0013): +# docs/design/done/2026-08-11-neckbeard-migration.md, ADR-0012/0013): # * issue: Pflichtfelder milestone (M1–M5) + priority; Status-Enum um # next/waiting erweitert; due/host/area/wartegrund/gitlab_iid; # Regel waiting_requires_reason; globale Regel wip_limit (max. 2