Repository navigation
Leave the Cloud Request Engine's data out of the JSON Builder's output - #91
Merged
Merged
Conversation
This was referenced Nov 12, 2026
Merged
Merged
jwrosewell
marked this pull request as ready for review
November 12, 2026 21:10
This was referenced Nov 12, 2026
Merged
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
The JSON Builder writes the Cloud Request Engine's Element Data into the JSON it builds for the browser. That Element Data is the cloud service's whole answer, held as one string under the data key
cloud(cloudrequestengine.pylines 121 to 128 and 490 onrcat 126d3733).JSONBundlerElement.process_internalleaves out onlyjsonbundler,javascriptbuilderandset-headers(jsonbundler.pylines 126 to 129 onrcat 126d3733), so the JSON sent to the browser carries the raw answer undercloud.What the specification says
json-builder.md lines 80 to 92, specifications at 6570727d, in the Process section:
Python's Cloud Request Engine uses the data key
cloudwhere the reference implementations usecloud-response, socloudis the entry Python's list needs.The .NET, Java, Go, Node.js and PHP packages already leave the Cloud Request Engine out.
rccloud-responseJsonBuilderElement.csline 174 at de7d1922cloud-responseJsonBuilderElement.javaline 102 at 0b9257f4cloud-responsejsonbuilder.goline 57 at 37c4592fcloudjsonbundler.jsline 36 at 871e7a37cloudJsonBundlerElement.phpline 50 at 5be49565What changed
jsonbundler.pyaddscloudto the exclusion list (lines 126 to 130 at the head). A code search fordatakey = "cloudin this repository finds onlycloudrequestengine.pyandcloudengine.py, whose base data key isCloudEngineBase, so no other element drops out of the JSON.The current
rc(126d373) is merged into the branch at fb22e7b with GitHub's update branch, and the merge was clean. Since this draft was opened,rctook #70 (3c786b73), which removedsequencefrom the same list so that the Sequence Element's data goes into the JSON. The two edits touch different lines, and the merged list keeps both, withsequencegone andcloudadded. The whole difference fromrcisjsonbundler.pyand the new test.How it was verified
New test
test_jsonbundler_excludes.py, with a stand-in for the Cloud Request Engine that writes the raw answer undercloudwith the same property the real engine declares.rcat 126d373 with the new test and nothing else: run 43299329442 fails. The test fails on its assertion,AssertionError: 'cloud' unexpectedly found in {'javascriptProperties': [], 'sequence': {...}, 'cloud': {'cloud': '{"device":{"ismobile":true}}'}}, and the core tests give 1 failed and 479 passed.fb22e7b6e04c9a21b09d6f25acda8b3a9a6ed253: run 43299539908 succeeded ontmp/pr-matrix-91x, built fromrcat 126d373, with all ten Build and Test jobs (Ubuntu and Windows, Python 3.10 to 3.14) green. Every one of the 11Setting 'PullRequestSha'lines in its job logs reads the head, Configure printed "Left out 5 macOS entries", and the new test ran and passed in the Ubuntu Python 3.10 job.Red and green ran on throwaway branches,
tmp/fixpy-cloudkey-red-rc(2444207, beingrcplus the test, a temporary workflow and its list of tests) andtmp/fixpy-cloudkey-green-rc(4fedea9, being the head plus the same workflow and list). The red and green runs of 10 November were on the older base fc68b1e and are replaced by these.macOS was left out of this draft's full build under the 9 November decision. The rc head is built with macOS before it merges into main.
What remains
Nothing in this change. A page that read
cloudout of the JSON no longer finds it, which the release notes should say, as item 7 of the PHP release draft (51degrees-php#76) does. #92 changes the same file at lines 175 to 247, away from the exclusion list at lines 126 to 130 that this draft changes.The last release into
main(#39) merged on 2026-11-04.