Expose reload kind in config schema lookup#81574
Conversation
|
Codex review: needs maintainer review before merge. Summary Reproducibility: yes. The issue is source-reproducible from current main because lookup omits reload metadata while reload planning already classifies the same paths, and the linked release-level Docker proof demonstrates the user-visible gap. Real behavior proof Next step before merge Security Review detailsBest possible solution: Land the additive lookup metadata contract once required checks are green, keeping the resolver tied to the existing reload planner semantics rather than introducing a second rule table. Do we have a high-confidence way to reproduce the issue? Yes. The issue is source-reproducible from current main because lookup omits reload metadata while reload planning already classifies the same paths, and the linked release-level Docker proof demonstrates the user-visible gap. Is this the best way to solve the issue? Yes. For this PR's scope, an optional resolver-backed What I checked:
Likely related people:
Remaining risk / open question:
Codex review notes: model gpt-5.5, reasoning high; reviewed against 97ed9b2d8295. |
c6b164b to
d2d4b12
Compare
d2d4b12 to
e8ece0f
Compare
|
@clawsweeper re-review Addressed the P3 docs finding by documenting optional Verification:
|
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
e8ece0f to
52b1d17
Compare
|
Follow-up update after the latest base moved:
Full CI is running again on the new head |
52b1d17 to
021d9fc
Compare
|
@clawsweeper re-review Addressed the P2 resolver finding:
Targeted local verification:
|
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
Report ACP control-plane session runtime metadata from persisted ACP session metadata/backend, and keep ACP-shaped bridge sessions on normal configured model/runtime metadata. Proof: focused sessions runtime/model-display tests, core prod/test typechecks, touched-file format check, seeded openclaw sessions --json behavior proof, and passing relevant CI. Known unrelated red check: checks-fast-contracts-plugins-d plugin SDK documentation contract for codex helper subpaths.
021d9fc to
8fec168
Compare
|
Closing this out in favor of replacement PR #81612. The branch metadata for this closed PR became corrupted after a bad force-push from a shallow/grafted local state and GitHub showed the whole repository as added. The replacement PR was rebuilt directly on current |
Summary
Describe the problem and fix in 2–5 bullets:
config.schema.lookupexposed field schema and UI hints, but not whether changing the field can hot-reload or requires a Gateway restart.gateway.handshakeTimeoutMsare hot-reloadable or restart-required.reloadKindmetadata (restart,hot, ornone) resolved through the existing config reload rule matcher.Change Type (select all)
Scope (select all touched areas)
Linked Issue/PR
Real behavior proof (required for external PRs)
config.schema.lookupnow reports the reload behavior for a looked-up config path and its immediate children.HOME=/tmp/oc81409-pr-home, port19809, built from this branch.{ "path": "gateway.handshakeTimeoutMs", "schema": { "type": "integer", "minimum": 1, "maximum": 9007199254740991, "title": "Gateway Handshake Timeout", "description": "Pre-auth Gateway WebSocket handshake timeout in milliseconds. Use higher values on loaded or low-powered hosts where local clients can connect during startup warmup. OPENCLAW_HANDSHAKE_TIMEOUT_MS still takes precedence." }, "reloadKind": "restart", "hint": { "label": "Gateway Handshake Timeout", "help": "Pre-auth Gateway WebSocket handshake timeout in milliseconds. Use higher values on loaded or low-powered hosts where local clients can connect during startup warmup. OPENCLAW_HANDSHAKE_TIMEOUT_MS still takes precedence.", "tags": ["network", "performance"] }, "hintPath": "gateway.handshakeTimeoutMs", "children": [] }{ "path": "gateway", "reloadKind": "restart", "children": [ { "path": "gateway.handshakeTimeoutMs", "reloadKind": "restart" }, { "path": "gateway.channelHealthCheckMinutes", "reloadKind": "hot" } ] }config.schema.lookup.config-reloadunit coverage.Root Cause (if applicable)
lookupConfigSchema()returned schema/UI hint metadata only, while restart/hot/no-op decisions lived inconfig-reload-plan.ts.Regression Test Plan (if applicable)
src/config/schema.test.tslookupConfigSchema()includesreloadKindon the looked-up path and child summaries.src/gateway/config-reload.test.tscovers the reload rule semantics themselves.User-visible / Behavior Changes
config.schema.lookupresponses now include optionalreloadKindmetadata for the requested path and immediate children.Diagram (if applicable)
Security Impact (required)
Yes/No) NoYes/No) NoYes/No) NoYes/No) NoYes/No) NoYes, explain risk + mitigation: N/ARepro + Verification
Environment
HOME=/tmp/oc81409-pr-home/tmp/oc81409-pr-home/.openclaw/openclaw.json; Gateway token used locally only and not included here.Steps
pnpm build:strict-smoke.HOMEand port19809.config.schema.lookupforgateway.handshakeTimeoutMs.config.schema.lookupforgatewayand inspect child summaries.Expected
gateway.handshakeTimeoutMsreportsreloadKind: "restart".gateway.channelHealthCheckMinutesappears in child summaries withreloadKind: "hot".Actual
Evidence
Attach at least one:
Targeted checks run locally:
Human Verification (required)
What you personally verified (not just CI), and how:
gateway.handshakeTimeoutMslookup now returnsreloadKind: "restart".gatewaylookup child summaries include both restart-required and hot-reloadable children.Review Conversations
If a bot review conversation is addressed by this PR, resolve that conversation yourself. Do not leave bot review conversation cleanup for maintainers.
Compatibility / Migration
Yes/No) YesYes/No) NoYes/No) NoRisks and Mitigations
AI-assisted disclosure
This PR was prepared with AI assistance. I reviewed the change, understand the code path, and ran the local verification listed above.