feat(preference): add thin provider-neutral recall hook - #1991
Conversation
FindingsNo blocking findings remain. The self-review initially found that result count was bounded but individual provider items and receipt reference lists were not. Commit Assumptions
Product / architecture judgmentThe PR solves the intended problem with a thin reusable boundary: arbitrary module-owned surface/query configuration, one provider-neutral command protocol, bounded recall, and one stateless receipt constructor. It has no Issue-Fix branch and creates no independent memory/reward ledger. The main installed-user risk is execution of a configured local command. That behavior is opt-in, config files inside a project must be ignored and untracked, time/output/item limits are enforced, and raw provider failures are reduced to stable failure kinds. No existing caller is activated automatically. Validation
Merge decisionApproved for owner-authorized self-merge. The change is single-purpose, default-off, provider-neutral, boundary-scanned, and verified at one real callsite. |
Summary
semantic_preference.recall()seam keyed by module-ownedsurfaceandqueryconfigurationissue_fix.pr_descriptionapplication policyWhy
Domain modules need a small way to reuse provider-owned semantic preferences without moving storage, ranking, or semantic policy into LoopX. The earlier prototype also maintained its own receipt persistence and configuration-summary abstractions; those were removed because existing LoopX evidence and state surfaces already own durable writeback.
Real callsite
An enabled local-private OpenViking provider recalled a reviewer-facing PR-description preference before editing public OpenViking PR #3190. The description was changed from English to concise structured Chinese, remote readback matched the intended body, and the generated receipt retained only the public artifact reference plus a digest of the provider-owned preference reference. No provider config, recalled content, or receipt ledger is included in this PR.
Validation
python3 examples/semantic-preference-hook-smoke.pypython3 examples/issue-fix-capability-guide-smoke.pypy_compileon changed Python filesloopx checkpublic-boundary scanRisk and compatibility