fix(skills): refresh snapshots after skill exposure config changes#82365
fix(skills): refresh snapshots after skill exposure config changes#82365DevInvestor wants to merge 1 commit into
Conversation
|
Codex review: needs maintainer review before merge. Summary Reproducibility: yes. At source level, current main builds snapshots from Real behavior proof Next step before merge Security Review detailsBest possible solution: Land the narrow fingerprint-based invalidation after normal CI and maintainer checks, keeping live deployment and Tom/HQ config exposure as a separate rollout step. Do we have a high-confidence way to reproduce the issue? Yes. At source level, current main builds snapshots from Is this the best way to solve the issue? Yes. Persisting and comparing a redacted config fingerprint in both snapshot reuse paths is the narrow maintainable fix, and the helper keeps raw config secrets out of the persisted field. What I checked:
Likely related people:
Codex review notes: model gpt-5.5, reasoning high; reviewed against efabae2f9bf0. |
Summary
skillsSnapshotentries refresh after skill exposure config changes, includingskills.load.extraDirsxurlis local butx-post-analysisappears only via shared configContext
This is Lane A for GB-P12-W4 x-post-analysis deterministic workflow. It fixes the runtime side of the incident where Tom's persistent session had
xurlbut notx-post-analysis, so it could not load the built X-post workflow.Real behavior proof
skillsSnapshotentries now refresh when the runtime skill exposure config changes, includingskills.load.extraDirs, instead of keeping a stale snapshot that hasxurlbut notx-post-analysis./root/clawd/.worktrees/dan-xpost-snapshot-runtime, Node v22.22.2, using real local skill directories and/root/clawd/skills/x-post-analysis/SKILL.mdas the shared skill exposed throughskills.load.extraDirs.cd /root/clawd/.worktrees/dan-xpost-snapshot-runtime node --import tsx ./.tmp-xpost-real-behavior-proof.ts{ "setup": { "workspace": "/tmp/openclaw-xpost-proof-eaZ0Io/workspace", "managedSkillsDir": "/tmp/openclaw-xpost-proof-eaZ0Io/managed-skills", "bundledSkillsDir": "/tmp/openclaw-xpost-proof-eaZ0Io/bundled-skills-empty", "sharedSkillsExtraDir": "/root/clawd/skills", "agentId": "tom", "skillFilter": ["xurl", "x-post-analysis"] }, "before": { "extraDirs": [], "skills": ["browser-automation", "xurl"], "hasXurl": true, "hasXPost": false, "configFingerprint": "de6316be2f21..." }, "after": { "extraDirs": ["/root/clawd/skills"], "skills": ["brave-search", "browser-automation", "coding-agent", "elevenlabs-voices", "github", "notion", "phone-agent", "planning-with-files", "video-transcript-downloader", "weather", "x-post-analysis", "xurl"], "hasXurl": true, "hasXPost": true, "xpostResolved": "/root/clawd/skills/x-post-analysis/SKILL.md", "configFingerprint": "3f0f7ab04b1c..." }, "fingerprintChanged": true }/root/clawd/skillstoskills.load.extraDirs, the real snapshot builder exposesx-post-analysisand records a changed redactedconfigFingerprint, which is the persisted signal used by the patch to refresh staleskillsSnapshotdata.Verification
OPENCLAW_VITEST_MAX_WORKERS=1 node scripts/test-projects.mjs --maxWorkers=1 src/agents/skills.buildworkspaceskillsnapshot.test.tsOPENCLAW_VITEST_MAX_WORKERS=1 node scripts/test-projects.mjs --maxWorkers=1 src/auto-reply/reply/session-updates.test.tsOPENCLAW_VITEST_MAX_WORKERS=1 node scripts/test-projects.mjs --maxWorkers=1 src/agents/agent-command.live-model-switch.test.tsnode scripts/run-oxlint.mjs --tsconfig config/tsconfig/oxlint.core.json ...node scripts/run-tsgo.mjs -p test/tsconfig/tsconfig.test.src.json ...Deployment
No live runtime/config/session mutation in this PR. Deployment/config exposure remains separate and must include backups, health checks, Tom
hasXPost=trueproof, and rollback.