instructions verify gleicht dokumentierte wikitool-Aufrufe gegen den Kommandobaum ab #176

Open
opened 2026-10-04 17:06:59 +00:00 by torben · 1 comment
Owner

Problem

Ausgelieferte Instruktionen zeigen tools/wikitool-Aufrufe, deren Flags das Werkzeug nicht (mehr) kennt, und nichts meldet das. #174 ist der Fall: wiki-ingest und wiki-manage zeigten xref add --rel-a/--rel-b von 4.0.0 bis 8.0.0-beta.38 - über vier Major-Versionen hinweg, gefunden erst, als eine Ingest-Sitzung in einer Instanz daran scheiterte. instructions verify prüft Frontmatter, Links und Drift der publizierten Kopien. docs verify gleicht Flags gegen die CLI ab, aber nur für die SYNOPSIS der cli_contract-Records (check_synopsis_flags()), nicht für Aufrufe in Instruktionen. Ob ein gezeigter Aufruf ausführbar ist, prüft niemand.

Was gebaut werden soll

Eine Prüfung, die jeden tools/wikitool <subcommand…> --flag-Aufruf in den Agenten-Dokumenten gegen den Typer-Kommandobaum (typer.main.get_command(chemenu.cli.app)) abgleicht und ein unbekanntes Subkommando oder Flag als Fehler meldet, mit Datei und Zeile.

Ein Ad-hoc-Prototyp aus der Triage von #174 (Skript nicht eingecheckt) hat gezeigt, dass das geht, und hat die Fallstricke offengelegt, die der Bau auflösen muss:

  • Zeilenweise parsen. Der Prototyp ließ Whitespace über Zeilenumbrüche laufen und zog so Flags aus der Folgezeile in den Aufruf davor (evolve-subtypes.md, ingest-large-tree.md). Fortsetzungszeilen mit \ müssen dagegen zusammengefügt werden.
  • Zitierte Strings ausblenden. Ein Flag-Name in einem Argumentwert (--breaking "--gate-file is gone" in tools/CONTRACT.md) ist kein Flag.
  • Kommentare nach # ausblenden.
  • TyperGroup ist in der installierten Click-Version keine Unterklasse von click.Group - Gruppen über .commands erkennen, nicht über isinstance.
  • Platzhalter wie <cmd> oder <subcommand> sind kein Subkommando; ein Aufruf, der nicht bis zu einem Blatt-Kommando auflöst, wird übersprungen, nicht gemeldet.

Offene Fragen (Betreiberentscheidung)

  1. Wo lebt die Prüfung? Als neuer Check in instructions verify (läuft in jeder Instanz, deckt auch instanz-eigene Instruktionen ab) oder als Test in tools/chemenu/tests/ (nur im Ursprungs-Repo, nur ausgelieferte Texte)? Empfehlung: instructions verify - eine Instanz, die eigene Instruktionen schreibt, hat dasselbe Problem.
  2. Welcher Umfang? Nur Code-Blöcke, oder auch Inline-Code in Prosa? Und welche Dateien: instructions/**, AGENTS.md, */CONTRACT.md, kb/CONVENTIONS.md, kb/**/COLLECTION.md, types/*.md? tools/CONTRACT.md ist aus cli_contract generiert und wird bereits über check_synopsis_flags() abgedeckt - ausnehmen.

Akzeptanzkriterien (vorläufig, bis die Fragen entschieden sind)

  • Ein Aufruf mit einem Flag, das das Blatt-Kommando nicht definiert, wird mit Datei, Zeile, Kommando und Flag gemeldet und lässt die Prüfung mit Exit 1 enden.
  • Auf dem aktuellen Baum (nach #174) meldet die Prüfung nichts - insbesondere keinen der Fehlgriffe des Prototyps.
  • Je ein Test für: Flag aus der Folgezeile, Flag im zitierten Argument, Flag im Kommentar, \-Fortsetzung, Platzhalter-Subkommando.

Dateien

  • tools/chemenu/commands/docs_verify.py:394 check_synopsis_flags() - läuft bereits über den Kommandobaum und sammelt die echten Flags je Kommando; Durchlauf und Flag-Menge wiederverwenden statt eine zweite Kopie zu bauen
  • tools/chemenu/commands/instructions_cmd.py (falls instructions verify) oder ein neuer Test unter tools/chemenu/tests/
  • tools/chemenu/markdown_code.py hat bereits Code-Block-Erkennung
  • tools/CONTRACT.md / cli_contract-Record von instructions verify, instructions/CONTRACT.md, falls der Check dort landet

Versionsteil

Vorläufig --minor: neue Prüfung, keine Schnittstelle geändert. Grenzfall: Eine Instanz mit eigenen Instruktionen, die heute veraltete Flags zeigen, bekommt nach dem Update ein rotes instructions verify - zu prüfen, sobald Frage 1 entschieden ist.

Herkunft: Triage von #174.

## Problem Ausgelieferte Instruktionen zeigen `tools/wikitool`-Aufrufe, deren Flags das Werkzeug nicht (mehr) kennt, und nichts meldet das. #174 ist der Fall: `wiki-ingest` und `wiki-manage` zeigten `xref add --rel-a/--rel-b` von 4.0.0 bis 8.0.0-beta.38 - über vier Major-Versionen hinweg, gefunden erst, als eine Ingest-Sitzung in einer Instanz daran scheiterte. `instructions verify` prüft Frontmatter, Links und Drift der publizierten Kopien. `docs verify` gleicht Flags gegen die CLI ab, aber nur für die SYNOPSIS der `cli_contract`-Records (`check_synopsis_flags()`), nicht für Aufrufe in Instruktionen. Ob ein gezeigter Aufruf ausführbar ist, prüft niemand. ## Was gebaut werden soll Eine Prüfung, die jeden `tools/wikitool <subcommand…> --flag`-Aufruf in den Agenten-Dokumenten gegen den Typer-Kommandobaum (`typer.main.get_command(chemenu.cli.app)`) abgleicht und ein unbekanntes Subkommando oder Flag als Fehler meldet, mit Datei und Zeile. Ein Ad-hoc-Prototyp aus der Triage von #174 (Skript nicht eingecheckt) hat gezeigt, dass das geht, und hat die Fallstricke offengelegt, die der Bau auflösen muss: - **Zeilenweise parsen.** Der Prototyp ließ Whitespace über Zeilenumbrüche laufen und zog so Flags aus der Folgezeile in den Aufruf davor (`evolve-subtypes.md`, `ingest-large-tree.md`). Fortsetzungszeilen mit `\` müssen dagegen zusammengefügt werden. - **Zitierte Strings ausblenden.** Ein Flag-Name in einem Argumentwert (`--breaking "--gate-file is gone"` in `tools/CONTRACT.md`) ist kein Flag. - **Kommentare nach `#` ausblenden.** - `TyperGroup` ist in der installierten Click-Version keine Unterklasse von `click.Group` - Gruppen über `.commands` erkennen, nicht über `isinstance`. - Platzhalter wie `<cmd>` oder `<subcommand>` sind kein Subkommando; ein Aufruf, der nicht bis zu einem Blatt-Kommando auflöst, wird übersprungen, nicht gemeldet. ## Offene Fragen (Betreiberentscheidung) 1. **Wo lebt die Prüfung?** Als neuer Check in `instructions verify` (läuft in jeder Instanz, deckt auch instanz-eigene Instruktionen ab) oder als Test in `tools/chemenu/tests/` (nur im Ursprungs-Repo, nur ausgelieferte Texte)? Empfehlung: `instructions verify` - eine Instanz, die eigene Instruktionen schreibt, hat dasselbe Problem. 2. **Welcher Umfang?** Nur Code-Blöcke, oder auch Inline-Code in Prosa? Und welche Dateien: `instructions/**`, `AGENTS.md`, `*/CONTRACT.md`, `kb/CONVENTIONS.md`, `kb/**/COLLECTION.md`, `types/*.md`? `tools/CONTRACT.md` ist aus `cli_contract` generiert und wird bereits über `check_synopsis_flags()` abgedeckt - ausnehmen. ## Akzeptanzkriterien (vorläufig, bis die Fragen entschieden sind) - [ ] Ein Aufruf mit einem Flag, das das Blatt-Kommando nicht definiert, wird mit Datei, Zeile, Kommando und Flag gemeldet und lässt die Prüfung mit Exit 1 enden. - [ ] Auf dem aktuellen Baum (nach #174) meldet die Prüfung nichts - insbesondere keinen der Fehlgriffe des Prototyps. - [ ] Je ein Test für: Flag aus der Folgezeile, Flag im zitierten Argument, Flag im Kommentar, `\`-Fortsetzung, Platzhalter-Subkommando. ## Dateien - `tools/chemenu/commands/docs_verify.py:394` `check_synopsis_flags()` - läuft bereits über den Kommandobaum und sammelt die echten Flags je Kommando; Durchlauf und Flag-Menge wiederverwenden statt eine zweite Kopie zu bauen - `tools/chemenu/commands/instructions_cmd.py` (falls `instructions verify`) oder ein neuer Test unter `tools/chemenu/tests/` - `tools/chemenu/markdown_code.py` hat bereits Code-Block-Erkennung - `tools/CONTRACT.md` / `cli_contract`-Record von `instructions verify`, `instructions/CONTRACT.md`, falls der Check dort landet ## Versionsteil Vorläufig `--minor`: neue Prüfung, keine Schnittstelle geändert. Grenzfall: Eine Instanz mit eigenen Instruktionen, die heute veraltete Flags zeigen, bekommt nach dem Update ein rotes `instructions verify` - zu prüfen, sobald Frage 1 entschieden ist. Herkunft: Triage von #174.
torben added the prio/plannedsize/Marea/kbkind/decision labels 2026-10-04 17:06:59 +00:00
Author
Owner

Changelog: Beim Abschluss von #174 gefunden: docs verify gleicht über check_synopsis_flags() (docs_verify.py:394) bereits Flags gegen die CLI ab, aber nur für die Record-SYNOPSIS. Problem-Abschnitt präzisiert, unter Dateien als wiederverwendbarer Baustein ergänzt; tools/CONTRACT.md in Frage 2 als „ausnehmen“ markiert, weil schon abgedeckt. Falsche Zeitangabe „zwei Jahre“ war bereits vorher zu „über vier Major-Versionen“ korrigiert.

**Changelog:** Beim Abschluss von #174 gefunden: `docs verify` gleicht über `check_synopsis_flags()` (`docs_verify.py:394`) bereits Flags gegen die CLI ab, aber nur für die Record-SYNOPSIS. Problem-Abschnitt präzisiert, unter Dateien als wiederverwendbarer Baustein ergänzt; `tools/CONTRACT.md` in Frage 2 als „ausnehmen“ markiert, weil schon abgedeckt. Falsche Zeitangabe „zwei Jahre“ war bereits vorher zu „über vier Major-Versionen“ korrigiert.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: torben/chemenu#176