Repository navigation
Description
Task
Reorganize the server family under a shared grouping directory:
| Current location | Requested location |
|---|---|
crates/server |
crates/server/server |
crates/server-http |
crates/server/http |
The owner requested this layout on 2026-10-28. It follows the grouped organization already used for the SQL and Idea families.
Intended layout
crates/
├── server/ # Grouping directory; no Cargo package here
│ ├── server/ # stackpress-server
│ │ ├── Cargo.toml
│ │ ├── src/
│ │ ├── tests/
│ │ └── docs/
│ └── http/ # stackpress-server-http
│ ├── Cargo.toml
│ ├── src/
│ ├── tests/
│ └── docs/
├── sql/
└── idea/
Move each complete existing crate, including examples, fixtures and supporting files that exist. The tree illustrates the package boundaries, not a requirement to add empty directories.
This is a directory reorganization. Preserve Cargo package names stackpress-server and stackpress-server-http, direct Rust imports stackpress_server / stackpress_server_http, existing facade exports, features and behavior. In particular, preserve the distinction between the facade's buffered server-http feature and network-host server-http-host / server-http-host-tls features.
Current evidence
Baseline: remote trial/3 at 74319ac366f3397b684ee5fa8007651c19e54292; recheck the implementation branch before moving.
- Root manifest lists the current workspace members and facade dependency paths.
- Server manifest uses
../lib. - HTTP host manifest uses
../liband../server. - Consumers include framework-view/framework-sql, CLI, SQLite adapter tests, generated applications/tools and UI examples.
- Accepted source structure needs a current-layout update.
Required path changes
Root manifest excerpt after the move:
[workspace]
# Retain every other existing member.
members = [
"crates/server/server",
"crates/server/http",
]
[dependencies]
stackpress-server = { path = "crates/server/server", optional = true, default-features = false }
stackpress-server-http = { path = "crates/server/http", optional = true }Both moved crates' foundation dependency becomes:
stackpress-lib = { path = "../../lib" }The moved HTTP crate's dependency on its sibling remains:
stackpress-server = { path = "../server", features = ["http-stream"] }Example consumer path updates, preserving all existing feature/default settings:
# crates/framework/framework-view/Cargo.toml
stackpress-server = { path = "../../server/server", optional = true }
# examples/profile-ui/gateway/Cargo.toml
stackpress-server = { path = "../../../crates/server/server", features = ["http"] }Also update HTTP-host consumers to crates/server/http at the appropriate relative depth.
Implementation notes
Use a temporary sibling staging location when moving the existing crates/server: its destination is inside its current path, so it cannot be moved directly into itself. Leave no duplicate crate or temporary directory afterward.
Search source, tests, fixture manifests, generated-output templates, scripts, CI configuration and documentation for path assumptions. Review include! / include_str!, manifest-relative resources, shell working directories and expected diagnostic paths. Update generation sources before regenerating owned output where applicable.
Update current architecture/source-map documentation and live links. Preserve historical receipts, captured upstream evidence and provenance records as historical evidence rather than applying a blind replacement across archives.
Acceptance criteria
- Both complete crates reside at the requested paths;
crates/serveris only a grouping directory with no manifest/package. - Workspace members, every active path dependency and any path-sensitive tooling/fixtures resolve to the new locations; no duplicate package remains.
- Package names, public imports/facade paths, features/defaults, dependency boundaries, plugin/lifecycle behavior and HTTP contracts remain unchanged.
-
cargo metadata --locked --format-version 1resolves the workspace. Review Cargo.lock changes; do not upgrade dependencies as part of the move. - Run affected build/test/doctest/compile-fail checks, plus representative CLI/HTTP/example consumers. Inspect diagnostic fixture changes so path edits do not hide behavioral regressions.
- Verify default server, buffered HTTP and optional HTTP host/TLS dependency graphs retain their existing separation. Use finite/in-process/duplex verification; this move needs no listener.
- Update live docs, contributor paths and commands. Perform the repository's required review rounds without ceremonial code changes; report existing platform/coverage limitations accurately.
- Preserve unrelated worktree changes; keep the change scoped to the relocation and necessary references.
Related: #14 and #15 may touch dependent manifests and documentation. Coordinate paths with those tasks; this issue does not merge crates, rename packages or implement their feature changes.
Activity
cblanquera commentedon Oct 28, 2026
Done on
trial/3(merge 789a53a). It stays open until the change reachesmain.crates/server→crates/server/serverandcrates/server-http→crates/server/http, moved withgit mv.crates/serveris now a grouping directory only.server-httpvsserver-http-host/-tlssplit. Cargo.lock is unchanged.-D warnings, generator--checkfor every generated root, the data-quickstart walkthrough, and the profile-ui and generated-admin checks.Group the server crates under crates/server (issue #16)
Merge issue #16 server crate grouping into trial/3
Record issue #16 server crate grouping as verified