rdc-cli 0.5.4__tar.gz → 0.5.6__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (669) hide show
  1. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/.github/workflows/aur.yml +2 -2
  2. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/PKG-INFO +1 -1
  3. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/docs-astro/src/data/commands.json +7 -1
  4. rdc_cli-0.5.6/openspec/changes/2026-06-04-open-gpu-override/proposal.md +83 -0
  5. rdc_cli-0.5.6/openspec/changes/2026-06-04-open-gpu-override/tasks.md +14 -0
  6. rdc_cli-0.5.6/openspec/changes/2026-06-04-open-gpu-override/test-plan.md +36 -0
  7. rdc_cli-0.5.6/openspec/changes/archive/2026-05-15-fix-225-d3d12-multi-gpu/proposal.md +90 -0
  8. rdc_cli-0.5.6/openspec/changes/archive/2026-05-15-fix-225-d3d12-multi-gpu/tasks.md +10 -0
  9. rdc_cli-0.5.6/openspec/changes/archive/2026-05-15-fix-225-d3d12-multi-gpu/test-plan.md +33 -0
  10. rdc_cli-0.5.6/openspec/changes/archive/2026-05-15-issue-224-cbuffer-export/proposal.md +95 -0
  11. rdc_cli-0.5.6/openspec/changes/archive/2026-05-15-issue-224-cbuffer-export/specs/daemon/spec.md +40 -0
  12. rdc_cli-0.5.6/openspec/changes/archive/2026-05-15-issue-224-cbuffer-export/tasks.md +47 -0
  13. rdc_cli-0.5.6/openspec/changes/archive/2026-05-15-issue-224-cbuffer-export/test-plan.md +78 -0
  14. rdc_cli-0.5.6/openspec/changes/archive/2026-05-15-issue-224-vsin-mesh/proposal.md +95 -0
  15. rdc_cli-0.5.6/openspec/changes/archive/2026-05-15-issue-224-vsin-mesh/specs/daemon/spec.md +40 -0
  16. rdc_cli-0.5.6/openspec/changes/archive/2026-05-15-issue-224-vsin-mesh/tasks.md +31 -0
  17. rdc_cli-0.5.6/openspec/changes/archive/2026-05-15-issue-224-vsin-mesh/test-plan.md +74 -0
  18. rdc_cli-0.5.6/openspec/changes/archive/2026-05-17-fix-225-d3d12-chunk-name/proposal.md +235 -0
  19. rdc_cli-0.5.6/openspec/changes/archive/2026-05-17-fix-225-d3d12-chunk-name/tasks.md +14 -0
  20. rdc_cli-0.5.6/openspec/changes/archive/2026-05-17-fix-225-d3d12-chunk-name/test-plan.md +232 -0
  21. rdc_cli-0.5.6/openspec/changes/archive/2026-05-17-fix-aur-deploy-action-v413/proposal.md +101 -0
  22. rdc_cli-0.5.6/openspec/changes/archive/2026-05-17-fix-aur-deploy-action-v413/tasks.md +12 -0
  23. rdc_cli-0.5.6/openspec/changes/archive/2026-05-17-fix-aur-deploy-action-v413/test-plan.md +34 -0
  24. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/specs/daemon/spec.md +21 -0
  25. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/scripts/gen-commands.py +1 -1
  26. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/_skills/references/commands-quick-ref.md +22 -0
  27. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/capture_core.py +28 -2
  28. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/cli.py +2 -0
  29. rdc_cli-0.5.6/src/rdc/commands/cbuffer.py +61 -0
  30. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/commands/doctor.py +8 -0
  31. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/commands/mesh.py +14 -1
  32. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/commands/session.py +18 -2
  33. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/daemon_server.py +263 -37
  34. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/discover.py +14 -0
  35. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/handlers/buffer.py +82 -7
  36. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/handlers/capture.py +19 -14
  37. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/remote_core.py +12 -4
  38. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/services/session_service.py +9 -3
  39. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/vfs/router.py +6 -0
  40. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc_cli.egg-info/PKG-INFO +1 -1
  41. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc_cli.egg-info/SOURCES.txt +22 -0
  42. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/integration/test_daemon_handlers_real.py +31 -0
  43. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/mocks/mock_renderdoc.py +15 -1
  44. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_buffer_decode.py +377 -0
  45. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_capture_core.py +34 -0
  46. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_capture_handlers.py +91 -0
  47. rdc_cli-0.5.6/tests/unit/test_cbuffer_commands.py +132 -0
  48. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_daemon_server_unit.py +443 -0
  49. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_discover.py +58 -0
  50. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_doctor.py +26 -0
  51. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_mesh_commands.py +75 -0
  52. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_remote_core.py +39 -0
  53. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_remote_replay.py +165 -1
  54. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_session_commands.py +26 -0
  55. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_session_service.py +28 -0
  56. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_vfs_router.py +7 -0
  57. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/.commitlintrc.yml +0 -0
  58. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/.githooks/pre-commit +0 -0
  59. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/.githooks/pre-push +0 -0
  60. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/.github/CODEOWNERS +0 -0
  61. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  62. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  63. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  64. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  65. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/.github/workflows/ci.yml +0 -0
  66. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/.github/workflows/commitlint.yml +0 -0
  67. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/.github/workflows/docs.yml +0 -0
  68. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/.gitignore +0 -0
  69. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/.python-version +0 -0
  70. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/.release-please-manifest.json +0 -0
  71. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/CONTRIBUTING.md +0 -0
  72. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/LICENSE +0 -0
  73. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/Makefile +0 -0
  74. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/README.md +0 -0
  75. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/SECURITY.md +0 -0
  76. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/aur/PKGBUILD +0 -0
  77. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/aur/stable/PKGBUILD +0 -0
  78. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/docker/Dockerfile +0 -0
  79. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/docs-astro/astro.config.mjs +0 -0
  80. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/docs-astro/package-lock.json +0 -0
  81. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/docs-astro/package.json +0 -0
  82. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/docs-astro/public/.nojekyll +0 -0
  83. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/docs-astro/public/favicon.svg +0 -0
  84. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/docs-astro/src/components/Commands.astro +0 -0
  85. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/docs-astro/src/components/Demo.astro +0 -0
  86. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/docs-astro/src/components/Features.astro +0 -0
  87. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/docs-astro/src/components/Footer.astro +0 -0
  88. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/docs-astro/src/components/Hero.astro +0 -0
  89. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/docs-astro/src/components/Install.astro +0 -0
  90. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/docs-astro/src/components/Navbar.astro +0 -0
  91. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/docs-astro/src/components/Philosophy.astro +0 -0
  92. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/docs-astro/src/components/Terminal.astro +0 -0
  93. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/docs-astro/src/components/ThemeSwitcher.astro +0 -0
  94. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/docs-astro/src/data/replay.json +0 -0
  95. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/docs-astro/src/data/stats.json +0 -0
  96. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/docs-astro/src/layouts/Base.astro +0 -0
  97. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/docs-astro/src/layouts/Docs.astro +0 -0
  98. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/docs-astro/src/pages/docs/ai-integration.astro +0 -0
  99. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/docs-astro/src/pages/docs/commands.astro +0 -0
  100. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/docs-astro/src/pages/docs/design.astro +0 -0
  101. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/docs-astro/src/pages/docs/examples.astro +0 -0
  102. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/docs-astro/src/pages/docs/index.astro +0 -0
  103. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/docs-astro/src/pages/docs/install.astro +0 -0
  104. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/docs-astro/src/pages/docs/remote.astro +0 -0
  105. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/docs-astro/src/pages/docs/usage.astro +0 -0
  106. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/docs-astro/src/pages/docs/vfs.astro +0 -0
  107. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/docs-astro/src/pages/index.astro +0 -0
  108. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/docs-astro/src/styles/global.css +0 -0
  109. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/docs-astro/tailwind.config.mjs +0 -0
  110. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/docs-astro/tapes/pipeline.tape +0 -0
  111. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/docs-astro/tapes/quickstart.tape +0 -0
  112. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/docs-astro/tests/validate.mjs +0 -0
  113. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/docs-astro/tsconfig.json +0 -0
  114. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/mypy.ini +0 -0
  115. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/2026-03-03-bugfix-p2-batch/proposal.md +0 -0
  116. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/2026-03-03-bugfix-p2-batch/tasks.md +0 -0
  117. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/2026-03-03-bugfix-p2-batch/test-plan.md +0 -0
  118. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/2026-03-04-w6-windows-bugfixes/proposal.md +0 -0
  119. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/2026-03-04-w6-windows-bugfixes/tasks.md +0 -0
  120. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/2026-03-04-w6-windows-bugfixes/test-plan.md +0 -0
  121. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-bootstrap-foundation/proposal.md +0 -0
  122. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-bootstrap-foundation/tasks.md +0 -0
  123. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-bootstrap-foundation/test-plan.md +0 -0
  124. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-ci-hardening/proposal.md +0 -0
  125. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-ci-hardening/specs/ci/spec.md +0 -0
  126. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-ci-hardening/tasks.md +0 -0
  127. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-ci-hardening/test-plan.md +0 -0
  128. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-core-checks/proposal.md +0 -0
  129. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-core-checks/specs/foundation/spec.md +0 -0
  130. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-core-checks/tasks.md +0 -0
  131. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-core-checks/test-plan.md +0 -0
  132. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-daemon-protocol/proposal.md +0 -0
  133. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-daemon-protocol/specs/daemon/spec.md +0 -0
  134. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-daemon-protocol/tasks.md +0 -0
  135. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-daemon-protocol/test-plan.md +0 -0
  136. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-daemon-transport/proposal.md +0 -0
  137. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-daemon-transport/specs/daemon/spec.md +0 -0
  138. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-daemon-transport/tasks.md +0 -0
  139. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-daemon-transport/test-plan.md +0 -0
  140. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-fixtures-docker/proposal.md +0 -0
  141. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-fixtures-docker/specs/tooling/spec.md +0 -0
  142. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-fixtures-docker/tasks.md +0 -0
  143. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-fixtures-docker/test-plan.md +0 -0
  144. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-pixi-env/proposal.md +0 -0
  145. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-pixi-env/specs/tooling/spec.md +0 -0
  146. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-pixi-env/tasks.md +0 -0
  147. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-pixi-env/test-plan.md +0 -0
  148. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-session-skeleton/proposal.md +0 -0
  149. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-session-skeleton/specs/session/spec.md +0 -0
  150. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-session-skeleton/tasks.md +0 -0
  151. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-session-skeleton/test-plan.md +0 -0
  152. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-structure-refactor/design.md +0 -0
  153. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-structure-refactor/proposal.md +0 -0
  154. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-structure-refactor/specs/architecture/spec.md +0 -0
  155. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-structure-refactor/tasks.md +0 -0
  156. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-structure-refactor/test-plan.md +0 -0
  157. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-count-shadermap/proposal.md +0 -0
  158. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-count-shadermap/specs/daemon/spec.md +0 -0
  159. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-count-shadermap/tasks.md +0 -0
  160. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-count-shadermap/test-plan.md +0 -0
  161. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-daemon-replay/proposal.md +0 -0
  162. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-daemon-replay/specs/daemon/spec.md +0 -0
  163. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-daemon-replay/specs/foundation/spec.md +0 -0
  164. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-daemon-replay/tasks.md +0 -0
  165. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-daemon-replay/test-plan.md +0 -0
  166. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-draws-events/proposal.md +0 -0
  167. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-draws-events/specs/daemon/spec.md +0 -0
  168. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-draws-events/tasks.md +0 -0
  169. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-draws-events/test-plan.md +0 -0
  170. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-log/proposal.md +0 -0
  171. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-log/tasks.md +0 -0
  172. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-log/test-plan.md +0 -0
  173. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-pass-detail/proposal.md +0 -0
  174. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-pass-detail/tasks.md +0 -0
  175. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-pass-detail/test-plan.md +0 -0
  176. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-resources-passes/proposal.md +0 -0
  177. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-resources-passes/specs/daemon/spec.md +0 -0
  178. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-resources-passes/tasks.md +0 -0
  179. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-resources-passes/test-plan.md +0 -0
  180. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-shader-extended/proposal.md +0 -0
  181. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-shader-extended/tasks.md +0 -0
  182. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-shader-extended/test-plan.md +0 -0
  183. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1.5-vfs/proposal.md +0 -0
  184. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1.5-vfs/tasks.md +0 -0
  185. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1.5-vfs/test-plan.md +0 -0
  186. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase2-api-fix/proposal.md +0 -0
  187. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase2-api-fix/tasks.md +0 -0
  188. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase2-api-fix/test-plan.md +0 -0
  189. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase2-buffer-decode/proposal.md +0 -0
  190. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase2-buffer-decode/tasks.md +0 -0
  191. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase2-buffer-decode/test-plan.md +0 -0
  192. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase2-pipeline-state/proposal.md +0 -0
  193. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase2-pipeline-state/tasks.md +0 -0
  194. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase2-pipeline-state/test-plan.md +0 -0
  195. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase2-vfs-binary/proposal.md +0 -0
  196. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase2-vfs-binary/tasks.md +0 -0
  197. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase2-vfs-binary/test-plan.md +0 -0
  198. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2-counters/proposal.md +0 -0
  199. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2-counters/tasks.md +0 -0
  200. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2-counters/test-plan.md +0 -0
  201. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2-descriptors/proposal.md +0 -0
  202. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2-descriptors/tasks.md +0 -0
  203. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2-descriptors/test-plan.md +0 -0
  204. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2-search/proposal.md +0 -0
  205. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2-search/tasks.md +0 -0
  206. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2-search/test-plan.md +0 -0
  207. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2-usage/proposal.md +0 -0
  208. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2-usage/tasks.md +0 -0
  209. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2-usage/test-plan.md +0 -0
  210. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2.5-aur-pkgbuild/proposal.md +0 -0
  211. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2.5-aur-pkgbuild/tasks.md +0 -0
  212. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2.5-aur-pkgbuild/test-plan.md +0 -0
  213. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2.5-cli-enhancements/proposal.md +0 -0
  214. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2.5-cli-enhancements/tasks.md +0 -0
  215. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2.5-cli-enhancements/test-plan.md +0 -0
  216. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2.5-python-compat-ci/proposal.md +0 -0
  217. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2.5-python-compat-ci/tasks.md +0 -0
  218. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2.5-python-compat-ci/test-plan.md +0 -0
  219. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2.5-release-ci/proposal.md +0 -0
  220. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2.5-release-ci/tasks.md +0 -0
  221. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2.5-release-ci/test-plan.md +0 -0
  222. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2.6-daemon-crash/proposal.md +0 -0
  223. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2.6-daemon-crash/tasks.md +0 -0
  224. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2.6-daemon-crash/test-plan.md +0 -0
  225. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2.6-output-quality/proposal.md +0 -0
  226. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2.6-output-quality/tasks.md +0 -0
  227. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2.6-output-quality/test-plan.md +0 -0
  228. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2.6-pipeline-extended/proposal.md +0 -0
  229. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2.6-pipeline-extended/tasks.md +0 -0
  230. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2.6-pipeline-extended/test-plan.md +0 -0
  231. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2.6-shader-api/proposal.md +0 -0
  232. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2.6-shader-api/tasks.md +0 -0
  233. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2.6-shader-api/test-plan.md +0 -0
  234. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-vfs-path-completion/proposal.md +0 -0
  235. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-vfs-path-completion/tasks.md +0 -0
  236. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-vfs-path-completion/test-plan.md +0 -0
  237. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-21-fix-daemon-startup-timeout/proposal.md +0 -0
  238. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-21-fix-daemon-startup-timeout/tasks.md +0 -0
  239. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-21-fix-daemon-startup-timeout/test-plan.md +0 -0
  240. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-21-fix-event-break-and-test-flaky/proposal.md +0 -0
  241. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-21-fix-event-break-and-test-flaky/tasks.md +0 -0
  242. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-21-fix-event-break-and-test-flaky/test-plan.md +0 -0
  243. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-21-fix-pass-detection/proposal.md +0 -0
  244. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-21-fix-pass-detection/tasks.md +0 -0
  245. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-21-fix-pass-detection/test-plan.md +0 -0
  246. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-21-fix-vfs-pass-consistency/proposal.md +0 -0
  247. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-21-fix-vfs-pass-consistency/tasks.md +0 -0
  248. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-21-fix-vfs-pass-consistency/test-plan.md +0 -0
  249. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-21-phase2.7-bug-filters/proposal.md +0 -0
  250. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-21-phase2.7-bug-filters/tasks.md +0 -0
  251. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-21-phase2.7-bug-filters/test-plan.md +0 -0
  252. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-21-phase2.7-refactor-structure/proposal.md +0 -0
  253. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-21-phase2.7-refactor-structure/tasks.md +0 -0
  254. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-21-phase2.7-refactor-structure/test-plan.md +0 -0
  255. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-ai-agent-skill/proposal.md +0 -0
  256. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-ai-agent-skill/tasks.md +0 -0
  257. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-ai-agent-skill/test-plan.md +0 -0
  258. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-blackbox-bug-fixes/proposal.md +0 -0
  259. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-blackbox-bug-fixes/tasks.md +0 -0
  260. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-blackbox-bug-fixes/test-plan.md +0 -0
  261. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-bugfix-remaining-blackbox/proposal.md +0 -0
  262. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-bugfix-remaining-blackbox/tasks.md +0 -0
  263. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-bugfix-remaining-blackbox/test-plan.md +0 -0
  264. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-ci-repo-hardening/proposal.md +0 -0
  265. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-ci-repo-hardening/tasks.md +0 -0
  266. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-ci-repo-hardening/test-plan.md +0 -0
  267. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-code-maintainability/proposal.md +0 -0
  268. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-code-maintainability/tasks.md +0 -0
  269. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-code-maintainability/test-plan.md +0 -0
  270. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-consistent-output-options/proposal.md +0 -0
  271. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-consistent-output-options/tasks.md +0 -0
  272. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-consistent-output-options/test-plan.md +0 -0
  273. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-design-deviation-diff-completeness/proposal.md +0 -0
  274. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-design-deviation-diff-completeness/tasks.md +0 -0
  275. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-design-deviation-diff-completeness/test-plan.md +0 -0
  276. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-design-deviation-shader-api-fix/proposal.md +0 -0
  277. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-design-deviation-shader-api-fix/tasks.md +0 -0
  278. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-design-deviation-shader-api-fix/test-plan.md +0 -0
  279. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-design-deviation-vfs-ls-long/proposal.md +0 -0
  280. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-design-deviation-vfs-ls-long/tasks.md +0 -0
  281. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-design-deviation-vfs-ls-long/test-plan.md +0 -0
  282. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-diff-draws/proposal.md +0 -0
  283. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-diff-draws/tasks.md +0 -0
  284. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-diff-draws/test-plan.md +0 -0
  285. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-diff-framebuffer/proposal.md +0 -0
  286. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-diff-framebuffer/tasks.md +0 -0
  287. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-diff-framebuffer/test-plan.md +0 -0
  288. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-diff-infrastructure/proposal.md +0 -0
  289. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-diff-infrastructure/tasks.md +0 -0
  290. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-diff-infrastructure/test-plan.md +0 -0
  291. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-diff-pipeline/proposal.md +0 -0
  292. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-diff-pipeline/tasks.md +0 -0
  293. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-diff-pipeline/test-plan.md +0 -0
  294. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-diff-resources/proposal.md +0 -0
  295. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-diff-resources/tasks.md +0 -0
  296. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-diff-resources/test-plan.md +0 -0
  297. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-diff-stats/proposal.md +0 -0
  298. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-diff-stats/tasks.md +0 -0
  299. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-diff-stats/test-plan.md +0 -0
  300. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-docs-automation/proposal.md +0 -0
  301. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-docs-automation/tasks.md +0 -0
  302. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-docs-automation/test-plan.md +0 -0
  303. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-fix-json-error-and-search-preload/proposal.md +0 -0
  304. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-fix-json-error-and-search-preload/tasks.md +0 -0
  305. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-fix-json-error-and-search-preload/test-plan.md +0 -0
  306. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-image-compare/proposal.md +0 -0
  307. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-image-compare/tasks.md +0 -0
  308. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-image-compare/test-plan.md +0 -0
  309. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase3a-script/proposal.md +0 -0
  310. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase3a-script/tasks.md +0 -0
  311. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase3a-script/test-plan.md +0 -0
  312. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase3c-ci-assertions/proposal.md +0 -0
  313. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase3c-ci-assertions/tasks.md +0 -0
  314. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase3c-ci-assertions/test-plan.md +0 -0
  315. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase3c-snapshot/proposal.md +0 -0
  316. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase3c-snapshot/tasks.md +0 -0
  317. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase3c-snapshot/test-plan.md +0 -0
  318. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase4a-shader-debug/proposal.md +0 -0
  319. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase4a-shader-debug/tasks.md +0 -0
  320. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase4a-shader-debug/test-plan.md +0 -0
  321. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase4b-shader-edit-replay/proposal.md +0 -0
  322. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase4b-shader-edit-replay/tasks.md +0 -0
  323. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase4b-shader-edit-replay/test-plan.md +0 -0
  324. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase4c-mesh-export/proposal.md +0 -0
  325. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase4c-mesh-export/tasks.md +0 -0
  326. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase4c-mesh-export/test-plan.md +0 -0
  327. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase4c-overlay/proposal.md +0 -0
  328. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase4c-overlay/tasks.md +0 -0
  329. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase4c-overlay/test-plan.md +0 -0
  330. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase5-debug-thread/proposal.md +0 -0
  331. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase5-debug-thread/tasks.md +0 -0
  332. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase5-debug-thread/test-plan.md +0 -0
  333. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase5-pick-pixel/proposal.md +0 -0
  334. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase5-pick-pixel/tasks.md +0 -0
  335. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase5-pick-pixel/test-plan.md +0 -0
  336. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase5-tex-stats/proposal.md +0 -0
  337. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase5-tex-stats/tasks.md +0 -0
  338. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase5-tex-stats/test-plan.md +0 -0
  339. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-renderdoc-build-helper/proposal.md +0 -0
  340. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-renderdoc-build-helper/tasks.md +0 -0
  341. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-renderdoc-build-helper/test-plan.md +0 -0
  342. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-robustness-hardening/proposal.md +0 -0
  343. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-robustness-hardening/tasks.md +0 -0
  344. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-robustness-hardening/test-plan.md +0 -0
  345. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-security-hardening-2/proposal.md +0 -0
  346. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-security-hardening-2/tasks.md +0 -0
  347. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-security-hardening-2/test-plan.md +0 -0
  348. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-skill-auto-install/proposal.md +0 -0
  349. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-skill-auto-install/tasks.md +0 -0
  350. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-skill-auto-install/test-plan.md +0 -0
  351. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-worktree-isolation/proposal.md +0 -0
  352. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-worktree-isolation/tasks.md +0 -0
  353. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-worktree-isolation/test-plan.md +0 -0
  354. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-b17-eid-mutation/proposal.md +0 -0
  355. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-b17-eid-mutation/tasks.md +0 -0
  356. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-b17-eid-mutation/test-plan.md +0 -0
  357. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-b18-b19-b24-cli-ux/proposal.md +0 -0
  358. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-b18-b19-b24-cli-ux/tasks.md +0 -0
  359. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-b18-b19-b24-cli-ux/test-plan.md +0 -0
  360. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-b21-b22-b23-b25-daemon-lifecycle/proposal.md +0 -0
  361. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-b21-b22-b23-b25-daemon-lifecycle/tasks.md +0 -0
  362. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-b21-b22-b23-b25-daemon-lifecycle/test-plan.md +0 -0
  363. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-capture-process-leak-b26-b28/proposal.md +0 -0
  364. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-capture-process-leak-b26-b28/tasks.md +0 -0
  365. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-capture-process-leak-b26-b28/test-plan.md +0 -0
  366. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-docs-polish/proposal.md +0 -0
  367. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-docs-polish/tasks.md +0 -0
  368. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-docs-polish/test-plan.md +0 -0
  369. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-fix-aur-build/proposal.md +0 -0
  370. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-fix-aur-build/tasks.md +0 -0
  371. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-fix-aur-build/test-plan.md +0 -0
  372. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-fix-bugs-b10-b15-b16/proposal.md +0 -0
  373. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-fix-bugs-b10-b15-b16/tasks.md +0 -0
  374. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-fix-bugs-b10-b15-b16/test-plan.md +0 -0
  375. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-phase-w2-build-script/proposal.md +0 -0
  376. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-phase-w2-build-script/tasks.md +0 -0
  377. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-phase-w2-build-script/test-plan.md +0 -0
  378. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-phase5b-capture-unified/proposal.md +0 -0
  379. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-phase5b-capture-unified/tasks.md +0 -0
  380. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-phase5b-capture-unified/test-plan.md +0 -0
  381. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-test-gpu-coverage/proposal.md +0 -0
  382. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-test-gpu-coverage/tasks.md +0 -0
  383. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-test-gpu-coverage/test-plan.md +0 -0
  384. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-test-mock-accuracy/proposal.md +0 -0
  385. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-test-mock-accuracy/tasks.md +0 -0
  386. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-test-mock-accuracy/test-plan.md +0 -0
  387. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-24-b43-b44-remote-split/proposal.md +0 -0
  388. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-24-b43-b44-remote-split/tasks.md +0 -0
  389. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-24-b43-b44-remote-split/test-plan.md +0 -0
  390. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-24-phase-m-macos-support/proposal.md +0 -0
  391. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-24-phase-m-macos-support/tasks.md +0 -0
  392. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-24-phase-m-macos-support/test-plan.md +0 -0
  393. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-24-phase-r1-quick-wins/proposal.md +0 -0
  394. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-24-phase-r1-quick-wins/tasks.md +0 -0
  395. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-24-phase-r1-quick-wins/test-plan.md +0 -0
  396. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-24-phase-r2-test-infrastructure/proposal.md +0 -0
  397. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-24-phase-r2-test-infrastructure/tasks.md +0 -0
  398. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-24-phase-r2-test-infrastructure/test-plan.md +0 -0
  399. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-26-phase-r3-usability-fixes/proposal.md +0 -0
  400. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-26-phase-r3-usability-fixes/tasks.md +0 -0
  401. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-26-phase-r3-usability-fixes/test-plan.md +0 -0
  402. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-28-design-deviation-fixes/proposal.md +0 -0
  403. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-28-design-deviation-fixes/tasks.md +0 -0
  404. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-28-design-deviation-fixes/test-plan.md +0 -0
  405. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-28-dev-install-enhancement/proposal.md +0 -0
  406. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-28-dev-install-enhancement/tasks.md +0 -0
  407. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-28-dev-install-enhancement/test-plan.md +0 -0
  408. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/specs/architecture/spec.md +0 -0
  409. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/specs/ci/spec.md +0 -0
  410. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/specs/foundation/spec.md +0 -0
  411. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/specs/packaging/spec.md +0 -0
  412. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/specs/session/spec.md +0 -0
  413. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/openspec/specs/tooling/spec.md +0 -0
  414. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/pixi.lock +0 -0
  415. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/pixi.toml +0 -0
  416. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/pyproject.toml +0 -0
  417. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/release-please-config.json +0 -0
  418. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/ruff.toml +0 -0
  419. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/scripts/build-renderdoc.sh +0 -0
  420. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/scripts/build_renderdoc.py +0 -0
  421. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/scripts/capture_fixture.sh +0 -0
  422. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/scripts/dev_install.py +0 -0
  423. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/scripts/e2e_test.py +0 -0
  424. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/scripts/ensure-renderdoc.py +0 -0
  425. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/scripts/ensure-renderdoc.sh +0 -0
  426. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/scripts/ensure-skill-link.py +0 -0
  427. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/scripts/gen-replay.py +0 -0
  428. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/scripts/gen-skill-ref.py +0 -0
  429. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/scripts/gen-stats.py +0 -0
  430. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/scripts/gen_and_check.py +0 -0
  431. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/scripts/setup-renderdoc.sh +0 -0
  432. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/scripts/setup-vulkan-samples.sh +0 -0
  433. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/scripts/setup_android_tools.py +0 -0
  434. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/scripts/setup_vulkan_samples.py +0 -0
  435. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/scripts/verify-package.sh +0 -0
  436. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/scripts/verify_package.py +0 -0
  437. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/setup.cfg +0 -0
  438. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/__init__.py +0 -0
  439. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/_build_renderdoc.py +0 -0
  440. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/_platform.py +0 -0
  441. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/_progress.py +0 -0
  442. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/_skills/SKILL.md +0 -0
  443. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/_skills/__init__.py +0 -0
  444. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/_transport.py +0 -0
  445. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/adapter.py +0 -0
  446. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/commands/_helpers.py +0 -0
  447. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/commands/android.py +0 -0
  448. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/commands/assert_ci.py +0 -0
  449. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/commands/assert_image.py +0 -0
  450. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/commands/capture.py +0 -0
  451. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/commands/capture_control.py +0 -0
  452. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/commands/capturefile.py +0 -0
  453. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/commands/completion.py +0 -0
  454. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/commands/counters.py +0 -0
  455. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/commands/debug.py +0 -0
  456. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/commands/diff.py +0 -0
  457. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/commands/events.py +0 -0
  458. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/commands/export.py +0 -0
  459. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/commands/info.py +0 -0
  460. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/commands/install_skill.py +0 -0
  461. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/commands/pick_pixel.py +0 -0
  462. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/commands/pipeline.py +0 -0
  463. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/commands/pixel.py +0 -0
  464. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/commands/remote.py +0 -0
  465. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/commands/resources.py +0 -0
  466. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/commands/script.py +0 -0
  467. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/commands/search.py +0 -0
  468. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/commands/serve.py +0 -0
  469. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/commands/setup_renderdoc.py +0 -0
  470. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/commands/shader_edit.py +0 -0
  471. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/commands/snapshot.py +0 -0
  472. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/commands/tex_stats.py +0 -0
  473. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/commands/unix_helpers.py +0 -0
  474. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/commands/unused_targets.py +0 -0
  475. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/commands/usage.py +0 -0
  476. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/commands/vfs.py +0 -0
  477. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/daemon_client.py +0 -0
  478. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/diff/__init__.py +0 -0
  479. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/diff/alignment.py +0 -0
  480. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/diff/draws.py +0 -0
  481. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/diff/framebuffer.py +0 -0
  482. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/diff/pipeline.py +0 -0
  483. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/diff/resources.py +0 -0
  484. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/diff/stats.py +0 -0
  485. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/diff/summary.py +0 -0
  486. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/formatters/json_fmt.py +0 -0
  487. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/formatters/kv.py +0 -0
  488. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/formatters/options.py +0 -0
  489. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/formatters/tsv.py +0 -0
  490. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/handlers/__init__.py +0 -0
  491. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/handlers/_helpers.py +0 -0
  492. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/handlers/_types.py +0 -0
  493. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/handlers/capturefile.py +0 -0
  494. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/handlers/core.py +0 -0
  495. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/handlers/debug.py +0 -0
  496. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/handlers/descriptor.py +0 -0
  497. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/handlers/pipe_state.py +0 -0
  498. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/handlers/pixel.py +0 -0
  499. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/handlers/query.py +0 -0
  500. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/handlers/script.py +0 -0
  501. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/handlers/shader.py +0 -0
  502. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/handlers/shader_edit.py +0 -0
  503. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/handlers/texture.py +0 -0
  504. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/handlers/unused.py +0 -0
  505. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/handlers/vfs.py +0 -0
  506. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/image_compare.py +0 -0
  507. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/protocol.py +0 -0
  508. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/remote_state.py +0 -0
  509. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/services/__init__.py +0 -0
  510. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/services/diff_service.py +0 -0
  511. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/services/query_service.py +0 -0
  512. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/session_state.py +0 -0
  513. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/target_state.py +0 -0
  514. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/vfs/__init__.py +0 -0
  515. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/vfs/formatter.py +0 -0
  516. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc/vfs/tree_cache.py +0 -0
  517. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc_cli.egg-info/dependency_links.txt +0 -0
  518. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc_cli.egg-info/entry_points.txt +0 -0
  519. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc_cli.egg-info/requires.txt +0 -0
  520. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/src/rdc_cli.egg-info/top_level.txt +0 -0
  521. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/conftest.py +0 -0
  522. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/e2e/__init__.py +0 -0
  523. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/e2e/blackbox_test_catalog.md +0 -0
  524. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/e2e/conftest.py +0 -0
  525. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/e2e/e2e_helpers.py +0 -0
  526. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/e2e/test_advanced.py +0 -0
  527. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/e2e/test_assert.py +0 -0
  528. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/e2e/test_capture.py +0 -0
  529. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/e2e/test_capturefile.py +0 -0
  530. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/e2e/test_debug.py +0 -0
  531. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/e2e/test_diff.py +0 -0
  532. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/e2e/test_export.py +0 -0
  533. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/e2e/test_formats.py +0 -0
  534. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/e2e/test_presession.py +0 -0
  535. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/e2e/test_query.py +0 -0
  536. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/e2e/test_session.py +0 -0
  537. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/e2e/test_shader_edit.py +0 -0
  538. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/e2e/test_vfs.py +0 -0
  539. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/fixtures/gles-multipass-debug.apk +0 -0
  540. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/fixtures/gles-triangle-debug.apk +0 -0
  541. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/fixtures/gles_android_mali.rdc +0 -0
  542. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/fixtures/gles_multipass_mali.rdc +0 -0
  543. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/fixtures/hello_triangle.rdc +0 -0
  544. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/fixtures/vkcube.rdc +0 -0
  545. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/fixtures/vkcube_validation.rdc +0 -0
  546. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/integration/test_build_renderdoc_integration.py +0 -0
  547. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/integration/test_mock_api_sync.py +0 -0
  548. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/integration/test_real_replay.py +0 -0
  549. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/integration/test_vulkan_samples.py +0 -0
  550. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/conftest.py +0 -0
  551. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_adapter.py +0 -0
  552. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_android_commands.py +0 -0
  553. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_assert_ci_commands.py +0 -0
  554. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_assert_image_command.py +0 -0
  555. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_binary_daemon.py +0 -0
  556. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_build_renderdoc.py +0 -0
  557. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_capture.py +0 -0
  558. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_capture_control.py +0 -0
  559. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_capturefile_commands.py +0 -0
  560. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_capturefile_handlers.py +0 -0
  561. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_ci_files.py +0 -0
  562. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_cli.py +0 -0
  563. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_cli_session_flag.py +0 -0
  564. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_completion.py +0 -0
  565. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_count_shadermap.py +0 -0
  566. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_counters_commands.py +0 -0
  567. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_counters_daemon.py +0 -0
  568. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_daemon_crash_regression.py +0 -0
  569. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_daemon_output_quality.py +0 -0
  570. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_daemon_pipeline_extended.py +0 -0
  571. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_daemon_shader_api_fix.py +0 -0
  572. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_daemon_shader_extended.py +0 -0
  573. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_daemon_transport.py +0 -0
  574. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_debug_commands.py +0 -0
  575. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_debug_handlers.py +0 -0
  576. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_descriptors_daemon.py +0 -0
  577. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_dev_install.py +0 -0
  578. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_diff_alignment.py +0 -0
  579. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_diff_command.py +0 -0
  580. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_diff_draws.py +0 -0
  581. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_diff_framebuffer.py +0 -0
  582. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_diff_pipeline.py +0 -0
  583. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_diff_resources.py +0 -0
  584. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_diff_service.py +0 -0
  585. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_diff_stats.py +0 -0
  586. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_diff_summary.py +0 -0
  587. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_doctor_hints.py +0 -0
  588. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_draws_daemon.py +0 -0
  589. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_draws_events_cli.py +0 -0
  590. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_draws_events_daemon.py +0 -0
  591. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_eid_completion.py +0 -0
  592. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_events_commands.py +0 -0
  593. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_export_commands.py +0 -0
  594. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_export_overlay.py +0 -0
  595. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_fix1_draws_pass_name.py +0 -0
  596. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_fix2_vfs_intermediate_dirs.py +0 -0
  597. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_fix3_friendly_pass_name.py +0 -0
  598. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_formatters.py +0 -0
  599. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_formatters_kv.py +0 -0
  600. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_gen_skill_ref.py +0 -0
  601. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_handlers_remote.py +0 -0
  602. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_image_compare.py +0 -0
  603. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_info_commands.py +0 -0
  604. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_install_skill.py +0 -0
  605. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_json_errors.py +0 -0
  606. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_keep_remote.py +0 -0
  607. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_mesh_handler.py +0 -0
  608. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_mock_capture_types.py +0 -0
  609. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_mock_renderdoc.py +0 -0
  610. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_open_remote.py +0 -0
  611. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_output_options.py +0 -0
  612. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_overlay_handler.py +0 -0
  613. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_pass_deps.py +0 -0
  614. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_pick_pixel_commands.py +0 -0
  615. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_pick_pixel_daemon.py +0 -0
  616. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_pipeline_cli_phase27.py +0 -0
  617. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_pipeline_commands.py +0 -0
  618. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_pipeline_daemon.py +0 -0
  619. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_pipeline_section_routing.py +0 -0
  620. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_pipeline_shader.py +0 -0
  621. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_pipeline_state.py +0 -0
  622. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_pixel_history_commands.py +0 -0
  623. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_pixel_history_daemon.py +0 -0
  624. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_pixi_files.py +0 -0
  625. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_platform.py +0 -0
  626. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_progress.py +0 -0
  627. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_protocol.py +0 -0
  628. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_query_service.py +0 -0
  629. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_quickfix_batch.py +0 -0
  630. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_remote_commands.py +0 -0
  631. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_remote_setup.py +0 -0
  632. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_remote_state.py +0 -0
  633. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_remote_status_disconnect.py +0 -0
  634. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_require_pipe.py +0 -0
  635. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_resource_semantic_completion.py +0 -0
  636. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_resources_commands.py +0 -0
  637. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_resources_filter.py +0 -0
  638. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_script_command.py +0 -0
  639. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_script_handler.py +0 -0
  640. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_search.py +0 -0
  641. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_semantic_completion.py +0 -0
  642. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_serve.py +0 -0
  643. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_session_completion.py +0 -0
  644. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_session_state.py +0 -0
  645. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_setup_renderdoc.py +0 -0
  646. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_setup_vulkan_samples.py +0 -0
  647. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_shader_edit_commands.py +0 -0
  648. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_shader_edit_handlers.py +0 -0
  649. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_shader_preload.py +0 -0
  650. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_skill_structure.py +0 -0
  651. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_snapshot_command.py +0 -0
  652. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_split_binary.py +0 -0
  653. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_split_core.py +0 -0
  654. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_target_state.py +0 -0
  655. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_tex_stats_commands.py +0 -0
  656. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_tex_stats_handler.py +0 -0
  657. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_tooling_files.py +0 -0
  658. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_unix_helpers_commands.py +0 -0
  659. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_unused_targets.py +0 -0
  660. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_usage_commands.py +0 -0
  661. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_usage_daemon.py +0 -0
  662. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_vfs_binary.py +0 -0
  663. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_vfs_commands.py +0 -0
  664. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_vfs_completion.py +0 -0
  665. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_vfs_daemon.py +0 -0
  666. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_vfs_formatter.py +0 -0
  667. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_vfs_tree_cache.py +0 -0
  668. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/tests/unit/test_windows_compat.py +0 -0
  669. {rdc_cli-0.5.4 → rdc_cli-0.5.6}/uv.lock +0 -0
@@ -22,7 +22,7 @@ jobs:
22
22
  steps:
23
23
  - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
24
24
 
25
- - uses: KSXGitHub/github-actions-deploy-aur@2ac5a4c1d7035885d46b10e3193393be8460b6f1 # v4.1.1
25
+ - uses: KSXGitHub/github-actions-deploy-aur@da03e160361ce01bf087e790b6ffd196d7dccff7 # v4.1.3
26
26
  with:
27
27
  pkgname: rdc-cli-git
28
28
  pkgbuild: aur/PKGBUILD
@@ -69,7 +69,7 @@ jobs:
69
69
  sed -i "s/^pkgver=.*/pkgver=${VERSION}/" aur/stable/PKGBUILD
70
70
  sed -i "s/'PLACEHOLDER'/'${SHA256}'/" aur/stable/PKGBUILD
71
71
 
72
- - uses: KSXGitHub/github-actions-deploy-aur@2ac5a4c1d7035885d46b10e3193393be8460b6f1 # v4.1.1
72
+ - uses: KSXGitHub/github-actions-deploy-aur@da03e160361ce01bf087e790b6ffd196d7dccff7 # v4.1.3
73
73
  with:
74
74
  pkgname: rdc-cli
75
75
  pkgbuild: aur/stable/PKGBUILD
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rdc-cli
3
- Version: 0.5.4
3
+ Version: 0.5.6
4
4
  Summary: CLI for RenderDoc .rdc captures
5
5
  Author: Jim
6
6
  License-Expression: MIT
@@ -9,7 +9,7 @@
9
9
  "name": "open",
10
10
  "id": "open",
11
11
  "help": "Create local default session and start daemon skeleton.",
12
- "usage": "rdc open [CAPTURE] [--preload] [--proxy HOST[:PORT]|adb://SERIAL] [--android] [--serial TEXT] [--remote HOST[:PORT]] [--listen [ADDR]:PORT] [--connect HOST:PORT] [--token TEXT] [--timeout FLOAT]"
12
+ "usage": "rdc open [CAPTURE] [--preload] [--proxy HOST[:PORT]|adb://SERIAL] [--android] [--serial TEXT] [--remote HOST[:PORT]] [--listen [ADDR]:PORT] [--connect HOST:PORT] [--token TEXT] [--timeout FLOAT] [--gpu INDEX|NAME|DEVICEID]"
13
13
  },
14
14
  {
15
15
  "name": "close",
@@ -201,6 +201,12 @@
201
201
  "help": "Export buffer raw data.",
202
202
  "usage": "rdc buffer <ID> [-o PATH] [--raw]"
203
203
  },
204
+ {
205
+ "name": "cbuffer",
206
+ "id": "cbuffer",
207
+ "help": "Decode a constant buffer to JSON or export its raw bytes.",
208
+ "usage": "rdc cbuffer [EID] [--stage CHOICE] [--set INTEGER] [--binding INTEGER] [--json] [--raw] [-o PATH]"
209
+ },
204
210
  {
205
211
  "name": "rt",
206
212
  "id": "rt",
@@ -0,0 +1,83 @@
1
+ # Add `--gpu` override to `rdc open`
2
+
3
+ ## Problem
4
+
5
+ When a capture is replayed, the daemon picks the replay GPU automatically via
6
+ `_match_capture_gpu()`: it matches the capture's recorded device name (Vulkan)
7
+ or adapter description / DeviceId (D3D12), and **falls back to vendor priority
8
+ (nVidia > AMD > Intel)** when nothing matches.
9
+
10
+ On a multi-GPU host that fallback is `filtered[0]` after a stable sort, i.e. the
11
+ first-enumerated device of the highest-priority vendor — frequently the
12
+ integrated GPU. There is no way for the user to override it:
13
+
14
+ - `rdc open` exposes no GPU selection flag.
15
+ - The fallback cannot be steered toward a discrete GPU, a specific device, or a
16
+ GPU whose name does not match the capture's recorded name (common when
17
+ replaying a capture taken on different hardware).
18
+
19
+ This complements the recent multi-GPU auto-matching work (#225) by giving the
20
+ analyst an explicit escape hatch when auto-selection picks the wrong device.
21
+
22
+ Note: an explicit GPU choice does not make a capture portable across
23
+ incompatible hardware (RADV descriptor layouts differ per GPU generation); it
24
+ only controls *which* available GPU replay is attempted on.
25
+
26
+ ## Solution
27
+
28
+ Add an optional `--gpu INDEX|NAME|DEVICEID` flag to `rdc open` that forces the
29
+ replay GPU, overriding auto-selection.
30
+
31
+ Resolution order against `cap.GetAvailableGPUs()`:
32
+
33
+ 1. **0-based index** — `--gpu 1` selects the second enumerated GPU.
34
+ 2. **device ID** — decimal or `0x` hex (`--gpu 0x747e`), matched against
35
+ `GPUDevice.deviceID`.
36
+ 3. **name substring** — case-insensitive (`--gpu "7800 XT"`).
37
+
38
+ If the preference matches no available GPU, a warning is logged listing the
39
+ available GPUs and replay falls back to the existing auto-selection (non-fatal).
40
+
41
+ ### Plumbing
42
+
43
+ The flag threads CLI → daemon, reusing the existing daemon-arg channel:
44
+
45
+ - `commands/session.py`: `--gpu` option on `open_cmd`; ignored (with a warning)
46
+ for `--connect` (an external daemon is already running). Passed to
47
+ `open_session` / `listen_open_session`.
48
+ - `services/session_service.py`: `start_daemon(..., gpu=...)` appends
49
+ `--gpu <value>` to the daemon argv; `open_session` / `listen_open_session`
50
+ forward it.
51
+ - `daemon_server.py`: `--gpu` arg → `DaemonState.gpu_pref`; `_match_capture_gpu`
52
+ gains a `pref` parameter that short-circuits to the resolved GPU before
53
+ auto-matching. Applied at both the local and remote replay call sites.
54
+
55
+ Out of scope: changing the default auto-selection (vendor priority is unchanged).
56
+
57
+ ## Spec Delta
58
+
59
+ The existing scenario "Multi-GPU capture replay" under **Requirement: Replay
60
+ lifecycle** in `openspec/specs/daemon/spec.md` (added by #226, amended by #230)
61
+ is amended so the user `--gpu` preference takes precedence over auto-selection:
62
+
63
+ ```diff
64
+ #### Scenario: Multi-GPU capture replay
65
+ - **WHEN** the capture was taken on a multi-GPU system
66
+ - **AND** multiple GPUs are available for replay
67
+ -- **THEN** the daemon walks structured-data chunks whose name contains any of
68
+ +- **THEN** if the user passed `--gpu` (a 0-based index, a PCI device ID in
69
+ + decimal or `0x` hex, or a case-insensitive name substring) that resolves to an
70
+ + available GPU, that GPU is selected and structured-data inspection is skipped
71
+ +- **AND** otherwise the daemon walks structured-data chunks whose name contains any of
72
+ "Driver Initialisation Parameters", "DriverInit", "EnumAdapters", or
73
+ "CreateDXGIFactory"
74
+ ...
75
+ - **AND** if no structured-data match exists, Software/WARP adapters are excluded
76
+ and the highest-ranked discrete GPU is preferred (nVidia > AMD > Intel)
77
+ +- **AND** an unresolved `--gpu` preference logs a warning and falls back to the
78
+ + auto-selection above
79
+ - **AND** a single available GPU is always returned directly without inspection
80
+ ```
81
+
82
+ This delta has been applied to `openspec/specs/daemon/spec.md` as part of this
83
+ change.
@@ -0,0 +1,14 @@
1
+ # Tasks: Add `--gpu` override to `rdc open`
2
+
3
+ - [x] `daemon_server.py`: add `_resolve_gpu_pref()` (index / deviceID / name substring)
4
+ - [x] `daemon_server.py`: add `pref` param to `_match_capture_gpu()`; short-circuit before auto-match, warn + fall back when no match
5
+ - [x] `daemon_server.py`: `--gpu` arg, `DaemonState.gpu_pref`, pass `state.gpu_pref` at local + remote call sites
6
+ - [x] `services/session_service.py`: `start_daemon(gpu=...)` appends `--gpu`; forward through `open_session` / `listen_open_session`
7
+ - [x] `commands/session.py`: `--gpu` option on `open_cmd`; warn-and-ignore with `--connect`; pass to open paths
8
+ - [x] `openspec/specs/daemon/spec.md`: apply Spec Delta to the "Multi-GPU capture replay" scenario (user `--gpu` precedence + unresolved fallback)
9
+ - [x] Unit tests: `_resolve_gpu_pref` forms; `_match_capture_gpu` pref precedence + no-match fallback warning; `start_daemon` argv; CLI passthrough + `--connect` warning
10
+ - [x] Update existing fakes broken by new signature/attr (`test_remote_replay_passes_sd` spy, sigterm-handler `mock_args`)
11
+ - [x] `pixi run check` green (lint + typecheck + tests)
12
+ - [ ] Fresh review of the diff
13
+ - [ ] Open PR targeting `master`
14
+ - [ ] Archive this OpenSpec folder after merge
@@ -0,0 +1,36 @@
1
+ # Test Plan: `--gpu` override for `rdc open`
2
+
3
+ ## Unit (mocked — no GPU required)
4
+
5
+ `tests/unit/test_daemon_server_unit.py` (`TestMatchCaptureGpu`):
6
+
7
+ 1. **Index** — `pref="1"` returns the second GPU.
8
+ 2. **Name substring** — `pref="7800 xt"` matches case-insensitively.
9
+ 3. **Device ID** — `pref="29822"` (decimal) and `pref="0x747e"` (hex) both match
10
+ `deviceID==29822`.
11
+ 4. **Precedence** — with a Vulkan `deviceName` chunk that would auto-match GPU B,
12
+ `pref="AMD"` still selects GPU A.
13
+ 5. **No match** — `pref="Matrox"` logs a `--gpu` warning and falls back to the
14
+ vendor-priority auto-selection.
15
+ 6. **`_resolve_gpu_pref`** — index / name / hex resolve; unknown and empty → None.
16
+
17
+ `tests/unit/test_session_service.py`:
18
+
19
+ 7. `start_daemon(gpu="1")` puts `--gpu 1` in the daemon argv; default omits `--gpu`.
20
+
21
+ `tests/unit/test_session_commands.py`:
22
+
23
+ 8. `rdc open CAP --gpu 1` forwards `gpu="1"` to `start_daemon`.
24
+ 9. `rdc open --connect host:port --token T --gpu 1` prints
25
+ `warning: --gpu is ignored with --connect`.
26
+
27
+ Run: `pixi run test` (unit only; no GPU/e2e). Full gate: `pixi run check`.
28
+
29
+ ## Manual (requires a multi-GPU host + renderdoc)
30
+
31
+ - `rdc open frame.rdc --gpu <discrete-name>` then `rdc status` / a replay query;
32
+ daemon log shows `replay GPU (user --gpu=...)`.
33
+ - `rdc open frame.rdc --gpu nonsense` logs the no-match warning and still opens
34
+ via auto-selection.
35
+
36
+ (Not run in CI: needs real hardware; out of scope for the unit suite.)
@@ -0,0 +1,90 @@
1
+ # Fix #225: D3D12 Multi-GPU Capture Replay
2
+
3
+ ## Summary
4
+
5
+ Fix `_match_capture_gpu()` incorrectly returning the integrated GPU on multi-GPU
6
+ systems when replaying D3D12 captures, causing an `E_INVALIDARG` heap failure on
7
+ devices with insufficient VRAM.
8
+
9
+ ## Motivation
10
+
11
+ `_match_capture_gpu()` only matches GPUs via the Vulkan `vkEnumeratePhysicalDevices`
12
+ structured-data chunk. For D3D12 captures that chunk is absent, so the function
13
+ falls through to `return gpus[0]`. On reporter's machine the GPU enumeration order
14
+ was: AMD Radeon Graphics iGPU 2 GB, NVIDIA RTX 4500 Ada 24 GB, WARP. The iGPU was
15
+ selected, D3D12 heap creation required more VRAM than available, and renderdoc
16
+ returned `E_INVALIDARG`.
17
+
18
+ The same fall-through also affects the remote-replay call site at line 368, which
19
+ additionally never passes `sd` to the helper, so even the Vulkan path was silently
20
+ bypassed on every remote replay.
21
+
22
+ ## Design
23
+
24
+ ### 1. D3D12 structured-data matching
25
+
26
+ Walk the capture's structured data looking for chunks whose name contains
27
+ `DriverInit`, `EnumAdapters`, or `CreateDXGIFactory`. Inside each matching chunk
28
+ descend into child objects to find a child named `AdapterDesc` and within it a
29
+ string field named `Description` or `DeviceName`. Perform a case-insensitive
30
+ substring match of that string against `gpu.name`. Return the first GPU that
31
+ matches.
32
+
33
+ ### 2. Vendor-preference fallback
34
+
35
+ When no structured-data chunk produces a match, filter out Software/WARP adapters
36
+ (`renderdoc.GPUVendor.Software`), then rank remaining GPUs by vendor:
37
+ nVidia > AMD > Intel. Return the highest-ranked GPU, or the first non-Software GPU
38
+ if no ranked match exists.
39
+
40
+ ### 3. Single-GPU short-circuit
41
+
42
+ If `len(gpus) == 1` return that GPU immediately without inspecting structured data.
43
+
44
+ ### 4. Signature and call-site corrections
45
+
46
+ Pass `rd` (the renderdoc module) into `_match_capture_gpu()` so that
47
+ `GPUVendor` enum values are accessible without a module-level import assumption.
48
+ Update the remote-replay call site (line 368) to pass `sd` in addition to `rd`,
49
+ matching the local-replay call site.
50
+
51
+ ## Spec Delta
52
+
53
+ A new scenario "Multi-GPU capture replay" should be appended under the existing
54
+ **Requirement: Replay lifecycle** section in `openspec/specs/daemon/spec.md`:
55
+
56
+ ```
57
+ #### Scenario: Multi-GPU capture replay
58
+ - WHEN the capture was taken on a multi-GPU system
59
+ - AND multiple GPUs are available for replay
60
+ - THEN the daemon selects the GPU whose name matches structured-data adapter
61
+ metadata extracted from the capture
62
+ - AND if no structured-data match exists, Software/WARP adapters are excluded
63
+ and the highest-ranked discrete GPU is preferred (nVidia > AMD > Intel)
64
+ - AND a single available GPU is always returned directly without inspection
65
+ ```
66
+
67
+ This proposal targets that scenario. The spec file itself is not modified here;
68
+ the delta is applied in the implementing task (see `tasks.md`).
69
+
70
+ ## Files Changed
71
+
72
+ - `src/rdc/daemon_server.py` — `_match_capture_gpu` body; call sites at lines 223
73
+ and 368
74
+ - `tests/unit/test_daemon_server_unit.py` — new unit tests (see `test-plan.md`)
75
+
76
+ ## Risks
77
+
78
+ - The exact D3D12 chunk name (`DriverInit` / `EnumAdapters` / `CreateDXGIFactory`)
79
+ has not been confirmed against a real renderdoc 1.42 D3D12 capture. The matching
80
+ uses substring search rather than exact equality as a defensive measure; a real
81
+ capture should be obtained from the issue reporter for verification before merge.
82
+ - `renderdoc.GPUVendor.nVidia` uses a lower-case `n`. Attribute access should use
83
+ `getattr(rd.GPUVendor, "nVidia", 4)` with an integer fallback to avoid
84
+ `AttributeError` on builds where the spelling differs.
85
+ - The Vulkan low-VRAM edge case (structured-data match returns a GPU that has less
86
+ VRAM than required) is not addressed here; the fix only corrects selection
87
+ behaviour and does not validate VRAM sufficiency.
88
+ - Integration testing on Linux is not possible without Windows D3D12 multi-GPU
89
+ hardware. The unit tests use mocks. Full verification must be performed by the
90
+ issue reporter on their machine.
@@ -0,0 +1,10 @@
1
+ # Fix #225: Tasks
2
+
3
+ - [ ] `daemon_server.py`: add D3D12 structured-data matching to `_match_capture_gpu` (walk `DriverInit`/`EnumAdapters`/`CreateDXGIFactory` chunks, match `AdapterDesc.Description`/`DeviceName` against `gpu.name`)
4
+ - [ ] `daemon_server.py`: add vendor-preference fallback (drop Software/WARP, prefer nVidia > AMD > Intel via `getattr` on `rd.GPUVendor`)
5
+ - [ ] `daemon_server.py`: add single-GPU short-circuit at top of `_match_capture_gpu`
6
+ - [ ] `daemon_server.py`: add `rd` parameter to `_match_capture_gpu` signature; update both call sites (lines 223 and 368)
7
+ - [ ] `daemon_server.py`: pass `sd` at the remote-replay call site (line 368)
8
+ - [ ] `openspec/specs/daemon/spec.md`: append "Multi-GPU capture replay" scenario under **Requirement: Replay lifecycle**
9
+ - [ ] `tests/unit/test_daemon_server_unit.py`: implement all 8 unit test cases from `test-plan.md`
10
+ - [ ] `pixi run lint && pixi run test` passes
@@ -0,0 +1,33 @@
1
+ # Fix #225: Test Plan
2
+
3
+ ## Unit tests — `tests/unit/test_daemon_server_unit.py`
4
+
5
+ - [ ] `test_single_gpu_returns_it` — given `len(gpus) == 1` with any `sd` value
6
+ (including `None`), assert that GPU is returned without inspecting structured data
7
+
8
+ - [ ] `test_vulkan_match_by_devicename` — regression guard for the existing Vulkan
9
+ path; mock structured data containing a `vkEnumeratePhysicalDevices` chunk with a
10
+ `DeviceName` field matching one of two GPU names; assert the matching GPU is
11
+ returned
12
+
13
+ - [ ] `test_d3d12_match_via_driverinit_adapterdesc` — mock structured data with a
14
+ `DriverInit` chunk whose `AdapterDesc` child has a `Description` field matching
15
+ one GPU among three (iGPU, discrete, WARP); assert the discrete GPU is returned
16
+
17
+ - [ ] `test_d3d12_fallback_skips_warp_prefers_nvidia` — no structured-data match;
18
+ three GPUs with vendors Software (WARP), AMD (iGPU), nVidia (discrete); assert
19
+ the nVidia GPU is returned
20
+
21
+ - [ ] `test_d3d12_fallback_amd_over_intel` — no structured-data match; vendors
22
+ [Intel, AMD, Software]; assert the AMD GPU is returned
23
+
24
+ - [ ] `test_no_structured_data_uses_fallback_not_gpu0` — `sd=None`; two GPUs in
25
+ order [AMD iGPU, NVIDIA discrete]; assert NVIDIA is returned, reproducing the
26
+ literal issue #225 scenario (iGPU was previously returned as `gpus[0]`)
27
+
28
+ - [ ] `test_empty_gpu_list_returns_none` — `gpus=[]`; assert return value is `None`
29
+ (no exception raised)
30
+
31
+ - [ ] `test_remote_replay_passes_sd` — mock the `_match_capture_gpu` call site at
32
+ the remote-replay path (line 368); assert it is invoked with a non-`None` `sd`
33
+ argument when structured data is available
@@ -0,0 +1,95 @@
1
+ # OpenSpec: issue-224-cbuffer-export
2
+
3
+ ## Summary
4
+
5
+ Expose `rdc cbuffer` as a first-class CLI command with decoded JSON output and optional
6
+ raw binary export (`--raw`).
7
+
8
+ ## Context and Motivation
9
+
10
+ OpenSpec phase2-buffer-decode (archived 2026-02-19) originally planned three CLI commands:
11
+ `rdc cbuffer`, `rdc vbuffer`, and `rdc ibuffer`. The daemon handler `cbuffer_decode` and its
12
+ VFS route shipped in that phase. The CLI half — `rdc cbuffer` — was never implemented.
13
+ This change completes that unshipped work.
14
+
15
+ GitHub issue #224 (part 2) tracks the gap. Users who rely on `rdc buffer --raw` for raw bytes
16
+ have no ergonomic path to decoded constant-buffer variables without constructing VFS paths
17
+ manually.
18
+
19
+ **Scope note:** The archived phase2-buffer-decode plan envisioned `rdc cbuffer` as a thin VFS
20
+ `cat` wrapper; this change implements a richer direct command with decoded JSON output, a new
21
+ `cbuffer_raw` handler, and a new VFS `leaf_bin` route — reviewers should not expect a pure VFS
22
+ wrapper.
23
+
24
+ ## Design
25
+
26
+ ### New command: `rdc cbuffer`
27
+
28
+ ```
29
+ rdc cbuffer [EID] --stage [vs|hs|ds|gs|ps|cs] --set N --binding N [--json] [--raw -o file.bin]
30
+ ```
31
+
32
+ - `EID`: optional; resolved via `complete_eid` if omitted (matches existing `rdc buffer` pattern).
33
+ - `--stage`: default `ps`.
34
+ - `--set`: default `0`.
35
+ - `--binding`: default `0`.
36
+ - `--json`: emit decoded variables as JSON (default output mode).
37
+ - `--raw -o file.bin`: export the raw constant-buffer bytes to a file.
38
+
39
+ ### Decoded path
40
+
41
+ Calls the existing `cbuffer_decode` daemon handler unchanged. Returns
42
+ `{"eid", "set", "binding", "variables": [{name, type, value}, ...]}` and writes it via
43
+ `write_json`. No daemon changes required for this path.
44
+
45
+ ### Raw path
46
+
47
+ Adds a new `cbuffer_raw` daemon handler in `handlers/buffer.py`. The handler repeats the
48
+ reflection lookup (`fixedBindSetOrSpace` / `fixedBindNumber`), obtains
49
+ `GetConstantBlock(...).descriptor`, calls `controller.GetBufferData(resource, byteOffset,
50
+ byteSize)`, writes the bytes to `state.temp_dir/cbuffer_<eid>_<set>_<binding>.bin`, and
51
+ returns `{"path", "size"}`.
52
+
53
+ The handler is exposed as a VFS `leaf_bin` route at
54
+ `/draws/<eid>/cbuffer/<set>/<binding>/data` in `vfs/router.py`, mirroring the way `buf_raw`
55
+ is wired at `/buffers/<id>/data`. The CLI calls
56
+ `_export_vfs_path(f"/draws/{eid}/cbuffer/{set}/{binding}/data", output, raw)` (from
57
+ `commands/export.py`), which follows the same `vfs_ls` + `resolve_path` → `_deliver_binary`
58
+ flow used by `rdc buffer --raw`. `_deliver_binary` (vfs.py:216) is the final delivery
59
+ step — it calls `call(match.handler, match.args)` through the VFS resolve layer; it is NOT
60
+ a standalone "call handler, get path, write bytes" helper invoked directly.
61
+
62
+ The `hasattr(pipe_state, "GetConstantBlock")` guard present in `cbuffer_decode` is preserved
63
+ in `cbuffer_raw` for RenderDoc version drift safety.
64
+
65
+ ### New source file
66
+
67
+ `src/rdc/commands/cbuffer.py` — registered in `src/rdc/cli.py` adjacent to `buffer_cmd`
68
+ (~line 138).
69
+
70
+ ## Risks
71
+
72
+ ### Non-buffer-backed constant buffers
73
+
74
+ `ConstantBlock.bufferBacked == False` for push constants (Vulkan) and D3D12 root constants.
75
+ These have no backing buffer resource; `GetBufferData` would operate on a null resource.
76
+
77
+ Defined behavior: `--raw` MUST return a JSON-RPC error with a descriptive message
78
+ (e.g. `"cbuffer is not buffer-backed (push constant or root constant)"`) rather than crash
79
+ or silently return zero bytes. Decoded `--json` output is unaffected and continues to work
80
+ via `GetCBufferVariableContents`.
81
+
82
+ ### D3D12 root constants / register spaces
83
+
84
+ The `fixedBindSetOrSpace` / `fixedBindNumber` mapping for D3D12 root constants cannot be
85
+ verified on this Linux development machine. The Vulkan (vkcube) integration test exercises
86
+ the buffer-backed path only. Behavior on D3D12 root-constant captures is verified by
87
+ reporter @Misaka-Mikoto-Tech on real D3D12 hardware after the PR ships.
88
+
89
+ ### `_extract_value` type coverage (optional improvement)
90
+
91
+ The existing `_extract_value` helper (`buffer.py:163-173`) handles only `f32v` members;
92
+ integer and unsigned-integer shader variables degrade silently. `_flatten_shader_var`
93
+ in `handlers/_helpers.py` already handles `u32v`/`s32v` and is used by `shader_constants`.
94
+ Switching `cbuffer_decode` to use `_flatten_shader_var` is an optional polish step; it does
95
+ not block this change but is tracked as a separate optional task.
@@ -0,0 +1,40 @@
1
+ ## ADDED Requirements
2
+
3
+ ### Requirement: Constant Buffer Raw Export
4
+ The daemon SHALL expose a handler to export raw constant-buffer bytes to a temporary file.
5
+
6
+ #### Scenario: Export buffer-backed constant buffer
7
+ - **WHEN** client requests `cbuffer_raw` with `eid`, `set`, `binding`, and `stage`
8
+ - **THEN** daemon resolves the constant block via `fixedBindSetOrSpace` / `fixedBindNumber`,
9
+ calls `GetBufferData(resource, byteOffset, byteSize)`, writes bytes to
10
+ `state.temp_dir/cbuffer_<eid>_<set>_<binding>.bin`, and returns `{"path", "size"}`.
11
+ - **IF** `state.adapter` is None, return error -32002.
12
+ - **IF** `eid` is not a valid draw event, return error.
13
+
14
+ #### Scenario: Reject non-buffer-backed constant buffer
15
+ - **WHEN** client requests `cbuffer_raw` and `ConstantBlock.bufferBacked == False`
16
+ - **THEN** daemon returns a JSON-RPC error with a message indicating the cbuffer is not
17
+ buffer-backed (push constant or root constant) and does not write any file.
18
+
19
+ #### Scenario: RenderDoc version guard
20
+ - **WHEN** `GetConstantBlock` is not present on the pipeline state object
21
+ - **THEN** daemon returns an error indicating the API is unavailable on this RenderDoc version.
22
+
23
+ ### Requirement: Constant Buffer CLI Command
24
+ The CLI SHALL expose `rdc cbuffer` as a first-class command for decoded and raw export.
25
+
26
+ #### Scenario: Decoded JSON output
27
+ - **WHEN** user runs `rdc cbuffer [EID] --stage STAGE --set N --binding N`
28
+ - **THEN** CLI calls `cbuffer_decode` handler and writes the JSON response to stdout.
29
+ - **IF** `EID` is omitted, CLI resolves it via `complete_eid`.
30
+
31
+ #### Scenario: Raw binary export
32
+ - **WHEN** user runs `rdc cbuffer [EID] --raw -o FILE`
33
+ - **THEN** CLI resolves the VFS path `/draws/<eid>/cbuffer/<set>/<binding>/data` via
34
+ `_export_vfs_path` (vfs_ls + resolve_path → _deliver_binary), exactly mirroring how
35
+ `rdc buffer --raw` uses `/buffers/<id>/data`, and writes bytes to `FILE`.
36
+ - **IF** `-o` is not specified alongside `--raw`, CLI exits with a usage error.
37
+
38
+ #### Scenario: No active session
39
+ - **WHEN** user runs `rdc cbuffer` and no daemon session is active
40
+ - **THEN** CLI exits with code 1 and prints an error message to stderr.
@@ -0,0 +1,47 @@
1
+ # Tasks: issue-224-cbuffer-export
2
+
3
+ ## Phase A: Mock API additions
4
+
5
+ - [ ] Add `GetBufferData` stub to `mock_renderdoc.py` (anchor: ~line 1356 `GetConstantBlock`).
6
+ The happy-path test must give the mock `Descriptor` (returned via
7
+ `GetConstantBlock(...).descriptor`) a non-null `resource`, `byteOffset`, and `byteSize` —
8
+ these are the fields the raw-path handler keys off (`buffer.py:143-147`).
9
+ - [ ] Add `bufferBacked=False` variant to the mock `ConstantBlock` for the push-constant
10
+ clean-error test; this stubs the reflection-level field used to reject non-buffer-backed
11
+ cbuffers before `GetBufferData` is called.
12
+
13
+ ## Phase B: `cbuffer_raw` daemon handler (tests first)
14
+
15
+ - [ ] Extend `tests/unit/test_buffer_decode.py` with `cbuffer_raw` cases (happy path,
16
+ `bufferBacked=False` error, no-adapter guard)
17
+ - [ ] Implement `cbuffer_raw` handler in `src/rdc/handlers/buffer.py` (~line 370,
18
+ adjacent to `HANDLERS` dict)
19
+ - [ ] Register `cbuffer_raw` in `HANDLERS`
20
+ - [ ] Add VFS `leaf_bin` route for `/draws/<eid>/cbuffer/<set>/<binding>/data` →
21
+ `cbuffer_raw` in `src/rdc/vfs/router.py`, mirroring
22
+ `/buffers/<id>/data` → `buf_raw` (router.py:184)
23
+ - [ ] Verify handler unit tests pass
24
+
25
+ ## Phase C: `rdc cbuffer` CLI command (tests first)
26
+
27
+ - [ ] Write `tests/unit/test_cbuffer_commands.py` (JSON mode, `--raw -o`, no-session error,
28
+ `complete_eid` fallback, `--raw` without `-o` usage error)
29
+ - [ ] Implement `src/rdc/commands/cbuffer.py`; raw path calls
30
+ `_export_vfs_path(f"/draws/{eid}/cbuffer/{set}/{binding}/data", output, raw)` from
31
+ `commands/export.py` — no direct handler dispatch
32
+ - [ ] Register `cbuffer_cmd` in `src/rdc/cli.py` (~line 138, adjacent to `buffer_cmd`)
33
+ - [ ] Verify CLI unit tests pass
34
+
35
+ ## Phase D: Integration + verification
36
+
37
+ - [ ] Extend `tests/integration/test_daemon_handlers_real.py` with `@pytest.mark.gpu`
38
+ tests for `cbuffer_raw` (Vulkan vkcube capture)
39
+ - [ ] Run `pixi run lint && pixi run test` — all pass, coverage ≥ 80% for new paths
40
+ - [ ] Run GPU integration tests against real capture — pass
41
+ - [ ] Code review
42
+
43
+ ## Phase E: Optional polish (non-blocking)
44
+
45
+ - [ ] Switch `cbuffer_decode` to use `_flatten_shader_var` from `handlers/_helpers.py`
46
+ instead of `_extract_value` to fix int/uint member degradation
47
+ - [ ] Extend `test_buffer_decode.py` with int/uint value assertions
@@ -0,0 +1,78 @@
1
+ # Test Plan: issue-224-cbuffer-export
2
+
3
+ ## Scope
4
+
5
+ ### In scope
6
+ - New daemon handler `cbuffer_raw` (unit + integration)
7
+ - New CLI command `rdc cbuffer` (unit: JSON mode, raw mode, error paths)
8
+ - `bufferBacked == False` error path for `cbuffer_raw`
9
+ - Optional: `_extract_value` int/uint coverage in `test_buffer_decode.py`
10
+
11
+ ### Out of scope
12
+ - Existing `cbuffer_decode` handler correctness (covered by prior test suite)
13
+ - `rdc vbuffer` / `rdc ibuffer` (separate issue)
14
+ - D3D12 root-constant register-space mapping (cannot run on this Linux box; deferred to reporter verification)
15
+
16
+ ## Test Matrix
17
+
18
+ | Layer | Test Type | File |
19
+ |-------|-----------|------|
20
+ | Unit | `cbuffer_raw` handler (mock) | `tests/unit/test_buffer_decode.py` (extend) |
21
+ | Unit | `rdc cbuffer` CLI command | `tests/unit/test_cbuffer_commands.py` (new) |
22
+ | Integration | real capture decoded + raw | `tests/integration/test_daemon_handlers_real.py` (extend) |
23
+
24
+ ## Cases
25
+
26
+ ### `cbuffer_raw` handler (extend `test_buffer_decode.py`)
27
+
28
+ - **Happy path**: mock `GetConstantBlock` returns a buffer-backed descriptor (`bufferBacked=True`,
29
+ known `byteOffset`/`byteSize`); mock `GetBufferData` returns 16 known bytes.
30
+ Assert response contains `{"path": "...", "size": 16}` and the temp file exists with the
31
+ expected bytes.
32
+ - **bufferBacked=False**: mock `GetConstantBlock` returns `bufferBacked=False`.
33
+ Assert the handler returns a JSON-RPC error (code -32602 or equivalent) with a message
34
+ containing `"not buffer-backed"`. Assert no temp file is created.
35
+ - **No adapter**: `state.adapter is None` → assert error -32002 (standard no-adapter guard).
36
+ - **Missing eid**: invalid `eid` → assert error from `SetFrameEvent`.
37
+
38
+ Mock anchor: `mock_renderdoc.py` `GetConstantBlock` (~line 1356), `GetBufferData`.
39
+
40
+ ### `rdc cbuffer` CLI command (new `test_cbuffer_commands.py`)
41
+
42
+ Mirror structure of `tests/unit/test_mesh_commands.py` (monkeypatch `rdc.commands.cbuffer.call`).
43
+
44
+ - **JSON mode (default)**: monkeypatch `call("cbuffer_decode", ...)` returns
45
+ `{"eid": 10, "set": 0, "binding": 0, "variables": [{"name": "mvp", "type": "mat4", "value": [...]}]}`.
46
+ Invoke `rdc cbuffer 10 --stage ps --set 0 --binding 0`.
47
+ Assert exit code 0, stdout is valid JSON matching the payload.
48
+ - **`--json` explicit flag**: same as above with `--json` flag; assert identical output.
49
+ - **`--raw -o file.bin`**: monkeypatch `call("cbuffer_raw", ...)` returns `{"path": "/tmp/cbuffer_10_0_0.bin", "size": 16}`;
50
+ monkeypatch binary delivery (`_deliver_binary` / `fetch_remote_file`).
51
+ Assert exit code 0, output file contains the expected bytes.
52
+ - **No session**: `call` raises connection error → assert exit code 1, message on stderr.
53
+ - **`--raw` without `-o`**: assert exit code non-zero with usage error on stderr.
54
+ - **EID omitted**: monkeypatch `complete_eid` returns `42`; assert the handler is called with `eid=42`.
55
+
56
+ ### Integration (`test_daemon_handlers_real.py`, `@pytest.mark.gpu`)
57
+
58
+ Extend analogous to `test_cbuffer_decode_returns_data` (~line 1965), using a vkcube/Vulkan
59
+ capture with a known draw EID that has a buffer-backed cbuffer.
60
+
61
+ - **`cbuffer_raw` returns file**: call `cbuffer_raw` with valid `eid`/`set`/`binding`.
62
+ Assert response contains `path` and `size > 0`; assert temp file exists and `size` matches
63
+ `os.path.getsize(path)`.
64
+ - **`cbuffer_decode` + `cbuffer_raw` size agreement**: decoded `variables` total byte footprint
65
+ is consistent with the raw `size`.
66
+
67
+ ## Assertions (all tests)
68
+
69
+ - Exit code 0 on success, non-zero on error.
70
+ - JSON output: valid JSON, `variables` array present for decoded mode.
71
+ - Raw output: file written at `-o` path, byte count matches `size` from handler.
72
+ - Error messages go to stderr; stdout is empty on error.
73
+ - `bufferBacked=False` produces an error message containing `"not buffer-backed"` (case-insensitive).
74
+
75
+ ## Coverage Gate
76
+
77
+ CI enforces ≥ 80% line coverage for `src/rdc/commands/cbuffer.py` and the new
78
+ `cbuffer_raw` code path in `src/rdc/handlers/buffer.py`.