Konverter-Testkorpus und Test-Harness in eigenes privates Repo; eigener Workflow mit Pfad-Trigger, Release-Prüfung, nicht mehr im Standard-CI #232

Closed
opened 2026-10-14 11:05:14 +00:00 by torben · 3 comments
Owner

Anlass: #231 hat testfiles/pdf/ auf 17 PDFs und rund 48 MB erweitert (u. a. ecoDMS-Handbuch 296 S., „Azure for Architects“ 701 S.). tools/chemenu/tests/test_raw_derive_testfiles.py leitete jede Datei unter testfiles/ zweimal ab und nahm sie an; allein Azure braucht für eine Ableitung 48 s. Das lief in jedem CI-Lauf, auch wenn ein Commit keinen Konverter berührte. Und viele aussagekräftige Testquellen (Verlagsbücher, Herstellerunterlagen, Dokumente mit Personendaten) dürfen nicht in dieses öffentliche Repo.

Stand: abgeschlossen

Veröffentlicht als Commit 71170bc (Kandidat 10.1.0-beta.2), dazu zwei Nachzüge beim Abschluss ohne Versionssprung: 028f620 (docs/dev/development.md: Zugang über die Freigabe im privaten Repo) und c439dc6 (Kopfkommentar von converters.yml, statt des überflüssigen 1Password-Wegs).

Verifiziert durch:

  • 71170bc: ci.yml Lauf 698 grün; release.yml als Kandidat Lauf 700 grün (converters übersprungen); converters.yml per workflow_dispatch auf main Lauf 702 grün (8,7 min, 33 Tests). Der automatische Lauf 699 auf demselben Commit war rot, allein wegen der Zugriffseinstellung (Punkt 4).
  • 028f620 (nur docs/): nur ci.yml gestartet, Lauf 705 grün; converters.yml nicht gestartet.
  • c439dc6 (nur converters.yml): ci.yml Lauf 706 grün, converters.yml von selbst gestartet, Lauf 707 grün.
  • Release-Gate: Läufe 703 und 704 (siehe unten).

Entscheidung (Betreiber, 2026-10-14)

  • Die Konverter-Tests gegen reale Dokumente laufen in einem eigenen Workflow, nicht im Standard-CI-Lauf.
  • Ein Release prüft sie beim Veröffentlichen.
  • Ändert ein Commit die Konverter, läuft der Workflow automatisch über einen Pfad-Filter; stack-dev/stack-build bekommen die Anweisung, ihn abzuwarten.
  • Testkorpus und Konverter-Test-Harness liegen in einem eigenen, privaten Git-Repo, das für die Testläufe gezielt geladen wird. Dort liegen auch Quellen, die nicht öffentlich eingecheckt werden können.
  • Beim Bau bestätigt (2026-10-14): Name torben/chemenu-testfiles; der Betreiber hat das Repo angelegt und das Hochladen der Dateien dorthin ausdrücklich freigegeben.

Umsetzung

  1. Privates Repo torben/chemenu-testfiles mit:
    • corpus/<format>/…: alle bisherigen Dateien aus testfiles/ (mail, office, pdf, zip) plus die 13 neuen PDFs aus #231. 34 Dateien, jede per SHA-256 gegen das Original geprüft. Die zwei Bücher sind beim Umzug umbenannt (azure-for-architects-3e.pdf, concurrency-in-csharp-cookbook.pdf).
    • harness/: test_raw_derive_testfiles.py (mit dem pytest-Marker testfiles) und eine conftest.py, die die hermetischen Fixtures der Stack-Suite über pytest_plugins = ["chemenu.tests.conftest"] borgt. Die Vergleichswerkzeuge aus #233 kommen dort hinzu.
    • README.md: Herkunftstabelle mit einer Spalte „Public“, dazu Aufruf und Layout. Die Herkunft der 13 neuen PDFs steht größtenteils auf „unknown“ oder „no“; sie zu ergänzen ist Sache des Betreibers und kein Kriterium dieses Pakets.
  2. Ort im Arbeitsbaum: eigener Klon nach testfiles/, testfiles/ steht in .gitignore. Kein Submodul. Fehlt der Klon, fehlt nur dieser Lauf; nichts in tools/chemenu/tests/ braucht ihn. Die bisher versionierten 22 Dateien sind aus diesem Repo entfernt (Historie bleibt), ebenso das Testmodul und der -text-Block in .gitattributes.
  3. Harness gegen den Arbeitsbaum: cd tools && .venv/bin/python -m pytest -c pytest.ini ../testfiles/harness. -c pytest.ini wendet die Konfiguration der Suite auf ein Harness außerhalb von tools/ an. Eine Konverter-Änderung, die erwartete Ausgaben (.expect) ändert, sind zwei Commits, einer je Repo, der private zuerst; der Workflow testet immer main des privaten Repos. Weil das Harness repository_tree_guard aus der Suite borgt, darf während eines lokalen Laufs nichts im Stack-Checkout geändert werden.
  4. Workflow .gitea/workflows/converters.yml: Aufbau wie ci.yml, checkt zusätzlich das private Repo nach testfiles/ aus und führt das Harness aus. Zugang: ${{ gitea.token }}. Der Token liest das zweite private Repo, weil dessen eigene Actions-Einstellungen torben/chemenu Zugriff gewähren; eine Einstellung in chemenu selbst wirkt nicht. Ohne die Freigabe scheitert der Checkout mit „Determining the default branch … not found“ (Läufe 699, 701). Ein 1Password-Token, im Entwurf als Ausweg vorgesehen, ist damit nicht nötig. Kopfkommentar und docs/dev/development.md sagen das. Auslöser: push auf main mit paths: – tools/chemenu/filters/**, tools/chemenu/commands/raw/derive.py, tools/chemenu/commands/raw/accept.py, tools/chemenu/tests/test_raw_derive*.py, tools/chemenu/tests/binary_formats.py, tools/requirements.txt, .gitea/workflows/converters.yml –, dazu workflow_dispatch. Ein Push ins private Repo löst nichts hier aus; dann von Hand starten. Der Runner arbeitet Läufe nacheinander ab: converters reiht sich hinter ci.yml und dessen pwsh-Job ein.
  5. Standard-CI: ci.yml unverändert; der Test ist mit dem Modul umgezogen. Die Suite lief mit --cov auf 3064 bestanden, 4 übersprungen, 91,25 % gesamt; die Untergrenze 85 hält (CI Lauf 698).
  6. Release: Statt workflow_call (in dieser Gitea-Instanz nicht belegt) trägt release.yml einen eigenen ersten Job converters mit denselben Schritten; release hat needs: converters. Für -beta.N entscheidet der Job skip aus VERSION und läuft nicht. Der Kommentar in release.yml verweist für die Begründung auf converters.yml.
  7. Anweisungen: dev-setup.md (neuer Schritt 6, Klon und Zugang), publish-and-ci.md (Schritt 3: der converters-Lauf startet von selbst bei Konverter-Pfaden, wird abgewartet, rot zählt wie rotes CI; von Hand über dispatch_workflow auf main), testing-conventions.md (Scope).
  8. Doku: docs/dev/development.md (Absatz zu testfiles/, Workflow-Liste, Release-Gate, Zugang); der Changelog-Eintrag nennt den Umzug.

Beleg des Release-Gates

Probelauf auf dem Wegwerf-Zweig gate-probe-232 (inzwischen gelöscht), damit nie ein echter Release oder Tag entstehen kann: VERSION = 99.0.0 (ohne Suffix), in release.yml ist der Job release durch ein einziges echo REACHED ersetzt; gestartet per dispatch_workflow auf dem Zweig.

  • Lauf 703, Harness-Schritt absichtlich rot (kein Test passt zum Schlüsselwort, pytest Exit 5): converters rot, release übersprungen.
  • Lauf 704, Harness-Schritt grün (Teilmenge -k "nist or ifg"): converters grün, release gestartet und REACHED ausgegeben.
  • Danach: Zweig gelöscht; es gibt weder Tag noch Release v99.0.0 (neuester Tag v10.0.0).

Akzeptanzkriterien

  • torben/chemenu-testfiles ist privat und enthält corpus/ (alle bisherigen Dateien + die 13 neuen PDFs), harness/ und README.md mit Herkunftstabelle. (Lauf 702 lädt es und führt das Harness aus.)
  • In diesem Repo ist testfiles/ nicht mehr versioniert und steht in .gitignore; ein frischer Klon ohne Zugang zum privaten Repo besteht pytest, docs verify und instructions verify. (CI Lauf 698 ohne testfiles/.)
  • Ein Commit, der nur Stack-Dateien außerhalb der Pfade aus Punkt 4 ändert, startet ci.yml, aber nicht converters.yml. (028f620, nur docs/dev/development.md: Lauf 705 ci.yml, kein converters-Lauf.)
  • Ein Commit, der eine Datei unter tools/chemenu/filters/ ändert, startet converters.yml von selbst – nach #231 verschoben: Dieses Paket ändert nichts unter filters/, und für den Beleg allein eine Konverter-Änderung zu bauen, wäre eine Änderung ohne Inhalt. #231 ist die erste Änderung dort und trägt das Kriterium. Hier belegt ist derselbe Mechanismus über einen anderen Eintrag der paths:-Liste: .gitea/workflows/converters.yml startete den Workflow zweimal von selbst (Läufe 699, 707), und Lauf 707 lud das private Repo und führte das Harness über alle Dateien aus.
  • workflow_dispatch von converters.yml funktioniert auf main. (Lauf 702.)
  • Ein Release ohne Suffix entsteht nur nach grünem Harness-Lauf im selben Release-Lauf; bei Rot kein Tag. (Läufe 703 rot und 704 grün, oben.)
  • Die Coverage-Untergrenze in ci.yml hält. (Lokal 91,25 % bei Untergrenze 85; CI Lauf 698 grün.)
  • dev-setup.md, publish-and-ci.md, testing-conventions.md und docs/dev/development.md beschreiben den neuen Ablauf; docs verify findet keinen toten Link auf testfiles/README.md.
  • CI und converters.yml auf dem veröffentlichten Commit grün. (71170bc: 698, 702; letzter Commit c439dc6: 706, 707.)

Versionsteil

Patch im laufenden Kandidaten: 10.1.0-beta.2. tools/ und instructions/ liegen im Version-Gate. Drop-in: Workflows, testfiles/ und instructions/dev/ gehen mit dist export nicht in eine Instanz. Die beiden Nachzüge (docs/, .gitea/) liegen außerhalb des Gates und brauchten keinen Sprung.

Kette

Kette „Konverter-Qualität“

Anlass: #231 hat `testfiles/pdf/` auf 17 PDFs und rund 48 MB erweitert (u. a. ecoDMS-Handbuch 296 S., „Azure for Architects“ 701 S.). `tools/chemenu/tests/test_raw_derive_testfiles.py` leitete jede Datei unter `testfiles/` zweimal ab und nahm sie an; allein Azure braucht für eine Ableitung 48 s. Das lief in jedem CI-Lauf, auch wenn ein Commit keinen Konverter berührte. Und viele aussagekräftige Testquellen (Verlagsbücher, Herstellerunterlagen, Dokumente mit Personendaten) dürfen nicht in dieses öffentliche Repo. ## Stand: abgeschlossen Veröffentlicht als Commit `71170bc` (Kandidat `10.1.0-beta.2`), dazu zwei Nachzüge beim Abschluss ohne Versionssprung: `028f620` (`docs/dev/development.md`: Zugang über die Freigabe im privaten Repo) und `c439dc6` (Kopfkommentar von `converters.yml`, statt des überflüssigen 1Password-Wegs). Verifiziert durch: - `71170bc`: `ci.yml` Lauf 698 grün; `release.yml` als Kandidat Lauf 700 grün (`converters` übersprungen); `converters.yml` per `workflow_dispatch` auf `main` Lauf 702 grün (8,7 min, 33 Tests). Der automatische Lauf 699 auf demselben Commit war rot, allein wegen der Zugriffseinstellung (Punkt 4). - `028f620` (nur `docs/`): nur `ci.yml` gestartet, Lauf 705 grün; `converters.yml` nicht gestartet. - `c439dc6` (nur `converters.yml`): `ci.yml` Lauf 706 grün, `converters.yml` von selbst gestartet, Lauf 707 grün. - Release-Gate: Läufe 703 und 704 (siehe unten). ## Entscheidung (Betreiber, 2026-10-14) - Die Konverter-Tests gegen reale Dokumente laufen in einem **eigenen Workflow**, nicht im Standard-CI-Lauf. - **Ein Release prüft sie** beim Veröffentlichen. - Ändert ein Commit die Konverter, läuft der Workflow **automatisch über einen Pfad-Filter**; `stack-dev`/`stack-build` bekommen die Anweisung, ihn abzuwarten. - **Testkorpus und Konverter-Test-Harness liegen in einem eigenen, privaten Git-Repo**, das für die Testläufe gezielt geladen wird. Dort liegen auch Quellen, die nicht öffentlich eingecheckt werden können. - Beim Bau bestätigt (2026-10-14): Name `torben/chemenu-testfiles`; der Betreiber hat das Repo angelegt und das Hochladen der Dateien dorthin ausdrücklich freigegeben. ## Umsetzung 1. **Privates Repo `torben/chemenu-testfiles`** mit: - `corpus/<format>/…`: alle bisherigen Dateien aus `testfiles/` (mail, office, pdf, zip) plus die 13 neuen PDFs aus #231. 34 Dateien, jede per SHA-256 gegen das Original geprüft. Die zwei Bücher sind beim Umzug umbenannt (`azure-for-architects-3e.pdf`, `concurrency-in-csharp-cookbook.pdf`). - `harness/`: `test_raw_derive_testfiles.py` (mit dem pytest-Marker `testfiles`) und eine `conftest.py`, die die hermetischen Fixtures der Stack-Suite über `pytest_plugins = ["chemenu.tests.conftest"]` borgt. Die Vergleichswerkzeuge aus #233 kommen dort hinzu. - `README.md`: Herkunftstabelle mit einer Spalte „Public“, dazu Aufruf und Layout. Die Herkunft der 13 neuen PDFs steht größtenteils auf „unknown“ oder „no“; sie zu ergänzen ist Sache des Betreibers und kein Kriterium dieses Pakets. 2. **Ort im Arbeitsbaum:** eigener Klon nach `testfiles/`, `testfiles/` steht in `.gitignore`. Kein Submodul. Fehlt der Klon, fehlt nur dieser Lauf; nichts in `tools/chemenu/tests/` braucht ihn. Die bisher versionierten 22 Dateien sind aus diesem Repo entfernt (Historie bleibt), ebenso das Testmodul und der `-text`-Block in `.gitattributes`. 3. **Harness gegen den Arbeitsbaum:** `cd tools && .venv/bin/python -m pytest -c pytest.ini ../testfiles/harness`. `-c pytest.ini` wendet die Konfiguration der Suite auf ein Harness außerhalb von `tools/` an. Eine Konverter-Änderung, die erwartete Ausgaben (`.expect`) ändert, sind zwei Commits, einer je Repo, der private zuerst; der Workflow testet immer `main` des privaten Repos. Weil das Harness `repository_tree_guard` aus der Suite borgt, darf während eines lokalen Laufs nichts im Stack-Checkout geändert werden. 4. **Workflow `.gitea/workflows/converters.yml`**: Aufbau wie `ci.yml`, checkt zusätzlich das private Repo nach `testfiles/` aus und führt das Harness aus. Zugang: `${{ gitea.token }}`. Der Token liest das zweite private Repo, weil dessen eigene Actions-Einstellungen `torben/chemenu` Zugriff gewähren; eine Einstellung in `chemenu` selbst wirkt nicht. Ohne die Freigabe scheitert der Checkout mit „Determining the default branch … not found“ (Läufe 699, 701). Ein 1Password-Token, im Entwurf als Ausweg vorgesehen, ist damit nicht nötig. Kopfkommentar und `docs/dev/development.md` sagen das. Auslöser: `push` auf `main` mit `paths:` – `tools/chemenu/filters/**`, `tools/chemenu/commands/raw/derive.py`, `tools/chemenu/commands/raw/accept.py`, `tools/chemenu/tests/test_raw_derive*.py`, `tools/chemenu/tests/binary_formats.py`, `tools/requirements.txt`, `.gitea/workflows/converters.yml` –, dazu `workflow_dispatch`. Ein Push ins private Repo löst nichts hier aus; dann von Hand starten. Der Runner arbeitet Läufe nacheinander ab: `converters` reiht sich hinter `ci.yml` und dessen pwsh-Job ein. 5. **Standard-CI:** `ci.yml` unverändert; der Test ist mit dem Modul umgezogen. Die Suite lief mit `--cov` auf 3064 bestanden, 4 übersprungen, 91,25 % gesamt; die Untergrenze 85 hält (CI Lauf 698). 6. **Release:** Statt `workflow_call` (in dieser Gitea-Instanz nicht belegt) trägt `release.yml` einen eigenen ersten Job `converters` mit denselben Schritten; `release` hat `needs: converters`. Für `-beta.N` entscheidet der Job `skip` aus `VERSION` und läuft nicht. Der Kommentar in `release.yml` verweist für die Begründung auf `converters.yml`. 7. **Anweisungen:** `dev-setup.md` (neuer Schritt 6, Klon und Zugang), `publish-and-ci.md` (Schritt 3: der `converters`-Lauf startet von selbst bei Konverter-Pfaden, wird abgewartet, rot zählt wie rotes CI; von Hand über `dispatch_workflow` auf `main`), `testing-conventions.md` (Scope). 8. **Doku:** `docs/dev/development.md` (Absatz zu `testfiles/`, Workflow-Liste, Release-Gate, Zugang); der Changelog-Eintrag nennt den Umzug. ## Beleg des Release-Gates Probelauf auf dem Wegwerf-Zweig `gate-probe-232` (inzwischen gelöscht), damit nie ein echter Release oder Tag entstehen kann: `VERSION` = `99.0.0` (ohne Suffix), in `release.yml` ist der Job `release` durch ein einziges `echo REACHED` ersetzt; gestartet per `dispatch_workflow` auf dem Zweig. - **Lauf 703, Harness-Schritt absichtlich rot** (kein Test passt zum Schlüsselwort, pytest Exit 5): `converters` rot, `release` übersprungen. - **Lauf 704, Harness-Schritt grün** (Teilmenge `-k "nist or ifg"`): `converters` grün, `release` gestartet und `REACHED` ausgegeben. - Danach: Zweig gelöscht; es gibt weder Tag noch Release `v99.0.0` (neuester Tag `v10.0.0`). ## Akzeptanzkriterien - [x] `torben/chemenu-testfiles` ist privat und enthält `corpus/` (alle bisherigen Dateien + die 13 neuen PDFs), `harness/` und `README.md` mit Herkunftstabelle. (Lauf 702 lädt es und führt das Harness aus.) - [x] In diesem Repo ist `testfiles/` nicht mehr versioniert und steht in `.gitignore`; ein frischer Klon ohne Zugang zum privaten Repo besteht `pytest`, `docs verify` und `instructions verify`. (CI Lauf 698 ohne `testfiles/`.) - [x] Ein Commit, der nur Stack-Dateien außerhalb der Pfade aus Punkt 4 ändert, startet `ci.yml`, aber nicht `converters.yml`. (`028f620`, nur `docs/dev/development.md`: Lauf 705 `ci.yml`, kein `converters`-Lauf.) - [x] ~~Ein Commit, der eine Datei unter `tools/chemenu/filters/` ändert, startet `converters.yml` von selbst~~ – **nach #231 verschoben**: Dieses Paket ändert nichts unter `filters/`, und für den Beleg allein eine Konverter-Änderung zu bauen, wäre eine Änderung ohne Inhalt. #231 ist die erste Änderung dort und trägt das Kriterium. Hier belegt ist derselbe Mechanismus über einen anderen Eintrag der `paths:`-Liste: `.gitea/workflows/converters.yml` startete den Workflow zweimal von selbst (Läufe 699, 707), und Lauf 707 lud das private Repo und führte das Harness über alle Dateien aus. - [x] `workflow_dispatch` von `converters.yml` funktioniert auf `main`. (Lauf 702.) - [x] Ein Release ohne Suffix entsteht nur nach grünem Harness-Lauf im selben Release-Lauf; bei Rot kein Tag. (Läufe 703 rot und 704 grün, oben.) - [x] Die Coverage-Untergrenze in `ci.yml` hält. (Lokal 91,25 % bei Untergrenze 85; CI Lauf 698 grün.) - [x] `dev-setup.md`, `publish-and-ci.md`, `testing-conventions.md` und `docs/dev/development.md` beschreiben den neuen Ablauf; `docs verify` findet keinen toten Link auf `testfiles/README.md`. - [x] CI und `converters.yml` auf dem veröffentlichten Commit grün. (`71170bc`: 698, 702; letzter Commit `c439dc6`: 706, 707.) ## Versionsteil Patch im laufenden Kandidaten: `10.1.0-beta.2`. `tools/` und `instructions/` liegen im Version-Gate. Drop-in: Workflows, `testfiles/` und `instructions/dev/` gehen mit `dist export` nicht in eine Instanz. Die beiden Nachzüge (`docs/`, `.gitea/`) liegen außerhalb des Gates und brauchten keinen Sprung. ## Kette Kette „Konverter-Qualität“ - Vorgänger: keiner - erstes Glied - Nachfolger: #233
torben added the prio/plannedsize/Marea/processkind/build labels 2026-10-14 11:05:14 +00:00
torben changed title from CI: Konverter-Tests gegen `testfiles/` in eigenen Workflow – Pfad-Trigger, Release-Prüfung, nicht mehr im Standard-Lauf to Konverter-Testkorpus und Test-Harness in eigenes privates Repo; eigener Workflow mit Pfad-Trigger, Release-Prüfung, nicht mehr im Standard-CI 2026-10-14 12:07:51 +00:00
Author
Owner

Changelog: Betreiber-Entscheidung ergänzt: Testkorpus und Harness ziehen in ein eigenes privates Repo (torben/chemenu-testfiles), das als gitignorierter Klon nach testfiles/ geladen wird. Dort dürfen auch nicht-öffentliche Quellen liegen. Damit neu: Umzug der 22 versionierten und 13 neuen Dateien, Zugang des Workflows zum privaten Repo (Job-Token oder 1Password), dev-setup.md. Der pytest-Marker wandert mit dem Modul. Erstes Glied der Kette „Konverter-Qualität“ (#232 → #233 → #231 → #234).

**Changelog:** Betreiber-Entscheidung ergänzt: Testkorpus und Harness ziehen in ein eigenes privates Repo (`torben/chemenu-testfiles`), das als gitignorierter Klon nach `testfiles/` geladen wird. Dort dürfen auch nicht-öffentliche Quellen liegen. Damit neu: Umzug der 22 versionierten und 13 neuen Dateien, Zugang des Workflows zum privaten Repo (Job-Token oder 1Password), `dev-setup.md`. Der pytest-Marker wandert mit dem Modul. Erstes Glied der Kette „Konverter-Qualität“ (#232 → #233 → #231 → #234).
Author
Owner

Bau-Sitzung /stack-build: Konverter-Testkorpus und Harness liegen im privaten Repo torben/chemenu-testfiles; hier sind sie entfernt (Commit 71170bc, 10.1.0-beta.2). Neu: Workflow converters.yml (Pfad-Trigger + workflow_dispatch), Release-Gate als erster Job in release.yml, vier Anweisungs- und Doku-Dateien nachgezogen. Verifiziert: ci.yml 698, release.yml 700, converters.yml 702 grün; Release-Gate per Wegwerf-Zweig belegt (703 rot → release übersprungen, 704 grün → REACHED; Zweig gelöscht, kein Tag v99.0.0). Abweichung vom Entwurf: ${{ gitea.token }} genügt, sobald der repo-übergreifende Zugriff im privaten Repo gesetzt ist, ein 1Password-Token entfällt. Offen: die beiden Pfad-Filter-Kriterien brauchen echte Commits auf main (AGENTS.md-only; Änderung unter filters/); die Herkunftsspalte der 13 neuen PDFs in der README des privaten Repos ist vom Betreiber zu ergänzen.

Bau-Sitzung `/stack-build`: Konverter-Testkorpus und Harness liegen im privaten Repo `torben/chemenu-testfiles`; hier sind sie entfernt (Commit `71170bc`, `10.1.0-beta.2`). Neu: Workflow `converters.yml` (Pfad-Trigger + `workflow_dispatch`), Release-Gate als erster Job in `release.yml`, vier Anweisungs- und Doku-Dateien nachgezogen. Verifiziert: `ci.yml` 698, `release.yml` 700, `converters.yml` 702 grün; Release-Gate per Wegwerf-Zweig belegt (703 rot → `release` übersprungen, 704 grün → `REACHED`; Zweig gelöscht, kein Tag `v99.0.0`). Abweichung vom Entwurf: `${{ gitea.token }}` genügt, sobald der repo-übergreifende Zugriff im privaten Repo gesetzt ist, ein 1Password-Token entfällt. Offen: die beiden Pfad-Filter-Kriterien brauchen echte Commits auf `main` (AGENTS.md-only; Änderung unter `filters/`); die Herkunftsspalte der 13 neuen PDFs in der README des privaten Repos ist vom Betreiber zu ergänzen.
Author
Owner

Abschluss /stack-close: Body im Endzustand, alle Kriterien erledigt; das filters/-Kriterium ist mit Begründung nach #231 verschoben. Veralteter Text: Kopf von converters.yml und docs/dev/development.md beschrieben noch den 1Password-Ausweg statt der Freigabe im privaten Repo. Nachgezogen in 028f620 (CI 705 grün, belegt zugleich: Commit außerhalb der paths: startet converters.yml nicht) und c439dc6 (CI 706, converters.yml von selbst 707, beide grün). Kein Versionssprung nötig (docs/, .gitea/). Sonst nichts veraltet: tools/CONTRACT.md und die Stage-Contracts sind unberührt, keine Installationsanweisung geändert.

Abschluss `/stack-close`: Body im Endzustand, alle Kriterien erledigt; das `filters/`-Kriterium ist mit Begründung nach #231 verschoben. Veralteter Text: Kopf von `converters.yml` und `docs/dev/development.md` beschrieben noch den 1Password-Ausweg statt der Freigabe im privaten Repo. Nachgezogen in `028f620` (CI 705 grün, belegt zugleich: Commit außerhalb der `paths:` startet `converters.yml` nicht) und `c439dc6` (CI 706, `converters.yml` von selbst 707, beide grün). Kein Versionssprung nötig (`docs/`, `.gitea/`). Sonst nichts veraltet: `tools/CONTRACT.md` und die Stage-Contracts sind unberührt, keine Installationsanweisung geändert.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: torben/chemenu#232