Fix status cold-path plugin metadata scans#80614
Conversation
Keep non-deep status rendering on the cold path by skipping manifest normalization for status-only model parsing, caching CLI-provider checks per config object, and reusing per-agent session rows instead of rebuilding them for the global recent list. Agent: Eva Constraint: openclaw status must stay a shallow local health read unless --deep asks for slower plugin/model probing. Rejected: process-global plugin metadata caching | broader and staler than needed for the status cold path. Confidence: high Scope-risk: narrow Directive: Keep expensive plugin/model normalization out of default status rendering. Tested: pending on rebased branch. Not-tested: beta release adoption. Co-authored-by: OmX <[email protected]>
|
Codex review: needs changes before merge. Summary Reproducibility: yes. source-backed: the PR body gives before/after timing output for the affected 2026.5.7 install, and current main still has the status model parsing path that can manifest-normalize without an explicit Real behavior proof Next step before merge Security Review findings
Review detailsBest possible solution: Land the status cold-path optimization after rebuilding global session rows once per unique store without Do we have a high-confidence way to reproduce the issue? Yes, source-backed: the PR body gives before/after timing output for the affected 2026.5.7 install, and current main still has the status model parsing path that can manifest-normalize without an explicit Is this the best way to solve the issue? No, not as submitted: the manifest-normalization and CLI-provider-cache pieces are narrow, but the global session aggregation change breaks shared-store semantics. The safer repair is to reuse loaded stores without reusing per-agent-overridden rows for the global list. Full review comments:
Overall correctness: patch is incorrect Acceptance criteria:
What I checked:
Likely related people:
Remaining risk / open question:
Codex review notes: model gpt-5.5, reasoning high; reviewed against 447206623700. |
Agent: Eva
|
Adding a small independent data point from a separate 2026.5.7 installation. This is not validation of the PR head; it is a local source/runtime microcheck of the same cold path described in #80611/#80614.
That independently corroborates the PR's status-specific direction: keep status-summary model parsing off manifest normalization and avoid repeated CLI-provider/plugin-metadata discovery while rendering session rows. |
|
Thanks for the status-path analysis and the before/after timing proof. I’m closing this as superseded by the current Current
The broader landed proof for #82814 moved the original metadata regression from I’m not landing this branch because it now overlaps the current-main fix and also carries extra status/task/session-row changes that are no longer the smallest safe patch for this regression. If a large-session |
Summary
openclaw statussession-summary rendering on a shallow path by disabling manifest model-id normalization in status-only model parsing.allowManifestNormalizationthrough persisted model-ref resolvers so status callers can avoid plugin metadata loads without changing normal model selection behavior.Closes #80611.
Related: #79129.
Root cause
Plain
openclaw statusrendered session model/runtime labels by repeatedly entering plugin metadata/model normalization paths. On a 2026.5.7 npm-global install, this made default status take ~20s whileopenclaw gateway statuswas ~1.3s.The slow path was not the gateway probe. It came from status summary/model/runtime labeling:
Local behavior proof
On the affected stable install before the patch:
After applying the same fix locally to the installed stable dist through a managed patch:
The source checkout based on
v2026.5.7also built and ran with the fix before rebasing this PR onto currentmain.Validation
Run on this PR branch after rebasing onto current
origin/main:Results:
Notes
pnpm buildupdatedextensions/canvas/src/host/a2ui/.bundle.hashlocally as a generated artifact; that unrelated generated change was reverted and is not part of this PR.AI-assisted: yes.