Repository navigation
base autofix: make the action exports on the newest tip (base red: no action export since 02:14Z) - #23453
Conversation
…ges them from there Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15c6d-a1d2-7fc2-9458-92c6bdcb7b4d&host=huge-blue
…m from there No action export landed after 02:14Z on 2026-10-21 (ActionSurfaceParityTests.reportIsFresh red on base). Once #23352 stopped the Mac job being replaced, it finished green, but base-autofix-push.sh judged the exports from the run's own commit: the job queues for up to half an hour and the actions area moves every few minutes, so every run held them (runs 39607727081, 39609533631). - scripts/cmux-next/base-autofix-action-exports.sh (the Mac step): starts on the newest tip when the actions area moved while the job queued, regenerates there again while it keeps moving (3 in all), prints "made at: SHA", and leaves the checkout at the run's commit for the settings step. - base-autofix-push.sh judges the action exports from ACTIONS_MADE_AT, as it does the settings exports: they land whole as made there when nothing after it moved the actions area or wrote one of them. Their own inputs are the actions area only, so the shortcuts and app-host areas no longer hold them (they still hold what is built from them). - base-autofix-land.sh hands ACTIONS_MADE_AT to the push; the Mac job gets 90 minutes. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15c6d-a1d2-7fc2-9458-92c6bdcb7b4d&host=huge-blue
|
Owned by land-and-ci on huge-blue · session |
|
cmux status (one comment, edited in place; each line is updated by the job that owns it) Review App of this head (app.zip, kept 1 day)
|
|
Bead |
…a failed checkout of the tip fails the Mac step Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15c6d-a1d2-7fc2-9458-92c6bdcb7b4d&host=huge-blue
…ain on the tip The docs shortcuts (the "keyboard-shortcuts docs freshness" base red), the app-host files and the defaults snapshot are built from the action exports at the run's commit, so a CmuxNextActions move during the run held them even when the exports made after it landed, and the next run held them the same way. base-autofix-land.sh now makes them again on the tip when the tip's action exports are known current: none was held and nothing after ACTIONS_MADE_AT moved their inputs (the exports this run landed are no move). The snapshot also needs the tip's settings stamp current. base-autofix-repair.sh builds them from the tip's committed exports when told so. Review fix: base-autofix-action-exports.sh's check_out runs under `||`, where set -e is off, so a failed checkout of the tip went on and named exports made at the old commit as made at the tip. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15c6d-a1d2-7fc2-9458-92c6bdcb7b4d&host=huge-blue
|
|
…ed by a guard that finds its repository like the real one Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15c6d-a1d2-7fc2-9458-92c6bdcb7b4d&host=huge-blue
… in its checkout Review fix: base-autofix-land.sh ran a copy of defaults_guard.py from a temp directory, but the guard finds the repository from its own path; there it read no stamp, noted it and passed, so a stale settings stamp never held the defaults snapshot. The round now checks the tip out first, runs the tip's guard there, and also needs the tip to have a stamp. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Agent-Session: https://cmux.com/deeplink/agent?harness=claude&session=01a15c6d-a1d2-7fc2-9458-92c6bdcb7b4d&host=huge-blue
|
Review (subagent, correctness first): SHIP at a1ea818 Covers the whole PR at this head, after two FIX rounds:
What the review checked:
Runs, all passing:
Nits, left for later:
|
|
Reds at a1ea818 are base findings, not this PR's (it changes no webviews or Swift files):
|
|
Shipped in:
|
Base red:
ActionSurfaceParityTests.reportIsFresh(staleplans/cmux-next/action-surfaces.jsonandactions.md). No action export has landed since 02:14Z on 2026-10-21. Reported by omnibox-auto-2.Why. After #23352 the Mac exports job gets a runner and finishes green, but
base-autofix-push.shjudged the action exports from the run's own commit. The job queues for up to half an hour, and the actions area moves every few minutes, so every run held them:The settings exports already had a "made at the newest tip" path (#23249, #23315). The action exports did not.
Fix
scripts/cmux-next/base-autofix-action-exports.sh(the Mac step):made at: SHA, hands on the export files that differ from the run's commit, and leaves the checkout at the run's commit (prepared again) for the settings step.base-autofix-push.shjudges the action exports fromACTIONS_MADE_AT, as it judges the settings exports:first-party-apps/or the docs-shortcuts exporter) no longer hold the exports. They still hold the files built from them, and a held export still holds what is built from it.base-autofix-land.shpasses the made-at commit to the push. The workflow gives the step a 40-minute timeout and the Mac job 90 minutes, since it can now regenerate up to three times for actions and three for settings.Tests. 16d638c is the red commit:
scripts/cmux-next/tests/base-autofix-action-exports.test.sh, wired into cmux-next.yml:tests/test_cmux_next_base_autofix_finishes.py: workflow wiring. The Greptile ci(base autofix): land the files of untouched areas when another area moved #22474 case (a shortcuts file never lands without its export) now uses an actions-only input, and a new case checks that an app-host input change lands the export together with its shortcuts file.Red on 16d638c (base code):
Second red commit: b6bde59. Cases 8 to 11 cover the files built from the exports on the tip; case 18 covers a failed checkout of the tip, which a review found was ignored under `||` and is fixed in 8edd4eb. Case 8 fails when run against the 7f7c5bf scripts.
Green on 8edd4eb: both pass, and
base-autofix-push.test.sh,base-autofix-land.test.sh,base-autofix.test.sh,test_cmux_next_pr_autofix_settings.pyandtest_ci_session_label_routing.pystill pass. actionlint is clean and the prepush gate reports no new violations.Observed / Not run
Changelog
none
Agent session: huge-blue
🤖 Generated with Claude Code