Skip to content

Public API surface cleanup: modular exports and prelude#470

Merged
leynos merged 4 commits intomainfrom
action-execplan-api-surface-y3j7vu
Feb 20, 2026
Merged

Public API surface cleanup: modular exports and prelude#470
leynos merged 4 commits intomainfrom
action-execplan-api-surface-y3j7vu

Conversation

@leynos
Copy link
Copy Markdown
Owner

@leynos leynos commented Feb 19, 2026

Summary

  • Refactor crate public API surface to use domain modules instead of a large root re-export. Root is now intentionally minimal.
  • Introduce a new wireframe::prelude as an optional ergonomics layer for common imports.
  • Update internal code, tests, and documentation to use module-scoped imports (e.g., wireframe::client::WireframeClient).
  • Align docs and migration guide with the new structure and add explicit migration guidance.

Changes

  • Public API surface
    • Root exports are reduced to canonical Result and WireframeError only.
    • Public APIs are exposed via domain modules (e.g., wireframe::app, wireframe::client, wireframe::server, wireframe::codec, etc.).
    • Introduce wireframe::prelude (new src/prelude.rs) with common imports under not(loom) gating:
      • ClientError, WireframeClient, ServerError, WireframeServer
      • Envelope, Handler, Middleware, WireframeApp
      • Result, WireframeError, Message, Response
      • BincodeSerializer, Serializer
  • Prelude module
    • New src/prelude.rs providing optional convenience imports for frequent workflows.
  • Documentation & migration
    • docs/execplans/public-api-surface.md: Status updated to COMPLETE and plan items adjusted to reflect modular exports.
    • docs/v0-1-0-to-v0-2-0-migration-guide.md: Public API surface reorganization documented with a detailed mapping of removed root re-exports to new module paths and a before/after example.
    • docs/users-guide.md: Updated to describe API discovery via modules and prelude.
    • docs/wireframe-client-design.md and code examples updated to import via module paths (e.g., wireframe::client::WireframeClient, wireframe::serializer::BincodeSerializer).
    • Tests and examples updated to reflect new module paths (e.g., wireframe::client::WireframeClient, wireframe::response::Response, wireframe::hooks, etc.).
  • Code paths and imports
    • Updated various files to reference module paths (client, response, hooks, etc.) instead of root imports.
    • Adjusted doc examples and unit/integration tests to use new paths.
  • Test support visibility
    • Narrowed test_support visibility in connection module to cfg(all(not(loom), any(test, feature = "test-support"))).
    • Made test-helpers and related test imports consistent with modular exports.

Migration & Compatibility

  • This change is a public API surface refactor and will require updating imports in downstream codebases.
  • Typical migration pattern:
    • Before: use wireframe::{Response, Serializer, WireframeClient};
    • After: use wireframe::{
      client::{WireframeClient, ClientError},
      response::Response,
      serializer::{Serializer},
      };
  • For ergonomic imports in tests and examples, consider using the new prelude:
    • use wireframe::prelude::*;
  • See migration guide in docs/v0-1-0-to-v0-2-0-migration-guide.md for additional mappings and examples.

Testing

  • All tests and examples have been updated to import via module paths.
  • Run cargo test to validate both core and test-suite changes.
  • Loom-related builds remain gated to ensure compatibility with not(loom) code paths.

Why this approach

  • Reduces root-level import clutter and clarifies API ownership by domain module.
  • Improves discoverability and maintainability of APIs for users and contributors.
  • Preserves a stable, small crate root while offering a richer, modular surface.

Notes for reviewers

  • Verify that repo-wide import changes compile cleanly across tests and examples.
  • Ensure the prelude provides useful, commonly used items without leaking too much into the root namespace.
  • Confirm that documentation updates accurately reflect the new structure and provide clear migration guidance.

If you want, I can add a brief section with a concrete before/after code snippet in the migration guide or add a short companion entry in CHANGELOG-style notes.

◳ Generated by DevBoxer


ℹ️ Tag @devboxerhub to ask questions and address PR feedback

📎 Task: https://www.devboxer.com/task/3d53a3ef-2812-486e-a08a-9e87bc3039f3

Summary by Sourcery

Refine the crate's public API to favor module-based imports, introduce a focused prelude for common types, and tighten test-only visibility while updating docs and examples to match.

Enhancements:

  • Reduce crate-root exports to canonical Result and WireframeError, exposing other public APIs via domain modules instead.
  • Add a new wireframe::prelude module that re-exports a small set of frequently used client, server, app, response, and serializer types for ergonomic imports.
  • Align internal references, doctests, examples, and tests to use module-scoped paths (e.g., wireframe::client::WireframeClient, wireframe::response::Response).
  • Restrict connection::test_support to test and test-support feature builds to avoid exposing test helpers in normal production builds.

Documentation:

  • Expand the migration guide and user documentation to describe the new module-based API surface, list mappings from removed root re-exports to their module paths, and illustrate before/after import patterns.
  • Mark the public API surface exec plan as complete and record decisions and outcomes related to root export minimization, the prelude, and test-support visibility.

Tests:

  • Update test fixtures and integration helpers to import types through their owning modules or the serializer module in line with the new public API layout.

@sourcery-ai
Copy link
Copy Markdown
Contributor

sourcery-ai Bot commented Feb 19, 2026

Reviewer's Guide

Refactors the crate’s public API to a minimal root plus module-scoped exports, introduces a focused wireframe::prelude for ergonomic imports, tightens test-support visibility, and rewrites docs, examples, and tests to use the new module-based paths.

Class diagram for wireframe root, modules, and prelude exports

classDiagram
    class WireframeRoot {
        +Result Result
        +WireframeError WireframeError
        +mod app
        +mod app_data_store
        +mod client
        +mod server
        +mod codec
        +mod error
        +mod connection
        +mod correlation
        +mod fragment
        +mod hooks
        +mod message_assembler
        +mod metrics
        +mod request
        +mod response
        +mod serializer
        +mod session
        +mod prelude
        +mod test_helpers (cfg(any(test, feature = "test-support")))
    }

    class Prelude {
        +ClientError
        +WireframeClient
        +ServerError
        +WireframeServer
        +Envelope
        +Handler
        +Middleware
        +WireframeApp
        +Result
        +WireframeError
        +Message
        +Response
        +BincodeSerializer
        +Serializer
    }

    class ClientModule {
        +WireframeClient
        +ClientError
        +ClientProtocolError
        +ClientWireframeError
        +SocketOptions
        +ClientCodecConfig
    }

    class ServerModule {
        +WireframeServer
        +ServerError
    }

    class AppModule {
        +WireframeApp
        +Envelope
        +Handler
        +Middleware
    }

    class ResponseModule {
        +Response
        +FrameStream
    }

    class SerializerModule {
        +BincodeSerializer
        +Serializer
    }

    class HooksModule {
        +ConnectionContext
        +ProtocolHooks
        +WireframeProtocol
    }

    class ConnectionModule {
        +ConnectionActor
        +mod test_support (cfg(all(not(loom), any(test, feature = "test-support"))))
    }

    WireframeRoot --> Prelude : defines
    WireframeRoot --> ClientModule : mod client
    WireframeRoot --> ServerModule : mod server
    WireframeRoot --> AppModule : mod app
    WireframeRoot --> ResponseModule : mod response
    WireframeRoot --> SerializerModule : mod serializer
    WireframeRoot --> HooksModule : mod hooks
    WireframeRoot --> ConnectionModule : mod connection

    Prelude ..> ClientModule : reexports
    Prelude ..> ServerModule : reexports
    Prelude ..> AppModule : reexports
    Prelude ..> ResponseModule : reexports
    Prelude ..> SerializerModule : reexports
    Prelude ..> WireframeRoot : reexports Result, WireframeError
Loading

File-Level Changes

Change Details Files
Minimize crate root exports and switch to module-scoped public APIs.
  • Remove most root-level re-exports from src/lib.rs, keeping only Result and WireframeError at the root.
  • Expose public types and functions through their owning modules (app, client, codec, hooks, fragment, response, session, serializer, etc.) instead of via the root.
  • Update crate-level docs in lib.rs to describe the new tiered API discovery model (root, modules, prelude).
src/lib.rs
Add wireframe::prelude as an optional ergonomic import layer.
  • Create new src/prelude.rs module that re-exports high-frequency types like WireframeClient, WireframeServer, Envelope, WireframeApp, Response, Result, WireframeError, and serializer types.
  • Gate client/server exports in the prelude behind cfg(not(loom)) to avoid loom builds depending on them.
  • Document intended usage and scope of the prelude in the module docs and examples.
src/prelude.rs
src/lib.rs
Align documentation and examples with the modular API and prelude.
  • Expand the v0.1.0-to-v0.2.0 migration guide with a mapping from removed root re-exports to their new module paths, plus before/after import examples and notes on test-support visibility.
  • Mark the public API surface exec plan as COMPLETE and record decisions, surprises, and validation outcomes reflecting the new API structure.
  • Update the users guide and wireframe client design docs to describe module-based imports, prelude usage, and to change all import snippets from root-based to module-based paths.
docs/v0-1-0-to-v0-2-0-migration-guide.md
docs/execplans/public-api-surface.md
docs/users-guide.md
docs/wireframe-client-design.md
Update code, tests, and examples to use module paths instead of root imports.
  • Change imports throughout client runtime, messaging, streaming, response, hooks, app, and request modules to refer to types via their owning modules (e.g., wireframe::client::WireframeClient, wireframe::response::Response, wireframe::serializer::Serializer).
  • Adjust intra-crate documentation links to reference new module paths (e.g., crate::client::WireframeClient, crate::response::Response::Stream, crate::hooks::WireframeProtocol).
  • Refactor examples and tests (fixtures, steps, helpers, and integration tests) to import from module namespaces or serializer module instead of using removed root re-exports.
src/client/runtime.rs
src/client/messaging.rs
src/client/streaming.rs
src/client/error.rs
src/client/response_stream.rs
src/response.rs
src/hooks.rs
src/request/mod.rs
src/app/envelope.rs
src/extractor/streaming.rs
tests/common/unified_codec_transport.rs
tests/multi_packet.rs
tests/client_lifecycle.rs
tests/common/fragment_helpers.rs
tests/fixtures/client_streaming.rs
tests/fixtures/codec_stateful.rs
tests/fixtures/message_assembly_inbound.rs
tests/fixtures/client_lifecycle.rs
tests/fixtures/client_messaging.rs
tests/fixtures/client_preamble.rs
tests/fixtures/client_runtime.rs
tests/fixtures/multi_packet.rs
tests/steps/client_lifecycle_steps.rs
examples/hotline_codec.rs
examples/multi_packet.rs
examples/mysql_codec.rs
examples/resp_codec.rs
wireframe_testing/src/integration_helpers.rs
wireframe_testing/src/multi_packet.rs
Tighten visibility of test-only support code for connections.
  • Change connection::test_support to be compiled only under cfg(all(not(loom), any(test, feature = "test-support"))) instead of just cfg(not(loom)).
  • Update docs and migration guide to call out that connection::test_support is no longer reachable in normal production builds and should be accessed via tests or the test-support feature.
  • Ensure internal tests and helper crates continue to use the test-support feature where needed.
src/connection/mod.rs
src/connection/test_support.rs
docs/v0-1-0-to-v0-2-0-migration-guide.md
docs/execplans/public-api-surface.md

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Feb 19, 2026

Summary by CodeRabbit

  • New Features

    • Added a compact prelude for convenient imports of common types.
  • Breaking Changes

    • Public API reorganised: many items now require module-qualified paths instead of root-level imports.
    • Crate root simplified to expose canonical error/result aliases.
    • Test-support helpers now gated behind conditional test/feature compilation.
  • Documentation

    • Added a migration guide and updated examples and user docs to reflect the new public API layout.

Walkthrough

Summarise the crate-root API contraction: move many root re-exports into module-qualified paths (e.g., client::, serializer::, response::), add prelude and extractor modules, tighten test_support cfg gating, and update docs, examples and tests to the new import paths.

Changes

Cohort / File(s) Summary
Docs & Migration
docs/execplans/public-api-surface.md, docs/users-guide.md, docs/v0-1-0-to-v0-2-0-migration-guide.md
Mark public API surface work COMPLETE; document root contraction, progressive discovery paths, prelude usage, migration examples and tightened test-support visibility.
Examples & Design
docs/wireframe-client-design.md, examples/hotline_codec.rs, examples/mysql_codec.rs, examples/resp_codec.rs, examples/multi_packet.rs
Update example import paths to module-qualified locations (e.g., wireframe::serializer::BincodeSerializer, wireframe::response::Response).
Crate Root & Prelude
src/lib.rs, src/prelude.rs
Remove broad root re-exports; add pub mod prelude and pub mod extractor; reintroduce serializer/codec/error as module scopes; expose a compact conditional prelude.
Client surface & docs
src/client/... (builder, error, messaging, runtime, response_stream, streaming, tests)`
Rewrite doc examples and tests to use wireframe::client::{ClientError, WireframeClient} and similar module-qualified imports; reflow import blocks.
Serializer & Codec relocations
src/client/tests/*, tests/**/*, wireframe_testing/src/*, tests/fixtures/*, tests/common/*
Move Serializer and BincodeSerializer imports to wireframe::serializer::{Serializer, BincodeSerializer}; update test generics and impls to reference Serializer from serializer.
Response & Stream types
src/response.rs, src/request/mod.rs, examples/multi_packet.rs, tests/multi_packet.rs
Qualify Response and FrameStream as wireframe::response::... in docs/tests; update affected test signatures and local type aliases.
Hooks, Connection & Test Support
src/hooks.rs, src/connection/mod.rs, src/connection/test_support.rs, wireframe_testing/src/integration_helpers.rs
Import hooks from wireframe::hooks; tighten test_support cfg to #[cfg(all(not(loom), any(test, feature = "test-support")))]; adjust TestError variants to use wireframe::fragment types.
Misc docs & small fixes
src/app/envelope.rs, src/extractor/streaming.rs, assorted test step and helper files
Fix documentation references to module-qualified paths and reflow doc import blocks across assorted files.

Sequence Diagram(s)

(Section omitted — changes are public API reorganisation and documentation updates; no new multi-component runtime flow introduced.)

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~45 minutes

Possibly related PRs

Poem

Trim the roots, tidy every name,
Prelude gathers what the crate proclaims,
Tests re-route and examples align,
Import paths settle in ordered line,
🌿 A leaner surface ships on time.

🚥 Pre-merge checks | ✅ 3
✅ Passed checks (3 passed)
Check name Status Explanation
Title check ✅ Passed The title clearly and concisely describes the main change: refactoring the public API surface to use modular exports and introducing a prelude module.
Description check ✅ Passed The description is comprehensive and directly relates to the changeset, detailing the public API surface refactoring, new prelude module, documentation updates, and migration patterns.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch action-execplan-api-surface-y3j7vu

Comment @coderabbitai help to get the list of available commands and usage tips.

@leynos leynos marked this pull request as ready for review February 20, 2026 08:51
Copy link
Copy Markdown
Contributor

@sourcery-ai sourcery-ai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - I've found 1 issue

Prompt for AI Agents
Please address the comments from this code review:

## Individual Comments

### Comment 1
<location> `src/prelude.rs:18-23` </location>
<code_context>
+pub use crate::client::{ClientError, WireframeClient};
+#[cfg(not(loom))]
+pub use crate::server::{ServerError, WireframeServer};
+pub use crate::{
+    app::{Envelope, Handler, Middleware, WireframeApp},
+    error::{Result, WireframeError},
+    message::Message,
+    response::Response,
+    serializer::{BincodeSerializer, Serializer},
+};
</code_context>

<issue_to_address>
**suggestion:** Consider whether the prelude surface should also expose commonly used request-side types to avoid asymmetry.

Right now the prelude exposes app, error, message, response, serializer, and client/server types, but not the request-side types that many handlers use (e.g. `RequestParts`, `RequestBodyStream`). That makes response types convenient to import while comparable request types require going through `request::`. If the prelude is meant as the primary entry point for common handler workflows, consider adding a minimal set of request types here, or clarifying in docs that request types are intentionally omitted from the prelude.
</issue_to_address>

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

Comment thread src/prelude.rs
@coderabbitai coderabbitai Bot added the codex label Feb 20, 2026
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@docs/v0-1-0-to-v0-2-0-migration-guide.md`:
- Around line 78-167: The long bullet list in
docs/v0-1-0-to-v0-2-0-migration-guide.md exceeds 80 columns; reflow each mapping
bullet (for example the lines containing mappings such as
`wireframe::AppDataStore -> wireframe::app_data_store::AppDataStore`,
`wireframe::BincodeSerializer, Serializer ->
wireframe::serializer::{BincodeSerializer, Serializer}`,
`wireframe::ConnectionActor -> wireframe::connection::ConnectionActor`, etc.) so
each line is wrapped at or before 80 characters and continuation lines are
indented to align with the bullet content; ensure commas and braces stay with
the related symbols and preserve the exact symbol names and arrow mappings while
breaking long RHS lists into multiple indented lines for readability.

Comment thread docs/v0-1-0-to-v0-2-0-migration-guide.md
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@src/prelude.rs`:
- Around line 14-19: Consolidate the repeated #[cfg(not(loom))] attributes by
placing a single #[cfg(not(loom))] on a block that re-exports all symbols; wrap
the pub use lines for ClientError, WireframeClient, RequestBodyStream,
RequestParts, ServerError and WireframeServer in one cfg block so you only have
one cfg predicate instead of three separate ones (locate the current pub use
statements in prelude.rs and move them inside a single #[cfg(not(loom))] { ... }
block).

Comment thread src/prelude.rs Outdated
@leynos
Copy link
Copy Markdown
Owner Author

leynos commented Feb 20, 2026

@coderabbitai review

@coderabbitai
Copy link
Copy Markdown
Contributor

coderabbitai Bot commented Feb 20, 2026

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

leynos and others added 3 commits February 20, 2026 19:45
…omics

The crate root exports are minimized to only canonical error/result types.
Detailed APIs are moved to dedicated modules such as `client`, `response`, `serializer`, `hooks`, etc.
Introduced an optional `prelude` module for common ergonomic imports.
Tightened visibility of test-support items to avoid exposure in production builds.
Updated documentation, examples, and tests to reflect new module paths and import styles.
This restructuring promotes clearer public API boundaries and progressive API discovery, improving maintainability and user experience.

Co-authored-by: devboxerhub[bot] <devboxerhub[bot]@users.noreply.github.com>
Add RequestBodyStream and RequestParts exports to the prelude module under the cfg(not(loom)) condition to enhance reusability and simplify imports in dependent modules.

Co-authored-by: devboxerhub[bot] <devboxerhub[bot]@users.noreply.github.com>
Moved the #[cfg(not(loom))] conditional re-exports to the bottom and grouped them in a single use statement block to improve code readability and maintainability.

Co-authored-by: devboxerhub[bot] <devboxerhub[bot]@users.noreply.github.com>
@devboxerhub devboxerhub Bot force-pushed the action-execplan-api-surface-y3j7vu branch from 236c7a0 to 5ee5bdc Compare February 20, 2026 19:47
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Inline comments:
In `@docs/users-guide.md`:
- Around line 12-16: Replace the British "-ised" spelling with the Oxford
"-ized" form in the documentation line using the path identifier
`wireframe::<module>::...`: change "specialised" to "specialized" so the phrase
reads "`wireframe::<module>::...` is the default path for specialized APIs" to
conform to the en-GB-oxendict "-ize" guideline.

In `@docs/v0-1-0-to-v0-2-0-migration-guide.md`:
- Around line 84-88: Replace the word "specialised" with the Oxford -ize
spelling "specialized" in the migration guide sentence that refers to
module-specific APIs (the line mentioning wireframe::<module>::...), leaving the
references to wireframe::Result<T>, wireframe::WireframeError and
wireframe::prelude::* unchanged; simply edit the text to read "Use
wireframe::<module>::... for specialized APIs."

---

Duplicate comments:
In `@docs/v0-1-0-to-v0-2-0-migration-guide.md`:
- Around line 92-144: The migration guide's module mapping bullets exceed the
80-column wrap rule; reflow each mapping bullet so no line exceeds 80 columns by
breaking long RHS module lists across continued indented lines or splitting
mappings into multiple bullets; update the lines containing mappings such as the
ones for wireframe::app_data_store::AppDataStore,
wireframe::serializer::{BincodeSerializer, Serializer},
wireframe::client::{...}, wireframe::codec::{...}, wireframe::fragment::{...},
wireframe::message_assembler::{...}, wireframe::metrics::{...},
wireframe::request::{...}, wireframe::response::{FrameStream, Response} and
wireframe::session::{ConnectionId, SessionRegistry} to ensure each bullet and
any continuation line is wrapped at or below 80 columns.

Comment thread docs/users-guide.md
Comment thread docs/v0-1-0-to-v0-2-0-migration-guide.md
…n docs

Corrected the spelling of "specialised" to "specialized" in users-guide.md and v0-1-0-to-v0-2-0-migration-guide.md to maintain consistent US English spelling in the documentation.

Co-authored-by: devboxerhub[bot] <devboxerhub[bot]@users.noreply.github.com>
Copy link
Copy Markdown
Contributor

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Duplicate comments:
In `@docs/v0-1-0-to-v0-2-0-migration-guide.md`:
- Around line 92-151: The migration-guide bullet lines map many symbols (e.g.,
wireframe::AppDataStore -> wireframe::app_data_store::AppDataStore,
wireframe::BincodeSerializer -> wireframe::serializer::{BincodeSerializer,
Serializer}, wireframe::ConnectionActor ->
wireframe::connection::ConnectionActor, etc.) and currently exceed the 80‑column
Markdown rule; reflow each bullet so no line is longer than 80 columns, breaking
after commas or the arrow (->) and indent continuation lines so they align under
the bullet content (preserve backticks and commas, and keep grouped items like
{...} together when possible), e.g., split long right-hand module lists across
multiple indented lines while keeping each logical mapping on a single bullet
using consistent indentation.

@leynos leynos merged commit 5749d3f into main Feb 20, 2026
6 checks passed
@leynos leynos deleted the action-execplan-api-surface-y3j7vu branch February 20, 2026 22:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant