RFC 0018: Readiness Conditions and Providers - #33
Conversation
510b525 to
5d3b673
Compare
|
Codex review: needs real behavior proof before merge. Reviewed July 27, 2026, 7:04 PM ET / 23:04 UTC. ClawSweeper reviewWhat this changesThe branch adds RFC 0018 and three supporting specifications for an opt-in Gateway readiness model with structured conditions, runtime subject identity, selectable criteria, and bounded plugin observations. Merge readinessKeep this PR open: it is a distinct, documentation-only RFC, but it still needs the repository-required maintainer discussion and an explicit product decision on the proposed public readiness and plugin-provider contract. Priority: P2 Review scores
Verification
How this fits togetherThe proposal sits between Gateway runtime facts and the readiness signals consumed by operators. It would combine core and activated-plugin observations into one canonical result that feeds flowchart LR
A[Gateway runtime facts] --> D[Readiness evaluation]
B[Operator readiness settings] --> D
C[Activated plugin observations] --> D
D --> E[Canonical readiness result]
E --> F[Ready endpoints]
E --> G[Gateway status]
E --> H[CLI readiness output]
Decision needed
Why: The PR defines new configuration and extension semantics rather than documenting an already accepted contract, so a contributor review cannot determine the intended long-term public API. Before merge
Findings
Agent review detailsSecurityNone. Review metrics
Merge-risk optionsMaintainer options:
Technical reviewBest possible solution: Open and link the required maintainer discussion, decide whether the opt-in legacy-preserving readiness contract is acceptable, then revise the RFC to record the chosen boundary before merge. Do we have a high-confidence way to reproduce the issue? Not applicable: this PR proposes a future readiness contract and does not report a currently failing behavior to reproduce. Is this the best way to solve the issue? No: the proposed opt-in boundary may be a maintainable approach, but it is not ready to merge until a maintainer discussion records whether this public configuration and plugin contract is wanted. Full review comments:
Overall correctness: patch is incorrect AGENTS.md: not found in the target repository. Codex review notes: model internal, reasoning high; reviewed against 593e6e46632b. LabelsLabel justifications:
EvidenceWhat I checked:
Likely related people:
Rank-up movesOptional improvements that raise the rating; they are not merge blockers.
Rating scale
Overall follows the weaker of proof and patch quality. Workflow
HistoryReview history (70 earlier review cycles; latest 8 shown)
|
|
@clawsweeper re-review |
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
|
@clawsweeper re-review |
|
🦞🧹 I asked ClawSweeper to review this item again. Re-review progress:
|
Decision Requested
Should OpenClaw add an opt-in, structured, subject-aware readiness contract around its existing Gateway checker?
This RFC covers Readiness Conditions and Providers. Standard Hosting Profiles remain a separate product/support decision in RFC 0023.
Why
OpenClaw already exposes
/readyand/readyz, but their evaluator is purpose-built around fixed Gateway observations. Operators cannot select which known runtime facts their deployment requires, plugins cannot contribute bounded observations, and a single result cannot identify the different runtime subjects those observations describe.Proposed V1
Each condition has stable
type,subjectRef,status,requirement,reason, andmessagefields, with optional bounded related subjects. RequiredFalseorUnknownconditions fail readiness; advisory conditions remain visible. Activated/ready,/readyz, Gateway health/status projections, andopenclaw readyconsume the same canonical result. HTTP/healthand/healthzremain shallow liveness.The result declares its producer and a versioned reconciled subject package once. IDs renew at the lifecycle boundary owned by each subject: optional host workload, process, Gateway serving lifecycle, config, plugin, node, or another resource. A generation revises the same object. Operators can therefore diff
(subjectRef, type)and distinguish a condition transition from replacement or revision.OpenClaw retains no history. Hosts and telemetry systems may store and diff the bounded result. This gives Docker, Kubernetes, OCC, and other operators enough attribution to explain a readiness transition without turning readiness into a resource store or control plane.
Operators select reusable criteria through
gateway.readiness. Registering a criterion never selects it. Plugin providers are namespaced, enumerable, observational, advisory by default, and receive a subject collector. Core owns deadlines, cancellation, coalescing, caching, output bounds, redaction, reconciliation, deterministic ordering, and fail-closed projection.This PR includes the normative
Readiness v1andReadiness Subjects v1sidecars. Its non-normative platform comparison maps the design to Kubernetes, Docker, systemd, ASP.NET Core, Spring Boot, and OpenTelemetry.Proposed Condition Catalog
The initial catalog makes the concrete runtime coverage visible:
GatewayStartupComplete,GatewayAcceptingWork,ChannelRuntimeReady,ConfigLoadedChannelRuntimeSuppressed,EventLoopHealthy,PluginsLoadedWorkspaceWritable,ConfigCurrent,ModelRouteReady,SecretsReadyContextEngineReady,ToolCatalogReady,McpRuntimeReady,SandboxReady,HarnessReadySessionStorageReady,StateReady,DeliveryRuntimeReady,SchedulerReadyplugin.<plugin-id>.<criterion-id>ReadinessEvaluationCompleteand remoteGatewayRespondingguard failures keep incomplete evaluation or an unreachable Gateway explicit. Merely implementing or registering a condition never selects it. Outside the universal baseline, onlygateway.readinessconfiguration or a separately accepted Hosting Profile changes what must pass.Compatibility Boundary
gateway.readinessor another accepted activation contract,/readyand/readyzuse the legacy checker.gateway.readiness, including{}, activates bounded canonical evaluation.Unknownconditions.Implementation Stack
The complete upstream implementation for RFC 0018 is:
2f131c6e220.c1d7f394f86. It depends on PR 104018.Both PRs are profile-free and independently adoptable. Owner criteria observe existing snapshots. Readiness does not make model calls, acquire credentials, connect MCP servers, start sandboxes or harnesses, open databases, or start schedulers. Active filesystem checks and provider calls are bounded.
Operator Facilities
openclaw ready --watchwith bounded semantic transitions, recovery, and subject-lifetime replacement without changing one-shot behavior.openclaw ready criteria list|inspectwithout invoking providers.openclaw ready --wait [duration]as a bounded startup gate over the canonicalreadyRPC.Package Proof
Exact-head package-installed Docker proof passes over profile head
18c42a7f26aand release-artifact head123bae7b876. It exercises RFC 0018 readiness surfaces, stable repeated polls, fail-closed transitions, and host-stable/process-and-Gateway-renewing container restart semantics using an immutable no-push package/image artifact.Maintainer Questions