Conversation
|
You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard. |
There was a problem hiding this comment.
Pull request overview
Adds a research-grade design doc proposing a nightly (scheduled) cross-platform GitHub Actions workflow to get Windows/macOS signal without adding potentially-billed macOS minutes to the PR gate.
Changes:
- Introduces a design-only proposal for
nightly-cross-platform.yml(cron + manual dispatch + PR path filter). - Documents a cost model and rollback/fork-scoping strategy for macOS runner ambiguity.
- Adds cross-references to existing factory hygiene rules and the current
gate.ymlbehavior.
This was referenced Apr 24, 2026
AceHack
added a commit
that referenced
this pull request
Apr 24, 2026
…os) (#358) Maintainer Otto-209 directive: "we are going to do macos once a day schedued, for both repos, unless acehack is getting it free." Ships the design from PR #345 (nightly-cross-platform workflow design doc) as a concrete workflow. Zeta-side lands here; lucent-ksk parallel workflow filed as BACKLOG row for cross-repo coordination. Matrix: ubuntu-22.04 + windows-2022 + macos-14. Cron: daily 09:00 UTC. Fork-scoping: scheduled trigger fires only on the canonical repo; manual dispatch + PR trigger on this workflow file still work on forks. Cost model (Otto-164 verification outcome): - Linux: free on public repos - Windows: free on public repos (standard runner) - macOS: $0.062/min (larger-runner billing). ~15min * 30 days = ~$28/month worst-case for Zeta canonical. PR-gate workflow (gate.yml) stays Linux-only — untouched. Rollback: delete macos-14 from matrix (one-line), or delete this workflow file entirely. No impact on gate.yml. Security: no user-authored github.event fields referenced (only github.repository / github.ref / github.event_name / runner.os / matrix.os are used). SHA-pinned actions per FACTORY-HYGIENE row #43. actionlint clean locally. Composes with PR #345 design doc (still in queue), PR #343 Otto-161-declined-verification history, FACTORY- HYGIENE row #51 cross-platform parity audit (detect-only → this workflow is the enforcement mechanism when baseline is green), and Otto-164 billing-verification memory. Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
…-161 docs ambiguity Design-only proposal per Otto-165 offer. Aaron Otto-161 macOS-everywhere directive + Otto-164 pricing-docs ambiguity (macos-14 is standard-runner-type per about-github-hosted- runners; billing page lists it at $0.062/min in the same table as Linux/Windows without marking public-only). Instead of resolving the ambiguity (can't — docs genuinely contradict each other), propose a THIRD PATH that works in either interpretation: - PR gate stays ubuntu-22.04 only (unambiguously free on public repos). - New nightly-cross-platform.yml runs matrix [ubuntu-22.04, windows-2022, macos-14] on cron '0 9 * * *' (09:00 UTC, off-the-hour to avoid scheduler stampede). - Cost model: worst case ~$28/month/repo if macOS is billed; $0 if free. Either way, cadence caps exposure. - Fork-scoping: `if: github.repository == canonical OR workflow_dispatch OR pull_request-to-this-file` prevents scheduled trigger firing on contributor forks (would burn fork-owner's personal-account minutes). - No-alerting first cut (observation-only); issue-opening on red is a later enhancement. Phased rollout: - Phase 0 (now): this design doc, no YAML. - Phase 1: Aaron signs off on cost tradeoff. - Phase 2: land workflow on Zeta. - Phase 3: observe 7 nightly runs for signal. - Phase 4 (30 days): parallel lucent-ksk landing per Otto-140 rewrite authority, OR drop macOS if no signal + worst-case billing, OR expand matrix if best-case confirmed. Rollback: delete macos-14 from matrix (one-line diff) or delete workflow file entirely. No impact on gate.yml. Composes with FACTORY-HYGIENE row #51 (unblocks enforcement mode), docs/BACKLOG.md row ~2471 (Otto-161 declined + this as alternative), docs/research/test-classification.md (PR #339; category-3 nightly pattern). Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
…cheduling + BACKLOG ref - thread Wkcz (line 327): removed broken `memory/feedback_ksk_naming_...` reference (factory-personal memories live in `~/.claude/projects/<slug>/memory/`, not in-repo); paraphrased the rewrite-authority rule in §10 without promising an in-repo path. - thread WkdI (line 7): purged name-attribution tokens per Otto-220 code-comments-not-history + doc-comment-history-audit lint (PR #363). All "Aaron" / "Otto-NN" / "Amara" / "Max" references rewritten to role references ("human maintainer", "prior-contributor", "autonomous loop", "initial-starting-point contributor"). - thread WkdX (line 163): cron changed `0 9 * * *` → `7 9 * * *` (09:07 UTC) so it matches the "off the hour" comment; note now calls out alignment with the sibling scheduled workflow `github-settings-drift.yml` (`17 14 * * 1`). - thread Wkdk (line 146): YAML sketch rewritten to match the actual `.github/workflows/gate.yml` installer pattern — three-way-parity `./tools/setup/install.sh` invocation plus the same cache-key shape (dotnet / mise / nuget). Added explicit note that Windows matrix leg depends on `tools/setup/install.sh` growing Windows support first per the existing BACKLOG row. - thread Wkdz (line 248): corrected the fork-scheduling claim. GitHub disables scheduled workflows on forks by default — the repo's own `github-settings-drift.yml` runs without fork-scoping and proves this. The `if: github.repository ==` guard is kept as optional hygiene for the rare opt-in-fork case, not as a cost- safety requirement. - thread WkeB (line 316): replaced the wrong `docs/BACKLOG.md` line-number reference (~2471 is actually the mise-activate / HLL-flakiness neighborhood) with stable grep anchors ("Windows matrix in CI" + "Parity swap: CI's `actions/setup-dotnet`"). Markdownlint passes on the edited file.
3491216 to
6edf0b5
Compare
There was a problem hiding this comment.
Pull request overview
Adds a research-grade design document proposing a cost-capped, scheduled cross-platform GitHub Actions workflow to gain macOS/Windows signal without making PR CI potentially billable.
Changes:
- Introduces a cost model comparing PR-gated vs nightly cross-platform coverage.
- Sketches a
nightly-cross-platformworkflow (schedule + concurrency + caching + toolchain install) aligned to the repo’sgate.ymlpattern. - Documents fork-scoping considerations and a phased rollout plan.
Comment on lines
+50
to
+55
| | Runner | Public-repo (best case) | Public-repo (worst case) | Private-repo rate | | ||
| |---------------|-------------------------|--------------------------|-------------------| | ||
| | `ubuntu-22.04` | Free | Free | $0.002–0.006/min (1× multiplier) | | ||
| | `windows-latest` | Free (standard runner) | Free | $0.010/min (2× multiplier) | | ||
| | `macos-14` | **Free (if standard)** | **$0.062/min (if billed)** | $0.062/min (10× multiplier) | | ||
|
|
Comment on lines
+73
to
+77
| ## 3. Workflow design | ||
|
|
||
| ```text | ||
| .github/workflows/nightly-cross-platform.yml | ||
| ``` |
Comment on lines
+186
to
+190
| Windows in the matrix is blocked on `tools/setup/install.sh` | ||
| growing Windows support (tracked in `docs/BACKLOG.md` under | ||
| the "Windows matrix in CI" row); until then the `windows-2022` | ||
| leg of this matrix is deferred and only `ubuntu-22.04` + | ||
| `macos-14` ship in the first cut. |
Comment on lines
+14
to
+17
| The factory needs cross-platform build confidence (Linux + | ||
| Windows + macOS + WSL) per FACTORY-HYGIENE row #51. Current | ||
| CI runs only `ubuntu-22.04` on pull_request; the macOS | ||
| matrix leg is gated to contributor forks via the |
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.
Summary
Design-only proposal offered at end of Otto-165: a third path around the macOS-billing docs ambiguity that works in either billing interpretation.
The problem
about-github-hosted-runnerslists macOS as a standard runner type; billing page shows macOS at $0.062/min in the same table as Linux/Windows without marking that rate as public-repo-exempt.The third path
ubuntu-22.04only (unambiguously free on public repos).nightly-cross-platform.yml— cron0 9 * * *runs[ubuntu-22.04, windows-2022, macos-14].if:gate prevents scheduled triggers on contributor forks from burning fork-owner minutes.Phased rollout
Phase 0 (now, this PR) — design only; no YAML.
Phase 1 — Aaron signs off.
Phase 2 — land workflow on Zeta.
Phase 3 — observe 7 runs.
Phase 4 (30d) — parallel
lucent-ksklanding per Otto-140, OR drop macOS, OR expand.Non-authorizations
gate.yml.lucent-ksksimultaneous landing.Test plan
docs/research/, not an ADR.🤖 Generated with Claude Code