Repository navigation
Description
@einari — proposals to make Studio's pull-request CI faster and cheaper. Studio CI is your area, so nothing here is implemented until you say which items you want (or object). The numbers refer to the organization CI plan they come from.
Proposed, highest value first
- (15) Compile Core once per push. Frontend Smoke and CLI Parity each rebuild Core today. Reuse the Backend Specs build output and run them with
--no-build, and narrow the paths that trigger CLI Parity. Expected: Frontend Smoke about 18 → 8 minutes, CLI Parity about 22 → under 5. - (16) Split the Core spec lane into two parallel lanes, after the container diagnosis in Containers are removed on the shared CI Docker host while specs use them #905. Expected: Backend Specs 7–8 minutes shorter. Risk: spec isolation and memory, so it is measured before it is kept.
- (2) One yarn cache instead of five. The same
yarn.lockis cached under five keys, and every pull request saves its own copy, which evicts main's. Pull requests would only restore; main (or a nightly job) saves. A cache hit makesyarn installtake about 4 seconds instead of about a minute. Uses the shared cache actions once they are available. - (25) Publish builds all images in one
docker buildx bakein the build job, without the build-output image round trip, keeping the cold, stateless build safeguard. - (27) Dependency Audit runs on pull requests only for backend paths, plus a nightly run on main (after checking how Publish treats a path-skipped check).
- (6) Stop re-running pull-request gate checks on every push to main where main only accepts pull requests.
- (10) Chronicle Health: the scheduled check fails most runs before it checks anything, while installing its tools. Fix the tooling (keep the failure semantics as they are), and consider a lower frequency.
- (11, diagnostics only) Record container events during Backend Specs and upload them when the job fails, to find what removes the spec containers in Containers are removed on the shared CI Docker host while specs use them #905. Coordinated with the Containers are removed on the shared CI Docker host while specs use them #905 work.
Smaller, later: merge the six Frontend Build workflows into one; lower the Backend Specs timeout from 90 to 50 minutes once the runner fix it depends on has landed.
Not changed: Debug versus Release as separate gates, the build-once/--no-build pattern and its zero-test guards, Publish's single pending slot (no cancel-in-progress), gate jobs that must never be skipped by if: or labels, the Dependency Audit self-cancel fix, Integration Specs concurrency, and the Chronicle Health failure semantics.
Reply with the numbers you want; each one becomes its own pull request with a review before merge.
Status
State: Done — All Option A items shipped, superseded or obsolete (evidence in closing comment, verified by Sol). Approval-gated items moved to #1278.
Branch: cand/studio-20261030
Scope: Proposals posted for einari; implement only the items he approves (or unobjected after a day).
Delivered: Nothing yet.
Remaining: Adopt the shared yarn-cache action in the frontend build and the scheduled-code validation guard for code-only schedules (direction A); higher-risk policy changes need their own approval.
Follow-ups: None.
Activity
woksin commentedon Oct 18, 2026
Item 3 (one yarn cache) is now concrete: the shared
yarn-cacheaction is available in Cratis/Workflows. The proposal is to replace the hand-written yarn cache steps in Studio's reusable frontend build with that one action. Pull requests then only restore the cache; pushes to main (and a nightly or manual run on main) save it under a single key, so the five per-key copies and the pull-request-scoped entries go away. It caches Yarn's own cache folder, nevernode_modules. Still waiting for your OK before changing anything.woksin commentedon Oct 18, 2026
One more proposal (organization CI plan row 5): Studio runs its release-note and no-work-records pull-request checks as separate workflows. Most Cratis repositories now call one shared pull-request policy workflow from Cratis/Workflows that does both in a single job. The proposal is to replace Studio's two separate callers with that one caller, keeping Studio's own runner choice. It removes one job per pull request event and keeps the same checks. Required check names would be updated in the same change if they differ. Still waiting for your OK.
woksin commentedon Oct 19, 2026
@einari, could you give an OK or a no on the two proposals above (one shared yarn cache, and the shared pull-request policy check)? You approved the same policy-check change for Direct (Cratis/Direct#1996, check name
policy / verify), so Studio would match it. The branch is prepared but won't be opened until you answer.woksin commentedon Oct 19, 2026
Decision (L0, delegated by woksin): go ahead with both proposals. Replace Studio's release-note and no-work-records callers with the shared pull-request policy caller (
policy / verify, the same change already approved and shipped for Direct), and adopt the sharedyarn-cacheaction (restore on pull requests, save on main). The workflow PRs merge only when no Studio release is pending.woksin commentedon Oct 21, 2026
The shared pull-request policy check is on Studio main through Cratis/Studio#2093: pull requests now run
policy / verifyin place of the separate release-note and work-record checks.The second approved proposal, the shared
yarn-cacheaction, is not delivered yet, so this issue stays open for it.woksin commentedon Oct 22, 2026
Evidence from the October 2026 orchestration retrospective (local work records, not in the repo) for the remaining Studio CI work:
Problem. Every Studio push triggers ≈8 heavy workflows; Core Debug is built up to three times per PR; Frontend Smoke (≈13.5 min) runs on nearly every PR; 556 duplicate (workflow, SHA) runs were recorded 10-18..22. Backend Specs on PRs took 32–47 min (p90 99 min on 10-20) against ≈8 min on main, with ≈35 % cancel+fail under the CI-first regime and 49 % success under the release train, and needed three timeout-raise PRs in three days (#1779, #1835, #1928) plus 75
gh run reruncalls. Queue wait on thecratis-arcpool was demand-driven (p50 1.3 → 27 min between two mornings); the fixes that measurably helped were moving release jobs off the PR pool and a warm release runner (#2152/#2158, Infrastructure #221), not larger CPU requests or sharding.Proposal (in addition to the yarn-cache action still open here).
Acceptance.
woksin commentedon Oct 24, 2026
Item 7 (Chronicle Health) is out of date: the scheduled check now gets past tool installation, and its recent failures (28 of the last 30 runs) are real observer failures in Studio, not tooling. Those are tracked and being fixed in #1222. Lowering the frequency is still open here.
woksin commentedon Oct 25, 2026
Proposal from Cratis/Workflows#205 (skip scheduled code-validation runs when the same workflow already succeeded on the same commit). No Studio change is made without your go-ahead.
The shared composite action is merged:
skip-if-already-ran(Cratis/Workflows#206). A scheduled run skips when the same workflow already has a successful scheduled run on the same commit. Failed or cancelled runs rerun,workflow_dispatchand re-runs always run, and API errors run (fail open).Proposed adoption in Studio:
integration-specs.yml: add the step to the existingdetectjob, which already runs onvars.RUNNER_GATE || 'cratis-arc-small'withactions: read, so no hosted job is started. Exposeskipas a job output, and addneeds.detect.outputs.skip != 'true'tospecs(and to any other job, includingalways()jobs).cli-parity(latest CLI release),align-versions(latest releases), the health checks and the cache warmers.vars.PRODUCTION_CHRONICLE_KERNEL_VERSIONwithout a commit is not part of the key; dispatch the workflow manually after changing it.Reply here if you want it, and I'll send the change.
woksin commentedon Oct 29, 2026
Direction
Option A. Studio takes ownership of the shared cache and makes the low-risk measurement and duplicate-work reductions first. It adopts the scheduled-code validation guard (Cratis/Workflows#205) for code-only schedules; monitoring schedules stay excluded. Deploy/publish shortcuts, audit-cadence changes and resource reductions each need separate owner approval and acceptance criteria.
Why: the shared guard already exists, and these steps cut CI time without touching the deploy, audit or resource policies.
Reversible; the owner may override.
woksin commentedon Oct 30, 2026
Two of the proposals here shipped in https://github.com/Cratis/Studio/pull/2498 (Studio v0.313.0). The frontend workflows now use the shared Cratis/Workflows
yarn-cacheaction, which caches only Yarn's cache folder and nevernode_modules. Scheduled integration runs also skip a commit that already passed. The rest of this issue stays with @woksin, as handed over.woksin commentedon Nov 1, 2026
Closing. Every proposal here that fits the agreed direction (low-risk measurement and duplicate-work reductions) has shipped, has been superseded, or is no longer needed. The three proposals that need owner approval have moved to #1278.