Repository navigation
fix(recall): recall_hierarchical reads the domain remember writes (#721, slice 3) - #914
Conversation
…, slice 3) recall_hierarchical passed an explicit domain unresolved to get_memories_for_domain, while remember and recall resolve it with resolve_explicit_domain. recall_hierarchical(domain="cortex-cowork") read a scope no write used (remember stores it under "cortex"). The public handler now resolves the domain in _scoped_by_explicit_domain before _handler_impl. Refs #721 Co-Authored-By: Claude Opus 5.5 <[email protected]> Claude-Session: https://claude.ai/code/session_018kyZYrLVRR1neS4ZBBFr1D
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
|
Claude finished @cdeust's task in 1m 31s —— View job PR #914 review (1 of 3)
None of the five reviews found a Blocker. The review comment lists three notes that need no action before merge: one weak test assertion, three paths with no test, and a CHANGELOG wording that is only true when Not run: I couldn't run pytest or Verdict: approve |
Review 1/3 — PR #914 (
|
|
Réponse à la revue 1/3 (verdict : approve, aucun bloquant). Conformément à ADR-1119, qui réserve les pushs aux bloquants, je ne pousse rien pour ces trois notes. Elles sont exactes et partiront avec le prochain push de code sur cette branche, ou avec la tranche suivante de #721 :
Generated by Claude Code |
Summary
remember(#877) andrecall(#901) resolve an explicitdomainwithresolve_explicit_domain(an exact repository name or ADR-0647 family member maps to its canonical, any other name is kept, lowercased).recall_hierarchicalstill passed the raw argument toget_memories_for_domain, sorecall_hierarchical(domain="cortex-cowork")built its hierarchy over a scope no write ever used (rememberstores undercortex), anddomain="SciFact"missedscifact. The publichandlernow wraps_scoped_by_explicit_domain, which resolves the domain and calls the unchanged_handler_impl(same pattern asrecall). A blank domain resolves to"", which the bounded-scope contract (ADR-0045 R3) treats as no domain, so it raises the existingValidationError. The caller's dict is copied, never changed; the small-set fallback to flatrecallreceives the already-resolved domain (resolving again is idempotent).Refs #721 (slice 3; does not close the issue).
Type of change
Test plan
tests_py/handlers/test_recall_hierarchical_domain_scope.py(8 tests, real repository registry undertmp_path, fake store recording the domain read): 7 fail without the fix, 8 pass with it. They catch a mutation that drops the resolution, passes the raw name, or reuses the substring-guessingresolve_domain.pytest tests_py/handlers/test_recall_hierarchical_domain_scope.py tests_py/handlers/test_recall_hierarchical_bounded.py tests_py/handlers/test_recall_domain_scope.py tests_py/handlers/test_tool_schema_parity.py tests_py/handlers/test_tool_description_drift_guard.py tests_py/shared/test_explicit_domain_identity.py→ 51 passed (PostgreSQL-gated tests skip).ruff check/ruff format --checkon the changed files: clean.scripts/check_craftsmanship.py: OK.scripts/check_doc_claims.py: exit 0.--no-install-package torchbecausedownload-r2.pytorch.orgis refused by the session proxy.Audit notes
directory>domainpriority inrememberwhile the schema callsdomainan override: owner decision; (2) other readers taking adomain(e.g.unified_search,drill_down,narrative) do not resolve it yet, each needs checking whether itsdomainis a memory scope or a profile domain; (3) document aliases and the migration of rows already written under a collided domain.Coding-standards compliance
shared).Breaking changes
None for named domains that already matched a stored scope. A whitespace-only
domainnow raisesValidationError(no scope) instead of reading the scope" ".Reviewer checklist
https://claude.ai/code/session_018kyZYrLVRR1neS4ZBBFr1D
Generated by Claude Code