diff --git a/README.md b/README.md index 65d714a..39b8915 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,11 @@ database files (`.hyper`) without any C library dependencies. > > As of **1.0.0** the public API is stable and follows [semantic versioning](https://semver.org/): > breaking changes require a major release, so the frequent churn of the `0.x` -> line is behind us. +> line is behind us. What counts as that public API is per-crate — see the +> [Crate Overview](#crate-overview) for the two crates that scope it +> differently: `hyperdb-api-core` is an internal implementation detail, and +> `hyperdb-mcp` governs its MCP tool surface rather than its Rust library +> target. > > Contributors and reviewers should, at a minimum, run an **AI code reviewer** > over any changes, following the conventions, layering rules, and patterns @@ -225,7 +229,7 @@ async fn main() -> Result<()> { | **[hyperdb-api](hyperdb-api/README.md)** | High-level API — connections, inserters, catalog, Arrow, pooling | crates.io | | **[hyperdb-api-core](hyperdb-api-core/README.md)** | Internal implementation details (types, protocol, client). Not a public API — depend on `hyperdb-api` instead. | crates.io | | **[hyperdb-api-salesforce](hyperdb-api-salesforce/README.md)** | Salesforce Data Cloud OAuth authentication | crates.io | -| **[hyperdb-mcp](hyperdb-mcp/README.md)** | MCP server for LLM-driven SQL analytics on `.hyper` files | crates.io | +| **[hyperdb-mcp](hyperdb-mcp/README.md)** | MCP server for LLM-driven SQL analytics on `.hyper` files. Semver covers the MCP tool surface; the Rust library target is not a public API. | crates.io | | **[sea-query-hyperdb](sea-query-hyperdb/README.md)** | HyperDB dialect backend for sea-query | crates.io | | **[hyperdb-api-node](hyperdb-api-node/README.md)** | Node.js/TypeScript bindings via napi-rs | npm | | **[hyperdb-bootstrap](hyperdb-bootstrap/README.md)** | Download the `hyperd` executable from Tableau's release packages | crates.io | diff --git a/hyperdb-mcp/CHANGELOG.md b/hyperdb-mcp/CHANGELOG.md index 747f17c..e7f40a2 100644 --- a/hyperdb-mcp/CHANGELOG.md +++ b/hyperdb-mcp/CHANGELOG.md @@ -111,6 +111,35 @@ and this project adheres to [Semantic Versioning](https://semver.org/). ### Changed +- **The Rust library target is not a supported API surface, and its 21 modules + are now `#[doc(hidden)]`.** `src/lib.rs` already carried a lint `reason` + saying the library "is not a documented API surface", while this crate's + `README.md` promised, without scope, that "the public API is stable and + follows semantic versioning". Against a crate where every module is `pub`, + that sentence promised semver stability on all 21 modules and every item in + them, which is why two incidental internals had to be written up as API + events: `DaemonState` gaining a private field ([#289]) and `state_perms` + becoming new public surface ([#295]). The README now scopes the promise to + the **MCP tool surface** — tool names, their parameters, and their behavior + as reached over the MCP protocol — and states that the library target is + excluded; the root `README.md` crate table says the same, alongside the + equivalent note that already existed for `hyperdb-api-core`. + + **Not marked BREAKING, and nothing was privatised.** `pub(crate)` is not + available for any of the 21 modules: Cargo compiles the `hyperdb-mcp` + `[[bin]]`, each file under `tests/`, and `examples/demo.rs` as separate + crates that can only reach library items through the external + `hyperdb_mcp::` path, and every module is used by at least one of them + (`paths` by the binary alone, `stats`, `subscriptions` and `watcher` by one + test file each). So `pub` is load-bearing for compilation, not an API + commitment. `#[doc(hidden)]` removes the modules from published rustdoc and + signals intent; it does not affect name resolution, so no code that compiled + before stops compiling. Narrowing a module to `pub(crate)` later would be + source-breaking and would carry the marker — this does not. + +[#289]: https://github.com/tableau/hyper-api-rust/pull/289 +[#295]: https://github.com/tableau/hyper-api-rust/pull/295 +