Skip to content

Finish the API-freeze surface (post-cutover) #262

Closed

Description

@blooop

Deferred post-cutover follow-up from the Rust port review; see PR #260 and tracking ticket #261 (plan map #248).

The review found the crate-doc's API-freeze claim was not matched by the actual public surface. The facade (pub mod api re-exporting the frozen surface), the crate-doc correction, and the #250 §7 → #251 §7 citation fix (~56 sites) already landed on #260. What remains is the surface-narrowing work, deferred because it touches ~30 items across the crates and was too parity-risky to do pre-merge. This is the wf integration surface (#251 §7).

  • Demote the ~30 named public items to pub(crate). The reviewer verified that with all 30 demoted, both binaries and all tests still compile; ~3 items then warn as never-used and can be dealt with at that point.
  • Add #[doc(hidden)] to internals that must stay pub for technical reasons but are not part of the frozen surface.
  • Add a cargo-public-api snapshot test so the frozen wf surface is locked by CI rather than by prose.
  • Fix completion.rs:54 — the include_str! path escapes the package root. Harmless for the path/git dependency wf actually uses, but fatal for a cargo publish to crates.io; move the included file inside the package root (or restructure the include) so the crate is publishable.

Activity

  1. blooop commented on Aug 19, 2026

    @blooop
    OwnerAuthor

    Claiming this: implementing on branch rust/port-review-followups (stacked on PR #260), together with #262/#263/#264, in a fresh session. Security items excluded per owner instruction.

  2. blooop commented on Aug 19, 2026

    @blooop
    OwnerAuthor

    Direction settled by #266 (2026-08-19): finish the freeze in the shrinking direction.

    The linking prototype (wayfinder@linkexp/devlaunch-core-prototype) showed the day-one api module cannot serve a linker — its exported functions take binary-surface parameter types (DlView, MetadataStorage, a ClonePathResolver), the rows it returns are field-private, and core's errors render nowhere — and #266 resolved that wf keeps the wire seam, so there is no linker to serve. That converts this ticket's deferred work from "widen api until wf fits" to:

    If in-process linking is ever revived, the prototype's FINDING 1–6 list in src/linked.rs is the requirements spec (session-level entry point, public typed rows, rendered errors, an async story).

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

    enhancementNew feature or request

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions