Keep the OpenHuman pin bump non-breaking (#18 audit follow-up) - #60
Conversation
The tinyhumansai#18 end-to-end audit's downstream dimension resolved every path OpenHuman imports (1,111 tokens across 33 shim files) against the post-tinyhumansai#48 tree. Four tinymemory-side breaks would have surfaced at the next submodule pin bump; each gets the smallest surface that keeps the old path resolving, marked for deletion once downstream migrates. 1. `pub use engine as tinycortex` (doc-hidden) at the core root. OpenHuman re-exports `tinymemory_core::tinycortex` wholesale and 25 call sites reach through it; the §C1 rename would have made the bump a coordinated two-repo edit for zero behavioural gain. 2. `SyncAuditEntry` re-exported from the engine seam. OpenHuman's sources RPC embeds `memory::tinycortex::SyncAuditEntry` in a response type. The type stays core-owned (§B1a); only the address is preserved. 3. `extract_item_id` restored in sync_state. Deleted in §B1a as dead -- measured with too small a grep: OpenHuman's raw-coverage integration tests import and exercise it through the pin. 4. `HostSyncAdapter` also implements core's `SyncStateStore`, beside the engine trait of the same shape. Core's `SyncState::load`/`save` take the core trait now, and OpenHuman pairs that type with this adapter in its integration tests. Same KV calls; one storage, two trait names during the transition. Not fixed here, confirmed for the bump PR on OpenHuman's side: its `store_golden.rs` seeder must absorb `fts5::episodic_insert` now returning `Result<i64>` (main drift), and both its cargo workspaces need a `[patch]` entry mapping tinymemory-api's git URL to the submodule path before the vendored tinycortex resolves. Also validated by the audit's refutation pass: the reported live `MemoryClient::new_local()` caller was a stale checkout -- OpenHuman main migrated to `active_memory_client()` in openhuman#5575. cargo test -p tinymemory-core: 847 + e2e passed cargo clippy --all-targets: clean scripts/ci/engine-containment.sh: holds (the alias is `as tinycortex`, not a `tinycortex::` code path)
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (4)
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review. 📝 WalkthroughWalkthroughThe PR adds a memory-backed sync state adapter, a helper for extracting item IDs from nested JSON values, and public engine exports for ChangesSync API integration
Estimated code review effort: 2 (Simple) | ~10 minutes Merge Risk: ⚪ Minimal · up to This PR adds narrowly scoped compatibility shims for the upcoming dependency pin bump, with validation reported as passing; no actionable merge-blocking risk remains beyond normal checks and review. Suggested reviewers: Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
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. Comment |
How this change flows1 changed behaviour across 12 relationships. 5 surrounding behaviours are shown (60 graph nodes walked). 38 further behaviours left out to keep the diagram readable. flowchart LR
n0["HostSyncAdapter<br/>changed"]:::changed
n1["composio_sync_document_reaches_memory_tree"]:::impacted
n2["...pe_item_is_skipped_for_memory_tree_ingest"]:::impacted
n3["..._is_tolerated_and_skill_store_is_retained"]:::impacted
n4["new"]:::impacted
n5["config_less_adapter_skips_memory_tree_ingest"]:::impacted
n1 -->|uses| n0
n1 -->|calls| n4
n1 -->|tests| n4
n2 -->|uses| n0
n2 -->|calls| n4
n2 -->|tests| n4
n3 -->|uses| n0
n3 -->|calls| n4
n3 -->|tests| n4
n5 -->|uses| n0
n5 -->|calls| n4
n5 -->|tests| n4
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
Green: changed behaviour. Grey: surrounding behaviour. Arrows name the call, use, implementation, or test relationship. Orange: has findings. Red: has a finding that blocks the merge. |
|
Scope note: this PR is API compatibility only — it fixes none of #59's checklist items (those remain for their own single PR). It is the tinymemory half of the pin-bump story; #59's item 7 lists the openhuman-side half (episodic_insert Result absorption, [patch] entries, coordinated tinycortex bump). Merge this before the next openhuman submodule bump. |
The #18 end-to-end audit's downstream dimension resolved every path OpenHuman imports (1,111 path tokens, 33 re-export shim files, signatures diffed old-pin vs new) against the post-#48 tree. Four tinymemory-side breaks would have hit at the next submodule pin bump. Each gets the smallest compat surface, marked for deletion once downstream migrates:
tinymemory_core::tinycortexgone (§C1 rename toengine) — OpenHuman re-exports it wholesale, 25 call sites#[doc(hidden)] pub use engine as tinycortexat the core rootmemory::tinycortex::SyncAuditEntryunresolvable — embedded in an OpenHuman RPC response typeextract_item_iddeleted in §B1a as dead — OpenHuman's raw-coverage tests import it through the pinSyncState::load/savetake core'sSyncStateStore; OpenHuman tests pair that withHostSyncAdapter, which only implemented the engine traitConfirmed for the bump PR on OpenHuman's side (not fixable here):
store_golden.rsmust absorbfts5::episodic_insert→Result<i64>(main drift), and both its cargo workspaces need a[patch]mapping tinymemory-api's git URL to the submodule path.Validated-safe by the audit's refutation pass: the reported live
new_local()caller was a stale checkout — OpenHuman main migrated in openhuman#5575.load_composio_sync_state's retype and every seam-fn signature check shape-compatible for their actual consumers.Validation: 847 + e2e tests green, clippy clean,
engine-containment.shholds (the alias isas tinycortex, not atinycortex::code path — and the script was probe-tested against exactly this).Summary by CodeRabbit