wikitool new <type> --name "<Titel>" uebernimmt den rohen --name-Wert ungeprueft in den
Dateipfad. Enthaelt der Titel einen /, interpretiert pathlib.Path.__truediv__ diesen als
Verzeichnistrenner: die Seite landet in einem neu angelegten Unterverzeichnis, und ihr
tatsaechlicher, im Katalog/search/rename gefuehrter Titel ist nur noch der Teilstring nach
dem letzten / - waehrend die H1-Ueberschrift im Seiteninhalt weiterhin den vollen,
beabsichtigten Titel traegt. Titel (H1), Dateiname/Seitenidentitaet und Katalogeintrag laufen
damit sofort auseinander, ohne jede Fehlermeldung.
Betrifft jeden Typ, der ueber den generischen new_page_command laeuft (entity, concept, source, comparison, ...), da die Titelverarbeitung typunabhaengig ist.
Reproduktion
Getestet in einer privaten Instanz gegen Stack-Version 6.1.0 (source_commit 11c400c670d341988dd0f1a7746f59557d00722b). Titel bewusst generisch gewaehlt, kein
Instanzinhalt:
$ tools/wikitool new concept --name "Foo/Bar Baz Pattern" \
--set concept_type=pattern --set provenance=general \
--set summary="throwaway repro page for a wikitool bug report"
OK Created kb/concepts/patterns/Foo/Bar Baz Pattern.md
$ find kb/concepts/patterns -iname "Foo*"
kb/concepts/patterns/Foo
kb/concepts/patterns/Foo/Bar Baz Pattern.md
$ tools/wikitool search "Bar Baz"
6.0 | concept/pattern | Bar Baz Pattern | kb/concepts/patterns/Foo/Bar Baz Pattern.md | throwaway repro page for a wikitool bug report
1 result(s).
$ head -15 "kb/concepts/patterns/Foo/Bar Baz Pattern.md"
---
type: types/concept.md
concept_type: pattern
...
---
# Foo/Bar Baz Pattern
Der Katalog/search fuehrt die Seite unter dem Titel Bar Baz Pattern, die Datei liegt unter kb/concepts/patterns/Foo/Bar Baz Pattern.md, die H1 in der Datei lautet weiterhin # Foo/Bar Baz Pattern. Drei verschiedene "Titel" fuer dieselbe Seite.
Der vom Nutzer eigentlich gemeinte Titel ist danach nicht mehr sauber referenzierbar:
$ tools/wikitool rename --from "Foo/Bar Baz Pattern" --to "Foo-Bar Baz Pattern" --dry-run
ERROR Neither 'Foo/Bar Baz Pattern' nor 'Foo-Bar Baz Pattern' is a page under kb/.
Repointing references to 'Foo-Bar Baz Pattern' would just move the dangling reference;
create the page first with `wikitool new ...`, or drop the reference with `wikitool xref remove`.
rename kennt nur den tatsaechlichen (kaputten) Titel Bar Baz Pattern, nicht den vom Nutzer
eingegebenen. Der einzige gangbare Reparaturweg war wikitool rm --page "Bar Baz Pattern" und
Neuanlage mit einem slash-freien Titel.
Ursache
tools/chemenu/commands/new_page.py:293:
page_title=f"{title_prefix}{name}"
tools/chemenu/commands/new_page.py:349:
path=target_dir/f"{page_title}.md"
name (aus --name) wird an keiner Stelle dazwischen auf Pfadtrennzeichen geprueft, bevor er
in eine Path-Verknuepfung eingeht. check_collision(page_title) (Zeile 299) prueft ebenfalls
nur den rohen, slash-haltigen String - das ist kein Titel, den je eine echte Seite tragen wird,
die Pruefung kann die Kollision mit der tatsaechlich entstehenden Seite (Titel ohne den
Prefix-Teil) also gar nicht sehen.
Loesungsvorschlag
new_page_command sollte name vor Zeile 293 auf ein Pfadtrennzeichen (/, unter Windows
zusaetzlich \) pruefen und mit fail(...) ablehnen - konsistent mit dem bestehenden
No-Guessing-Stil an anderer Stelle in derselben Datei (siehe missing_capture / guessed_unknown wenige Zeilen weiter unten: klare Fehlermeldung statt stille
Fehlinterpretation).
Gleiche Pruefung ist vermutlich auch fuer --to bei rename sinnvoll (dort bislang nicht
getestet) - separat zu betrachten.
Akzeptanzkriterien
wikitool new <type> --name "A/B" schlaegt mit klarer Fehlermeldung fehl, statt eine
Seite unter <base_dir>/A/B.md mit Titel B anzulegen.
Test deckt mindestens Vorwaerts-Slash ab.
pytest, docs verify clean.
Herkunft
Beobachtet waehrend eines regulaeren wiki-ingest-Laufs in einer privaten Instanz (2026-09-17)
beim Anlegen mehrerer Concept-Seiten mit "CI/CD" im Titel; dort direkt per wikitool rm und
Neuanlage mit bereinigtem Titel behoben. Dieses Issue reproduziert den Fehler eigenstaendig mit
einem generischen Titel, ohne Bezug zu Inhalten der Instanz.
## Befund
`wikitool new <type> --name "<Titel>"` uebernimmt den rohen `--name`-Wert ungeprueft in den
Dateipfad. Enthaelt der Titel einen `/`, interpretiert `pathlib.Path.__truediv__` diesen als
Verzeichnistrenner: die Seite landet in einem neu angelegten Unterverzeichnis, und ihr
tatsaechlicher, im Katalog/`search`/`rename` gefuehrter Titel ist nur noch der Teilstring nach
dem letzten `/` - waehrend die H1-Ueberschrift im Seiteninhalt weiterhin den vollen,
beabsichtigten Titel traegt. Titel (H1), Dateiname/Seitenidentitaet und Katalogeintrag laufen
damit sofort auseinander, ohne jede Fehlermeldung.
Betrifft jeden Typ, der ueber den generischen `new_page_command` laeuft (`entity`, `concept`,
`source`, `comparison`, ...), da die Titelverarbeitung typunabhaengig ist.
## Reproduktion
Getestet in einer privaten Instanz gegen Stack-Version 6.1.0 (`source_commit`
`11c400c670d341988dd0f1a7746f59557d00722b`). Titel bewusst generisch gewaehlt, kein
Instanzinhalt:
```
$ tools/wikitool new concept --name "Foo/Bar Baz Pattern" \
--set concept_type=pattern --set provenance=general \
--set summary="throwaway repro page for a wikitool bug report"
OK Created kb/concepts/patterns/Foo/Bar Baz Pattern.md
$ find kb/concepts/patterns -iname "Foo*"
kb/concepts/patterns/Foo
kb/concepts/patterns/Foo/Bar Baz Pattern.md
$ tools/wikitool search "Bar Baz"
6.0 | concept/pattern | Bar Baz Pattern | kb/concepts/patterns/Foo/Bar Baz Pattern.md | throwaway repro page for a wikitool bug report
1 result(s).
$ head -15 "kb/concepts/patterns/Foo/Bar Baz Pattern.md"
---
type: types/concept.md
concept_type: pattern
...
---
# Foo/Bar Baz Pattern
```
Der Katalog/`search` fuehrt die Seite unter dem Titel `Bar Baz Pattern`, die Datei liegt unter
`kb/concepts/patterns/Foo/Bar Baz Pattern.md`, die H1 in der Datei lautet weiterhin
`# Foo/Bar Baz Pattern`. Drei verschiedene "Titel" fuer dieselbe Seite.
Der vom Nutzer eigentlich gemeinte Titel ist danach nicht mehr sauber referenzierbar:
```
$ tools/wikitool rename --from "Foo/Bar Baz Pattern" --to "Foo-Bar Baz Pattern" --dry-run
ERROR Neither 'Foo/Bar Baz Pattern' nor 'Foo-Bar Baz Pattern' is a page under kb/.
Repointing references to 'Foo-Bar Baz Pattern' would just move the dangling reference;
create the page first with `wikitool new ...`, or drop the reference with `wikitool xref remove`.
```
`rename` kennt nur den tatsaechlichen (kaputten) Titel `Bar Baz Pattern`, nicht den vom Nutzer
eingegebenen. Der einzige gangbare Reparaturweg war `wikitool rm --page "Bar Baz Pattern"` und
Neuanlage mit einem slash-freien Titel.
## Ursache
`tools/chemenu/commands/new_page.py:293`:
```python
page_title = f"{title_prefix}{name}"
```
`tools/chemenu/commands/new_page.py:349`:
```python
path = target_dir / f"{page_title}.md"
```
`name` (aus `--name`) wird an keiner Stelle dazwischen auf Pfadtrennzeichen geprueft, bevor er
in eine `Path`-Verknuepfung eingeht. `check_collision(page_title)` (Zeile 299) prueft ebenfalls
nur den rohen, slash-haltigen String - das ist kein Titel, den je eine echte Seite tragen wird,
die Pruefung kann die Kollision mit der tatsaechlich entstehenden Seite (Titel ohne den
Prefix-Teil) also gar nicht sehen.
## Loesungsvorschlag
- `new_page_command` sollte `name` vor Zeile 293 auf ein Pfadtrennzeichen (`/`, unter Windows
zusaetzlich `\`) pruefen und mit `fail(...)` ablehnen - konsistent mit dem bestehenden
No-Guessing-Stil an anderer Stelle in derselben Datei (siehe `missing_capture` /
`guessed_unknown` wenige Zeilen weiter unten: klare Fehlermeldung statt stille
Fehlinterpretation).
- Gleiche Pruefung ist vermutlich auch fuer `--to` bei `rename` sinnvoll (dort bislang nicht
getestet) - separat zu betrachten.
## Akzeptanzkriterien
- [ ] `wikitool new <type> --name "A/B"` schlaegt mit klarer Fehlermeldung fehl, statt eine
Seite unter `<base_dir>/A/B.md` mit Titel `B` anzulegen.
- [ ] Test deckt mindestens Vorwaerts-Slash ab.
- [ ] `pytest`, `docs verify` clean.
## Herkunft
Beobachtet waehrend eines regulaeren `wiki-ingest`-Laufs in einer privaten Instanz (2026-09-17)
beim Anlegen mehrerer Concept-Seiten mit "CI/CD" im Titel; dort direkt per `wikitool rm` und
Neuanlage mit bereinigtem Titel behoben. Dieses Issue reproduziert den Fehler eigenstaendig mit
einem generischen Titel, ohne Bezug zu Inhalten der Instanz.
Changelog: Das Issue ist in #155 aufgegangen und wird geschlossen (Betreiber-Entscheidung D31, 2026-09-29). Der Befund ist ein Sonderfall der Dateinamensregel für Titel aus D18: / gehört zu den verbotenen Zeichen, und new wie rename verweigern ihn künftig vor jedem Schreibzugriff. Beide Akzeptanzkriterien stehen jetzt in #155: „new --name "A/B" endet mit Exit 1, es entsteht weder A/ noch eine Datei“, und ein Test deckt den Schrägstrich ab. Die Frage aus dem Lösungsvorschlag, ob rename --to dieselbe Prüfung braucht, ist dort mit Ja beantwortet. Der Body bleibt unverändert als Befundbericht stehen.
**Changelog:** Das Issue ist in #155 aufgegangen und wird geschlossen (Betreiber-Entscheidung D31, 2026-09-29). Der Befund ist ein Sonderfall der Dateinamensregel für Titel aus D18: `/` gehört zu den verbotenen Zeichen, und `new` wie `rename` verweigern ihn künftig vor jedem Schreibzugriff. Beide Akzeptanzkriterien stehen jetzt in #155: „`new --name "A/B"` endet mit Exit 1, es entsteht weder `A/` noch eine Datei“, und ein Test deckt den Schrägstrich ab. Die Frage aus dem Lösungsvorschlag, ob `rename --to` dieselbe Prüfung braucht, ist dort mit Ja beantwortet. Der Body bleibt unverändert als Befundbericht stehen.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Befund
wikitool new <type> --name "<Titel>"uebernimmt den rohen--name-Wert ungeprueft in denDateipfad. Enthaelt der Titel einen
/, interpretiertpathlib.Path.__truediv__diesen alsVerzeichnistrenner: die Seite landet in einem neu angelegten Unterverzeichnis, und ihr
tatsaechlicher, im Katalog/
search/renamegefuehrter Titel ist nur noch der Teilstring nachdem letzten
/- waehrend die H1-Ueberschrift im Seiteninhalt weiterhin den vollen,beabsichtigten Titel traegt. Titel (H1), Dateiname/Seitenidentitaet und Katalogeintrag laufen
damit sofort auseinander, ohne jede Fehlermeldung.
Betrifft jeden Typ, der ueber den generischen
new_page_commandlaeuft (entity,concept,source,comparison, ...), da die Titelverarbeitung typunabhaengig ist.Reproduktion
Getestet in einer privaten Instanz gegen Stack-Version 6.1.0 (
source_commit11c400c670d341988dd0f1a7746f59557d00722b). Titel bewusst generisch gewaehlt, keinInstanzinhalt:
Der Katalog/
searchfuehrt die Seite unter dem TitelBar Baz Pattern, die Datei liegt unterkb/concepts/patterns/Foo/Bar Baz Pattern.md, die H1 in der Datei lautet weiterhin# Foo/Bar Baz Pattern. Drei verschiedene "Titel" fuer dieselbe Seite.Der vom Nutzer eigentlich gemeinte Titel ist danach nicht mehr sauber referenzierbar:
renamekennt nur den tatsaechlichen (kaputten) TitelBar Baz Pattern, nicht den vom Nutzereingegebenen. Der einzige gangbare Reparaturweg war
wikitool rm --page "Bar Baz Pattern"undNeuanlage mit einem slash-freien Titel.
Ursache
tools/chemenu/commands/new_page.py:293:tools/chemenu/commands/new_page.py:349:name(aus--name) wird an keiner Stelle dazwischen auf Pfadtrennzeichen geprueft, bevor erin eine
Path-Verknuepfung eingeht.check_collision(page_title)(Zeile 299) prueft ebenfallsnur den rohen, slash-haltigen String - das ist kein Titel, den je eine echte Seite tragen wird,
die Pruefung kann die Kollision mit der tatsaechlich entstehenden Seite (Titel ohne den
Prefix-Teil) also gar nicht sehen.
Loesungsvorschlag
new_page_commandsolltenamevor Zeile 293 auf ein Pfadtrennzeichen (/, unter Windowszusaetzlich
\) pruefen und mitfail(...)ablehnen - konsistent mit dem bestehendenNo-Guessing-Stil an anderer Stelle in derselben Datei (siehe
missing_capture/guessed_unknownwenige Zeilen weiter unten: klare Fehlermeldung statt stilleFehlinterpretation).
--tobeirenamesinnvoll (dort bislang nichtgetestet) - separat zu betrachten.
Akzeptanzkriterien
wikitool new <type> --name "A/B"schlaegt mit klarer Fehlermeldung fehl, statt eineSeite unter
<base_dir>/A/B.mdmit TitelBanzulegen.pytest,docs verifyclean.Herkunft
Beobachtet waehrend eines regulaeren
wiki-ingest-Laufs in einer privaten Instanz (2026-09-17)beim Anlegen mehrerer Concept-Seiten mit "CI/CD" im Titel; dort direkt per
wikitool rmundNeuanlage mit bereinigtem Titel behoben. Dieses Issue reproduziert den Fehler eigenstaendig mit
einem generischen Titel, ohne Bezug zu Inhalten der Instanz.
Changelog: Das Issue ist in #155 aufgegangen und wird geschlossen (Betreiber-Entscheidung D31, 2026-09-29). Der Befund ist ein Sonderfall der Dateinamensregel für Titel aus D18:
/gehört zu den verbotenen Zeichen, undnewwierenameverweigern ihn künftig vor jedem Schreibzugriff. Beide Akzeptanzkriterien stehen jetzt in #155: „new --name "A/B"endet mit Exit 1, es entsteht wederA/noch eine Datei“, und ein Test deckt den Schrägstrich ab. Die Frage aus dem Lösungsvorschlag, obrename --todieselbe Prüfung braucht, ist dort mit Ja beantwortet. Der Body bleibt unverändert als Befundbericht stehen.