feat(telemetry): accept identifier-free update outcomes - #23
roboclaw-bot wants to merge 2 commits into
Conversation
Co-authored-by: fuller-stack-dev <263060202+fuller-stack-dev@users.noreply.github.com> Co-authored-by: steipete <58493+steipete@users.noreply.github.com>
Co-authored-by: fuller-stack-dev <263060202+fuller-stack-dev@users.noreply.github.com> Co-authored-by: steipete <58493+steipete@users.noreply.github.com> OpenClaw-Publication: 6f22cf3b-82c5-4ca7-9d1c-c79f01c7dbd7
|
🦞👀 Pull request received. I will update this pull request when review starts. ClawSweeper review completeClawSweeper finished reviewing this revision. The review result is being finalized. |
|
Codex review: needs real behavior proof before merge. Reviewed September 19, 2026, 1:34 PM ET / 17:34 UTC. ClawSweeper reviewWhat this changesThe PR adds strictly validated, identifier-free update outcome reports to the existing version endpoint, stores them in a separate dataset, and documents their privacy and storage contract. Regression provenancePossible regression — suspected (reviewed change). No predecessor PR is attributed. Merge readiness⛔ Blocked before merge - 6 items remain This adds distinct behavior absent from main. Keep it open: production activation conflicts with the stated separate rollout boundary, and moving body reads ahead of the recording limiter introduces a response-stalling regression. Priority: P2 Review scores
Verification
How this fits togetherThe telemetry Worker receives OpenClaw version checks and returns the latest npm release while recording bounded analytics. This change routes update outcomes through separate validation and storage instead of the daily telemetry dataset. flowchart TD
A[Version check or outcome report] --> B[Request classification]
B --> C[Daily telemetry validation]
B --> D[Strict outcome validation]
C --> E[Daily dataset]
D --> F[Outcome dataset]
C --> G[Latest version response]
D --> G
Decision needed
Why: The stated rollout boundary and the repository's automatic main deployment disagree; production activation requires explicit owner intent. Before merge
Findings
Agent review detailsSecurityNone. Review metrics
Merge-risk optionsMaintainer options:
Technical reviewBest possible solution: Keep outcome storage isolated and disabled in production until explicitly authorized, while preserving prompt version responses for quota-exhausted clients. Do we have a high-confidence way to reproduce the issue? Yes, source establishes both triggers: a main push deploys the added binding, and a quota-exhausted POST now waits on an unfinished upload before returning its version response. Neither scenario was executed during this read-only review. Is this the best way to solve the issue? The separate dataset and strict validator are a maintainable approach, but production activation must respect the stated rollout boundary and body reading must preserve the existing limiter fast path. Full review comments:
Overall correctness: patch is incorrect AGENTS.md: not found in the target repository. Codex review notes: model internal, reasoning medium; reviewed against d57a65267837. LabelsLabel changes:
Label 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
|
Summary
Add the receiver companion for identifier-free terminal update outcomes on the existing
POST /api/latest-versionendpoint. Review only: no merge, deployment, production outcome requests, dataset provisioning, or credential changes.update_result, 18 mandatory flat fields, public version syntax and bounded enums; reject unknown fields and free-form diagnostics.openclaw-update-result/1UA isolates invalid outcome uploads from legacy recording.UPDATE_RESULTS/openclaw_update_resultsdataset; fixed outcome-only 503 if missing or a synchronous write fails. Never fall back to the daily dataset.Verification
npm run check: 13 files, 474 tests passed; deterministic vocabulary and TypeScript checks passed.npx wrangler deploy --dry-run: passed; no deployment.d57a65267837dc77c9d07e58aa8aae6674fbbae5, P0–P2: scoped-clean before commit; no actionable findings.test/fixtures/update-result.jsonSHA-256:2eb0cffc863c8b3b5335ffcc0a38bcc8495264e8c988647419b328fce0dba754.39d985d45b7d6bdf70fb2e1a914d18a9d196f6e5; publication marker commit960dd6597bdb9881bd859ed1c8822cc2c719013fhas the identical tree3c982baaade1cc1a9d6aff34f03b339526bbe635. Both commits include both contributor trailers.Rollout dependency and limits
A separately authorized rollout must supply the new dataset binding. It has not been provisioned or verified against production. SQL examples were not executed against real data. Version response failure may follow recording; no exactly-once or retry guarantee. Without the fixed UA, undecodable bodies cannot be identified as outcomes and retain legacy invalid-feature behavior; companion clients must always send that UA. Existing malformed schema-2 feature test now uses unsupported schema 3 because schema 2 is reserved for outcomes.
The managed publisher could not push to upstream (
roboclaw-bothas read-only upstream access), so this draft uses that same managed identity’s public fork. No alternate credentials or upstream branch changes.Contributor credit: Json (@fuller-stack-dev) and Peter (@steipete).
Work sessions
View the OpenClaw team session