chore(features,ci)!: consolidate the post-migration feature tree; add compile-boundary CI - #55
Merged
Merged
Conversation
… compile-boundary CI The migrations collapsed the five-tier feature hierarchy organically; this change is the consolidation pass. Audit result: the tree already matches docs/V1_DESIGN.md (full = all 17 formats + serde + experimental + hw; every direction feature gates real code). The six retained tier-4 aliases now name their gates in comments — gif/svg/ppm are permanent exceptions per AGENTS.md, tiff waits on gamut#299/#300 (rawshift#22), webp on gamut#302 (rawshift#24). The facade's full feature lists hw explicitly instead of only transitively. Compile-boundary CI lands as two jobs. compile-boundaries asserts that invalid feature x target combos FAIL with the exact compile_error text (hw-vaapi on aarch64-apple-darwin and musl, hw-videotoolbox and hw-mediacodec on linux-gnu) and that the valid combos plus the portable hw stub compile — all seven commands proven locally before landing. full-check builds --features full for the image crate and facade on four of the six tier-1 targets with hosted runners (linux x86_64/aarch64, macOS aarch64, windows msvc); ios/android are justified out in-file (no hosted cross toolchain for the C deps; their hw pins are covered by the boundary job). build.rs verified down to cfg-alias machinery only, check-cfg exact. Docs brought to delivered reality: V1_DESIGN de-hardcodes the stale pin hash and records the blocked-upstream matrix rows; the image README's format table credits the actual gamut backends; justfile loses --all-features (now a provable compile error: the hw pins are mutually exclusive by design) in favour of rawshift-image/full; MSRV references outside the CHANGELOG all read 1.92. Nine broken rustdoc intra-doc links fixed under the new -D warnings doc gate. BREAKING CHANGE: none at the API level; --all-features is no longer a valid build invocation by design (mutually exclusive hardware backend pins).
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #34.
Stacked on #54; merge order #42 → … → #54 → this.
What is Delivered
docs/V1_DESIGN.md: already conformant after the migrations —full= all 17 formats + serde + experimental + hw; every direction feature gates real code (verified by cfg-site counts); no zero-code features. The six retained tier-4 aliases now name their gates in manifest comments (gif/svg/ppm permanent per AGENTS.md; tiff → gamut#299/#300; webp → gamut#302). Facadefulllistshwexplicitly.compile-boundariesCI job — the epic's "structurally strict" requirement, enforced: four invalid feature×target combos must FAIL with the exactcompile_error!text; three valid combos (incl. the portablehwstub on Apple/musl) must compile. All seven commands proven locally before landing.full-checkCI job — explicit--features fullchecks on 4/6 tier-1 targets with hosted runners (linux x86_64 + aarch64, macOS aarch64, windows msvc); iOS/Android justified out in-file (no hosted cross C toolchain; their hw pins are covered by the boundary job).check-cfgexact.--all-features(now a provable compile error by design — the hw pins are mutually exclusive) forrawshift-image/full; MSRV references consistent at 1.92; 9 broken rustdoc links fixed under a-D warningsdoc gate.Verification Done
Run independently after implementation:
cargo test --workspace387/0;--features full563/0;--features serde360/0; clippy workspace + full-D warnings0+0; boundary spot-checks re-proven (vaapi@aarch64-apple-darwinfails,hw@applestub compiles);RUSTDOCFLAGS="-D warnings" cargo doc --features fullclean; all 17 single-format standalone checks pass; empty-features andfullbuilds pass on image crate and facade. lefthook green.