Skip to content

ci(integrity): recompute-and-publish, honest attribution scope (Draft) - #95

Draft
Waschtl904 wants to merge 3 commits into
mainfrom
chore/integrity-workflow-race-fix
Draft

ci(integrity): recompute-and-publish, honest attribution scope (Draft)#95
Waschtl904 wants to merge 3 commits into
mainfrom
chore/integrity-workflow-race-fix

Conversation

@Waschtl904

@Waschtl904 Waschtl904 commented Sep 10, 2026

Copy link
Copy Markdown
Owner

Recompute-and-publish. Kein Rebase. Jeder Versuch: frischer origin/main via fetch, INTEGRITY.md aus genau diesem Snapshot per scripts/build_integrity.sh neu berechnen, byte-genaue Selbstpruefung per scripts/verify_integrity.sh, dann ausschliesslich Fast-forward-Push. Bei Ablehnung: lokalen Commit verwerfen und neu starten. Drei Versuche.

Nach ausgeschoepften Versuchen: Remote-Manifest unabhaengig gegen Remote-Quellen pruefen. Nur bei OK exit 0, sonst exit 1.

Zusaetzlich in diesem Aufsatz-Commit ebaa488:

  • Pflichtdateipruefung im Generator (fehlt eine Eingabe -> exit 1, keine MISSING-Zeile).
  • git add -- INTEGRITY.md vor No-op-Test.
  • INTEGRITY.md selbst im paths-Filter.
  • concurrency-Kommentar praezisiert.
  • ATTRIBUTION.md: HTML-/LaTeX-Kommentar-Marker; Reichweite von CC-BY-4.0 auf geschuetzte Ausdrucksform beschraenkt.
  • INTEGRITY.md aus dem vollstaendigen PR-Snapshot regeneriert.

Vorgaengerstand 69dc670 bleibt als Pruefanker.

- Rebase-and-retry up to three times on non-fast-forward push
- Add concurrency group 'integrity-main' (no cancel-in-progress) so
  workflow_dispatch and push runs serialize on main
- On persistent conflict, exit gracefully: the sibling run has
  authoritative INTEGRITY.md
@sourcery-ai

sourcery-ai Bot commented Sep 10, 2026

Copy link
Copy Markdown

Leitfaden für Reviewer

Der Workflow serialisiert jetzt Integritätsläufe und verwendet eine Push-Logik mit Rebase und erneuten Versuchen. Wenn ein paralleler Lauf die maßgebliche Aktualisierung von INTEGRITY.md bereits veröffentlicht hat, wird der Vorgang erfolgreich abgeschlossen. Die mathematische Inhaltsgenerierung bleibt unverändert.

Sequenzdiagramm für die tolerante Veröffentlichung von Integritätsaktualisierungen bei parallelen Läufen

sequenceDiagram
    participant Workflow
    participant Origin

    Workflow->>Origin: git push
    alt push succeeds
        Origin-->>Workflow: accepted
        Workflow-->>Workflow: exit 0
    else push rejected
        Workflow->>Origin: git fetch origin main
        Workflow->>Workflow: git rebase origin/main
        alt rebase succeeds
            Workflow->>Origin: git push
            Origin-->>Workflow: accepted or rejected
        else rebase conflict
            Workflow->>Workflow: git rebase --abort
            Workflow-->>Workflow: exit 0
        end
    end
Loading

Änderungen auf Dateiebene

Änderung Details Dateien
Die Veröffentlichung des Integritätsbaums gegenüber parallelen Workflow-Läufen resilient machen.
  • Abgelehnte Pushes bis zu drei Mal wiederholen, nachdem ein Fetch und ein Rebase auf origin/main durchgeführt wurden.
  • Den Rebase abbrechen und den Vorgang erfolgreich beenden, wenn ein Konflikt darauf hinweist, dass ein paralleler Lauf die maßgebliche Aktualisierung enthält.
  • Das Ausschöpfen der Wiederholungsversuche als erfolgreichen, ordnungsgemäßen Abschluss behandeln, anstatt den Workflow fehlschlagen zu lassen.
.github/workflows/integrity.yml
Integritäts-Workflow-Läufe auf dem Main-Branch serialisieren, ohne bereits ausstehende Arbeit abzubrechen.
  • Die Concurrency-Gruppe integrity-main hinzufügen.
  • cancel-in-progress deaktivieren, damit parallele Dispatch- und Push-Läufe in die Warteschlange gestellt werden.
.github/workflows/integrity.yml

Tipps und Befehle

Interaktion mit Sourcery

  • Eine neue Prüfung auslösen: Kommentiere @sourcery-ai review im Pull Request.
  • Diskussionen fortsetzen: Antworte direkt auf die Review-Kommentare von Sourcery.
  • Ein GitHub-Issue aus einem Review-Kommentar erstellen: Bitte Sourcery, durch eine Antwort auf einen Review-Kommentar ein Issue zu erstellen. Du kannst auch mit @sourcery-ai issue auf einen Review-Kommentar antworten, um daraus ein Issue zu erstellen.
  • Einen Pull-Request-Titel generieren: Schreibe @sourcery-ai an beliebiger Stelle in den Titel des Pull Requests, um jederzeit einen Titel zu generieren. Du kannst auch @sourcery-ai title im Pull Request kommentieren, um den Titel jederzeit (neu) zu generieren.
  • Eine Zusammenfassung des Pull Requests generieren: Schreibe @sourcery-ai summary an beliebiger Stelle in den Text des Pull Requests, um jederzeit genau an der gewünschten Stelle eine PR-Zusammenfassung zu generieren. Du kannst auch @sourcery-ai summary im Pull Request kommentieren, um die Zusammenfassung jederzeit (neu) zu generieren.
  • Den Leitfaden für Reviewer generieren: Kommentiere @sourcery-ai guide im Pull Request, um den Leitfaden für Reviewer jederzeit (neu) zu generieren.
  • Alle Sourcery-Kommentare auflösen: Kommentiere @sourcery-ai resolve im Pull Request, um alle Sourcery-Kommentare aufzulösen. Dies ist nützlich, wenn du bereits auf alle Kommentare eingegangen bist und sie nicht mehr sehen möchtest.
  • Alle Sourcery-Reviews verwerfen: Kommentiere @sourcery-ai dismiss im Pull Request, um alle vorhandenen Sourcery-Reviews zu verwerfen. Dies ist besonders nützlich, wenn du mit einer neuen Prüfung von vorn beginnen möchtest – vergiss nicht, @sourcery-ai review zu kommentieren, um eine neue Prüfung auszulösen!

Deine Erfahrung anpassen

Rufe dein Dashboard auf, um:

  • Review-Funktionen wie die von Sourcery generierte Pull-Request-Zusammenfassung, den Leitfaden für Reviewer und weitere Funktionen zu aktivieren oder zu deaktivieren.
  • Die Reviewsprache zu ändern.
  • Benutzerdefinierte Review-Anweisungen hinzuzufügen, zu entfernen oder zu bearbeiten.
  • Weitere Review-Einstellungen anzupassen.

Hilfe erhalten

Original review guide in English

Reviewer's Guide

The workflow now serializes integrity runs and uses rebase-and-retry push logic, gracefully succeeding when a concurrent run has already published the authoritative INTEGRITY.md update; the mathematical/content generation is unchanged.

Sequence diagram for race-tolerant integrity publishing

sequenceDiagram
    participant Workflow
    participant Origin

    Workflow->>Origin: git push
    alt push succeeds
        Origin-->>Workflow: accepted
        Workflow-->>Workflow: exit 0
    else push rejected
        Workflow->>Origin: git fetch origin main
        Workflow->>Workflow: git rebase origin/main
        alt rebase succeeds
            Workflow->>Origin: git push
            Origin-->>Workflow: accepted or rejected
        else rebase conflict
            Workflow->>Workflow: git rebase --abort
            Workflow-->>Workflow: exit 0
        end
    end
Loading

File-Level Changes

Change Details Files
Make integrity-tree publishing resilient to concurrent workflow runs.
  • Retry rejected pushes up to three times after fetching and rebasing onto origin/main.
  • Abort the rebase and exit successfully when a conflict indicates a sibling run has the authoritative update.
  • Treat exhaustion of retries as a graceful, successful outcome rather than failing the workflow.
.github/workflows/integrity.yml
Serialize integrity workflow runs on the main branch without cancelling queued work.
  • Add the integrity-main concurrency group.
  • Disable cancel-in-progress so parallel dispatch and push runs are queued.
.github/workflows/integrity.yml

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

…ution language

- Workflow rewrite: always fetch fresh origin/main, rebuild manifest
  from that snapshot, self-verify with scripts/verify_integrity.sh,
  publish fast-forward only. Never rebase a pre-built manifest.
- On persistent push rejection: fetch remote and verify remote manifest
  against remote sources; fail loud if it does not match.
- Add scripts/build_integrity.sh (deterministic, no timestamp) and
  scripts/verify_integrity.sh (byte-exact check).
- Add workflow file and scripts to paths filter so this PR itself
  triggers the workflow.
- .canary: acknowledge that a token hit is an investigative lead,
  not a training-data proof.
- ATTRIBUTION.md: scope CC-BY-4.0 attribution claim to expression
  covered by copyright; explicit statement that markers are not
  cryptographic signatures.
…SSING branch

- build_integrity.sh: pre-flight check exits 1 on any missing/unreadable
  required file; MISSING row removed.
- workflow: 'git add -- INTEGRITY.md' before 'git diff --cached --quiet'
  so a newly created (untracked) manifest is actually published; add
  INTEGRITY.md itself to paths filter so manifest-only edits trigger.
- workflow comment: correct scope of cancel-in-progress: false.
- ATTRIBUTION.md: HTML-/LaTeX-Kommentar-Marker + cross-ref to scope section.
- INTEGRITY.md: regenerated from the full PR snapshot; .canary and
  ATTRIBUTION.md hash rows now match the actual head bytes.
@Waschtl904 Waschtl904 changed the title ci(integrity): make workflow race-tolerant (Draft) ci(integrity): recompute-and-publish, honest attribution scope (Draft) Sep 10, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant