Repository navigation
Add snapshot-only storage for generated data branches - #436
Merged
Merged
Conversation
Preserve current CI measurements and dashboard delivery state while allowing generated branches to keep a single parentless snapshot. Gate activation until all dashboard writers support snapshot ordering and explicit push leases. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Pull request dashboard statusMerged · refreshed 2026-10-13 15:21 UTC Status above doesn't look right?
|
Contributor
There was a problem hiding this comment.
Copilot review overview
🟡 Changes recommended
Fresh checkouts can accept history-bearing commits after cutover and reset snapshot generations.
Review effort: Balanced
Findings: 1
Open (1)
What changed in this PR
Adds opt-in parentless snapshots for generated dashboard and queue-data branches to reduce clone size while preserving current state.
Changes:
- Adds snapshot generation, explicit push leases, and retry handling.
- Wires activation into workflows and the queue collector.
- Adds tests and operational cutover/recovery documentation.
| File | Description |
|---|---|
pull-request-dashboard/README.md |
Documents dashboard snapshot storage. |
github-actions-queue/README.md |
Documents queue-data snapshots. |
.github/workflows/pull-request-dashboard-repo.yml |
Passes the activation variable. |
.github/workflows/pull-request-dashboard-refresh-author-nudges.yml |
Passes the activation variable. |
.github/workflows/pull-request-dashboard-drain.yml |
Passes the activation variable. |
.github/workflows/github-actions-queue-test.yml |
Expands queue test triggers. |
.github/workflows/github-actions-queue-collector.yml |
Uses explicit leases and snapshot commits. |
.github/scripts/pull-request-dashboard/WEBHOOK_SETUP.md |
Documents cutover and recovery. |
.github/scripts/pull-request-dashboard/test_state_branch.py |
Updates state-branch tests. |
.github/scripts/pull-request-dashboard/test_rollout.py |
Tests workflow activation wiring. |
.github/scripts/pull-request-dashboard/test_data_snapshots.py |
Tests snapshot behavior and concurrency. |
.github/scripts/pull-request-dashboard/state_branch.py |
Implements the snapshot protocol. |
.github/scripts/github-actions-queue/DATA_BRANCH_README.md |
Describes generated branch semantics. |
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Contributor
There was a problem hiding this comment.
Copilot review overview
🔵 Needs a closer look
The distributed Git snapshot protocol and irreversible operational cutover warrant final human validation despite comprehensive tests.
Review effort: Balanced
Findings: None
Resolved since last review (1)
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
…pshot mode Copilot comment: This deepens the legacy queue-data branch to its entire history on every hourly run even while snapshot mode is intentionally unset during the required rollout. Because that history is the multi-gigabyte data this change is meant to compact, pre-cutover collection can now consume substantial time and disk on every fresh runner. Pass the activation variable to this step and only fetch ancestry when snapshot mode is enabled; ordinary append mode only needs the depth-one head. Copilot comment: <!-- ccr-overview-v2 --> ## Copilot review overview ### 🟡 Changes recommended The collector unnecessarily downloads the entire multi-gigabyte legacy history on every pre-cutover run. **Review effort:** Balanced **Findings:** 1 <picture><source media="(prefers-color-scheme: dark)" srcset="https://github.githubassets.com/static/images/icons/copilot-code-review/medium-v2-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://github.githubassets.com/static/images/icons/copilot-code-review/medium-v2-light.svg"><img src="https://github.githubassets.com/static/images/icons/copilot-code-review/medium-v2-light.png" alt="Medium severity" width="62" height="18" align="texttop"></picture> <details open> <summary><strong>Open (1)</strong></summary> - <picture><source media="(prefers-color-scheme: dark)" srcset="https://github.githubassets.com/static/images/icons/copilot-code-review/medium-v2-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://github.githubassets.com/static/images/icons/copilot-code-review/medium-v2-light.svg"><img src="https://github.githubassets.com/static/images/icons/copilot-code-review/medium-v2-light.png" alt="Medium severity" width="62" height="18" align="texttop"></picture> [Avoid fetching full queue history when snapshot mode is disabled](#discussion_r4175743106) · New </details> <details> <summary><strong>Resolved since last review (1)</strong></summary> - <picture><source media="(prefers-color-scheme: dark)" srcset="https://github.githubassets.com/static/images/icons/copilot-code-review/high-v2-dark.svg"><source media="(prefers-color-scheme: light)" srcset="https://github.githubassets.com/static/images/icons/copilot-code-review/high-v2-light.svg"><img src="https://github.githubassets.com/static/images/icons/copilot-code-review/high-v2-light.png" alt="High severity" width="62" height="18" align="texttop"></picture> [Reject snapshot ancestry to preserve monotonic generations](#discussion_r4171386289) </details> Analysis: Pass DATA_BRANCH_SNAPSHOTS to the checkout step and gate the full-depth fetch on it being true, since the ancestry check in commit-data only runs in snapshot mode. Upsides: Avoids downloading multi-gigabyte history on every pre-cutover hourly run. Downsides: If snapshot mode is later turned off, no ancestry is available, which commit-data already forbids for snapshot branches. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
trask
commented
Oct 12, 2026
Co-authored-by: trask <218610+trask@users.noreply.github.com>
Preserve queue-owned live and maintenance execution alongside opt-in data snapshots. Pass the activation variable to the owned drain and guard its propagation. Reconcile deployment guidance so snapshot cutover pauses both lanes and preserves promoted readers, leases, and delivery receipts. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
trask
marked this pull request as ready for review
October 12, 2026 22:33
mx-psi
approved these changes
Oct 13, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.


Add opt-in snapshot-only storage for CI queue data and PR dashboard state to reduce clone size without discarding historical CI measurements or delivery acknowledgements. Addresses #434.
After promoting snapshot-capable code to all dashboard writers and completing the documented paused-writer cutover, enable it with:
Each generated branch then retains one complete, parentless snapshot. Explicit push leases prevent stale workers from overwriting accepted updates, and snapshot generations prevent stale fetches from rolling state backward.
Activation defaults to disabled. The cutover procedure includes an external backup, tree verification, and recovery guidance. Existing clones do not shrink automatically, and other refs to old data can retain history.
Refresh schedules and the stalled-run watchdog remain unchanged.