fix(plugins): cache installed manifest fingerprints#86797
Conversation
|
Codex review: needs real behavior proof before merge. Reviewed June 29, 2026, 10:09 AM ET / 14:09 UTC. Summary PR surface: Source +8, Tests +66. Total +74 across 2 files. Reproducibility: yes. for the PR-branch defect from source inspection: call the submitted fingerprint function once, mutate the same index object or change a manifest/package file when signatures are absent, and a later call can return the old hash. I did not replay the original long-running gateway profiler workload. Review metrics: 1 noteworthy metric.
Stored data model Root-cause cluster Members:
Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything. Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Proof guidance:
Risk before merge
Maintainer options:
Next step before merge
Security Review findings
Review detailsBest possible solution: Keep the guarded implementation as canonical; if maintainers want this PR to continue, refresh it to preserve those guards and add real proof, otherwise close it manually as superseded. Do we have a high-confidence way to reproduce the issue? Yes for the PR-branch defect from source inspection: call the submitted fingerprint function once, mutate the same index object or change a manifest/package file when signatures are absent, and a later call can return the old hash. I did not replay the original long-running gateway profiler workload. Is this the best way to solve the issue? No: the submitted unconditional object-identity cache is broader than the fingerprint invalidation contract. The current-main guarded cache is the narrower maintainable fix because it only memoizes deeply frozen indexes with persisted file signatures. Full review comments:
Overall correctness: patch is incorrect AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against be94853de0d0. Label changesLabel justifications:
Evidence reviewedPR surface: Source +8, Tests +66. Total +74 across 2 files. View PR surface stats
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
Review history (1 earlier review cycle)
|
|
ClawSweeper PR egg 🎁 Pass real behavior proof to wake the egg and unlock a hatchable treat. Where did the egg go?
|
|
Manual review fallback for PR #86797 ( The requested IntentThe PR adds an object-identity FindingsBlocking: the WeakMap cache breaks existing fingerprint invalidation semantics
The new cache keys only by the Existing tests in
With this PR, all of those same-object changes are hidden after the first call. That can cause plugin metadata snapshots and registry memo keys to keep using stale fingerprints, because callers such as Recommended fix: do not cache every Per-file Risk Review
|
Summary
What problem does this PR solve?
Why does this matter now?
What is the intended outcome?
What is intentionally out of scope?
What does success look like?
What should reviewers focus on?
Linked context
Which issue does this close?
Closes #86791
Which issues, PRs, or discussions are related?
Related #
Was this requested by a maintainer or owner?
Local performance bug extraction from redacted profiler evidence.
Real behavior proof (required for external PRs)
Behavior addressed: Gateway plugin metadata hot paths repeatedly resolve and stat stable installed manifest/package metadata when fingerprinting the same installed plugin index object.
Real environment tested: Local OpenClaw source worktree on Linux with Node v24.15.0; focused Vitest regression tests and diff hygiene were run in the isolated bug branch worktree.
Exact steps or command run after this patch:
node node_modules/vitest/vitest.mjs run src/plugins/manifest-registry-installed.fingerprint.test.ts --reporter=verbose git diff --check .agents/skills/autoreview/scripts/autoreview --mode localEvidence after fix:
Observed result after fix: Focused regression coverage passed and autoreview reported no accepted/actionable findings.
What was not tested: No live long-running profiler rerun was performed after the patch. Other filesystem chains from session, transcript, Telegram spool, and subagent paths remain out of scope for this narrow PR.
Proof limitations or environment constraints: The original evidence is from redacted local profiler artifacts; this PR includes focused seam proof rather than a full live profiler replay.
Before evidence (optional but encouraged):
Tests and validation
Which commands did you run?
node node_modules/vitest/vitest.mjs run src/plugins/manifest-registry-installed.fingerprint.test.ts --reporter=verbose git diff --check .agents/skills/autoreview/scripts/autoreview --mode localWhat regression coverage was added or updated?
src/plugins/manifest-registry-installed.ts; src/plugins/manifest-registry-installed.fingerprint.test.ts
What failed before this fix, if known?
The profiler/timeline evidence showed the hot-path behavior described in the linked issue.
If no test was added, why not?
Focused regression coverage was added or updated.
Risk checklist
Did user-visible behavior change? (
Yes/No)No
Did config, environment, or migration behavior change? (
Yes/No)No
Did security, auth, secrets, network, or tool execution behavior change? (
Yes/No)No
What is the highest-risk area?
Preserving existing hot-path behavior while reducing repeated work.
How is that risk mitigated?
Focused regression tests plus autoreview.
Current review state
What is the next action?
Maintainer review and CI.
What is still waiting on author, maintainer, CI, or external proof?
Full live profiler replay was not run locally.
Which bot or reviewer comments were addressed?
Local autoreview findings were addressed before opening this PR where applicable.