From 9537b14cc04789ef9ab1b6a6542222995d6abe86 Mon Sep 17 00:00:00 2001 From: prompt.ac/@jeffrey Date: Sun, 09 Aug 2026 06:55:17 +0000 Subject: [PATCH] Say that OTA releases are asked for, because they are Three places promised that landing fedac/native/ on main starts an oven build. None of them do. The native poller reads NATIVE_POLL_INTERVAL_MS with a default of 0, nothing in the repo sets it, and the disabled branch logs that the manual trigger is the way in. Nothing is broken here: papers polls every 60s while native and recap sit at 0, so two of three being off is a decision, and auto-shipping every native commit to real hardware is a strong thing to do by accident. What the promise cost was invisible. Push, wait, and the published OTA is simply whatever it was — no error, no queue entry, just a stale kernel that flashes onto a stick and boots fine. Today that was a five-week-old build about to go onto a USB to test a change made this morning. The poller's own header claimed a 60s default while the line under it read 0, which reads like it was copied from the papers one and never revisited. It now says why it is off and what turning it on would mean. --- CLAUDE.md | 2 +- fedac/native/SCORE.md | 9 +++++---- oven/native-git-poller.mjs | 15 +++++++++++---- 3 file(s) changed, 17 insertion(s)(+), 9 deletion(s)(-) diff --git a/CLAUDE.md b/CLAUDE.md --- a/CLAUDE.md +++ b/CLAUDE.md @@ -74,7 +74,7 @@ ``` ### AC Native OS (fedac/native/) -**Routine OTA releases are built remotely on the oven.** When fedac/native/ changes land on `origin/main`, oven's git poller auto-triggers a build. +**Routine OTA releases are built remotely on the oven, and you must ask for them.** Landing fedac/native/ changes on `origin/main` builds nothing — the oven's native git poller ships disabled (`NATIVE_POLL_INTERVAL_MS` defaults to 0), so pushing and waiting means the published OTA silently stays stale. Run `ac-os oven` to release. ```bash ac-os oven # Trigger remote OTA build for HEAD diff --git a/fedac/native/SCORE.md b/fedac/native/SCORE.md --- a/fedac/native/SCORE.md +++ b/fedac/native/SCORE.md @@ -16,12 +16,13 @@ ## Release Procedure ### Default path: remote OTA via oven (preferred) -OTAs are built remotely on `oven.aesthetic.computer`. After landing -fedac/native/ changes on `origin/main`, the oven git poller auto-triggers -a build — but you can also trigger and observe explicitly: +OTAs are built remotely on `oven.aesthetic.computer`, and every one is +asked for. The oven's native git poller ships disabled, so landing changes +on `origin/main` builds nothing and the published OTA stays where it was +until someone runs the trigger. Releasing is a separate act from merging: ```bash -ac-os oven # Trigger remote OTA build for HEAD (or push to main) +ac-os oven # Trigger remote OTA build for HEAD — required to release ac-os oven status # Show oven build queue + last builds ac-os oven watch # Tail logs for the active oven build (SSE) ac-os oven cancel # Cancel the active oven job diff --git a/oven/native-git-poller.mjs b/oven/native-git-poller.mjs --- a/oven/native-git-poller.mjs +++ b/oven/native-git-poller.mjs @@ -1,8 +1,15 @@ -// native-git-poller.mjs — polls git for fedac/native/ changes, auto-triggers OTA builds +// native-git-poller.mjs — optional git poller for fedac/native/ OTA builds +// +// OFF unless NATIVE_POLL_INTERVAL_MS is set, and nothing in this repo sets it: +// native OTAs are released deliberately, by `ac-os oven`, not by merging. The +// papers poller is the one that runs on a timer (60s); this one and recap's +// both default to 0. Leave it that way unless the intent is that every commit +// touching fedac/native/ ships to devices on its own. // -// Runs inside the oven server. Every POLL_INTERVAL_MS (default 60s), fetches -// origin/main from the configured native checkout remote and checks if any fedac/native/ paths changed since the last -// successful build. If so, pulls and triggers startNativeBuild(). +// When enabled it runs inside the oven server: every POLL_INTERVAL_MS it +// fetches origin/main from the configured native checkout, checks whether any +// fedac/native/ path changed since the last successful build, and if so pulls +// and triggers startNativeBuild(). // // Requires a git clone at GIT_REPO_DIR (default /opt/oven/native-git/). // deploy.sh sets this up on first deploy. -- tangled.sh