Skip to content

fix(ci): regenerate stale tauri lockfile + install memory seam in migration tests - #5518

Closed
YellowSnnowmann wants to merge 4 commits into
tinyhumansai:mainfrom
YellowSnnowmann:fix/tauri-lockfile-and-migration-seam
Closed

fix(ci): regenerate stale tauri lockfile + install memory seam in migration tests#5518
YellowSnnowmann wants to merge 4 commits into
tinyhumansai:mainfrom
YellowSnnowmann:fix/tauri-lockfile-and-migration-seam

Conversation

@YellowSnnowmann

@YellowSnnowmann YellowSnnowmann commented Aug 12, 2026

Copy link
Copy Markdown
Collaborator

Summary

Net: the Rust Feature-Gate Smoke (gates off) lane had five stacked pre-existing failures, all rooted in the tinymemory-core addition + the memory-subsystem removal on main — the shared root cause of the broad draft #5502. This PR is the minimal focused set that greens the lane.

Kernel-floor ratchet raise — justification (required)

scripts/kernel-floor.limits requires a written justification to raise a limit. The flows host profile grew +2 packages / +2 names because tinymemory-core was added to the always-on memory engine (6bf080266 "add tinymemory-core dependency and patch tinycortex-api"). tinymemory-core is the SQLite/vector store + ingestion/queue engine the mandatory memory families depend on, so it is a deliberate always-on dependency — the same rationale as the existing 2026-08-10 history entry, which predated this crate. The ratchet also fails on a shed that is not written back, so the limit is set to the exact value CI reported (307/284), not padded. Calibrated on Linux per the ratchet's own convention; macOS resolves +1 (308/285) so this specific number cannot be validated on a Mac — it is taken from the CI failure log.

The same lane's companion guard, scripts/dep-sim.py --cut-nothing --expect-names 282 in .github/workflows/ci-lite.yml, asserts the simulator's baseline equals the kernel-floor names count. It moves 282 → 284 in lockstep for the same reason (the guard is --cut-nothing, i.e. it just measures reality).

Problem

  • Lockfile drift. The tinydocs (0.1.0 → 0.1.12) and tinywallet (0.1.0 → 0.2.0) submodule gitlinks were bumped without regenerating app/src-tauri/Cargo.lock. The newer versions moved the documents (docx-rs/pdf-extract/ppt-rs/…) and web3 (bitcoin/ethers/…) crate cohorts into the module build, so those crates correctly leave the shell lockfile (per the architecture notes in AGENTS.md). With the lock stale, any step that runs cargo --locked (the fmt/quality lane's TLS-dependency-policy check) fails before doing its real work.
  • Missing test seam. Apply-mode migrations import into unified memory, whose embedding provider resolves through the explicit tinymemory host seams. Those are wired at startup in the running app but not in a bare unit test, so migrate_hermes_apply_imports_markdown_entries / migrate_openclaw_apply_imports_markdown_entries_into_target_workspace panicked with no EmbeddingHost installed under the gates-off build.

Solution

  • Regenerated app/src-tauri/Cargo.lock against the pinned submodules (net -915 / +78 crate lines). It now satisfies --locked and cargo fmt --all -- --check passes.
  • Added crate::openhuman::memory::host_impls::install_for_tests() (idempotent) at the top of the migration test_config, matching the seam wiring the app performs at startup, so the apply path resolves a provider in the unit test.

Submission Checklist

If a section does not apply to this change, mark the item as N/A with a one-line reason. Do not delete items.

  • Tests added or updated (happy path + at least one failure / edge case) — no new test; the change restores the pre-existing migrate_hermes/migrate_openclaw apply tests (which already cover the happy path and the missing-source failure path) by installing the seam their setup needs. Verified both pass under --no-default-features.
  • Diff coverage ≥ 80% — the only code change is one line of test setup, executed by the restored tests; the lockfile is not source. coverage-gate CI confirms.
  • Coverage matrix updated — N/A: CI/lockfile fix, no feature rows added/removed/renamed.
  • All affected feature IDs from the matrix are listed under ## Related — N/A: no matrix rows change.
  • No new external network dependencies introduced — none; the lock only drops crates and syncs versions.
  • Manual smoke checklist updated if this touches release-cut surfaces — N/A: no user-facing behavior change.
  • Linked issue closed via Closes #NNN in the ## Related section — N/A: no tracking issue; this is CI hygiene (see Related).

Impact

  • Runtime/platform: none at runtime — a lockfile sync plus a test-only seam install. Unblocks CI for every open PR that inherits main's red Rust Quality and Feature-Gate Smoke jobs.
  • Security/perf/migration: none.

Related


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

Linear Issue

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

Commit & Branch

  • Branch: fix/tauri-lockfile-and-migration-seam
  • Commit SHA: c3c06e291

Validation Run

  • N/A — pnpm --filter openhuman-app format:check: no app/ frontend changes.
  • N/A — pnpm typecheck: no TypeScript changed.
  • Focused tests: cargo test --lib --no-default-features config::migration_helpers::ops::tests::migrate_hermes_apply_imports_markdown_entries config::migration_helpers::ops::tests::migrate_openclaw_apply_imports_markdown_entries_into_target_workspace (2/2 pass).
  • Rust fmt/check: cargo fmt --all -- --check clean; cargo metadata --locked --manifest-path app/src-tauri/Cargo.toml succeeds (lock is consistent).
  • N/A — Tauri fmt/check: no app/src-tauri Rust source change (lockfile only).

Validation Blocked

  • command: full cargo tauri build with product features
  • error: not run locally (very long); the lock was regenerated by resolving the shell manifest with its declared features, so it reflects the exact graph the product build resolves.
  • impact: CI's product/build lanes validate the full graph.

Behavior Changes

  • Intended behavior change: none — CI hygiene only.
  • User-visible effect: none.

Parity Contract

  • Legacy behavior preserved: the lock only syncs to the already-pinned submodules; no runtime code changed. The migration seam install mirrors real startup wiring.
  • Guard/fallback/dispatch parity checks: N/A.

Duplicate / Superseded PR Handling

Summary by CodeRabbit

  • Tests

    • Migration apply-path tests now use unified memory test implementations without requiring a production embedding host.
    • Test configuration consistently installs the required memory host before creating configuration.
    • Updated feature-gate smoke-test calibration and coverage to reflect current dependency checks.
  • Chores

    • Updated compatibility tracking for the flows profile to reflect current runtime requirements and dependency changes.

…igration tests

Two pre-existing CI failures on main, unrelated to feature work:

Rust Quality (fmt, clippy) failed with 'cannot update the lock file app/src-tauri/Cargo.lock because --locked'. The tinydocs (0.1.0 -> 0.1.12) and tinywallet (0.1.0 -> 0.2.0) submodule gitlinks were bumped without regenerating the shell lockfile; the newer versions moved the documents (docx-rs/pdf-extract/ppt-rs/...) and web3 (bitcoin/ethers/...) crate cohorts into the module build, so those crates correctly leave app/src-tauri/Cargo.lock. Regenerated the lock to match the pinned submodules (net -915/+78 crate lines); it now satisfies --locked and 'cargo fmt --all --check' passes.

Rust Feature-Gate Smoke (gates off) failed the migrate_hermes/migrate_openclaw apply tests with 'no EmbeddingHost installed'. Apply-mode migrations import into unified memory, whose embedding provider resolves through the explicit host seams; the migration test's test_config never installed the test seam wiring. Added host_impls::install_for_tests() (idempotent) so the apply path resolves a provider in the bare unit test. Verified: both tests pass under --no-default-features.
@YellowSnnowmann
YellowSnnowmann requested a review from a team August 12, 2026 10:30
@YellowSnnowmann YellowSnnowmann added the infra-ci-release CI, release automation, packaging, build containers, and test harnesses. label Aug 12, 2026
@coderabbitai

coderabbitai Bot commented Aug 12, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Note

Currently processing new changes in this PR. This may take a few minutes, please wait...

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: f56b78e4-2855-436c-83f5-ef7b7ed45ef8

📥 Commits

Reviewing files that changed from the base of the PR and between 5ebe61c and b20cd3d.

📒 Files selected for processing (1)
  • .github/workflows/ci-lite.yml
 ______________________________________________________________________________________________________
< My code reviews are like a Tesla: fully electric, increasingly autonomous, and occasionally on fire. >
 ------------------------------------------------------------------------------------------------------
  \
   \   \
        \ /\
        ( )
      .( o ).

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: f56b78e4-2855-436c-83f5-ef7b7ed45ef8

📥 Commits

Reviewing files that changed from the base of the PR and between 5ebe61c and b20cd3d.

📒 Files selected for processing (1)
  • .github/workflows/ci-lite.yml
💤 Files with no reviewable changes (1)
  • .github/workflows/ci-lite.yml

📝 Walkthrough

Walkthrough

The test configuration installs memory host implementations before constructing Config. Dependency-floor history, limits, and CI calibration record the tinymemory-core change.

Changes

Migration and dependency updates

Layer / File(s) Summary
Install test memory hosts
src/openhuman/config/migration_helpers/ops.rs
test_config installs test memory host implementations before creating Config.
Record the flows dependency floor
scripts/kernel-floor.limits, .github/workflows/ci-lite.yml
The history and dependency floor record the tinymemory-core change. CI uses the updated dependency count and gated-test allowlist.

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

Possibly related PRs

Poem

A rabbit adds memory hosts,
So Config starts prepared.
The floor records new crates,
While CI checks updated states,
And migration tests are repaired.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the two primary fixes: regenerating the stale Tauri lockfile and installing the memory seam for migration tests.
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.

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 coderabbitai Bot added priority: p3 Whenever. Cosmetic, a nicety, or a cleanup with no user visible effect. test Test additions, fixes, or harness work. 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.

tinysweeper found nothing blocking. Approving.

             $0.0083 · 8,932 in / 2,329 out · 6,502 cached (73%) · z-ai/glm-5.2
critique:    $0.0021 · 1,904 in / 476 out   · 768 cached (40%)   · z-ai/glm-5.2
security:    $0.0013 · 1,883 in / 374 out   · 1,640 cached (87%) · z-ai/glm-5.2
tests:       $0.0010 · 1,798 in / 184 out   · 1,260 cached (70%) · z-ai/glm-5.2
description: $0.0038 · 3,347 in / 1,295 out · 2,834 cached (85%) · z-ai/glm-5.2

The Feature-Gate Smoke lane's kernel-floor ratchet fails: profile 'flows' resolves 307 packages / 284 names on CI Linux vs the 305/282 limit. This is the tinymemory-core engine addition (6bf0802) reaching the always-on flows host profile (+2/+2) — a deliberate always-on dependency (SQLite/vector store + ingestion/queue), the same rationale as the 2026-08-10 tinymemory entry which predated this crate. The ratchet fails on a shed not written back, so the limit is set to the exact CI (Linux) measurement. Calibrated on Linux per the ratchet's own convention; macOS resolves +1 (308/285) and cannot validate this locally.
@coderabbitai coderabbitai Bot added bug memory Memory store, memory tree, recall, summarization, and embeddings in src/openhuman/memory/. and removed priority: p3 Whenever. Cosmetic, a nicety, or a cleanup with no user visible effect. labels 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

3 files, +19 -2 across 3 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 +11 -1"]:::changed
  n1["src/openhuman/config/migration_helpers<br/>1 file +7 -0"]:::changed
  n2[".github/workflows<br/>1 file +1 -1"]:::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 +11 -1
src/openhuman/config/migration_helpers changed 1 +7 -0
.github/workflows changed 1 +1 -1
Changed files

scripts

  • scripts/kernel-floor.limits

src/openhuman/config/migration_helpers

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

.github/workflows

  • .github/workflows/ci-lite.yml

tinysweeper 0.1.0

@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.

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.0158 · 14,363 in / 4,550 out · 9,399 cached (65%) · z-ai/glm-5.2
critique:    $0.0046 · 4,026 in  / 1,485 out · 3,226 cached (80%) · z-ai/glm-5.2
security:    $0.0034 · 3,984 in  / 562 out   · 1,573 cached (39%) · z-ai/glm-5.2
tests:       $0.0030 · 2,255 in  / 999 out   · 1,653 cached (73%) · z-ai/glm-5.2
description: $0.0048 · 4,098 in  / 1,504 out · 2,947 cached (72%) · z-ai/glm-5.2

@tinysweeper tinysweeper Bot added priority: p1 Next. Wrong behaviour a user will hit, or a security weakness behind a condition. and removed priority: p3 Whenever. Cosmetic, a nicety, or a cleanup with no user visible effect. labels Aug 12, 2026
…s (282->284)

The Feature-Gate Smoke lane's 'removal simulator still agrees with cargo' guard asserts scripts/dep-sim.py --cut-nothing resolves exactly --expect-names N, and that N must equal the kernel-floor names count. tinymemory-core raised the flows-profile names to 284 (see the kernel-floor.limits bump in this PR), so the guard's expected value moves 282 -> 284 in lockstep. Linux-calibrated to the CI measurement, same as the ratchet.
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.0126 · 11,366 in / 3,740 out · 7,851 cached (69%) · z-ai/glm-5.2
critique:    $0.0017 · 2,055 in  / 486 out   · 1,619 cached (79%) · z-ai/glm-5.2
security:    $0.0026 · 2,034 in  / 685 out   · 896 cached (44%)   · z-ai/glm-5.2
tests:       $0.0036 · 2,673 in  / 1,212 out · 2,044 cached (76%) · z-ai/glm-5.2
description: $0.0047 · 4,604 in  / 1,357 out · 3,292 cached (72%) · z-ai/glm-5.2

@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.0266 · 20,030 in / 7,942 out · 12,153 cached (61%) · z-ai/glm-5.2
critique:    $0.0089 · 6,431 in  / 2,541 out · 3,301 cached (51%)  · z-ai/glm-5.2
security:    $0.0090 · 6,368 in  / 2,441 out · 2,688 cached (42%)  · z-ai/glm-5.2
tests:       $0.0052 · 2,651 in  / 1,866 out · 1,954 cached (74%)  · z-ai/glm-5.2
description: $0.0035 · 4,580 in  / 1,094 out · 4,210 cached (92%)  · z-ai/glm-5.2

The rust-feature-gate-smoke lane's 'new feature-gated test modules must be acknowledged' guard requires its EXPECTED allowlist to equal the set of src files that #[cfg]-gate a test on a domain feature. openhuman/memory/people/address_book.rs was deleted in ba088ec (chore(memory): remove entire legacy memory subsystem), so it dropped out of the actual set but stayed in the allowlist, failing the guard. Removed the stale entry; the guard now matches (verified locally — the grep is platform-independent).
@coderabbitai coderabbitai Bot removed test Test additions, fixes, or harness work. memory Memory store, memory tree, recall, summarization, and embeddings in src/openhuman/memory/. labels Aug 12, 2026
@YellowSnnowmann

Copy link
Copy Markdown
Collaborator Author

Closing as superseded — every functional change in this PR is already on main, so it now only conflicts.

Verified against current main (178a11aa8):

This PR's change On main
migration_helpers/ops.rshost_impls::install_for_tests() in test_config present (test_config, identical call)
scripts/kernel-floor.limitsflows:307:284:2 flows:307:284:2 (identical)
.github/workflows/ci-lite.yml--expect-names 284 + drop memory/people/address_book.rs from the gated-module allowlist both present
app/src-tauri/Cargo.lock refresh consistent — Rust Quality (fmt, clippy) --locked passes on main

The only lines that differ are justification comments (worded differently on main); there is no unique functional content. The broken-main this PR targeted is green on main (Rust Feature-Gate Smoke + Rust Quality pass on the merged PRs), landed via the broader #5502. As this PR's own description anticipated ("if #5502 merges first, this can be closed as superseded"), closing.

No tracking issue is linked (CI hygiene), so nothing else to close.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

infra-ci-release CI, release automation, packaging, build containers, and test harnesses. priority: p1 Next. Wrong behaviour a user will hit, or a security weakness behind a condition.

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

1 participant