You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Reduce Wright CI and release wall-clock time and redundant runner work while preserving the validation contracts that protect real projects, public CLI behavior, distribution artifacts, and release provenance.
Context
The current workflow performs several expensive checks through overlapping execution paths. Full real-project Workshop coverage is exercised at multiple layers, while the release workflow repeats broad quality/build work before building the native release matrix. Some jobs also install toolchains that are not the toolchain actually selected by the repository.
The optimization target is redundant work, not weaker validation.
Wright should implement the WrightKit CI reuse principles concretely:
For one workflow revision, a compatible build identity should have one producer and multiple consumers; downstream jobs should reuse the exact current-run artifact/result rather than invoke the same build again.
Dependency/download cache, compiled dependency/build cache, and current-run artifacts are distinct layers and should be used for their respective purposes rather than conflated.
Cache/artifact compatibility must include the material build identity: revision/source inputs, Cargo.lock/dependency state, Rust toolchain/compiler, target, profile, feature/configuration set, relevant compiler flags/environment, and other material build inputs.
Rust incremental/intermediate state should only be retained when measured hosted-runner savings exceed restore/save/storage cost; the goal is less work, not a larger cache.
Scope
Keep expensive semantic and real-project evidence at the layer that owns the corresponding contract, and avoid repeating the same corpus coverage at higher layers unless it protects an independent failure mode.
Preserve independent public CLI/integration coverage while allowing representative fixtures where full-corpus repetition is not required by that contract.
Identify Wright build identities that are currently rebuilt by multiple jobs and convert compatible cases to single-producer/current-run artifact reuse.
Reuse Cargo dependency downloads and compatible compiled dependency/build state across jobs and runs with bounded cache writers and identity-safe invalidation.
Measure Rust incremental/intermediate workspace caching separately from dependency caching; adopt it only where before/after evidence demonstrates a net benefit.
Separate release-only identity/package validation from correctness work that is already independently proven for the exact release revision when that reuse can be made explicit and trustworthy.
Reuse release/native build outputs across package/distribution consumers when target/profile/toolchain/configuration identity is the same rather than rebuilding per distribution channel.
Avoid irrelevant capability/distribution jobs when changed-path evidence proves they are unnecessary.
Remove redundant toolchain setup and cache fragmentation.
Non-goals
Removing meaningful correctness, compatibility, real-project, packaging, or smoke validation solely to reduce runtime.
Weakening diagnostics, assertions, failure handling, or release provenance.
Sharing outputs across incompatible toolchain, target, profile, feature/configuration, lockfile, compiler flag, or revision identities.
Treating a build cache as exact current-revision evidence where a current-run artifact/result is required.
Caching the entire Rust target tree or forcing incremental compilation without evidence that transfer/storage cost is lower than the work avoided.
Introducing an arbitrary-command CI abstraction or a repository-specific CI framework.
Moving to self-hosted or larger runners before redundant work is addressed.
Acceptance criteria
Comparable before/after workflow evidence demonstrates a material reduction in the CI and release critical paths.
Full-corpus Workshop semantic/owner contract coverage remains blocking in the appropriate owning/integration layer.
Public Wright CLI behavior retains independent regression coverage without duplicating full-corpus semantics unless an independent failure mode requires it.
For every compatible build identity used by multiple jobs in one workflow revision, one producer builds the output and downstream consumers reuse that exact artifact/result, unless a concrete independent rebuild requirement is documented.
Cargo dependency downloads are not repeatedly fetched when a compatible cache can safely satisfy the job.
Compatible compiled dependency/build cache state is reused where measurements show a net benefit, with cache identity covering all material build inputs.
Rust incremental/intermediate workspace caching is either adopted with before/after evidence showing net benefit or deliberately omitted because restore/save/storage cost does not justify it.
Native release artifacts for every supported target remain built, packaged, checksummed, and smoke-tested before publication.
Distribution/package consumers reuse an already-built native artifact when they require the same target/profile/toolchain/configuration identity instead of rebuilding it independently.
No expensive validation/build step is repeated on the same revision without either an independent failure mode or an explicit provenance/isolation requirement.
Goal
Reduce Wright CI and release wall-clock time and redundant runner work while preserving the validation contracts that protect real projects, public CLI behavior, distribution artifacts, and release provenance.
Context
The current workflow performs several expensive checks through overlapping execution paths. Full real-project Workshop coverage is exercised at multiple layers, while the release workflow repeats broad quality/build work before building the native release matrix. Some jobs also install toolchains that are not the toolchain actually selected by the repository.
The optimization target is redundant work, not weaker validation.
Wright should implement the WrightKit CI reuse principles concretely:
Scope
Non-goals
Acceptance criteria