Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions .agents/skills/uteke-memory/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ description: "Persistent memory engine for AI agents via the uteke CLI — remem
# Uteke Memory Skill

Persistent memory engine for AI agents via the `uteke` CLI.
Version: **0.21.1** — SQLite + HNSW vector index (usearch default, or vecq) + FTS5 hybrid search (RRF k=60); `fusion` (weighted RRF of the vector and hybrid rankings) is the default recall strategy since 0.16.0. `unsafe_code = "forbid"` workspace-wide.
Version: **0.21.1** — SQLite + HNSW vector index (usearch default, or vecq) + FTS5 hybrid search (RRF k=60); `fusion` (weighted RRF of the vector and hybrid rankings) is the default recall strategy since 0.16.0. `unsafe_code = "deny"` workspace-wide (only test modules that change env vars opt out).

> This skill ships with each release — its version tracks the CLI version
> (a CI gate fails when they drift, see `skill-version-parity` test).
Expand Down Expand Up @@ -211,7 +211,7 @@ Version: **0.21.1** — SQLite + HNSW vector index (usearch default, or vecq) +
- **Embedding:** ONNX EmbeddingGemma Q4 (768d), auto-downloaded
- **Tiered memory:** Hot (<7d, +0.1 boost), Warm (<30d), Cold (>30d)
- **Schema versioning:** Integer counter, auto-migration on upgrade
- **`unsafe_code = "forbid"`** at the workspace level
- **`unsafe_code = "deny"`** at the workspace level, inherited by every crate (test modules that mutate the environment allow it)
- **Project-scoped stores:** `uteke --store .uteke remember "..."`

## Usage Patterns
Expand Down
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
### Changed

- **`tools/list` for a read-only token lists only the tools it can call (#1446)** - MCP over HTTP advertised every tool to read-only callers, which then failed at call time. A read-only caller now sees exactly the read tools; full-access callers, the stdio transport and `tools/call` are unchanged. Contract: uteke-cloud#203 (approved by the owner).
- **`unsafe_code` is now enforced (#1456)** - the workspace declared `unsafe_code = "forbid"` but no crate inherited it, so nothing was enforced. Every crate now has `[lints] workspace = true` and the level is `deny`: production code cannot contain `unsafe`, and only the five test modules that call `std::env::set_var`/`remove_var` (edition 2024) opt out with `#[allow(unsafe_code)]`. `forbid` cannot be used because it cannot be relaxed per module.

## [0.21.1] - 2026-10-15

Expand Down
2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ readme = "README.md"
homepage = "https://uteke.dev"

[workspace.lints.rust]
unsafe_code = "forbid"
unsafe_code = "deny"

[profile.release]
opt-level = 3
Expand Down
3 changes: 3 additions & 0 deletions crates/docgen/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,6 @@ uteke-core = { path = "../uteke-core" }
schemars = "1"
serde = { version = "1", features = ["derive"] }
serde_json = "1"

[lints]
workspace = true
3 changes: 3 additions & 0 deletions crates/uteke-cli/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -45,3 +45,6 @@ minisign-verify = "0.3.0"

[dev-dependencies]
serial_test = "3"

[lints]
workspace = true
4 changes: 2 additions & 2 deletions crates/uteke-cli/assets/uteke-memory-skill.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ description: "Persistent memory engine for AI agents via the uteke CLI — remem
# Uteke Memory Skill

Persistent memory engine for AI agents via the `uteke` CLI.
Version: **0.21.1** — SQLite + HNSW vector index (usearch default, or vecq) + FTS5 hybrid search (RRF k=60); `fusion` (weighted RRF of the vector and hybrid rankings) is the default recall strategy since 0.16.0. `unsafe_code = "forbid"` workspace-wide.
Version: **0.21.1** — SQLite + HNSW vector index (usearch default, or vecq) + FTS5 hybrid search (RRF k=60); `fusion` (weighted RRF of the vector and hybrid rankings) is the default recall strategy since 0.16.0. `unsafe_code = "deny"` workspace-wide (only test modules that change env vars opt out).

> This skill ships with each release — its version tracks the CLI version
> (a CI gate fails when they drift, see `skill-version-parity` test).
Expand Down Expand Up @@ -211,7 +211,7 @@ Version: **0.21.1** — SQLite + HNSW vector index (usearch default, or vecq) +
- **Embedding:** ONNX EmbeddingGemma Q4 (768d), auto-downloaded
- **Tiered memory:** Hot (<7d, +0.1 boost), Warm (<30d), Cold (>30d)
- **Schema versioning:** Integer counter, auto-migration on upgrade
- **`unsafe_code = "forbid"`** at the workspace level
- **`unsafe_code = "deny"`** at the workspace level, inherited by every crate (test modules that mutate the environment allow it)
- **Project-scoped stores:** `uteke --store .uteke remember "..."`

## Usage Patterns
Expand Down
1 change: 1 addition & 0 deletions crates/uteke-cli/src/config.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1058,6 +1058,7 @@ fn set_namespace_in_toml(content: &str, namespace: &str) -> String {

// ── Tests ───────────────────────────────────────────────────────────────────

#[allow(unsafe_code)]
#[cfg(test)]
mod tests {
use super::*;
Expand Down
1 change: 1 addition & 0 deletions crates/uteke-cli/src/main.rs
Original file line number Diff line number Diff line change
Expand Up @@ -306,6 +306,7 @@ pub(crate) fn resolve_namespace(cli: &Cli, config: &Config) -> String {
"default".to_string()
}

#[allow(unsafe_code)]
#[cfg(test)]
mod resolve_store_tests {
use super::*;
Expand Down
3 changes: 3 additions & 0 deletions crates/uteke-core/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -52,3 +52,6 @@ sha2 = { version = "0.11" }
[dev-dependencies]
tempfile = "3"
serial_test = "3"

[lints]
workspace = true
1 change: 1 addition & 0 deletions crates/uteke-core/src/embed/ort_init.rs
Original file line number Diff line number Diff line change
Expand Up @@ -365,6 +365,7 @@ pub fn init_ort_environment() -> Result<OrtLibInfo, String> {
Ok(info)
}

#[allow(unsafe_code)]
#[cfg(test)]
mod tests {
use super::*;
Expand Down
2 changes: 2 additions & 0 deletions crates/uteke-core/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2769,6 +2769,7 @@ fn restrict_dir_permissions(dir: &Path) {
let _ = dir;
}

#[allow(unsafe_code)]
#[cfg(test)]
mod tests {
/// #1166: `open()` must not request a backend the build cannot
Expand Down Expand Up @@ -4476,6 +4477,7 @@ mod documents_fts_heal_tests {
}
}

#[allow(unsafe_code)]
#[cfg(test)]
mod fallback_settings_tests {
//! #1355 step A — one env-override implementation for `[embed_fallback]`.
Expand Down
3 changes: 3 additions & 0 deletions crates/uteke-mcp/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -38,3 +38,6 @@ uuid = "1"
[dev-dependencies]
uuid = { version = "1", features = ["v4"] }
chrono = "0.4"

[lints]
workspace = true
3 changes: 3 additions & 0 deletions crates/uteke-server/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -40,3 +40,6 @@ ctrlc = "3"
uuid = "1"
sha2 = "0.11"
chrono = { version = "0.4", default-features = false, features = ["serde", "clock"] }

[lints]
workspace = true
Loading