Skip to content

Phase 1c: per-context auto-resolver shell (returns Off for every platform) #504

Closed

Description

@zackees

Part of #493 Phase 1. Lands the resolve_for_context shell that combines the explicit CLI mode (from resolve_explicit in #496) with a ShrinkContext (platform + libc + framework) and produces a per-platform ShrinkMode.

In Phase 1c every Auto resolution returns Off. Real per-platform decisions (newlib + Arduino-ESP32 IDF 5.x → Safe, etc.) land in Phase 4+ as each platform is end-to-end validated.

Scope

  • Add ShrinkContext { platform, libc, framework } struct in crates/fbuild-build/src/shrink/.
  • Add resolve_for_context(mode: ShrinkMode, ctx: &ShrinkContext) -> ShrinkMode:
    • Explicit modes (Off, Safe, Aggressive, Printf) pass through unchanged.
    • Auto always returns Off for every (platform, libc, framework) combination in Phase 1c.
  • Unit tests:
    • Each explicit mode passes through unchanged regardless of context.
    • Auto resolves to Off for every (Platform, Libc) combination.

Out of scope

  • Wiring resolve_for_context into the orchestrator — that lands in Phase 4 alongside the first real per-platform shrinker.
  • Real per-platform decisions — Phases 4–6 populate the matrix.
  • Per-framework probe (Arduino-ESP32 vs ESP-IDF native vs Mbed) — done in Phase 4 when first needed.

Pass

  • cargo build --workspace --all-targets clean.
  • cargo clippy --workspace --all-targets -- -D warnings exits 0.
  • New unit tests pass.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions