Skip to content

chore(features,ci)!: consolidate the post-migration feature tree; add compile-boundary CI - #55

Merged
justin13888 merged 1 commit into
masterfrom
34-feature-tree-ci-rework
Jul 19, 2026
Merged

chore(features,ci)!: consolidate the post-migration feature tree; add compile-boundary CI#55
justin13888 merged 1 commit into
masterfrom
34-feature-tree-ci-rework

Conversation

@justin13888

Copy link
Copy Markdown
Collaborator

Closes #34.

Stacked on #54; merge order #42 → … → #54 → this.

What is Delivered

  • Feature-tree audit against 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). Facade full lists hw explicitly.
  • compile-boundaries CI job — the epic's "structurally strict" requirement, enforced: four invalid feature×target combos must FAIL with the exact compile_error! text; three valid combos (incl. the portable hw stub on Apple/musl) must compile. All seven commands proven locally before landing.
  • full-check CI job — explicit --features full checks 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).
  • build.rs verified down to cfg-alias machinery only; check-cfg exact.
  • Docs to delivered reality: V1_DESIGN pin hash de-hardcoded + blocked-matrix rows recorded; image README format table credits actual gamut backends; justfile drops --all-features (now a provable compile error by design — the hw pins are mutually exclusive) for rawshift-image/full; MSRV references consistent at 1.92; 9 broken rustdoc links fixed under a -D warnings doc gate.

Verification Done

Run independently after implementation: cargo test --workspace 387/0; --features full 563/0; --features serde 360/0; clippy workspace + full -D warnings 0+0; boundary spot-checks re-proven (vaapi@aarch64-apple-darwin fails, hw@apple stub compiles); RUSTDOCFLAGS="-D warnings" cargo doc --features full clean; all 17 single-format standalone checks pass; empty-features and full builds pass on image crate and facade. lefthook green.

… 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).
Base automatically changed from 33-avif-decode-gamut-hwdec to master July 19, 2026 01:50
@justin13888
justin13888 merged commit a6263a0 into master Jul 19, 2026
@justin13888
justin13888 deleted the 34-feature-tree-ci-rework branch July 19, 2026 01:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Feature tree + compile-boundary CI rework post-migration

1 participant