Fix skill config requirements, spawn allowlists, chat stop lifecycle, and systemd status#79538
Conversation
|
Codex review: needs real behavior proof before merge. Reviewed July 3, 2026, 11:46 PM ET / 03:46 UTC. Summary PR surface: Source +79, Tests +158, Docs +7. Total +244 across 19 files. Reproducibility: yes. at source level: current main still has the skill object-normalization gap, missing spawn allowlist env reader, and systemd ActiveState-only status path. I did not run live Docker/WebChat/Linux systemd reproduction in this read-only review. Review metrics: 1 noteworthy metric.
Stored data model 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:
Mantis proof suggestion Risk before merge
Maintainer options:
Next step before merge
Security Review findings
Review detailsBest possible solution: Split or rebase onto current main, keep the still-useful skill/systemd fixes, route spawn env handling through a fallback-only canonical config-load path, preserve configured-agent filtering, remove release-owned changelog edits, and add redacted real behavior proof. Do we have a high-confidence way to reproduce the issue? Yes at source level: current main still has the skill object-normalization gap, missing spawn allowlist env reader, and systemd ActiveState-only status path. I did not run live Docker/WebChat/Linux systemd reproduction in this read-only review. Is this the best way to solve the issue? No as submitted. The useful fixes need a current-main rebase or split, canonical config-load handling for the env fallback, preserved configured-agent filtering, paired chat alias cleanup, and real behavior proof. Full review comments:
Overall correctness: patch is incorrect AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against 9d68f877ac3e. Label changesLabel justifications:
Evidence reviewedPR surface: Source +79, Tests +158, Docs +7. Total +244 across 19 files. View PR surface stats
Security concerns:
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
|
054dbe6 to
705723b
Compare
|
This pull request has been automatically marked as stale due to inactivity. |
|
Thanks for the contribution. I’m closing this branch because it remains dirty against current |
Summary
metadata.openclaw.requires.configentries through theirpathfield so skill status/info no longer prints[object Object]or blocks valid documented requirements.OPENCLAW_SPAWN_ALLOWLIST/SPAWN_ALLOWLISTas fallback subagent target allowlists when config does not provide one./newlifecycle state.systemctl is-activewhensystemctl showreports a stale failed state for the Gateway user service.upstream/mainso the production dependency audit includes thefast-uripin already present on main.Real behavior proof
[object Object], subagent spawn env allowlists were ignored, WebChat run state could stay active after backend error/context-overflow completion, andopenclaw statuscould report a systemd Gateway service failed even whensystemctl is-activereported active.705723b9d0after rebasing ontoupstream/main; Node v22.15.0 for repo test wrappers; WSL Ubuntu has systemd installed but no user bus and no Linux Node, so it could not provide honest live user-systemd proof on this host.SPAWN_ALLOWLISTfallback allowlists are respected, chat final/error lifecycle maps the backend run id to the client run, and the systemd parser prefers activeis-activeoutput over stale failedshowstate. The dependency-audit failure from the old branch base is gone after rebase.openclaw statusrun could not be executed on this Windows host because WSL reportssystemctl --userbus unavailable and has no Linux Node/pnpm. The fullsrc/daemon/systemd.test.tsfile also has unrelated Windows-only failures aroundprocess.geteuidand quoted WindowsEnvironmentFilepaths; the new stale-state regression passed in isolation.Verification
pnpm docs:listpnpm exec oxfmt --check --threads=1 CHANGELOG.md docs/gateway/config-tools.md docs/tools/creating-skills.md docs/tools/skills.md docs/tools/subagents.md src/agents/acp-spawn.ts src/agents/openclaw-tools.subagents.sessions-spawn.allowlist.test.ts src/agents/skills.buildworkspaceskillstatus.test.ts src/agents/subagent-spawn.ts src/agents/subagent-target-policy.test.ts src/agents/subagent-target-policy.ts src/agents/tools/agents-list-tool.test.ts src/agents/tools/agents-list-tool.ts src/daemon/systemd.test.ts src/daemon/systemd.ts src/gateway/server-methods/chat.directive-tags.test.ts src/gateway/server-methods/chat.ts src/shared/frontmatter.test.ts src/shared/frontmatter.tsOPENCLAW_VITEST_MAX_WORKERS=1 pnpm test src/agents/skills.buildworkspaceskillstatus.test.ts src/agents/openclaw-tools.subagents.sessions-spawn.allowlist.test.ts src/agents/subagent-target-policy.test.ts src/agents/tools/agents-list-tool.test.ts src/shared/frontmatter.test.ts src/gateway/server-methods/chat.directive-tags.test.ts -- --reporter=verboseOPENCLAW_VITEST_MAX_WORKERS=1 pnpm test src/daemon/systemd.test.ts -t "prefers is-active" -- --reporter=verbosenode scripts/pre-commit/pnpm-audit-prod.mjs --audit-level=highpnpm check:changed --base upstream/maingit diff --check upstream/main..HEADNote: this shell's default Node is v22.15.0, so pnpm emitted the repo engine warning (
>=22.16.0required); the commands above completed with that warning.