Files
ps5upload/protocol/ava1/MGMT_METHODS.md
T

25 KiB

Management methods (AVA1 :9120)

Every management method the payload serves over AVA1: its number and name, its body, the payload handler and the engine/core caller. The payload's table is payload/src/mgmt_table.def (dispatched by payload/src/mgmt_rpc.c); the engine's is ps5upload-core/src/mgmt.rs (m::*). Method numbers and bodies are normative in schema/ava1.toml and SPEC.md §7.3. Long-running work runs as job.run ops (the (op …) rows).

frame is the handler's internal frame number (the MGMT_FRAME_* pair mgmt_table.def names), kept from the protocol AVA1 replaced; — marks a method that never had one. host tests names the ava1-ctest (payload C) and ps5upload-ava1 (engine) tests that cover a method beyond the table-wide ones (ava1-ctest/tests/mgmt*.rs, ps5upload-ava1/tests/mgmt*.rs). Methods 119 and 120 (FTP) and 123 (notif.send) are retired and must not be reused.

frame method body payload handler engine/core caller host tests
Hello 1 1 node.info empty -> NodeInfo src/ava1_glue.c (answered before the table) none ava1-ctest/tests/server.rs rust_client_talks_to_the_c_server (node_info, oversize body)
Status 20 4 node.status empty -> NodeStatus src/runtime.c handle_status_frame ps5upload-core/src/health.rs, ps5upload-engine/src/lib.rs ava1-ctest/tests/mgmt.rs c_mgmt_node_status_is_typed; engine ps5upload-ava1/tests/mgmt.rs a_typed_node_status_rebuilds_the_legacy_json_with_a_bool_and_replaced
Shutdown 22 5 node.shutdown empty -> empty (the reply is written first, the exit starts 300 ms later on a deferred thread, then ava1_payload_stop) src/runtime.c handle_node_shutdown ps5upload-core/src/payload_lifecycle.rs
Cleanup 32 6 node.cleanup MgmtText; a long tree runs as job.run (op CLEANUP) (payload op, Task 5) the engine runs it as job.run (op CLEANUP): src/runtime.c handle_cleanup ps5upload-core/src/cleanup.rs host-tested
FsListVolumes 34 32 fs.volumes MgmtText src/runtime.c handle_fs_list_volumes ps5upload-core/src/volumes.rs host-tested
FsListDir 36 33 fs.list FsList -> FsListResult (<= 256 entries per call, more) native src/mgmt_fs.c mgmt_run_fs_list ps5upload-core/src/fs_ops.rs host-tested
FsHash 38 20 job.run (op HASH) JobRun -> Status (ext state, result, code) src/fs_jobs.c op_hash ps5upload-core/src/fs_ops.rs ava1-ctest/tests/job_run.rs hash_result_rides_in_status_ext; engine ps5upload-ava1/tests/mgmt_job.rs recursive_chmod_hash_crc32_fsck_and_backup_run_as_jobs_with_their_reply_shapes
FsDelete 40 20 job.run (op DELETE) JobRun -> Status (ext state, result, code) src/fs_jobs.c op_delete ps5upload-core/src/fs_ops.rs ava1-ctest/tests/job_run.rs delete_tree_returns_immediately_and_reports_progress, cancel_stops_a_delete_midway_and_the_job_is_collected_after; engine mgmt_job.rs fs_delete_over_ava1_is_a_job_and_a_cancel_is_the_word_cancelled
FsMove 42 36 fs.rename FsRename -> empty; ERR_CROSS_DEVICE native src/mgmt_fs.c mgmt_run_fs_rename ps5upload-core/src/fs_ops.rs host-tested
FsChmod 44 37 fs.chmod FsChmod -> empty (recursive: job.run CHMOD_R) native src/mgmt_fs.c mgmt_run_fs_chmod ps5upload-core/src/fs_ops.rs host-tested
FsMkdir 46 35 fs.mkdir FsMkdir -> empty native src/mgmt_fs.c mgmt_run_fs_mkdir ps5upload-core/src/fs_ops.rs host-tested
FsRead 48 38 fs.read FsRead -> FsReadResult (len <= FS_READ_MAX, loop on eof) native src/mgmt_fs.c mgmt_run_fs_read ps5upload-core/src/download.rs, ps5upload-core/src/fs_ops.rs host-tested
FsCopy 50 16 job.copy JobCopy ava1/ava1_data.c (the data plane) ps5upload-core/src/fs_ops.rs ava1-ctest/tests/copy.rs a_folder_copies_on_the_console, a_move_deletes_the_source_only_after_a_verified_copy; engine ps5upload-ava1/tests/download_copy.rs a_console_copy_polls_status_until_done
FsMount 52 40 fs.mount MgmtText src/runtime.c handle_fs_mount ps5upload-core/src/fs_ops.rs host-tested
FsUnmount 54 41 fs.unmount MgmtText src/runtime.c handle_fs_unmount ps5upload-core/src/fs_ops.rs host-tested
AppRegister 56 48 app.register MgmtText src/runtime.c handle_app_register ps5upload-core/src/fs_ops.rs
AppUnregister 58 49 app.unregister MgmtText src/runtime.c handle_app_unregister ps5upload-core/src/fs_ops.rs
AppLaunch 60 50 app.launch MgmtText src/runtime.c handle_app_launch ps5upload-core/src/fs_ops.rs
AppListRegistered 62 51 app.list MgmtText (pages: offset/limit, more) src/runtime.c handle_app_list_registered ps5upload-core/src/fs_ops.rs
HwInfo 64 72 hw.info MgmtText src/runtime.c handle_hw_info ps5upload-core/src/hw.rs
HwTemps 66 73 hw.temps MgmtText src/runtime.c handle_hw_temps ps5upload-core/src/hw.rs
HwPower 68 74 hw.power MgmtText src/runtime.c handle_hw_power ps5upload-core/src/hw.rs
AppLaunchBrowser 70 52 app.launch_browser MgmtText src/runtime.c handle_app_launch_browser ps5upload-core/src/hw.rs
HwSetFanThreshold 72 76 hw.fan_threshold MgmtText src/runtime.c handle_hw_set_fan_threshold ps5upload-core/src/hw.rs
ProcList 74 58 proc.list MgmtText src/runtime.c handle_proc_list ps5upload-core/src/hw.rs
FsOpStatus 76 17 job.status JobRef -> Status ava1/ava1_data.c (the data plane) ps5upload-core/src/fs_ops.rs ava1-ctest/tests/job_run.rs delete_tree_returns_immediately_and_reports_progress, status_survives_a_reconnect; c2c.rs another_paired_device_reads_and_cancels_a_c2c_send (a transfer answers any paired device with CAP_SHARED_JOBS, SPEC §18.5), operation_jobs_stay_owner_only; engine download_copy.rs a_console_copy_polls_status_until_done
FsOpCancel 78 18 job.cancel JobRef -> empty ava1/ava1_data.c (the data plane) ps5upload-core/src/fs_ops.rs ava1-ctest/tests/job_run.rs cancel_stops_a_delete_midway_and_the_job_is_collected_after, another_device_cannot_see_cancel_or_reuse_an_operation; c2c.rs another_paired_device_reads_and_cancels_a_c2c_send, operation_jobs_stay_owner_only; engine download_copy.rs a_console_copy_cancel_signals_the_job
HwStorage 80 75 hw.storage MgmtText src/runtime.c handle_hw_storage ps5upload-core/src/hw.rs
SystemControl 86 80 power.control MgmtText src/runtime.c handle_system_control ps5upload-core/src/system_control.rs
PowerTelemetry 88 81 power.telemetry MgmtText src/runtime.c handle_power_telemetry ps5upload-core/src/system_control.rs
UserList 90 94 user.list MgmtText src/runtime.c handle_user_list none
ListSaves 92 64 saves.list MgmtText src/runtime.c handle_list_saves ps5upload-core/src/saves.rs
ListScreenshots 94 65 shots.list MgmtText src/runtime.c handle_list_screenshots ps5upload-core/src/saves.rs
IndexStart 96 67 index.start MgmtText src/runtime.c handle_index_start none
IndexStatus 98 68 index.status MgmtText src/runtime.c handle_index_status none
SearchIndex 100 69 index.search MgmtText src/runtime.c handle_search_index none
IndexCancel 102 70 index.cancel MgmtText src/runtime.c handle_index_cancel none
AppLifecycle 104 53 app.lifecycle MgmtText src/runtime.c handle_app_lifecycle ps5upload-core/src/app_lifecycle.rs
ToastSend 106 125 toast.send MgmtText src/runtime.c mgmt_w_toast_send ps5upload-core/src/app_lifecycle.rs
KlogRead 108 7 log.klog MgmtText {max_bytes} -> text src/runtime.c handle_klog_read ps5upload-core/src/diagnostics.rs
NetInterfaces 110 9 net.interfaces MgmtText src/runtime.c handle_net_interfaces ps5upload-core/src/diagnostics.rs
PeripheralControl 112 86 periph.control MgmtText src/runtime.c handle_peripheral_control ps5upload-core/src/diagnostics.rs
ProcModules 114 61 proc.modules MgmtText src/runtime.c handle_proc_modules ps5upload-core/src/diagnostics.rs
ShellExec 116 87 shell.exec MgmtText src/runtime.c handle_shell_exec ps5upload-core/src/diagnostics.rs
Crc32File 118 20 job.run (op CRC32) JobRun -> Status (ext state, result, code) src/fs_jobs.c op_crc32 ps5upload-core/src/diagnostics.rs ava1-ctest/tests/job_run.rs crc32_of_a_large_file_is_a_job_that_can_be_cancelled; engine mgmt_job.rs recursive_chmod_hash_crc32_fsck_and_backup_run_as_jobs_with_their_reply_shapes
AppDbQuery 120 56 app.db_query MgmtText; request {"offset":N,"limit":M} (both optional, empty = page one), reply adds offset, next, more, truncated (#473) src/runtime.c handle_appdb_query ps5upload-core/src/diagnostics.rs (pages until more is false)
NetSpeedTest 122 11 net.speedtest MgmtText src/runtime.c handle_net_speed_test ps5upload-core/src/diagnostics.rs
PkgDirectMount 124 42 fs.mount_pkg MgmtText src/runtime.c handle_pkg_direct_mount ps5upload-core/src/diagnostics.rs host-tested
UfsFsck 126 20 job.run (op FSCK) JobRun -> Status (ext state, result, code) src/runtime.c handle_ufs_fsck ps5upload-core/src/diagnostics.rs ava1-ctest/tests/job_run.rs fsck_keeps_its_ok_false_body_as_the_answer_and_a_frame_error_is_a_failure; engine mgmt_job.rs (same shapes test)
LwfsMount 128 43 fs.mount_lwfs MgmtText src/runtime.c handle_lwfs_mount ps5upload-core/src/diagnostics.rs host-tested
FsWriteBytes 130 39 fs.write FsWrite -> empty (chunks <= FSW_CHUNK_MAX, SPEC §7.5) native src/mgmt_fs.c mgmt_run_fs_write ps5upload-core/src/diagnostics.rs host-tested
TimeGet 132 82 time.get MgmtText src/runtime.c handle_time_get ps5upload-core/src/sys_time.rs
TimeSet 134 83 time.set MgmtText src/runtime.c handle_time_set ps5upload-core/src/sys_time.rs
TimeStateGet 136 84 time.state_get MgmtText src/runtime.c handle_time_state_get none
TimeStateSet 138 85 time.state_set MgmtText src/runtime.c handle_time_state_set none
SmpMetaControl 140 112 smp.meta_control MgmtText src/runtime.c handle_smp_meta_control ps5upload-core/src/smp_meta.rs
SmpMetaStats 142 113 smp.meta_stats MgmtText src/runtime.c handle_smp_meta_stats ps5upload-core/src/smp_meta.rs
SyslogTail 144 8 log.syslog MgmtText {max_bytes} -> text src/runtime.c handle_syslog_tail ps5upload-core/src/hw.rs
NetReach 148 10 net.reach MgmtText src/runtime.c handle_net_reach ps5upload-core/src/diagnostics.rs
ProfileInfo 150 88 profile.info MgmtText src/runtime.c mgmt_w_profile_info ps5upload-core/src/profile.rs
ProfileSetUsername 152 89 profile.set_username MgmtText src/runtime.c mgmt_w_profile_set_username ps5upload-core/src/profile.rs
ProfileActivate 154 90 profile.activate MgmtText src/runtime.c mgmt_w_profile_activate ps5upload-core/src/profile.rs
ProfileApplyAvatar 156 91 profile.apply_avatar MgmtText src/runtime.c mgmt_w_profile_apply_avatar ps5upload-core/src/profile.rs
ProfileClearSlot 158 92 profile.clear_slot MgmtText src/runtime.c mgmt_w_profile_clear_slot ps5upload-core/src/profile.rs
ProfileSetLocalUsername 160 93 profile.set_local_username MgmtText src/runtime.c mgmt_w_profile_set_local_username ps5upload-core/src/profile.rs
ProcessList 162 59 proc.process_list MgmtText src/runtime.c handle_process_list ps5upload-core/src/process_mgr.rs
ProcessKill 164 60 proc.kill MgmtText src/runtime.c handle_process_kill ps5upload-core/src/process_mgr.rs
ListVideos 166 66 videos.list MgmtText src/runtime.c handle_list_videos ps5upload-core/src/saves.rs
HwDriveSensors 168 79 hw.drive_sensors MgmtText src/runtime.c handle_hw_drive_sensors ps5upload-core/src/hw.rs
UserCreate 170 95 user.create MgmtText src/runtime.c mgmt_w_user_create ps5upload-core/src/users.rs
UserDelete 172 96 user.delete MgmtText src/runtime.c mgmt_w_user_delete ps5upload-core/src/users.rs
FocusProbe 174 57 proc.focus MgmtText src/runtime.c handle_focus_probe ps5upload-core/src/focus.rs
BackupSnapshot 176 20 job.run (op BACKUP_SNAPSHOT) JobRun -> Status (ext state, result, code) src/runtime.c handle_backup_snapshot ps5upload-core/src/backup.rs ava1-ctest/tests/job_run.rs backup_snapshot_reports_progress_and_cancel_stops_it; engine mgmt_job.rs a_job_the_console_forgot_is_started_again_except_a_snapshot
BackupList 178 98 backup.list MgmtText src/runtime.c mgmt_w_backup_list ps5upload-core/src/backup.rs
BackupRestore 180 20 job.run (op BACKUP_RESTORE) JobRun -> Status (ext state, result, code) src/runtime.c handle_backup_restore ps5upload-core/src/backup.rs ava1-ctest/tests/job_run.rs backup_snapshot_reports_progress_and_cancel_stops_it (also runs the restore op); engine mgmt_job.rs recursive_chmod_hash_crc32_fsck_and_backup_run_as_jobs_with_their_reply_shapes
BackupDelete 182 100 backup.delete MgmtText src/runtime.c mgmt_w_backup_delete ps5upload-core/src/backup.rs
RemotePlayRequest 188 136 rp.request MgmtText src/runtime.c mgmt_w_remoteplay_request ps5upload-core/src/remoteplay.rs
RemotePlayStatus 189 137 rp.status MgmtText src/runtime.c handle_remoteplay_status ps5upload-core/src/remoteplay.rs
RemotePlayCancel 190 138 rp.cancel MgmtText src/runtime.c handle_remoteplay_cancel ps5upload-core/src/remoteplay.rs
ActivityGet 192 126 activity.get MgmtText src/runtime.c handle_activity_get ps5upload-core/src/activity.rs
ActivityDbQuery 194 127 activity.db_query MgmtText src/runtime.c mgmt_w_activity_db_query ps5upload-core/src/activity.rs
HwFanCurveSet 196 77 hw.fan_curve_set MgmtText src/runtime.c mgmt_w_fan_curve_set none
NotifList 198 122 notif.list MgmtText src/runtime.c mgmt_w_notif_list ps5upload-core/src/notif.rs
CheatsList 200 104 cheats.list MgmtText src/runtime.c handle_cheats_list ps5upload-core/src/cheats.rs
CheatsGet 202 105 cheats.get MgmtText src/runtime.c mgmt_w_cheats_get ps5upload-core/src/cheats.rs
CheatsToggle 204 106 cheats.toggle MgmtText src/runtime.c mgmt_w_cheats_toggle ps5upload-core/src/cheats.rs
CheatsDelete 206 107 cheats.delete MgmtText src/runtime.c mgmt_w_cheats_delete ps5upload-core/src/cheats.rs
CheatsReload 208 108 cheats.reload MgmtText src/runtime.c handle_cheats_reload ps5upload-core/src/cheats.rs
CheatsStatus 210 109 cheats.status MgmtText src/runtime.c handle_cheats_status ps5upload-core/src/cheats.rs
CheatsEngineSet 212 110 cheats.engine_set MgmtText src/runtime.c mgmt_w_cheats_engine_set ps5upload-core/src/cheats.rs
SdkScan 214 114 sdk.scan MgmtText; also job.run (op SDK_SCAN) (payload op, Task 5) src/runtime.c handle_sdk_scan ps5upload-core/src/sdk_changer.rs
SdkPatch 216 115 sdk.patch MgmtText src/runtime.c mgmt_w_sdk_patch ps5upload-core/src/sdk_changer.rs
SdkRestore 218 116 sdk.restore MgmtText src/runtime.c mgmt_w_sdk_restore ps5upload-core/src/sdk_changer.rs
TmdbFetch 222 117 tmdb.fetch MgmtText src/runtime.c mgmt_w_tmdb_fetch none
TmdbStore 228 118 tmdb.store MgmtText src/runtime.c mgmt_w_tmdb_store none
FwSpoofStatus 232 121 fwspoof.status MgmtText src/runtime.c handle_fw_spoof_status ps5upload-core/src/fw_spoof.rs
AppInfoQuery 234 54 app.info_query MgmtText src/runtime.c handle_appinfo_query ps5upload-core/src/diagnostics.rs
AppInfoSet 236 55 app.info_set MgmtText src/runtime.c handle_appinfo_set none
HwFanCurveGet 246 78 hw.fan_curve_get MgmtText src/runtime.c handle_fan_curve_get none
RemotePlayReadiness 248 139 rp.readiness MgmtText src/runtime.c handle_remoteplay_readiness ps5upload-core/src/remoteplay.rs
RemotePlayEnable 249 140 rp.enable MgmtText src/runtime.c mgmt_w_remoteplay_enable ps5upload-core/src/remoteplay.rs
RemotePlayDevices 250 141 rp.devices MgmtText src/runtime.c handle_remoteplay_devices none
NotifClear 251 124 notif.clear MgmtText src/runtime.c handle_notif_clear ps5upload-core/src/notif.rs
ActivityReset 253 128 activity.reset MgmtText src/runtime.c handle_activity_reset ps5upload-core/src/activity.rs
AppIconSet 255 142 app.icon_set MgmtText src/runtime.c handle_app_icon_set ps5upload-core/src/diagnostics.rs hides or shows a title's home-screen icon (#407)
AppHiddenList 257 143 app.hidden_list MgmtText src/runtime.c handle_app_hidden_list ps5upload-core/src/diagnostics.rs
SaveMount 261 145 save.mount MgmtText {image} src/runtime.c handle_save_mount ps5upload-core/src/saves.rs opens a save: copies its image under /data, unseals the key through /dev/pfsmgr, mounts it with sceFsMountSaveData at /data/ps5upload/save_mount; an empty image reports what is open
SaveUnmount 263 146 save.unmount MgmtText {} src/runtime.c handle_save_unmount ps5upload-core/src/saves.rs closes the open save and copies the image back over the real one (written_back)
NetPorts 265 147 net.ports MgmtText {lan} src/runtime.c handle_net_ports (src/net_ports.c) ps5upload-core/src/diagnostics.rs the ports held on the console, found by bind() and close (never a connection); scope all / console / lan says where each is reachable from
FilesPrefsGet 267 148 files.prefs_get MgmtText src/runtime.c handle_files_prefs_get (src/files_handoff.c, src/files_prefs.c) ps5upload-core/src/console_files.rs the console file manager's pinned folders, recent folders and last folder (/data/ps5upload/files-prefs.json), as the console page's /api/files/prefs answers; payload/tests/files_handoff_selftest.c
FilesPrefsSet 269 149 files.prefs_set MgmtText {op: pin / unpin / visit, path} src/runtime.c handle_files_prefs_set (src/files_handoff.c, src/files_prefs.c) ps5upload-core/src/console_files.rs one change under the prefs lock, answers the new prefs; a full list or a bad path is an error
FilesHandoffPut 271 150 files.handoff_put MgmtText {to: console / pc, path} src/runtime.c handle_files_handoff_put (src/files_handoff.c) ps5upload-core/src/console_files.rs Show on TV / Show on PC: one slot per direction in helper memory, replaced by the next put, gone after two minutes
FilesHandoffTake 273 151 files.handoff_take MgmtText {for: console / pc} -> {path, age_ms} or {} src/runtime.c handle_files_handoff_take (src/files_handoff.c) ps5upload-core/src/console_files.rs takes (and clears) that direction's handoff
UsbEject 259 144 usb.eject MgmtText src/runtime.c handle_usb_eject ps5upload-core/src/fs_ops.rs unmounts /mnt/usbN so the drive can be pulled; plain unmount, or force (after a sync) since the shell's own services keep the drive open (EBUSY on FW 13.60)
— 21 job.list empty -> JobListResult ava1/ava1_data.c (the data plane) none ava1-ctest/tests/job_run.rs repeat_job_run_is_idempotent, at_most_eight_operations_run_at_once_and_an_unknown_op_is_refused (listing); no engine caller yet
— 34 fs.stat FsPath -> FsStat native src/mgmt_fs.c mgmt_run_fs_stat none host-tested
— 44 fs.freespace FsPath -> FsFreeSpace{usable, free, total, reserve, dev}: the room an upload may fill on the drive holding the path (nearest existing ancestor): free less the working margin (1/64th, at most 1 GiB), never the memory admit budget or the hidden allocator pool; the engine's up-front space check (review 015 #02) native src/mgmt_fs.c mgmt_run_fs_freespace ps5upload-core/src/volumes.rs free_space (ps5upload-ava1/src/space.rs) ava1-ctest/tests/mgmt_fs.rs fs_freespace_is_the_post_reserve_figure_of_the_drive_holding_the_path; engine ps5upload-ava1/tests/mgmt.rs

Reply sizes (SPEC.md §7.4)

The RPC reply cap is 256 KiB (RPC_REPLY_MAX); a MgmtText reply holds at most RPC_TEXT_MAX = 262,128 bytes of text (6 bytes of encoding, 13 with more). "Max reply" is the largest reply buffer the handler uses (so the largest reply it can send). Decisions: fits (no change), pages (offset/limit and more), or a clamp. Exactly one handler (app.list) needs paging; fs.read pages by its caller; everything else fits. Ported handlers still detect truncation (SPEC §7.3): a buffer smaller than the answer is ERR_INTERNAL, never a clipped ok.

method max reply decision
node.status ~0.7 KiB (NodeStatus) fits
node.cleanup <= 0.3 KiB fits
log.klog <= 64 KiB (clamped max_bytes) fits; if it ever did not, the tail rule below applies
log.syslog up to 1 MiB (HARD_CAP) clamped tail (mgmt_call_tail): the reply is the newest RPC_TEXT_MAX bytes, cut at a line start (else a UTF-8 boundary), more = 1 when older text was left out; the Rust transport leads such a reply with a one-line note
net.interfaces < 4 KiB (16 interfaces) fits
net.reach, net.speedtest <= 0.3 KiB fits
fs.volumes 16 KiB (RESP_CAP) fits
fs.list 32 KiB, <= 256 entries fits (FsListResult, more past 256 entries)
fs.mount, fs.unmount, fs.mount_pkg, fs.mount_lwfs <= 2 KiB fits
fs.read up to 2 MiB per call (FS_READ_MAX_BYTES) pages by the caller: len <= FS_READ_MAX (262,128), loop on eof
fs.write, fs.mkdir, fs.rename, fs.chmod <= 0.2 KiB fits
app.register, app.unregister, app.launch, app.launch_browser, app.lifecycle <= 1 KiB fits
app.list 512 KiB buffer, ~3,800 entries pages with offset/more: the one handler that does not fit 256 KiB (typical consoles: tens of KiB)
app.info_query 32 KiB fits
app.info_set <= 1 KiB fits
app.icon_set <= 1 KiB fits
app.hidden_list 16 KiB fits
usb.eject <= 0.3 KiB fits
files.prefs_get, files.prefs_set 64 KiB (FILES_PREFS_FILE_MAX) fits
files.handoff_put, files.handoff_take <= 6.2 KiB (FILES_HANDOFF_OUT_MAX) fits
app.db_query 64 KiB fits
proc.focus 8 KiB fits
proc.list 64 KiB fits
proc.process_list 256 KiB buffer fits when the buffer is sized RPC_TEXT_MAX (the JSON must be 16 bytes shorter than the legacy buffer)
proc.kill <= 0.2 KiB fits
proc.modules 64 KiB fits
saves.list, shots.list, videos.list 512 KiB each (LIST_JSON_CAP, was 64 KiB) pages with offset/more (the engine merges the pages); a walk that fills the buffer closes with "truncated":true instead of looking complete
index.start, index.status, index.cancel <= 1 KiB fits
index.search 256 KiB buffer, up to 5000 hits fits (the handler stops 2.3 KiB short of its buffer, under RPC_TEXT_MAX); hits past it are dropped as before and the reply now says "truncated":true. Not paged: the request's own limit is the hit count
hw.info, hw.temps, hw.power, hw.storage, hw.drive_sensors 2 KiB (handle_hw_text_op) fits
hw.fan_threshold, hw.fan_curve_set <= 0.4 KiB fits
hw.fan_curve_get 4 KiB fits
power.control, power.telemetry <= 0.5 KiB fits
time.get, time.set, time.state_set <= 1 KiB fits
time.state_get 2 KiB fits
periph.control <= 0.2 KiB fits
shell.exec shell output (shell_builtin.c), bounded by the 10 s limit clamp to RPC_TEXT_MAX; Task 7 audits the builtin
profile.info 4 KiB fits
profile.* (others), user.create, user.delete <= 0.4 KiB fits
user.list 4 KiB fits
backup.list 32 KiB fits
backup.delete <= 0.2 KiB fits
cheats.list, cheats.get 64 KiB (CHEATS_JSON_BUF_SZ) fits
cheats.toggle, .delete, .reload, .status, .engine_set <= 0.5 KiB fits
smp.meta_control, smp.meta_stats <= 0.4 KiB fits
sdk.scan 64 KiB (SDK_JSON_BUF_SZ) fits
sdk.patch, sdk.restore <= 1 KiB fits
tmdb.fetch, tmdb.store 64 KiB (TMDB_JSON_BUF_SZ) fits
fwspoof.status <= 1 KiB fits
notif.list 32 KiB fits
notif.clear, toast.send <= 0.1 KiB fits
activity.get, activity.db_query 128 KiB (ACTIVITY_JSON_BUF_SZ) fits
activity.reset <= 0.1 KiB fits
rp.request, rp.status, rp.cancel, rp.readiness, rp.enable, rp.devices <= 2 KiB fits