Files
gensokyo-devandKaoru0822 58d6043303 perf(ghidra): omit redundant raw results (#5355)
Keep ordinary Ghidra facts in normalized Evidence without repeating complete raw replies. Preserve distinct overview, attestation, file-offset and pre-overlay observations through shared CLI/MCP execution.

Record real application measurements, equivalent selected facts, response admission and explicit latency/coverage limits.

Fixes #5337.

Co-authored-by: Kaoru0822 <208281322+kaoru0822-kitauji@users.noreply.github.com>
2026-10-20 05:14:33 +00:00

720 lines
25 KiB
JSON

{
"issue": 5337,
"initial_base_revision": "4e716b06078d725a53234503cbefbb340731e809",
"integration_base_revision": "3fca2e0ca6e54ba700c286d9a85a9600dee6a19d",
"environment": {
"platform": "Linux x86_64",
"node": "24.18.0",
"npm": "11.16.0",
"mcp_sdk": "2.3.1",
"ghidra": "12.1.4",
"java": "Eclipse Adoptium 21.0.12.1+1-LTS",
"configured_java_heap": "768M",
"configured_active_processors": 1,
"query_cpu_quota_percent": 100,
"query_cpu_affinity": [15],
"query_hard_memory_bytes": 4294967296,
"query_early_stop_bytes": 3221225472,
"query_task_limit": 192,
"swap_bytes": 0,
"os_caches": "warm and unflushed; fresh servers, homes and Java analysis",
"initial_startup_and_rpc_deadline_ms": 300000,
"integrated_startup_and_rpc_deadline_ms": 600000,
"product_default_deadlines_changed": false
},
"method": {
"task": "Full observed procedure inventory, overview/load image and first internal non-thunk function facts; repeat inventory/pseudocode, export Evidence and close.",
"calls": 15,
"catalog_discoveries": 1,
"fact_comparison_excludes_only": ["evidence_id", "raw_result"],
"bytes": "Node JSON.stringify UTF-8 of complete SDK catalog, tool name/argument objects and reply envelopes; initialization, wire framing and model rendering unmeasured.",
"actual_model_usage": null,
"tokenizer_estimates": null,
"memory": "Kernel cgroup family peak including file cache at payload exit; post-GC retained heap unmeasured.",
"counter_scope": "Verified payload exit while the observer remains alive; final whole-scope counters after removal unavailable.",
"latency_claim": "No whole-task latency, CPU or peak-memory improvement established.",
"candidate_control_overhead": "Baseline fact-file parsing/comparison is included on the candidate side; its isolated cost is unmeasured."
},
"runtime_tables": {
"baseline": {
"files": 1841,
"sha256_sorted_path_tab_digest_lines": "549bb479ed41e9c55505c169e726552b632f0e5341e63194380b8d0ded344658",
"revision": "4e716b06078d725a53234503cbefbb340731e809"
},
"candidate": {
"files": 1841,
"sha256_sorted_path_tab_digest_lines": "0ebceab15311cc5ccdcfb92a0891022fc37736f2e7d01e2c1d22e88920df1ca8",
"base_revision": "4e716b06078d725a53234503cbefbb340731e809",
"source_diff_sha256": "7c460367e77daf2fad507800f1346dcd9e74553999fb049232b33b27684c8f49"
},
"integrated-baseline": {
"files": 1847,
"sha256_sorted_path_tab_digest_lines": "0d1672378dd3989663f7ef9ead3a91f56283dd06868f4574cae4d062dc83b041",
"base_revision": "3fca2e0ca6e54ba700c286d9a85a9600dee6a19d"
},
"integrated-candidate": {
"files": 1847,
"sha256_sorted_path_tab_digest_lines": "d4348d25b4b18e371ac63375accd8f14e72197588934f66b8ab2bb7049ddb7d3",
"base_revision": "3fca2e0ca6e54ba700c286d9a85a9600dee6a19d",
"source_diff_sha256": "7c460367e77daf2fad507800f1346dcd9e74553999fb049232b33b27684c8f49",
"driver_sha256": "b0463f8da110dcbae45769045a690dc5accf74791fa53f5086a60e8383f074de"
}
},
"driver_versions": {
"earlier": "b5bf4b378102de16f871c5f13e7302cbdcecbe0a14cc90b30ab80031920aaa06",
"integrated": "b0463f8da110dcbae45769045a690dc5accf74791fa53f5086a60e8383f074de"
},
"completed_tasks": [
{
"name": "baseline-true-4",
"expected_projection": "duplicate",
"artifact_sha256": "c79bf44242829108e323378531f4ac839513ca1fba45efd6583643526e1e9fd2",
"artifact_bytes": 35664,
"procedure_count": 231,
"selected_procedure": "0x102000",
"facts_sha256": "5b826454c00709fb26777e3b6663aa69ce879f51597c54d6ec3021fc1984eb74",
"call_count": 15,
"catalog": {
"elapsed_ms": 1132.755321,
"bytes": 3255374,
"sha256": "8a646b95cc5607ee57e5a3c0ef480b77e4cec7e5168498e72f511a8af40daf61"
},
"rpc_argument_bytes": 908,
"rpc_reply_bytes": 473344,
"catalog_arguments_replies_bytes": 3729626,
"normalized_value_bytes_once_per_selected_reply": 94357,
"raw_value_bytes_once_per_selected_reply": 90839,
"bundle_bytes": 177922,
"phases": {
"open_binary": {
"elapsed_ms": 913.6441110000001,
"reply_bytes": 499
},
"list_documents": {
"elapsed_ms": 27770.679519,
"reply_bytes": 6029
},
"list_procedures": {
"elapsed_ms": 156.53601400000116,
"reply_bytes": 125181
},
"binary_overview": {
"elapsed_ms": 101.32018699999753,
"reply_bytes": 17387
},
"inspect_native_load_image": {
"elapsed_ms": 265.31070799999725,
"reply_bytes": 101123
},
"procedure_info": {
"elapsed_ms": 80.39036699999997,
"reply_bytes": 7643
},
"procedure_pseudo_code": {
"elapsed_ms": 81.57453700000042,
"reply_bytes": 6549
},
"procedure_assembly": {
"elapsed_ms": 53.14257799999905,
"reply_bytes": 6715
},
"procedure_callers": {
"elapsed_ms": 22.954539999998815,
"reply_bytes": 6709
},
"procedure_callees": {
"elapsed_ms": 8.837930000001506,
"reply_bytes": 6753
},
"analyze_function": {
"elapsed_ms": 294.8276279999991,
"reply_bytes": 56545
},
"warm-inventory": {
"elapsed_ms": 49.338327999998,
"reply_bytes": 125181
},
"warm-pseudocode": {
"elapsed_ms": 16.670878999997512,
"reply_bytes": 6549
},
"export_evidence_bundle": {
"elapsed_ms": 51.058947999998054,
"reply_bytes": 312
},
"close_binary": {
"elapsed_ms": 494.6449689999936,
"reply_bytes": 169
}
},
"scope_seconds": 34.369,
"payload_cpu_seconds": 33.150037,
"payload_family_peak_bytes": 993923072,
"payload_cleanup_verified": true,
"zero_limit_events_at_payload_exit": true,
"final_whole_scope_counters_verified": false
},
{
"name": "candidate-true-1",
"expected_projection": "compact",
"artifact_sha256": "c79bf44242829108e323378531f4ac839513ca1fba45efd6583643526e1e9fd2",
"artifact_bytes": 35664,
"procedure_count": 231,
"selected_procedure": "0x102000",
"facts_sha256": "5b826454c00709fb26777e3b6663aa69ce879f51597c54d6ec3021fc1984eb74",
"call_count": 15,
"catalog": {
"elapsed_ms": 1208.093488,
"bytes": 3255374,
"sha256": "8a646b95cc5607ee57e5a3c0ef480b77e4cec7e5168498e72f511a8af40daf61"
},
"rpc_argument_bytes": 909,
"rpc_reply_bytes": 326642,
"catalog_arguments_replies_bytes": 3582925,
"normalized_value_bytes_once_per_selected_reply": 94357,
"raw_value_bytes_once_per_selected_reply": 22114,
"bundle_bytes": 137135,
"phases": {
"open_binary": {
"elapsed_ms": 941.0834749999995,
"reply_bytes": 499
},
"list_documents": {
"elapsed_ms": 27897.447016,
"reply_bytes": 5981
},
"list_procedures": {
"elapsed_ms": 136.00869700000112,
"reply_bytes": 65589
},
"binary_overview": {
"elapsed_ms": 124.65224699999817,
"reply_bytes": 17387
},
"inspect_native_load_image": {
"elapsed_ms": 249.8859930000035,
"reply_bytes": 101123
},
"procedure_info": {
"elapsed_ms": 95.36772800000472,
"reply_bytes": 6671
},
"procedure_pseudo_code": {
"elapsed_ms": 84.8552570000029,
"reply_bytes": 6355
},
"procedure_assembly": {
"elapsed_ms": 97.34392800000205,
"reply_bytes": 6305
},
"procedure_callers": {
"elapsed_ms": 8.018889999999374,
"reply_bytes": 6177
},
"procedure_callees": {
"elapsed_ms": 6.999988999996276,
"reply_bytes": 6199
},
"analyze_function": {
"elapsed_ms": 271.9528430000064,
"reply_bytes": 31929
},
"warm-inventory": {
"elapsed_ms": 30.13376900000003,
"reply_bytes": 65589
},
"warm-pseudocode": {
"elapsed_ms": 7.71154899999965,
"reply_bytes": 6355
},
"export_evidence_bundle": {
"elapsed_ms": 71.93626799999765,
"reply_bytes": 314
},
"close_binary": {
"elapsed_ms": 620.6287440000015,
"reply_bytes": 169
}
},
"scope_seconds": 34.901,
"payload_cpu_seconds": 33.834228,
"payload_family_peak_bytes": 1025228800,
"payload_cleanup_verified": true,
"zero_limit_events_at_payload_exit": true,
"final_whole_scope_counters_verified": false
},
{
"name": "baseline-jq-1",
"expected_projection": "duplicate",
"artifact_sha256": "b1c22172dd303f3be49e935aa56aa48a8b7a46e0bc838b4997d3bb451495870f",
"artifact_bytes": 2267912,
"procedure_count": 2276,
"selected_procedure": "0x401000",
"facts_sha256": "f7b95167c93f2b9129b5a4332590ef6bbb9d7b646d554ba4c396db1055ef0d24",
"call_count": 15,
"catalog": {
"elapsed_ms": 2761.8931860000002,
"bytes": 3255374,
"sha256": "8a646b95cc5607ee57e5a3c0ef480b77e4cec7e5168498e72f511a8af40daf61"
},
"rpc_argument_bytes": 965,
"rpc_reply_bytes": 2372592,
"catalog_arguments_replies_bytes": 5628931,
"normalized_value_bytes_once_per_selected_reply": 536023,
"raw_value_bytes_once_per_selected_reply": 533635,
"bundle_bytes": 609212,
"phases": {
"open_binary": {
"elapsed_ms": 1856.9621389999993,
"reply_bytes": 617
},
"list_documents": {
"elapsed_ms": 290349.418768,
"reply_bytes": 6167
},
"list_procedures": {
"elapsed_ms": 624.2473109999555,
"reply_bytes": 1092959
},
"binary_overview": {
"elapsed_ms": 214.38793299999088,
"reply_bytes": 15727
},
"inspect_native_load_image": {
"elapsed_ms": 432.1906869999948,
"reply_bytes": 75633
},
"procedure_info": {
"elapsed_ms": 106.62601700000232,
"reply_bytes": 7813
},
"procedure_pseudo_code": {
"elapsed_ms": 165.65909500000998,
"reply_bytes": 6869
},
"procedure_assembly": {
"elapsed_ms": 98.534897000005,
"reply_bytes": 6855
},
"procedure_callers": {
"elapsed_ms": 23.43981900002109,
"reply_bytes": 6891
},
"procedure_callees": {
"elapsed_ms": 9.403080000018235,
"reply_bytes": 7479
},
"analyze_function": {
"elapsed_ms": 327.3197410000139,
"reply_bytes": 45277
},
"warm-inventory": {
"elapsed_ms": 396.67419799999334,
"reply_bytes": 1092959
},
"warm-pseudocode": {
"elapsed_ms": 6.517379999975674,
"reply_bytes": 6869
},
"export_evidence_bundle": {
"elapsed_ms": 56.13109899999108,
"reply_bytes": 308
},
"close_binary": {
"elapsed_ms": 550.6349530000007,
"reply_bytes": 169
}
},
"scope_seconds": 304.543,
"payload_cpu_seconds": 294.743485,
"payload_family_peak_bytes": 1159921664,
"payload_cleanup_verified": true,
"zero_limit_events_at_payload_exit": true,
"final_whole_scope_counters_verified": false
},
{
"name": "integrated-baseline-jq",
"expected_projection": "duplicate",
"artifact_sha256": "b1c22172dd303f3be49e935aa56aa48a8b7a46e0bc838b4997d3bb451495870f",
"artifact_bytes": 2267912,
"procedure_count": 2279,
"selected_procedure": "0x401000",
"facts_sha256": "87722aab25011f1b047eb2bf8302cdbc5a4256c1b7f17d7bd68404a7d191e070",
"call_count": 15,
"catalog": {
"elapsed_ms": 1411.786849,
"bytes": 3263492,
"sha256": "c754f774156866d70be754e050335d0e4d3a7a6cbb156746cf1f7b5ffa42b26b"
},
"rpc_argument_bytes": 974,
"rpc_reply_bytes": 2375466,
"catalog_arguments_replies_bytes": 5639932,
"normalized_value_bytes_once_per_selected_reply": 536689,
"raw_value_bytes_once_per_selected_reply": 534301,
"bundle_bytes": 609878,
"phases": {
"open_binary": {
"elapsed_ms": 983.5489280000002,
"reply_bytes": 617
},
"list_documents": {
"elapsed_ms": 270159.690556,
"reply_bytes": 6167
},
"list_procedures": {
"elapsed_ms": 717.9032449999941,
"reply_bytes": 1094387
},
"binary_overview": {
"elapsed_ms": 203.3595150000183,
"reply_bytes": 15727
},
"inspect_native_load_image": {
"elapsed_ms": 362.37314199999673,
"reply_bytes": 75633
},
"procedure_info": {
"elapsed_ms": 92.72515800001565,
"reply_bytes": 7813
},
"procedure_pseudo_code": {
"elapsed_ms": 85.43632900004741,
"reply_bytes": 6869
},
"procedure_assembly": {
"elapsed_ms": 78.87645799998427,
"reply_bytes": 6855
},
"procedure_callers": {
"elapsed_ms": 32.66119900002377,
"reply_bytes": 6891
},
"procedure_callees": {
"elapsed_ms": 8.895469999988563,
"reply_bytes": 7479
},
"analyze_function": {
"elapsed_ms": 343.2701520000119,
"reply_bytes": 45277
},
"warm-inventory": {
"elapsed_ms": 338.9290720000281,
"reply_bytes": 1094387
},
"warm-pseudocode": {
"elapsed_ms": 9.391289999999572,
"reply_bytes": 6869
},
"export_evidence_bundle": {
"elapsed_ms": 82.86341799999354,
"reply_bytes": 326
},
"close_binary": {
"elapsed_ms": 679.7842850000015,
"reply_bytes": 169
}
},
"scope_seconds": 279.699,
"payload_cpu_seconds": 277.696079,
"payload_family_peak_bytes": 1111494656,
"payload_cleanup_verified": true,
"zero_limit_events_at_payload_exit": true,
"final_whole_scope_counters_verified": false
},
{
"name": "integrated-candidate-jq",
"expected_projection": "compact",
"artifact_sha256": "b1c22172dd303f3be49e935aa56aa48a8b7a46e0bc838b4997d3bb451495870f",
"artifact_bytes": 2267912,
"procedure_count": 2279,
"selected_procedure": "0x401000",
"facts_sha256": "87722aab25011f1b047eb2bf8302cdbc5a4256c1b7f17d7bd68404a7d191e070",
"call_count": 15,
"catalog": {
"elapsed_ms": 1213.2912340000003,
"bytes": 3263492,
"sha256": "c754f774156866d70be754e050335d0e4d3a7a6cbb156746cf1f7b5ffa42b26b"
},
"rpc_argument_bytes": 975,
"rpc_reply_bytes": 1264884,
"catalog_arguments_replies_bytes": 4529351,
"normalized_value_bytes_once_per_selected_reply": 536689,
"raw_value_bytes_once_per_selected_reply": 16143,
"bundle_bytes": 345626,
"phases": {
"open_binary": {
"elapsed_ms": 927.8219500000005,
"reply_bytes": 617
},
"list_documents": {
"elapsed_ms": 391135.781249,
"reply_bytes": 6119
},
"list_procedures": {
"elapsed_ms": 646.0353969999705,
"reply_bytes": 550261
},
"binary_overview": {
"elapsed_ms": 198.11136500001885,
"reply_bytes": 15727
},
"inspect_native_load_image": {
"elapsed_ms": 456.49483100004727,
"reply_bytes": 75633
},
"procedure_info": {
"elapsed_ms": 99.12928700004704,
"reply_bytes": 6825
},
"procedure_pseudo_code": {
"elapsed_ms": 114.82446700002765,
"reply_bytes": 6584
},
"procedure_assembly": {
"elapsed_ms": 80.73368800000753,
"reply_bytes": 6444
},
"procedure_callers": {
"elapsed_ms": 10.588890000013635,
"reply_bytes": 6337
},
"procedure_callees": {
"elapsed_ms": 19.5354899999802,
"reply_bytes": 6631
},
"analyze_function": {
"elapsed_ms": 352.812751999998,
"reply_bytes": 26364
},
"warm-inventory": {
"elapsed_ms": 197.59054599999217,
"reply_bytes": 550261
},
"warm-pseudocode": {
"elapsed_ms": 8.122649999975692,
"reply_bytes": 6584
},
"export_evidence_bundle": {
"elapsed_ms": 61.80356899998151,
"reply_bytes": 328
},
"close_binary": {
"elapsed_ms": 614.0456879999838,
"reply_bytes": 169
}
},
"scope_seconds": 399.097,
"payload_cpu_seconds": 352.659548,
"payload_family_peak_bytes": 1088741376,
"payload_cleanup_verified": true,
"zero_limit_events_at_payload_exit": true,
"final_whole_scope_counters_verified": false
}
],
"incomplete_attempts": [
{
"name": "baseline-true-1",
"reason": "Harness selected subject.sha256 instead of subject.digest.sha256.",
"reported_status": "failed",
"payload_exit_code": 1,
"scope_seconds": 41.401,
"payload_cpu_seconds": 39.027824,
"payload_family_peak_bytes": 1132675072,
"observed_procedures": null,
"payload_cleanup_verified": true,
"resource_events_at_payload_exit": {
"memory.events": {
"low": 0,
"high": 0,
"max": 0,
"oom": 0,
"oom_kill": 0,
"oom_group_kill": 0
},
"pids.events": {
"max": 0
}
},
"is_completed_performance_sample": false
},
{
"name": "baseline-true-2",
"reason": "Harness assumed the composed overview provider was Ghidra rather than rea-workflow.",
"reported_status": "failed",
"payload_exit_code": 1,
"scope_seconds": 37.538,
"payload_cpu_seconds": 36.599406,
"payload_family_peak_bytes": 1001476096,
"observed_procedures": 231,
"payload_cleanup_verified": true,
"resource_events_at_payload_exit": {
"memory.events": {
"low": 0,
"high": 0,
"max": 0,
"oom": 0,
"oom_kill": 0,
"oom_group_kill": 0
},
"pids.events": {
"max": 0
}
},
"is_completed_performance_sample": false
},
{
"name": "baseline-true-3",
"reason": "Facts and cleanup completed, but the harness incorrectly read a status property from the boolean finalizer and exited 1.",
"reported_status": "passed",
"payload_exit_code": 1,
"scope_seconds": 35.796,
"payload_cpu_seconds": 34.736678,
"payload_family_peak_bytes": 1001455616,
"observed_procedures": 231,
"payload_cleanup_verified": true,
"resource_events_at_payload_exit": {
"memory.events": {
"low": 0,
"high": 0,
"max": 0,
"oom": 0,
"oom_kill": 0,
"oom_group_kill": 0
},
"pids.events": {
"max": 0
}
},
"is_completed_performance_sample": false
},
{
"name": "candidate-jq-1",
"reason": "SDK five-minute first-query deadline expired while awaiting list_documents; cleanup completed.",
"reported_status": "failed",
"payload_exit_code": 1,
"scope_seconds": 316.605,
"payload_cpu_seconds": 293.28205,
"payload_family_peak_bytes": 1065631744,
"observed_procedures": null,
"payload_cleanup_verified": true,
"resource_events_at_payload_exit": {
"memory.events": {
"low": 0,
"high": 0,
"max": 0,
"oom": 0,
"oom_kill": 0,
"oom_group_kill": 0
},
"pids.events": {
"max": 0
}
},
"is_completed_performance_sample": false
},
{
"name": "integrated-baseline-jq-control",
"reason": "Unmodified-main repeat differs by three observed procedure rows; strict comparison rejected it before export. Cause unestablished.",
"reported_status": "failed",
"payload_exit_code": 1,
"scope_seconds": 276.557,
"payload_cpu_seconds": 274.502165,
"payload_family_peak_bytes": 1200726016,
"observed_procedures": 2276,
"payload_cleanup_verified": true,
"resource_events_at_payload_exit": {
"memory.events": {
"low": 0,
"high": 0,
"max": 0,
"oom": 0,
"oom_kill": 0,
"oom_group_kill": 0
},
"pids.events": {
"max": 0
}
},
"is_completed_performance_sample": false
}
],
"capacity_control": {
"baseline_revision": "3fca2e0ca6e54ba700c286d9a85a9600dee6a19d",
"records": 30000,
"baseline": "regression fails with resource_constraint for list_procedures at the unchanged 10485760-byte stdio budget",
"candidate": "all 30000 records delivered exactly; raw_result null",
"real_provider": false,
"production_boundary": "GhidraProvider -> BinarySession -> public MCP"
},
"executed_validation": [
{
"check": "npm run check",
"base": "4e716b060",
"result": "6 tasks and architecture guards passed"
},
{
"check": "npm run check",
"base": "3fca2e0ca",
"result": "6 tasks and architecture guards passed; before adding the capacity regression"
},
{
"check": "Focused Ghidra inventory/function/provider and four MCP files",
"base": "4e716b060",
"result": "246 assertions passed across 7 files"
},
{
"check": "Capacity regression alone",
"base": "3fca2e0ca",
"result": "candidate passes; unchanged production baseline fails with resource_constraint; six other tests filtered out"
},
{
"check": "Existing real Ghidra large-result helper through a private stdio harness",
"result": "passed",
"successful_calls": 15,
"expected_rejections": 4,
"runtime_empty_after_provider_close": true,
"scope": "oversized lookup/read/annotation/dossier retention and recovery, complete CLI readback, unchanged source bytes"
},
{
"check": "node scripts/verify-real-ghidra-address-context.mjs",
"result": "passed with real Ghidra/CLI/MCP and verified empty descendant set",
"scope": "PIE load identity, file-offset decompilation/roles, address round trips, failure guidance/recovery, unchanged source and complete cleanup",
"fixture_sha256": "093f8ba3aef80f3d7c0e8f22557e9a8af29505e286835578282b8e32ff804a02"
},
{
"check": "Final focused Ghidra source and MCP regression selection",
"base": "3fca2e0ca",
"result": "247 assertions across 7 files passed"
},
{
"check": "npm run docs:check",
"result": "generated metadata/documentation checks and 5 README conformance assertions passed"
}
],
"unmodified_main_control": {
"same_target_digest_and_analysis_profile": true,
"expected_procedures": 2279,
"observed_procedures": 2276,
"missing_relative_to_first_run": ["0x4f9930", "0x5260b0", "0x529640"],
"cause": "unestablished; no engine/default-analysis repair included",
"interpretation": "The matched pair is an observation, not a guarantee of cross-session procedure discovery or a latency distribution."
},
"limitations": [
"No actual model-token or tokenizer measurement.",
"Single completed pairs, not latency distributions.",
"Unmodified-main procedure-inventory repeat failed the strict oracle; retained as an incomplete control.",
"First three successful query receipts used the earlier driver; archived warm results were rechecked when explicit repeat assertions were added.",
"Real Windows/macOS Ghidra, other engine versions and real NativeAOT overlays remain unqualified.",
"Initial cached baseline build had an unverified payload-exit cleanup observation; a later systemd inspection found its scope inactive. It is not a query measurement."
],
"resource_stopped_validation": [
{
"check": "Final focused regression selection, first attempt",
"abort": "host_available_memory_early_stop",
"peak_family_bytes_sampled": 837332992,
"outcome": "guard-stopped without final test results; not counted as passing",
"retry_budget": "4 GiB hard/3 GiB early, based on the earlier focused run peak of about 1.3 GiB"
}
]
}