Skip to content

docs: nightly cross-platform workflow design — third path around Otto-161 docs ambiguity#345

Merged
AceHack merged 2 commits intomainfrom
docs/nightly-cross-platform-workflow-design
Apr 24, 2026
Merged

docs: nightly cross-platform workflow design — third path around Otto-161 docs ambiguity#345
AceHack merged 2 commits intomainfrom
docs/nightly-cross-platform-workflow-design

Conversation

@AceHack
Copy link
Copy Markdown
Member

@AceHack AceHack commented Apr 24, 2026

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

  • Otto-161: "we can enable mac everywhere now... no cost for open source projects if you are absolutely sure"
  • Otto-164 verification: docs genuinely contradict themselves. about-github-hosted-runners lists 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

  • PR gate stays ubuntu-22.04 only (unambiguously free on public repos).
  • New nightly-cross-platform.yml — cron 0 9 * * * runs [ubuntu-22.04, windows-2022, macos-14].
  • Cost capped by cadence: worst case ~$28/month/repo if macOS is billed; $0 if free. Either way, cost doesn't scale with PR activity.
  • Fork-scoped: 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-ksk landing per Otto-140, OR drop macOS, OR expand.

Non-authorizations

  • Does NOT ship the workflow file.
  • Does NOT touch gate.yml.
  • Does NOT resolve the docs ambiguity (impossible from available sources).
  • Does NOT obligate lucent-ksk simultaneous landing.

Test plan

  • Markdownlint clean.
  • Research-grade under docs/research/, not an ADR.
  • No workflow file touched.

🤖 Generated with Claude Code

Copilot AI review requested due to automatic review settings April 24, 2026 09:27
@AceHack AceHack enabled auto-merge (squash) April 24, 2026 09:27
@chatgpt-codex-connector
Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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.yml behavior.

Comment thread docs/research/nightly-cross-platform-workflow-design.md Outdated
Comment thread docs/research/nightly-cross-platform-workflow-design.md Outdated
Comment thread docs/research/nightly-cross-platform-workflow-design.md Outdated
Comment thread docs/research/nightly-cross-platform-workflow-design.md Outdated
Comment thread docs/research/nightly-cross-platform-workflow-design.md Outdated
Comment thread docs/research/nightly-cross-platform-workflow-design.md Outdated
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>
AceHack and others added 2 commits April 24, 2026 09:19
…-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.
Copilot AI review requested due to automatic review settings April 24, 2026 13:22
@AceHack AceHack force-pushed the docs/nightly-cross-platform-workflow-design branch from 3491216 to 6edf0b5 Compare April 24, 2026 13:22
@AceHack AceHack merged commit 552512c into main Apr 24, 2026
12 checks passed
@AceHack AceHack deleted the docs/nightly-cross-platform-workflow-design branch April 24, 2026 13:24
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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-platform workflow (schedule + concurrency + caching + toolchain install) aligned to the repo’s gate.yml pattern.
  • 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
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.

2 participants