fix(setup): validate current OpenClaw package lifecycle - #999
fix(setup): validate current OpenClaw package lifecycle#999TheAngryPit wants to merge 22 commits into
Conversation
2257b8b to
953c7cc
Compare
|
Codex review: needs maintainer review before merge. Reviewed August 5, 2026, 8:22 AM ET / 12:22 UTC. ClawSweeper reviewWhat this changesThis PR adds digest-verified composed Gateway package installation for setup validation, updates Gateway lifecycle and command-policy handling, and expands CI, tests, and documentation around that path. Merge readinessCurrent main does not include the PR’s package-digest and setup-lifecycle work. The remaining blocker is a maintainer security-boundary decision on whether CI may compose and exercise Gateway code fetched from a contributor fork, not a discrete patch defect. Priority: P1 Review scores
Verification
How this fits togetherWindows Companion setup provisions an app-owned WSL Gateway, then pairs the tray and Windows node with it. The PR changes package selection and verification before installation, then validates the resulting Gateway service and connection path. flowchart LR
A[Setup configuration] --> B[Gateway package selection]
B --> C[Digest verification]
C --> D[Gateway installer]
D --> E[Gateway service]
E --> F[Tray and Windows node]
G[CI composition inputs] --> B
Decision needed
Why: The implementation verifies immutable refs, allowed paths, and package bytes, but deciding whether this repository endorses non-upstream Gateway behavior is a supply-chain and ownership choice. Before merge
Findings
Agent review detailsSecurityNeeds attention: The branch has strong integrity checks, but it introduces a maintainer-owned supply-chain exception by fetching and packaging Gateway source from a contributor fork. Review metrics
Merge-risk optionsMaintainer options:
Technical reviewBest possible solution: Keep the official 2026.7.1 fallback path and accept the composed candidate only after maintainers explicitly approve the frozen Core delta, or replace that delta with an official upstream revision and retain the digest-bound installer contract. Do we have a high-confidence way to reproduce the issue? Yes, at source level. Current main pins 2026.6.11 and lacks the digest-bound package path that this PR adds; the provided exact-head E2E evidence also reports the composed setup and recovery paths passing. Is this the best way to solve the issue? Unclear. The digest-bound local-package installation path is a focused integrity design, but accepting the remaining contributor-fork Gateway source requires maintainer approval or an upstream replacement. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against d2de6150753b. LabelsLabel justifications:
EvidenceSecurity concerns:
What 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 (35 earlier review cycles; latest 8 shown)
|
|
Status update after current-main integration and fresh official-package validation:
The PR body now contains the full failed-first evidence, scope, validation, and sanitized operator/agent decision record. I am marking it ready so maintainers can review the actual tradeoff rather than leaving the work hidden in draft. This is not a claim that the known stable-package E2E blocker is resolved. No maintainer or automerge action is requested here. |
|
Current-head proof update:
The PR body now distinguishes the Companion fixes from the remaining OpenClaw core dependency and requests review of the beta-default contract. |
434af02 to
8b3d57f
Compare
Security-floor correction publishedCurrent head: This update corrects the ordinary Gateway fallback at the layer that owns it:
Fresh local proof on the exact commit:
GitHub checks started automatically from the push. No manual ClawSweeper re-review command was added. |
|
This pull request has been automatically marked as stale due to inactivity. |
|
Closing due to inactivity. |
Summary
.tgz.2026.7.1remains the embedded LKG and minimum security floor. The compatibility candidate is separately composed from official2026.7.2-beta.5plus the bounded wizard lifecycle correction. Digest mismatch fails closed before installation.Change Type
Scope
winnodeLinked work
Frozen composition and artifact
Exact-head CI run:
3046358814919145d0e6c2d895a537235112833d529d51034fev2026.7.2-beta.5ee929dbb857c717a60f3b2b502db5a6dd31b5c11c6b4e912eb103fe8ceb89ffc2a60411624163b4b1dd28f1bca984efcdec6a6c537a5a8426694d1b22a3612054f6cacce893526c16ce37daa94ba9abfadad475a3018b523306c7c002c5d91efadeecdf7cc61a9ffb723c85600a39dd7openclaw-2026.7.2-beta.5-hosted-wizard.tgz967f413f9970c76cb51c0c11477fb61be552564a2f67a2004843ea5910209f7e34,219,052bytes2026.7.2-beta.5The uploaded artifact
openclaw-beta5-hosted-wizard-composedcontainsprovenance.json,SHA256SUMS, and the package. CI verifies the source SHA, compatibility base and head, patch hash, five-path allowlist, internal package version, and final package digest before any composed E2E consumer runs.The three Gateway files are the beta-5 projection of the lifecycle correction that landed through #115671. The remaining two
setup.finalizefiles adapt that correction to beta 5's published-model-catalog ownership. That two-file compatibility delta is still fetched from the contributor fork; it is disclosed rather than presented as upstream-owned. Maintainer acceptance or a narrow Core upstreaming step remains the provenance decision.Exact-head validation
Published PR head:
19145d0e6c2d895a537235112833d529d51034feFresh GitHub Windows/WSL checks on this exact head:
12m56s6m47s2026.7.1setup and connection: passed in11m33s12m47s10m46s13m19s4m56sLocal current-head proof before publication:
765/76534/3435/350.98Real behavior proof
The exact-head composed E2E consumed the SHA-256-bound artifact above on a disposable GitHub Windows/WSL runner and passed setup, Gateway restart, HTTP readiness, connection, revocation recovery, and network recovery.
The official unmodified
2026.7.2-beta.5control exercised the same setup-connect path and failed after Gateway restart with:PreparedModelCatalogConfigReplacedError: prepared model catalog owner config was replaced during the read ($HOME/.openclaw/agents/main/agent)The control reached the wizard end and a healthy restarted Gateway (
HTTP 200) before the safety check rejected the replaced catalog owner. Its downstream fixture failures are a consequence of that initialization failure. The composed candidate passes the same supported path, isolating the five-file compatibility correction from the Windows Companion changes.The package-consumption boundary is independently pinned by current-head tests:
.tgz..tgzis passed to the official installer path.No operator runtime, private data, credentials, or channels were used.
Package and lifecycle compatibility
2026.7.1is the embedded official LKG fallback and minimum security floor.2026.7.2-beta.5is the frozen official control.provenance.json.The fallback policy is recorded in
docs/adr/0001-gateway-lkg-security-floor.md. Automation accepts only exact official stable versions strictly newer than the current pin; it rejects prereleases, equal versions, and downgrades.Current and composed packages use
gateway.nodes.commands.allow. The pinned historical packages retain their version-appropriate legacy command-policy key. All paths preserve the complete capability-derived allowlist.Selected-port ownership is proven by matching every listener PID from
ssto the managedopenclaw-gateway.serviceMainPID. Unknown, mixed, or unattributable ownership fails closed. The patch does not kill processes or broaden command authority.Security impact
2026.7.1and cannot be replaced by a prerelease or composed package reference.Compatibility and migration
2026.7.1.2026.7.2-beta.5.Review conversations
2026.7.1minimum security floor and stable-only forward-update rule.Agent Transcript
Redacted operator and agent engineering record
2026.7.1as the minimum security floor. The branch records that as an ADR instead of coupling ordinary rollback to the beta candidate.MainPIDownership instead of adding process killing or broader authority.