new-Record: Varianten concept und source nennen einen Zielpfad ohne das Unterverzeichnis, das der Type-Spec berechnet #150

Closed
opened 2026-09-26 20:33:42 +00:00 by torben · 2 comments
Owner

Befund (behoben in 7.1.0-beta.30, Commit 6c0ebcc; Nachzug 7.1.0-beta.31, dd885db)

Die cli_contract-Varianten von new in tools/chemenu/commands/new_page.py (gerendert in wikitool new -h und in tools/CONTRACT.md) nannten für zwei Varianten einen flachen Zielpfad:

Variante Notiz vorher Tatsächlich (Type-Spec) Ergebnis
new entity kb/entities/<subdir>/<Name>.md layout: über entity_type stimmte; Herkunft von <subdir> ergänzt
new concept kb/concepts/<Name>.md kb/concepts/<subdir>/<Name>.md über concept_type korrigiert
new source kb/sources/Source - <Name>.md kb/sources/<subdir>/Source - <Name>.md über source_type korrigiert
new comparison kb/comparisons/X vs Y.md types/comparison.md hat kein layout: stimmte; unverändert
new project kb/gtd/<bereich>/<Name>.md layout: über responsibility stimmte; unverändert

Aufgefallen beim Nachtrag zu #147 (instructions/gates.md nannte zwei Konzeptseiten mit flachem Pfad). new hat nie an die falsche Stelle geschrieben; falsch war nur die Aussage, die ein Agent als Tatsache darüber liest, wo eine Seite liegt.

Bei der Prüfung zusätzlich gefunden und mitbehoben: Die usage von new source nannte weder source_type (Pflichtfeld seit #66) noch fidelity/authority (von new erzwungen seit #67). Wörtlich übernommen endete sie also immer mit Exit 1. Sie nennt jetzt alle drei.

Im Nachzug (dd885db) gefunden: Zwei Code-Kommentare trugen dieselbe veraltete Annahme, layout: gebe es „currently just“ für Entities: der Modul-Docstring von new_page.py und der von TypeResolver.get_layout. Beide nennen jetzt die vier ausgelieferten Type-Specs mit layout:. Sie sind eine ebenso plausible Quelle für die flache Pfadannahme wie die Notiz.

Entscheidungen (umgesetzt)

  • Notiz-Formulierung: der Pfad mit <subdir> plus der Halbsatz - `<subdir>` from `<field>` via the type-spec's `layout:` . Das bleibt richtig, auch wenn eine Instanz ihre Page-Type-Specs mit anderen Verzeichnisnamen füllt.
  • Test an die Notiz gekoppelt, nicht an einen fest verdrahteten Pfad. Die bestehenden Pfadtests prüfen den Code gegen einen Pfad im Test und hätten diese Drift nicht bemerkt. Der neue Test liest die Notiz aus dem Record, macht aus dem Pfad in Backticks ein Muster (<Name> → der konkrete Name, andere Platzhalter → ein Pfadsegment, führendes kb/ abgeschnitten) und prüft dagegen den Pfad, den new im kb_dir-Fixture tatsächlich schreibt. Umgesetzt als fünf einzelne Tests (einer je Typ) statt einer Parametrisierung, dazu ein Vollständigkeitstest.

Akzeptanzkriterien

  • Die Notizen von new entity, new concept und new source lauten wie oben. Die usage von new source nennt source_type, fidelity und authority. comparison und project sind unverändert.
  • Notizgekoppelte Pfadtests (test_new_{entity,concept,source,comparison,project}_path_matches_its_record_note) sind grün. Gegen die alten Notizen waren concept und source rot, entity, comparison und project grün. Verifiziert mit temporär zurückgesetzten Notizen.
  • Vollständigkeitstest test_every_writes_kb_variant_has_a_path_case: Jede Variante mit Writes `kb/ hat einen Testfall.
  • Der Aufruf mit genau den Feldern der korrigierten new source-Synopsis gelingt (test_new_source_path_matches_its_record_note_and_its_usage_is_runnable). Der Test parst die usage-Zeile nicht selbst, sondern übergibt dieselben Felder.
  • tools/wikitool docs contract --apply ist gelaufen; tools/CONTRACT.md stimmt mit dem Record überein; docs verify, instructions verify, pytest (1550) grün.
  • Changelog über version bump --patch --impact low (7.1.0-beta.30, Nachzug 7.1.0-beta.31).

Verifiziert

CI auf 6c0ebcc: Runs 420 und 421 grün. CI auf dd885db: Runs 422 und 423 grün. Zum Ablauf (roher git commit bei 6c0ebcc) siehe die Anmerkung in #148.

Verwandt: #147, #142.

## Befund (behoben in `7.1.0-beta.30`, Commit 6c0ebcc; Nachzug `7.1.0-beta.31`, dd885db) Die `cli_contract`-Varianten von `new` in `tools/chemenu/commands/new_page.py` (gerendert in `wikitool new -h` und in `tools/CONTRACT.md`) nannten für zwei Varianten einen flachen Zielpfad: | Variante | Notiz vorher | Tatsächlich (Type-Spec) | Ergebnis | |---|---|---|---| | `new entity` | `kb/entities/<subdir>/<Name>.md` | `layout:` über `entity_type` | stimmte; Herkunft von `<subdir>` ergänzt | | `new concept` | `kb/concepts/<Name>.md` | `kb/concepts/<subdir>/<Name>.md` über `concept_type` | korrigiert | | `new source` | `kb/sources/Source - <Name>.md` | `kb/sources/<subdir>/Source - <Name>.md` über `source_type` | korrigiert | | `new comparison` | `kb/comparisons/X vs Y.md` | `types/comparison.md` hat kein `layout:` | stimmte; unverändert | | `new project` | `kb/gtd/<bereich>/<Name>.md` | `layout:` über `responsibility` | stimmte; unverändert | Aufgefallen beim Nachtrag zu #147 (`instructions/gates.md` nannte zwei Konzeptseiten mit flachem Pfad). `new` hat nie an die falsche Stelle geschrieben; falsch war nur die Aussage, die ein Agent als Tatsache darüber liest, wo eine Seite liegt. **Bei der Prüfung zusätzlich gefunden und mitbehoben:** Die `usage` von `new source` nannte weder `source_type` (Pflichtfeld seit #66) noch `fidelity`/`authority` (von `new` erzwungen seit #67). Wörtlich übernommen endete sie also immer mit Exit 1. Sie nennt jetzt alle drei. **Im Nachzug (dd885db) gefunden:** Zwei Code-Kommentare trugen dieselbe veraltete Annahme, `layout:` gebe es „currently just“ für Entities: der Modul-Docstring von `new_page.py` und der von `TypeResolver.get_layout`. Beide nennen jetzt die vier ausgelieferten Type-Specs mit `layout:`. Sie sind eine ebenso plausible Quelle für die flache Pfadannahme wie die Notiz. ## Entscheidungen (umgesetzt) - **Notiz-Formulierung:** der Pfad mit `<subdir>` plus der Halbsatz ``- `<subdir>` from `<field>` via the type-spec's `layout:` ``. Das bleibt richtig, auch wenn eine Instanz ihre Page-Type-Specs mit anderen Verzeichnisnamen füllt. - **Test an die Notiz gekoppelt, nicht an einen fest verdrahteten Pfad.** Die bestehenden Pfadtests prüfen den Code gegen einen Pfad im Test und hätten diese Drift nicht bemerkt. Der neue Test liest die Notiz aus dem Record, macht aus dem Pfad in Backticks ein Muster (`<Name>` → der konkrete Name, andere Platzhalter → ein Pfadsegment, führendes `kb/` abgeschnitten) und prüft dagegen den Pfad, den `new` im `kb_dir`-Fixture tatsächlich schreibt. Umgesetzt als fünf einzelne Tests (einer je Typ) statt einer Parametrisierung, dazu ein Vollständigkeitstest. ## Akzeptanzkriterien - [x] Die Notizen von `new entity`, `new concept` und `new source` lauten wie oben. Die `usage` von `new source` nennt `source_type`, `fidelity` und `authority`. comparison und project sind unverändert. - [x] Notizgekoppelte Pfadtests (`test_new_{entity,concept,source,comparison,project}_path_matches_its_record_note`) sind grün. Gegen die alten Notizen waren concept und source rot, entity, comparison und project grün. Verifiziert mit temporär zurückgesetzten Notizen. - [x] Vollständigkeitstest `test_every_writes_kb_variant_has_a_path_case`: Jede Variante mit ``Writes `kb/`` hat einen Testfall. - [x] Der Aufruf mit genau den Feldern der korrigierten `new source`-Synopsis gelingt (`test_new_source_path_matches_its_record_note_and_its_usage_is_runnable`). Der Test parst die `usage`-Zeile nicht selbst, sondern übergibt dieselben Felder. - [x] `tools/wikitool docs contract --apply` ist gelaufen; `tools/CONTRACT.md` stimmt mit dem Record überein; `docs verify`, `instructions verify`, `pytest` (1550) grün. - [x] Changelog über `version bump --patch --impact low` (`7.1.0-beta.30`, Nachzug `7.1.0-beta.31`). ## Verifiziert CI auf 6c0ebcc: Runs 420 und 421 grün. CI auf dd885db: Runs 422 und 423 grün. Zum Ablauf (roher `git commit` bei 6c0ebcc) siehe die Anmerkung in #148. Verwandt: #147, #142.
torben added the prio/plannedsize/Sarea/kbkind/defect labels 2026-09-26 20:33:42 +00:00
Author
Owner

Changelog: comparison gegen types/comparison.md geprüft: flach, Notiz stimmt. Neu im Umfang: Die usage von new source lässt die Pflichtwerte source_type, fidelity und authority weg und ist deshalb nicht ausführbar. Entschieden sind außerdem die Notiz-Formulierungen und das Testdesign: Der Test ist an die Notiz aus dem Record gekoppelt statt an einen fest verdrahteten Pfad, dazu kommt ein Vollständigkeitstest über alle Writes kb/-Varianten. Status: umsetzungsreif.

**Changelog:** `comparison` gegen `types/comparison.md` geprüft: flach, Notiz stimmt. Neu im Umfang: Die `usage` von `new source` lässt die Pflichtwerte `source_type`, `fidelity` und `authority` weg und ist deshalb nicht ausführbar. Entschieden sind außerdem die Notiz-Formulierungen und das Testdesign: Der Test ist an die Notiz aus dem Record gekoppelt statt an einen fest verdrahteten Pfad, dazu kommt ein Vollständigkeitstest über alle `Writes kb/`-Varianten. Status: umsetzungsreif.
Author
Owner

Changelog: Body auf Endstand gebracht: alle Kriterien abgehakt. Ergänzt um den Nachzug dd885db, der zwei Code-Kommentare mit derselben „nur Entities haben layout:“-Annahme korrigiert. Umsetzung als fünf Einzeltests statt Parametrisierung vermerkt; CI-Runs 420–423 grün. Geschlossen.

**Changelog:** Body auf Endstand gebracht: alle Kriterien abgehakt. Ergänzt um den Nachzug dd885db, der zwei Code-Kommentare mit derselben „nur Entities haben `layout:`“-Annahme korrigiert. Umsetzung als fünf Einzeltests statt Parametrisierung vermerkt; CI-Runs 420–423 grün. Geschlossen.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: torben/chemenu#150