-
Notifications
You must be signed in to change notification settings - Fork 1
substrate(siblings): port-with-DST + 0-diff invariant + nightly→per-merge trigger (#43+#44) #644
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merged
AceHack
merged 5 commits into
main
from
lfg/sibling-pr-43-44-port-with-dst-and-slim-trigger
Apr 27, 2026
Merged
Changes from all commits
Commits
Show all changes
5 commits
Select commit
Hold shift + click to select a range
c51b7bf
substrate: port-with-DST discipline + AceHack-LFG diff-minimization i…
AceHack bc63fff
ci: trigger low-memory verification on every merge to main + nightly …
AceHack 827159c
fix(threads): address Copilot P1 + Codex P2 on LFG #644
AceHack 22f30f1
Merge remote-tracking branch 'origin/main' into lfg/sibling-pr-43-44-…
AceHack 40be420
fix(threads): per-commit concurrency + remove ubuntu-slim from gate.y…
AceHack File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
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
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
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,140 @@ | ||
| # Low-memory verification (ubuntu-slim). | ||
| # | ||
| # Runs the full `dotnet build` + `dotnet test` workload on the | ||
| # 1-vCPU / 5GB-RAM `ubuntu-slim` runner class on every push to | ||
| # `main` (in practice every merge — direct pushes blocked by | ||
| # branch protection), on the daily 06:00 UTC schedule, and via | ||
| # manual `workflow_dispatch`. Goal: detect drift that would break | ||
| # Zeta on resource-constrained environments before contributors | ||
| # hit it. | ||
| # | ||
| # Filename note: AceHack #45 renames this file to `low-memory.yml` | ||
| # (the cadence is no longer just nightly). That rename will sync | ||
| # to LFG via a follow-up PR; this file's name is preserved here | ||
| # to keep the LFG sibling sync minimal-scope. | ||
| # | ||
| # Why post-merge + nightly instead of per-PR (maintainer 2026-04-27): | ||
| # The ubuntu-slim leg takes ~10+ minutes vs ~1.5 minutes on the | ||
| # regular ubuntu-24.04 runner — ~7x slower — and frequently times | ||
| # out at the 15-minute hard cap GitHub enforces on this runner | ||
| # class. As a per-PR gate it bottlenecks landing without adding | ||
| # proportional signal. | ||
| # | ||
| # Maintainer 2026-04-27: "no reason we don't change that nightly | ||
| # job for slim to just trigger on every merge to main, it's free | ||
| # for open source projects." So the trigger surface is now: | ||
| # 1. push to main (every merge) — primary drift detection | ||
| # 2. daily 06:00 UTC schedule — catches weekend drift + | ||
| # backstops if push triggers somehow miss | ||
| # 3. workflow_dispatch — manual ad-hoc verification | ||
| # Standard GitHub-hosted runners are free for public repos | ||
| # (per Otto-249 — standard runners free for public repos), | ||
| # so the per-merge run has no cost downside. | ||
| # | ||
| # What this workflow does: | ||
| # - push to main: runs on every merge (primary trigger). | ||
| # - Schedule: daily at 06:00 UTC (backstop for weekends + missed | ||
| # pushes). | ||
| # - workflow_dispatch: manual trigger for ad-hoc verification. | ||
| # - Single ubuntu-slim leg matching gate.yml's install / build / | ||
| # test sequence on the smaller runner. ubuntu-slim was REMOVED | ||
| # from gate.yml's matrix in this same PR (per Codex P2) so we | ||
| # don't double-run the slim leg on every push. | ||
| # - Failure = drift on low-memory runners. File a BACKLOG row; | ||
| # does not block PRs in flight. | ||
| # | ||
| # Safe-pattern compliance (mirrors gate.yml): | ||
| # - SHA-pinned actions (actions/checkout@de0fac2..., actions/cache@27d5ce7...) | ||
| # - Explicit `permissions: contents: read` minimum | ||
| # - Concurrency-grouped to avoid overlapping runs | ||
| # - GITHUB_TOKEN exposed via env: for mise's aqua: backend | ||
| # (read-only inheritance from workflow permissions). No | ||
| # untrusted github.event.* fields are referenced anywhere | ||
| # in this workflow. | ||
| # - timeout-minutes set to 14 — one minute under the 15-minute | ||
| # runner-class hard cap so the job fails gracefully (with a | ||
| # proper Actions log) before the platform kills it. | ||
| # | ||
| # References: | ||
| # - 1-vCPU runner availability: https://github.blog/changelog/2026-01-22-1-vcpu-linux-runner-now-generally-available-in-github-actions/ | ||
|
|
||
| name: nightly-low-memory | ||
|
|
||
| on: | ||
| push: | ||
| branches: [main] | ||
| schedule: | ||
|
AceHack marked this conversation as resolved.
|
||
| - cron: '0 6 * * *' # 06:00 UTC daily (catches drift on | ||
| # weekends / when no main commits land) | ||
| workflow_dispatch: {} | ||
|
|
||
| permissions: | ||
| contents: read | ||
|
|
||
| env: | ||
| GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} | ||
|
|
||
| concurrency: | ||
| # Per-commit concurrency group: every push to main gets its own slot | ||
| # so no run is silently replaced by a newer one (per Codex P2 + Copilot | ||
| # P1 review). On schedule/workflow_dispatch the SHA is whatever main | ||
| # is pointing at when the run starts; two such runs against the same | ||
| # SHA queue (cancel-in-progress: false) — the right behaviour, since | ||
| # the second run has nothing new to check. | ||
| group: low-memory-${{ github.sha }} | ||
| cancel-in-progress: false | ||
|
|
||
| jobs: | ||
| build-and-test-low-memory: | ||
| name: build-and-test (ubuntu-slim, low-memory) | ||
| runs-on: ubuntu-slim | ||
| timeout-minutes: 14 # fail gracefully before the 15-minute runner-class hard cap | ||
|
|
||
| steps: | ||
| - name: Checkout | ||
| uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 | ||
|
|
||
| - name: Cache .NET SDK | ||
| uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 | ||
| with: | ||
| path: ~/.dotnet | ||
| key: dotnet-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('global.json', 'tools/setup/common/dotnet.sh') }} | ||
|
|
||
| - name: Cache mise runtimes | ||
| uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 | ||
| with: | ||
| path: | | ||
| ~/.local/share/mise | ||
| ~/.cache/mise | ||
| key: mise-${{ runner.os }}-${{ runner.arch }}-${{ hashFiles('.mise.toml') }} | ||
|
|
||
| - name: Cache elan (Lean 4 toolchain) | ||
| uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 | ||
| with: | ||
| path: ~/.elan | ||
| key: elan-${{ runner.os }}-${{ hashFiles('tools/setup/common/elan.sh') }} | ||
|
|
||
| - name: Cache verifier jars (TLC + Alloy) | ||
| uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 | ||
| with: | ||
| path: | | ||
| tools/tla | ||
| tools/alloy | ||
| key: verifiers-${{ runner.os }}-${{ hashFiles('tools/setup/manifests/verifiers') }} | ||
|
|
||
| - name: Cache NuGet packages | ||
| uses: actions/cache@27d5ce7f107fe9357f9df03efb73ab90386fccae # v5.0.5 | ||
| with: | ||
| path: | | ||
| ~/.nuget/packages | ||
| ~/.local/share/NuGet | ||
| key: nuget-${{ runner.os }}-${{ hashFiles('Directory.Packages.props') }} | ||
|
|
||
| - name: Install toolchain via three-way-parity script (GOVERNANCE Section 24) | ||
| run: ./tools/setup/install.sh | ||
|
|
||
| - name: Build (0 Warning(s) / 0 Error(s) required) | ||
| run: dotnet build Zeta.sln -c Release | ||
|
|
||
| - name: Test | ||
| run: dotnet test Zeta.sln -c Release --no-build --verbosity normal | ||
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
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
Oops, something went wrong.
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.
Uh oh!
There was an error while loading. Please reload this page.