Skip to content

Unblock the Rust Feature-Gate Smoke lane (embedding host seam in tests + tinymemory-core kernel-floor limit) - #5517

Merged
senamakel merged 5 commits into
tinyhumansai:mainfrom
YellowSnnowmann:fix/migration-helpers-test-embedding-host
Aug 13, 2026
Merged

Unblock the Rust Feature-Gate Smoke lane (embedding host seam in tests + tinymemory-core kernel-floor limit)#5517
senamakel merged 5 commits into
tinyhumansai:mainfrom
YellowSnnowmann:fix/migration-helpers-test-embedding-host

Conversation

@YellowSnnowmann

@YellowSnnowmann YellowSnnowmann commented Aug 12, 2026

Copy link
Copy Markdown
Collaborator

Summary

This PR unblocks the Rust Feature-Gate Smoke (gates off) lane, which was broken on main at four stacked layers. It makes four changes:

  • Test seam — two migration-apply tests panic with "no EmbeddingHost installed" under --no-default-features. Fix: call the existing idempotent host_impls::install_for_tests() at the start of both.
  • Kernel-floor ratchet — bump scripts/kernel-floor.limits from flows:305:282:2 to flows:307:284:2 to reconcile with the tinymemory-core + ureq client chain that became always-on via 6bf080266 (wired into openhuman_core on the always-on memory path without updating the ratchet). No new dependency is introduced here.
  • CI dep-sim calibration — update .github/workflows/ci-lite.yml --expect-names 282284 to match the new ratchet name count.
  • Gated-test guard — remove openhuman/memory/people/address_book.rs from the feature-gated test-modules allowlist; the file was deleted from the tree, so the guard's EXPECTED list was stale.

Problem

migrate_openclaw_apply_imports_markdown_entries_into_target_workspace and migrate_hermes_apply_imports_markdown_entries run migrate_*(…, dry_run = false), whose apply path does memory work requiring tinymemory_core::embedding_host::set_embedding_host(...). Under the default feature set another test installs the process-global host first, so these passed by accident of ordering; under --no-default-features those tests are gated out and both panic.

Separately, the Feature-Gate Smoke lane also runs the kernel-floor ratchet, its dep-sim calibration, and a gated-test-modules guard. All three had drifted on main: tinymemory-core + ureq raised the flows profile from 305/282 to 307/284 without updating the ratchet or the --expect-names calibration, and address_book.rs was deleted while still listed in the guard's allowlist. These surfaced one after another as each earlier blocker was cleared.

Solution

  1. Make the two apply tests self-sufficient by calling crate::openhuman::memory::host_impls::install_for_tests() (idempotent, Once-guarded).
  2. Bump scripts/kernel-floor.limits to flows:307:284:2, with a history entry documenting the cause.
  3. Update .github/workflows/ci-lite.yml --expect-names 282 → 284 to match.
  4. Remove the stale openhuman/memory/people/address_book.rs entry from the gated-test allowlist.

Verified: GGML_NATIVE=OFF cargo test --no-default-features --lib -- apply_imports_markdown_entries → both tests pass; kernel-floor + dep-sim + gated-test guard all pass locally, and the Feature-Gate Smoke lane is green in CI. Linux resolves 307/284; macOS resolves 308/285 per the documented target skew.

Submission Checklist

  • Tests added or updated — the two affected tests now install their own host seam; verified under --no-default-features.
  • Diff coverage ≥ 80% — N/A: the Rust change is test setup (executes in the verified run); the other files are CI/ratchet config.
  • Coverage matrix updated — N/A: no feature/behaviour change.
  • All affected feature IDs from the matrix are listed — N/A.
  • No new external network dependencies introduced — none; the ratchet/calibration reflect the graph already on main.
  • Manual smoke checklist updated — N/A: test + CI-config change.
  • Linked issue closed via Closes #NNN — N/A: infra fix; unblocks the Rust Feature-Gate Smoke lane (and Add lowercase openHuman launcher symlink to the .deb package #5513's CI).

Impact

  • Unblocks the Rust Feature-Gate Smoke (gates off) lane for all PRs.
  • The ops.rs change is test-only (no runtime/behaviour change).
  • The ratchet bump and dep-sim calibration reflect the dependency graph already on main — no new dependency is added.
  • The guard-list removal reflects a source file that no longer exists.

Related


AI Authored PR Metadata (required for Codex/Linear PRs)

Linear Issue

  • Key: N/A
  • URL: N/A

Commit & Branch

  • Branch: fix/migration-helpers-test-embedding-host
  • Commit SHA: c0a2875

Validation Run

  • GGML_NATIVE=OFF cargo test --no-default-features --lib -- apply_imports_markdown_entries → 2 passed
  • cargo fmt --check — clean
  • kernel-floor + dep-sim + gated-test guard — pass locally; Feature-Gate Smoke green in CI
  • Full default-feature suite — N/A (heavy); the added call is an idempotent helper already used by default-build tests
  • Tauri fmt/check — N/A (core crate + CI config only)

Validation Blocked

  • command: full default-feature cargo test / clippy
  • error: heavy local compile
  • impact: none — verified under the exact failing config; CI is green on Feature-Gate Smoke

Behavior Changes

  • Intended behavior change: none (test wiring + CI-config reconciliation)
  • User-visible effect: none

Summary by CodeRabbit

  • Tests

    • Improved memory migration test coverage for OpenClaw and Hermes, including standalone configurations.
    • Ensured test embedding support is available before migration scenarios run.
  • Documentation

    • Added dependency measurement history for Linux and macOS environments.

migrate_openclaw_apply_imports_markdown_entries_into_target_workspace and
migrate_hermes_apply_imports_markdown_entries exercise the apply path, which
does real memory work and requires the embedding host seam. In the default
build another test installs the process-global host first, so these passed by
accident of test ordering; under --no-default-features (the Rust Feature-Gate
Smoke lane) those tests are gated out, so the global is never installed and
both panic with "no EmbeddingHost installed".

Make the two tests self-sufficient by calling the existing idempotent
host_impls::install_for_tests() at their start — the same helper ~10 tests in
tools/ops_tests.rs already use. Verified: both pass under
cargo test --no-default-features --lib.
@YellowSnnowmann
YellowSnnowmann requested a review from a team August 12, 2026 09:13
@coderabbitai

coderabbitai Bot commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: a0cbfcf4-358c-4160-9918-57f5eb4bf3f6

📥 Commits

Reviewing files that changed from the base of the PR and between c0a2875 and 28a2f48.

📒 Files selected for processing (2)
  • scripts/kernel-floor.limits
  • src/openhuman/config/migration_helpers/ops.rs

📝 Walkthrough

Walkthrough

The migration tests install the test embedding host before applying OpenClaw and Hermes migrations. The dependency-floor history records the tinymemory-core and ureq dependency chain and Linux/macOS measurements.

Changes

Migration test setup

Layer / File(s) Summary
Install embedding host before migration
src/openhuman/config/migration_helpers/ops.rs
The OpenClaw and Hermes apply migration tests install the test embedding host before migration. The setup supports standalone execution with --no-default-features.

Dependency floor history

Layer / File(s) Summary
Record dependency measurements
scripts/kernel-floor.limits
The history records the always-on tinymemory-core and ureq dependency chain, its effect on the flows profile, and Linux/macOS verification results.

Estimated code review effort: 1 (Trivial) | ~5 minutes

Possibly related PRs

Suggested labels: rust-core, bug

Poem

A rabbit sets the host in place,
Before migrations start their race.
OpenClaw hops, Hermes too,
Floor notes mark dependencies new.
Tests now burrow cleanly through.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the two main changes: embedding-host setup in tests and the tinymemory-core kernel-floor update for the Rust Feature-Gate Smoke lane.

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

coderabbitai[bot]
coderabbitai Bot previously approved these changes Aug 12, 2026
@YellowSnnowmann YellowSnnowmann added test Test additions, fixes, or harness work. infra-ci-release CI, release automation, packaging, build containers, and test harnesses. labels Aug 12, 2026
@tinysweeper tinysweeper Bot added the priority: p3 Whenever. Cosmetic, a nicety, or a cleanup with no user visible effect. label Aug 12, 2026

@tinysweeper tinysweeper Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

tinysweeper found nothing blocking. Approving.

             $0.0064 · 8,904 in / 1,029 out · 4,509 cached (51%) · z-ai/glm-5.2
critique:    $0.0018 · 2,015 in / 515 out   · 1,463 cached (73%) · z-ai/glm-5.2
security:    $0.0009 · 1,994 in / 116 out   · 1,460 cached (73%) · z-ai/glm-5.2
tests:       $0.0012 · 1,909 in / 295 out   · 1,522 cached (80%) · z-ai/glm-5.2
description: $0.0024 · 2,986 in / 103 out   · 64 cached (2%)     · z-ai/glm-5.2

The Rust Feature-Gate Smoke lane also runs the kernel-floor ratchet, which
regressed on main: the flows profile resolves 307 packages / 284 names against
a 305/282 limit. The growth is tinymemory-core plus its ureq HTTP client chain
(+2/+2), wired into openhuman_core on the always-on memory path by 6bf0802
without updating the ratchet. Raise the limit to 307/284 to reconcile it with
the graph already on main; no dependency is added here. Justification recorded
in the file's history block per its own policy.
@YellowSnnowmann YellowSnnowmann changed the title Install the embedding host seam in the migration apply tests (unblock Feature-Gate Smoke) Unblock the Rust Feature-Gate Smoke lane (embedding host seam in tests + tinymemory-core kernel-floor limit) Aug 12, 2026
@YellowSnnowmann

Copy link
Copy Markdown
Collaborator Author

Added a second commit (bf83c109): the Feature-Gate Smoke lane runs two checks, and the first commit only fixed one.

  • Commit 1 (a6ec0bc9) — the --no-default-features test failures (no EmbeddingHost installed), fixed by installing the host seam in the two apply tests. Verified passing locally.
  • Commit 2 (bf83c109) — the kernel-floor ratchet in the same lane also regressed on main: the flows profile resolves 307 packages / 284 names against a 305/282 limit. The growth is tinymemory-core + its ureq HTTP client chain (+2/+2), wired into openhuman_core on the always-on memory path by 6bf080266 without updating the ratchet. Raised the limit to 307/284, with the justification recorded in the file's history block (its own policy for a raise). No dependency is added — this only reconciles the ratchet to the graph already on main.

Both are required for the lane to go green. The macOS/Linux skew is expected (macOS resolves 308/285; the ratchet is calibrated on Linux at 307/284, which is what CI reported).

@coderabbitai coderabbitai Bot added the memory Memory store, memory tree, recall, summarization, and embeddings in src/openhuman/memory/. label Aug 12, 2026
coderabbitai[bot]
coderabbitai Bot previously approved these changes Aug 12, 2026
@tinysweeper

tinysweeper Bot commented Aug 12, 2026

Copy link
Copy Markdown

What this change touches

2 files, +20 -0 across 2 components. The code graph knows nothing about these files yet — normal for newly added files, and a cold index otherwise.

flowchart LR
  n0["scripts<br/>1 file +12 -0"]:::changed
  n1["src/openhuman/config/migration_helpers<br/>1 file +8 -0"]:::changed
  classDef changed fill:#0d4429,stroke:#238636,color:#e6edf3
  classDef impacted fill:#161b22,stroke:#6e7681,color:#c9d1d9
  classDef flagged fill:#5a1e02,stroke:#d93f0b,color:#ffffff
  classDef blocking fill:#67060c,stroke:#f85149,color:#ffffff
Loading

Green: changed. Grey: untouched, reached through an import or a call. Orange: has findings. Red: has a finding that blocks the merge.

Component Files Lines Findings
scripts changed 1 +12 -0
src/openhuman/config/migration_helpers changed 1 +8 -0
Changed files

scripts

  • scripts/kernel-floor.limits

src/openhuman/config/migration_helpers

  • src/openhuman/config/migration_helpers/ops.rs

tinysweeper 0.1.0

@tinysweeper tinysweeper Bot added priority: p2 Soon. Real but survivable — a rough edge, a gap, a thing that will bite later. and removed priority: p3 Whenever. Cosmetic, a nicety, or a cleanup with no user visible effect. labels Aug 12, 2026
…loor

The Feature-Gate Smoke lane also runs the dep-sim --cut-nothing calibration
(ci-lite.yml), which must equal the kernel-floor name count. Raising the flows
floor to 284 names for tinymemory-core requires moving --expect-names 282 -> 284
too, or the calibration guard fails. Same reconciliation as the floor bump; no
dependency change.
@coderabbitai coderabbitai Bot added rust-core Core Rust runtime in src/: CLI, core_server, shared infrastructure. and removed memory Memory store, memory tree, recall, summarization, and embeddings in src/openhuman/memory/. labels Aug 12, 2026
coderabbitai[bot]
coderabbitai Bot previously approved these changes Aug 12, 2026
The rust-feature-gate-smoke lane diffs an EXPECTED allowlist of files carrying
a feature-gated test against what actually exists. memory/people/address_book.rs
was removed from the tree, but the allowlist still listed it, so the guard
failed on main once the earlier lane blockers were cleared. Remove the stale
entry to match the current source.
@coderabbitai coderabbitai Bot added memory Memory store, memory tree, recall, summarization, and embeddings in src/openhuman/memory/. and removed rust-core Core Rust runtime in src/: CLI, core_server, shared infrastructure. labels Aug 12, 2026
coderabbitai[bot]
coderabbitai Bot previously approved these changes Aug 12, 2026

@tinysweeper tinysweeper Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Requesting changes: 1 lane(s) blocking, worst finding is high.

Fix or reply to the findings below and push. The next review clears this automatically once they are gone — you should not need to dismiss anything by hand.

             $0.0209 · 11,388 in / 7,409 out · 8,621 cached (76%) · z-ai/glm-5.2
critique:    $0.0036 · 2,187 in  / 1,285 out · 1,722 cached (79%) · z-ai/glm-5.2
security:    $0.0036 · 2,166 in  / 1,214 out · 1,536 cached (71%) · z-ai/glm-5.2
tests:       $0.0037 · 2,960 in  / 1,222 out · 2,269 cached (77%) · z-ai/glm-5.2
description: $0.0099 · 4,075 in  / 3,688 out · 3,094 cached (76%) · z-ai/glm-5.2

@tinysweeper tinysweeper Bot added the priority: p1 Next. Wrong behaviour a user will hit, or a security weakness behind a condition. label Aug 12, 2026
@tinysweeper tinysweeper Bot removed the priority: p2 Soon. Real but survivable — a rough edge, a gap, a thing that will bite later. label Aug 12, 2026

@tinysweeper tinysweeper Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

The previously-blocking findings are resolved. Clearing the changes request.

             $0.0317 · 20,916 in / 10,702 out · 15,326 cached (73%) · z-ai/glm-5.2
critique:    $0.0110 · 6,880 in  / 3,613 out  · 4,530 cached (66%)  · z-ai/glm-5.2
security:    $0.0090 · 6,817 in  / 3,088 out  · 5,657 cached (83%)  · z-ai/glm-5.2
tests:       $0.0088 · 2,980 in  / 3,346 out  · 2,165 cached (73%)  · z-ai/glm-5.2
description: $0.0029 · 4,239 in  / 655 out    · 2,974 cached (70%)  · z-ai/glm-5.2

@tinysweeper tinysweeper Bot added priority: p3 Whenever. Cosmetic, a nicety, or a cleanup with no user visible effect. and removed priority: p1 Next. Wrong behaviour a user will hit, or a security weakness behind a condition. labels Aug 12, 2026
@senamakel
senamakel merged commit 0209fa5 into tinyhumansai:main Aug 13, 2026
16 of 17 checks passed
@coderabbitai coderabbitai Bot added bug rust-core Core Rust runtime in src/: CLI, core_server, shared infrastructure. and removed memory Memory store, memory tree, recall, summarization, and embeddings in src/openhuman/memory/. labels Aug 13, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug infra-ci-release CI, release automation, packaging, build containers, and test harnesses. priority: p3 Whenever. Cosmetic, a nicety, or a cleanup with no user visible effect. rust-core Core Rust runtime in src/: CLI, core_server, shared infrastructure. test Test additions, fixes, or harness work.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants