Skip to content

Phase 4: Edition 2024 uplift and targeted Rust modernization #131

@justinrayshort

Description

@justinrayshort

Summary

Implement phase 4 of the repository-wide Rust modernization: switch the workspace to Edition 2024, remove local Edition 2021 overrides, and adopt current Rust language patterns where they are safe and materially improve maintainability.

Primary Architectural Plane

cross-layer

Owning Subsystem

workspace language/tooling baseline and internal async interface modernization

Architectural References

  • AGENTS.md
  • ARCHITECTURE.md
  • docs/architecture/layer-boundaries.md
  • xtask/AGENTS.md

Integration Boundaries

Allowed cross-plane touchpoints:

  • Cargo.toml
  • Cargo.lock
  • shared/
  • platform/
  • services/
  • workflows/
  • ui/
  • xtask/
  • plans/
  • docs/ if contributor workflow notes change

Explicit non-goals:

  • Do not use the edition uplift to redesign product contracts.
  • Do not remove object-safe async boundaries that are required for dyn dispatch in UI host APIs.

Scope In

  • Set workspace edition to 2024 and remove local edition = "2021" overrides.
  • Fix compiler, rustfmt, clippy, and macro fallout from the edition change.
  • Replace eligible BoxFuture-based internal traits with native async fn or RPITIT where dyn dispatch is not required.
  • Keep object-safe boxed async interfaces for AppStateStore, PrefsStore, and closure-based UI host APIs.

Scope Out

  • New feature work unrelated to modernization.
  • Contract/schema version redesign.

Background and Scope

Once the dependency graph is current and green, the workspace can safely uplift from Edition 2021 to Edition 2024. The codebase already uses some modern std features, so this phase should focus on targeted modernization rather than gratuitous churn.

Acceptance Criteria

  • The workspace builds, tests, and passes clippy with edition = "2024".
  • Local edition overrides are removed unless a tool-specific exception is proven necessary.
  • Eligible internal async interfaces are modernized without breaking required trait-object use cases.
  • cargo verify-repo, cargo xtask verify profile ui, and cargo xtask ui-hardening all pass.

Validation Requirements

  • cargo fmt --all --check
  • cargo clippy --workspace --all-targets --all-features -- -D warnings
  • cargo verify-repo
  • cargo xtask verify profile ui
  • cargo xtask ui-hardening

Rollback Considerations

Rollback must revert the edition uplift and async-interface modernization together to avoid mixed edition or async-style assumptions.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions