Files
tessera-ctl/.planning/quick/260917-jdh-ci-job-desktop-ueberspringen-wenn-apps-d/260917-jdh-SUMMARY.md
T
schalli efbd6e8974
Tessera CI/CD / Lint & Type Check (push) Successful in 53s
Tessera CI/CD / Tests (push) Successful in 1m5s
Tessera CI/CD / Desktop-Pakete bauen (push) Successful in 18s
Tessera CI/CD / Build & Publish Images (push) Successful in 4m22s
docs(quick-260917-kgc): Aktenstand — Update in der Desktop-App, alle Nachweise erbracht, Wiedereinstieg bereinigt
Quick 260917-kgc (Plan/Recherche/Bericht/Verifikation) und Schnellfix a6d1a64
in der Quick-Task-Tabelle; Nachweise in allen sechs Berichten nachgetragen
(Playwright lokal, CI-Laeufe 382-384, Windows-Test-VM: In-App-Update
7479cb4 -> a6d1a64). Ueberholte .continue-here-Dateien entfernt,
Desktop-Client-Todo geschlossen.

Dieser Push aendert nichts unter apps/desktop -- er ist zugleich der
Beweisfall 2 des CI-Desktop-Skips (Pakete aus dem Zwischenspeicher).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_016g2npLxzH5gZpg8s2S6vKh
2026-09-18 11:29:14 +02:00

12 KiB

phase, plan, subsystem, tags, requires, provides, affects, actuals, tech-stack, key-files, key-decisions, requirements-completed, coverage, duration, completed, status
phase plan subsystem tags requires provides affects actuals tech-stack key-files key-decisions requirements-completed coverage duration completed status
quick-260917-jdh 01 ci
gitea-actions
posix-sh
tauri
actions-cache
ci-cd
.gitea/scripts/desktop-stamp.sh — Unterbefehle stamp (Stempel aus Version + letztem Commit an den Desktop-Pfaden) und check (Manifest-/Pruefsummen-Gate fuer einen restaurierten desktop-dist/)
ci.yml Job desktop: stamp -> actions/cache/restore (Stempel-Schluessel, nur main) -> check -> 13 bedingte Bau-Schritte -> Stempel-Save -> unveraenderte Uebergabe an publish
ci
desktop-build
docs
tokens tasks commits plan_head_before
5352 2 2 29db4c0
added patterns
Zwei-Ebenen-Cache-Schluessel fuer denselben Job: desktop-dist-stamp-<Version>-<SHA> als Ueberspring-Gate (nur main, kein restore-keys, voller 40-stelliger SHA gegen act_runner-Praefixsuche) neben dem bestehenden desktop-dist-<gitea.sha> fuer die Uebergabe an publish, die immer laeuft
if: steps.reuse.outputs.reuse != 'true' an jedem der 13 bestehenden Bau-Schritte statt eines umschliessenden Bedingungs-Jobs — haelt die Schritte inhaltlich byteidentisch und einzeln im Gitea-Actions-Log sichtbar
created modified
.gitea/scripts/desktop-stamp.sh
.gitea/workflows/ci.yml
docs/anleitung-betrieb.md
docs/ci-cd-setup.md
docs/anleitung-entwicklung.md
CHANGELOG.md
pnpm-lock.yaml bewusst NICHT in DESKTOP_PATHS: die Tauri-CLI-Version haengt an apps/desktop/package.json (darin enthalten), der Desktop-Bau liest ausserhalb von apps/desktop keine Werkstatt-Datei (frontendDist ist ../src innerhalb von apps/desktop).
stamp-cache (actions/cache/restore@v4) bewusst OHNE restore-keys: act_runner sucht auch zum Hauptschluessel per Praefix: ein aelterer, praefixgleicher Stand darf nie als Treffer gelten. Der volle 40-stellige Commit-SHA am Schluesselende macht das unmoeglich.
skip_allowed ausschliesslich bei GITHUB_REF == refs/heads/main: Tags v* suchen und legen nichts unter dem Stempel-Schluessel ab, damit nie Live-Pakete (reine Version, Kanal live) unter einem Beta-Stempel landen; check verwirft zusaetzlich channel != beta als zweite Absicherung.
desktop-stamp.sh selbst gehoert zu DESKTOP_PATHS: eine Aenderung an der Stempelregel muss selbst einen Neubau ausloesen, sonst koennte ein alter, nicht mehr zur neuen Regel passender Cache-Treffer unbemerkt uebernommen werden.
QUICK-260917-JDH
id description requirement verification human_judgment
T1 desktop-stamp.sh stamp liefert Stempel <Version>-<voller SHA>, version, sha7, skip_allowed (true nur auf main); GITHUB_OUTPUT erhaelt alle vier Schluessel; leere Commit-Historie zu den Desktop-Pfaden fuehrt zu Exit 1 QUICK-260917-JDH
kind ref status
script lokale Probe: sh -n, DESKTOP_TAG=v1.2.0 GITHUB_REF=refs/heads/main|refs/tags/v1.2.0, GITHUB_OUTPUT-Datei pass
false
id description requirement verification human_judgment
T2 desktop-stamp.sh check gibt reuse=true nur bei CACHE_HIT=true, gueltigem/passendem Manifest (Kanal beta, Version, beide Dateinamen) und uebereinstimmender Groesse+sha256 je Datei; sonst reuse=false und Aufraeumen (AppImage/exe/manifest.json entfernt) QUICK-260917-JDH
kind ref status
script lokale Probe: Mini-desktop-dist im Scratchpad — vollstaendiges Manifest (reuse=true), veraenderte .exe-Datei (reuse=false, Manifest entfernt), CACHE_HIT=false (reuse=false) pass
false
id description requirement verification human_judgment
T3 ci.yml Job desktop: Schritte stamp/stamp-cache/reuse an Index 1-3; 13 Bau-Schritte mit if: steps.reuse.outputs.reuse != 'true' und sonst byteidentischem Inhalt; Stempel-Save vor unveraenderter Uebergabe an publish; quality/test/publish und on: unveraendert gegenueber 38c1400 QUICK-260917-JDH
kind ref status
script node -e (js-yaml-Tiefenvergleich gegen git show 38c1400:.gitea/workflows/ci.yml) — 19 Schritte im Job desktop, alle Struktur- und Inhaltspruefungen gruen pass
false
id description requirement verification human_judgment
T4 Doku (Betriebshandbuch Kap. 10, CI-Runbook Abschnitt 4/6, Entwicklungsanleitung) und ein CHANGELOG-Stichpunkt unter Unveroeffentlicht/Geaendert QUICK-260917-JDH
kind ref status
script command grep-Kette aus Task 2 (15 Einzelpruefungen) — alle gruen (DOCS-OK) pass
false
id description requirement verification human_judgment rationale
T5 Realer CI-Nachweis: Push ohne Desktop-Aenderung ueberspringt den Bau, Push mit Desktop-Aenderung baut neu QUICK-260917-JDH
true Der reale act_runner-Lauf (echter Cache-Server, echter Push) ist laut Plan-Objective ausdruecklich kein Executor-Task — Nachweis durch den Orchestrator nach dem Push, siehe Abschnitt unten.
~20min 2026-09-17 complete

Quick Task 260917-jdh: CI-Job desktop ueberspringt den Bau bei unveraendertem Desktop-Stand Summary

Neues Skript desktop-stamp.sh (Stempel aus Version + letztem Desktop-Commit, Manifest-/Pruefsummen-Gate) plus Job desktop in ci.yml, der 13 Bau-Schritte per if: ueberspringt, wenn zum Stempel bereits geprueft-vollstaendige Pakete im Zwischenspeicher liegen

Performance

  • Duration: ~20 min
  • Completed: 2026-09-17T12:28:54Z
  • Tasks: 2/2
  • Files modified: 6 (1 neu, 5 geaendert)

Accomplishments

  • .gitea/scripts/desktop-stamp.sh (POSIX sh, set -eu, kennt kein Secret) mit den Unterbefehlen stamp (Stempel <Version>-<voller SHA> aus desktop-version.sh --print + git log -1 ueber DESKTOP_PATHS, Ausgaben stamp/version/sha7/skip_allowed nach stdout und GITHUB_OUTPUT) und check (Manifest, Kanal beta, Version, Dateiname/Groesse/sha256 je Plattform — nur bei vollstaendiger Uebereinstimmung reuse=true, sonst Aufraeumen + reuse=false)
  • ci.yml Job desktop: drei neue Schritte stamp/stamp-cache/reuse direkt nach dem Checkout (vor den teuren setup-node/apt/rustup-Schritten), alle 13 bestehenden Bau-Schritte tragen jetzt if: steps.reuse.outputs.reuse != 'true' bei sonst unveraendertem Inhalt, neuer Schritt „Pakete unter dem Stempel ablegen" vor der unveraenderten „Uebergabe an publish"
  • Vier Doku-Stellen ergaenzt (Betriebshandbuch Kap. 10 mit neuem Unterabschnitt + Fehlerbild, CI-Runbook Abschnitt 4/6, Entwicklungsanleitung) und ein CHANGELOG-Stichpunkt unter Unveroeffentlicht/Geaendert
  • Alle lokalen Proben (Skript-Verhalten, GITHUB_OUTPUT, drei check-Faelle, js-yaml-Strukturvergleich gegen den Ausgangsstand 38c1400, 15 Doku-Greps) gruen; quality/test/publish und on: byteidentisch zum Ausgangsstand

Task Commits

Each task was committed atomically:

  1. Task 1: desktop-stamp.sh (Stempel + Cache-Pruefung) und Job desktop ueberspringt den Bau bei Treffer - 8c4aaa5 (ci)
  2. Task 2: Doku (Betriebshandbuch Kap. 10, CI-Runbook Abschnitt 4/6, Entwicklungsanleitung) und CHANGELOG - e7633e1 (docs)

Plan metadata: wird vom Orchestrator nach diesem SUMMARY committet.

Files Created/Modified

  • .gitea/scripts/desktop-stamp.sh - neu; Unterbefehle stamp/check, Konstante DESKTOP_PATHS, Helfer out() fuer stdout+GITHUB_OUTPUT
  • .gitea/workflows/ci.yml - Job desktop: Schritte stamp/stamp-cache/reuse/„Pakete unter dem Stempel ablegen" neu; if: an den 13 bestehenden Bau-Schritten; Kopfkommentar um quick-260917-jdh-Absatz ergaenzt; quality/test/publish/on: unveraendert
  • docs/anleitung-betrieb.md - Kap. 10: neuer Unterabschnitt „Wann gebaut wird und wann Pakete uebernommen werden", Halbsatz am Job-Dauer-Satz, neue Fehlerbilder-Zeile
  • docs/ci-cd-setup.md - Abschnitt 4: Absatz „Ueberspringen bei unveraendertem Desktop", Ergaenzung zu Schritt 7; Abschnitt 6: neuer Fehlerbehebungs-Eintrag
  • docs/anleitung-entwicklung.md - Absatz zum CI-Ueberspringen nach „Desktop-App lokal bauen", inkl. lokaler Stempel-Probe
  • CHANGELOG.md - ein Stichpunkt unter ## Unveroeffentlicht / ### Geaendert

Decisions Made

  • pnpm-lock.yaml bewusst nicht in DESKTOP_PATHS — begruendet in Skript-Kopfkommentar und docs/ci-cd-setup.md.
  • stamp-cache ohne restore-keys, voller 40-stelliger SHA am Schluesselende — verhindert einen Praefix-Treffer eines aelteren Standes durch die act_runner-Cache-Suche.
  • skip_allowed ausschliesslich bei refs/heads/main; Tags suchen/legen nichts unter dem Stempel-Schluessel ab.
  • desktop-stamp.sh selbst ist Teil von DESKTOP_PATHS, damit eine Aenderung der Stempelregel selbst einen Neubau ausloest.

Deviations from Plan

None - plan executed exactly as written.

Issues Encountered

  • Zwei Doku-Saetze (Job-Dauer in anleitung-betrieb.md, Einleitungssatz in anleitung-entwicklung.md) wurden beim ersten Schreiben durch Zeilenumbrueche in der Markdown-Quelle getrennt, wodurch die exakten Grep-Muster aus <verify> zunaechst nicht trafen. Beide Saetze wurden je in eine durchgehende Zeile zusammengefasst; alle 15 Doku-Pruefungen sind danach gruen. Kein Code-Problem, reine Formatierungskorrektur ohne inhaltliche Aenderung.

User Setup Required

None - no external service configuration required.

Nachweis durch Orchestrator (offen)

Der echte CI-Beweis ist laut Plan-Objective bewusst kein Executor-Task und steht nach dem Push noch aus. Drei zu beobachtende Faelle:

  1. Dieser Push selbst baut. ci.yml/desktop-stamp.sh stehen in der eigenen Pfadliste DESKTOP_PATHS — der erste Lauf nach diesem Merge muss den Job desktop vollstaendig durchlaufen und legt dabei desktop-dist-stamp-1.2.0-<SHA-dieses-Standes> im Zwischenspeicher des Runners ab.
  2. Ein folgender Push ohne Desktop-Aenderung ueberspringt den Bau. Schritt „Gefundene Pakete pruefen" meldet im Log „Desktop unveraendert seit <sha7>: Pakete … aus dem Zwischenspeicher", die 13 Bau-Schritte erscheinen im Gitea-Actions-Lauf als uebersprungen, der Job desktop ist unter einer Minute fertig, publish bleibt gruen, und GET /api-proxy/desktop/latest auf alpha nennt weiterhin den aelteren Beta-Commit-Suffix.
  3. Ein Push mit einer Aenderung unter apps/desktop/ baut wieder vollstaendig und legt einen neuen Stempel-Schluessel ab (alter Schluessel bleibt bis zum Ablauf im Zwischenspeicher erhalten, wird aber nie wieder getroffen).

Zusaetzlicher Beobachtungspunkt aus dem Plan-Checker-Hinweis: Das Verhalten von actions/cache/save@v4 bei einem bereits belegten Schluessel (Fall 1 nach einem zuvor schon vorhandenen Stempel, z. B. nach einem Wiederholungslauf) ist auf diesem Runner nicht separat gemessen — laut Gitea-/actions-cache-Dokumentation loest das nur eine Info-Meldung aus, keinen Fehler; beim ersten realen Lauf im Log gegenpruefen.

Next Phase Readiness

  • Kein Blocker fuer weitere Arbeit. Die drei parallelen Quick-Tasks (Favoriten-Widget-Favicon, Favoriten-Sortierung/Bildmarke, Desktop-Client-Serveradresse) sind von dieser Aenderung nicht betroffen — sie ruehren .gitea/, docs/ (ausser den hier bearbeiteten Stellen) oder die CI-Konfiguration nicht an.
  • Naechster inhaltlicher Schritt ist der Orchestrator-Nachweis oben, nicht ein weiterer Plan.

Quick Task: 260917-jdh Completed: 2026-09-17

Self-Check: PASSED

All 6 claimed source/doc files found on disk; both task commits (8c4aaa5, e7633e1) found in git history.

Nachweis durch Orchestrator — Ergebnis

  • Fall 1 (Lauf 382, Push 5a444ec): Stempel 1.2.0-29c132e…, kein Zwischenspeicher → gebaut, Cache saved with key: desktop-dist-stamp-….
  • Fall 3 (Lauf 383, Push 7479cb4 mit Desktop-Aenderung): Stempel 1.2.0-7004b5b… neu → Neubau; Lauf 384 (a6d1a64) ebenso.
  • Fall 2 (Docs-Push ohne Desktop-Aenderung ueberspringt): siehe Aktenstand-Push nach diesem Eintrag (Lauf 385).
  • cache/save bei bereits belegtem Schluessel: bisher nicht aufgetreten (jeder Lauf hatte einen neuen Stempel) — weiter beobachten.