network:-Eigenschaft und version check-Text widersprechen sich und dem Code #144

Closed
opened 2026-09-26 06:17:23 +00:00 by torben · 2 comments
Owner

Gefunden beim Durchgang für #142 (2026-09-26). Nach dessen Regel wird eine Abweichung zwischen Text und Code nicht dort korrigiert, sondern hier erfasst.

Stand: Erledigt in 7.1.0-beta.23 (Commit 906d63f, Changelog-Text korrigiert in 685fc2e).

Befund (gegen den Baum geprüft)

  • sync (git fetch) und publish (git fetch, git ls-remote, git push) in tools/chemenu/commands/git_publish.py trugen network: no (Default), obwohl sie --remote ansprechen.
  • upstream merge (upstream_cmd.py) führt git fetch <remote> <branch> aus (außer mit --no-fetch) und trug network: no. upstream verify holt nichts ab, es liest nur bereits geholte Refs. Die erste Fassung dieses Issues hatte es fälschlich mitgezählt.
  • Vorher network: yes: version check, version notes, review, task new/task list/task close und doctor.
  • An vier Stellen stand, nur ein oder zwei Kommandos griffen aufs Netz zu:
    1. die NOTES des version check-Datensatzes,
    2. der Modul-Docstring von version_cmd.py,
    3. der Docstring des Befehls version check,
    4. der Docstring von version.fetch_latest („the one place … that talks to a remote host“). Das war auch bei enger Lesart falsch, weil die Provider für CalDAV und Super Productivity ebenfalls urllib nutzen.
  • Die Eigenschaft wird nur angezeigt (-h, Index, tools/CONTRACT.md), sonst liest sie kein Code.

Entscheidung

network: bedeutet jeden Netzzugriff. Das hat der Operator am 2026-09-26 entschieden. yes heißt: Mindestens ein Weg durch das Kommando kann einen Endpunkt außerhalb dieses Checkouts erreichen, entweder per HTTP-Aufruf aus wikitool selbst oder per Git-Operation gegen ein Remote (fetch, ls-remote, push).

Grund: Wer die Eigenschaft liest, will wissen, ob ein Befehl offline oder in einer Sandbox scheitern oder hängen kann und ob ein Fehler vorübergehend ist. Wer den Socket öffnet, spielt dafür keine Rolle. Verworfen wurde die Lesart „nur HTTP aus wikitool“, denn nach ihr hätte publish als netzfrei gegolten, obwohl es praktisch der netzabhängigste Befehl ist.

Präzisierungen, beide im Docstring festgehalten:

  • Es zählt, was möglich ist, nicht was im Normalfall passiert. --offline, --no-fetch, ein Markdown-Tracker oder ein Remote als lokaler Pfad ändern den Wert nicht.
  • Ein Git-Aufruf, der nur lokale Refs liest (rev-parse, rev-list, remote get-url), ist kein Netzzugriff.

Umgesetzt

  • Docstring von cli_contract.Network mit Bedeutung und Präzisierungen.
  • sync, publish und upstream merge stehen auf network=cli_contract.Network.YES, upstream verify bleibt no.
  • Die vier Textstellen nennen keine Zahl mehr. version check heißt jetzt „the only command whose whole job is the network call“, fetch_latest „the one place that talks to the release feed“.
  • Neuer Test test_network_yes_is_exactly_the_commands_that_can_reach_outside_this_checkout in tools/chemenu/tests/test_cli.py. Er prüft gegen die echte Registry, dass genau diese zehn Pfade yes tragen: sync, publish, upstream merge, version check, version notes, review, task new, task list, task close, doctor.
  • tools/CONTRACT.md ist per wikitool docs contract --apply regeneriert (vier Zeilen).
  • Patch-Bump 7.1.0-beta.22 → 7.1.0-beta.23, Impact low, mit Abschnitt in CHANGES.md. Der Abschnitt ist englisch wie die übrigen 22 des laufenden Kandidaten, und seine Überschrift entspricht dem Bump-Titel.
  • Doc-Pull-Through: Weder tools/README.md noch docs/ noch ein Stage-Contract beschreibt die Eigenschaft, also war dort nichts nachzuziehen.

Der Plan hatte optional vorgesehen, version notes unter SEE ALSO von version check zu ergänzen. Das entfiel, weil der Verweis dort schon stand.

Verifiziert

  • pytest: 1536 Tests grün. docs verify und instructions verify sauber, vor und nach dem Bump.
  • CI für 906d63f: Run 406 und Run 407 grün.
  • CI für 685fc2e (nur CHANGES.md): Run 408 grün.

Akzeptanzkriterien

  • Die Bedeutung von network:, einschließlich „möglich statt üblich“ und „Git-Remote zählt, lokale Refs nicht“, steht im Docstring von cli_contract.Network.
  • sync, publish und upstream merge tragen network: yes in -h und in tools/CONTRACT.md. upstream verify trägt weiterhin no.
  • Jeder übrige Datensatz trägt den Wert, den diese Bedeutung verlangt, und ein Test schreibt die Menge der yes-Pfade fest.
  • Kein Datensatz und kein Docstring in version_cmd.py/version.py behauptet eine Anzahl oder Ausschließlichkeit netzwerkender Kommandos, die der Index oder der Code widerlegt.
  • docs verify, instructions verify und pytest laufen grün, und der Patch-Bump samt CHANGES.md-Text ist geschrieben.
Gefunden beim Durchgang für #142 (2026-09-26). Nach dessen Regel wird eine Abweichung zwischen Text und Code nicht dort korrigiert, sondern hier erfasst. **Stand:** Erledigt in `7.1.0-beta.23` (Commit `906d63f`, Changelog-Text korrigiert in `685fc2e`). ## Befund (gegen den Baum geprüft) - `sync` (`git fetch`) und `publish` (`git fetch`, `git ls-remote`, `git push`) in `tools/chemenu/commands/git_publish.py` trugen `network: no` (Default), obwohl sie `--remote` ansprechen. - `upstream merge` (`upstream_cmd.py`) führt `git fetch <remote> <branch>` aus (außer mit `--no-fetch`) und trug `network: no`. `upstream verify` holt nichts ab, es liest nur bereits geholte Refs. Die erste Fassung dieses Issues hatte es fälschlich mitgezählt. - Vorher `network: yes`: `version check`, `version notes`, `review`, `task new`/`task list`/`task close` und `doctor`. - An vier Stellen stand, nur ein oder zwei Kommandos griffen aufs Netz zu: 1. die NOTES des `version check`-Datensatzes, 2. der Modul-Docstring von `version_cmd.py`, 3. der Docstring des Befehls `version check`, 4. der Docstring von `version.fetch_latest` („the one place … that talks to a remote host“). Das war auch bei enger Lesart falsch, weil die Provider für CalDAV und Super Productivity ebenfalls `urllib` nutzen. - Die Eigenschaft wird nur angezeigt (`-h`, Index, `tools/CONTRACT.md`), sonst liest sie kein Code. ## Entscheidung `network:` bedeutet **jeden Netzzugriff**. Das hat der Operator am 2026-09-26 entschieden. `yes` heißt: Mindestens ein Weg durch das Kommando kann einen Endpunkt außerhalb dieses Checkouts erreichen, entweder per HTTP-Aufruf aus `wikitool` selbst oder per Git-Operation gegen ein Remote (`fetch`, `ls-remote`, `push`). Grund: Wer die Eigenschaft liest, will wissen, ob ein Befehl offline oder in einer Sandbox scheitern oder hängen kann und ob ein Fehler vorübergehend ist. Wer den Socket öffnet, spielt dafür keine Rolle. Verworfen wurde die Lesart „nur HTTP aus `wikitool`“, denn nach ihr hätte `publish` als netzfrei gegolten, obwohl es praktisch der netzabhängigste Befehl ist. Präzisierungen, beide im Docstring festgehalten: - Es zählt, was möglich ist, nicht was im Normalfall passiert. `--offline`, `--no-fetch`, ein Markdown-Tracker oder ein Remote als lokaler Pfad ändern den Wert nicht. - Ein Git-Aufruf, der nur lokale Refs liest (`rev-parse`, `rev-list`, `remote get-url`), ist kein Netzzugriff. ## Umgesetzt - Docstring von `cli_contract.Network` mit Bedeutung und Präzisierungen. - `sync`, `publish` und `upstream merge` stehen auf `network=cli_contract.Network.YES`, `upstream verify` bleibt `no`. - Die vier Textstellen nennen keine Zahl mehr. `version check` heißt jetzt „the only command whose whole job is the network call“, `fetch_latest` „the one place that talks to the release feed“. - Neuer Test `test_network_yes_is_exactly_the_commands_that_can_reach_outside_this_checkout` in `tools/chemenu/tests/test_cli.py`. Er prüft gegen die echte Registry, dass genau diese zehn Pfade `yes` tragen: `sync`, `publish`, `upstream merge`, `version check`, `version notes`, `review`, `task new`, `task list`, `task close`, `doctor`. - `tools/CONTRACT.md` ist per `wikitool docs contract --apply` regeneriert (vier Zeilen). - Patch-Bump `7.1.0-beta.22 → 7.1.0-beta.23`, Impact `low`, mit Abschnitt in `CHANGES.md`. Der Abschnitt ist englisch wie die übrigen 22 des laufenden Kandidaten, und seine Überschrift entspricht dem Bump-Titel. - Doc-Pull-Through: Weder `tools/README.md` noch `docs/` noch ein Stage-Contract beschreibt die Eigenschaft, also war dort nichts nachzuziehen. Der Plan hatte optional vorgesehen, `version notes` unter SEE ALSO von `version check` zu ergänzen. Das entfiel, weil der Verweis dort schon stand. ## Verifiziert - `pytest`: 1536 Tests grün. `docs verify` und `instructions verify` sauber, vor und nach dem Bump. - CI für `906d63f`: [Run 406](https://gitea.nehmer.net/torben/chemenu/actions/runs/406) und [Run 407](https://gitea.nehmer.net/torben/chemenu/actions/runs/407) grün. - CI für `685fc2e` (nur `CHANGES.md`): [Run 408](https://gitea.nehmer.net/torben/chemenu/actions/runs/408) grün. ## Akzeptanzkriterien - [x] Die Bedeutung von `network:`, einschließlich „möglich statt üblich“ und „Git-Remote zählt, lokale Refs nicht“, steht im Docstring von `cli_contract.Network`. - [x] `sync`, `publish` und `upstream merge` tragen `network: yes` in `-h` und in `tools/CONTRACT.md`. `upstream verify` trägt weiterhin `no`. - [x] Jeder übrige Datensatz trägt den Wert, den diese Bedeutung verlangt, und ein Test schreibt die Menge der `yes`-Pfade fest. - [x] Kein Datensatz und kein Docstring in `version_cmd.py`/`version.py` behauptet eine Anzahl oder Ausschließlichkeit netzwerkender Kommandos, die der Index oder der Code widerlegt. - [x] `docs verify`, `instructions verify` und `pytest` laufen grün, und der Patch-Bump samt `CHANGES.md`-Text ist geschrieben.
torben added the prio/plannedsize/Skind/defectarea/process labels 2026-09-26 06:17:27 +00:00
Author
Owner

Changelog: Offene Frage entschieden: network: bedeutet jeden Netzzugriff, Git-Remote eingeschlossen (Lesart 1, Operator am 2026-09-26). Korrigiert: upstream verify holt nichts ab und bleibt no. Neu: drei weitere falsche Ausschließlichkeitsbehauptungen (version_cmd.py-Modul- und Befehls-Docstring, version.py fetch_latest), dazu Umsetzungsplan, Test auf die yes-Menge, Patch-Bump und geschärfte Akzeptanzkriterien.

**Changelog:** Offene Frage entschieden: `network:` bedeutet jeden Netzzugriff, Git-Remote eingeschlossen (Lesart 1, Operator am 2026-09-26). Korrigiert: `upstream verify` holt nichts ab und bleibt `no`. Neu: drei weitere falsche Ausschließlichkeitsbehauptungen (`version_cmd.py`-Modul- und Befehls-Docstring, `version.py` `fetch_latest`), dazu Umsetzungsplan, Test auf die `yes`-Menge, Patch-Bump und geschärfte Akzeptanzkriterien.
Author
Owner

Changelog: Endzustand. Der Plan ist zu „Umgesetzt“ und „Verifiziert“ geworden (CI-Runs 406/407/408 grün), alle Kriterien sind abgehakt. Korrigiert: Der CHANGES.md-Abschnitt ist jetzt englisch wie der Rest des Kandidaten, seine Überschrift entspricht dem Bump-Titel (685fc2e). Modelle: Design Opus 5.5, Umsetzung Sonnet 5, Abschluss Opus 5.5.

**Changelog:** Endzustand. Der Plan ist zu „Umgesetzt“ und „Verifiziert“ geworden (CI-Runs 406/407/408 grün), alle Kriterien sind abgehakt. Korrigiert: Der `CHANGES.md`-Abschnitt ist jetzt englisch wie der Rest des Kandidaten, seine Überschrift entspricht dem Bump-Titel (`685fc2e`). Modelle: Design Opus 5.5, Umsetzung Sonnet 5, Abschluss Opus 5.5.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: torben/chemenu#144