Repository navigation
feat: report the package and payload build identity from clawctl --version - #71
Conversation
|
🦞👀 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: blocked before merge. Reviewed September 17, 2026, 11:01 PM ET / September 18, 2026, 03:01 UTC (Revision 5). ClawSweeper reviewWhat this changesAdds package and bundled OpenClaw versions and commits to clawctl’s text and JSON version output, including local development deployments. Merge readiness⛔ Blocked before merge - 1 item remains This remains useful work absent from current main. The earlier code findings are addressed, and no new blocking defect was found in the introduced patch. Priority: P2 Review scores
Verification
How this fits togetherThe Windows packaging build combines the launcher with a selected OpenClaw payload. This change carries their build identities into the launcher so support tools and users can read them through clawctl. flowchart LR
A[Packaging checkout] --> C[Package build]
B[Selected payload metadata] --> C
C --> D[Compiled build identity]
E[Version request] --> F{JSON requested?}
D --> F
F --> G[Structured JSON]
F --> H[Readable version report]
Before merge
Agent review detailsSecurityNone. Review metrics
Merge-risk optionsMaintainer options:
Technical reviewBest possible solution: Keep identities tied to the actual packaging inputs and use the documented JSON contract for automation under the acknowledged text-output compatibility decision. Do we have a high-confidence way to reproduce the issue? Not applicable to this feature request; source inspection confirms that current main and the latest release lack the requested combined build-identity report. Is this the best way to solve the issue? Yes. Compiling the existing packaging inputs into the launcher avoids runtime identity drift, and the implementation reuses the established text renderer and source-generated JSON serialization. AGENTS.md: not found in the target repository. Codex review notes: model internal, reasoning medium; reviewed against b904c90c1439. 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 (4 earlier review cycles)
|
3341e84 to
6e32de5
Compare
6e32de5 to
98f2899
Compare
98f2899 to
78d6c0c
Compare
…rsion `clawctl --version` reported the launcher's assembly version and nothing else. Diagnosing an installation means knowing which packaging commit built it and which OpenClaw payload it shipped with, and neither was reachable from the command line. Support had to ask for msix-metadata.json from inside the package. Report all four values, and compile them in rather than resolve them. - Add a build target that writes ClawCtlBuildMetadata as compile-time string constants. They end up as literals in the binary, so the report cannot drift from the payload that shipped with it, needs no file or process access at startup, and survives trimming and NativeAOT, which are otherwise free to drop metadata nothing statically references. - Take the values from the build that produces the package: Build-MSIX.ps1 already resolves the package version, packaging commit, payload version, and resolved payload commit for msix-metadata.json, so it now passes the same four to the compiler. The local deployment script supplies the checkout's commit. - Fall back to release-policy.json, so an ordinary build reports the pin the checkout describes rather than a placeholder, and report `unknown` for a value no build supplied. - Render through ClawCtlConsole, so the report carries the same heading, grid, and colour policy as every other command. Each commit sits behind the version it produced as a muted parenthetical, which keeps the version the value a reader compares and the commit the value support pastes into a bug. The version tests asserted equality with the assembly version. They exist to catch the custom action being replaced by the library's, which reports whatever assembly started the process, so they now assert that the baked identity is present and the entry assembly's version is not. That is the same defect, and the JIT and NativeAOT suites both still catch it. `--json` is honoured too. The documented contract is that every non-interactive command accepts it, and silently ignoring it on the one command a support script reaches for first was the worst of the options. `--version` is satisfied by the version option before command dispatch, so the document is produced directly rather than projected from a command result. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Copilot-Session: f472f437-3ee7-41f3-a501-81ae01590103
78d6c0c to
25bd6bc
Compare
|
ClawSweeper status: review started. I am starting a fresh review of this pull request: feat: report the package and payload build identity from clawctl --version This is item 1/1 in the current shard. Shard 0/1. This placeholder means the worker is alive and reading the current context. I will edit this same comment with the actual review when the claws are done clicking. Crustacean status: shell secured, claws on keyboard, evidence pebbles being sorted. |
Impact
Reports the installed package version/commit and bundled OpenClaw version/commit through human and JSON
clawctl --versionoutput.The plain version output intentionally changes from one numeric line to the structured
clawctlreport.Why This Change Was Made
Support needs the identity of both the packaging build and bundled payload. Local publishing now treats Git discovery as optional and bakes the actual local package version and selected payload metadata into the launcher while preserving no-change deployment behavior.
Evidence
Validated at
25bd6bc:.\scripts\Test-Deploy-LocalPackage.Tests.ps1: passed.\scripts\Test-DotNetQuality.ps1on the complete stack.\scripts\Test-NativeAotCli.Tests.ps1: 17 intended scenarios passed, including version JSONStack