rdc-cli 0.3.9__tar.gz → 0.4.1__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 (632) hide show
  1. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/.github/workflows/ci.yml +0 -3
  2. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/.github/workflows/docs.yml +0 -8
  3. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/.gitignore +1 -0
  4. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/PKG-INFO +4 -4
  5. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/README.md +3 -3
  6. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/docs-astro/src/components/Commands.astro +5 -2
  7. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/docs-astro/src/components/Install.astro +20 -1
  8. rdc_cli-0.4.1/docs-astro/src/data/replay.json +116 -0
  9. rdc_cli-0.4.1/docs-astro/src/data/stats.json +7 -0
  10. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/docs-astro/src/pages/docs/ai-integration.astro +10 -0
  11. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/docs-astro/src/pages/docs/design.astro +1 -1
  12. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/docs-astro/src/pages/docs/examples.astro +7 -4
  13. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/docs-astro/src/pages/docs/install.astro +12 -4
  14. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/docs-astro/src/pages/docs/vfs.astro +1 -2
  15. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/docs-astro/tests/validate.mjs +2 -2
  16. rdc_cli-0.4.1/openspec/changes/2026-03-03-bugfix-p2-batch/proposal.md +72 -0
  17. rdc_cli-0.4.1/openspec/changes/2026-03-03-bugfix-p2-batch/tasks.md +29 -0
  18. rdc_cli-0.4.1/openspec/changes/2026-03-03-bugfix-p2-batch/test-plan.md +109 -0
  19. rdc_cli-0.4.1/openspec/changes/2026-03-04-w6-windows-bugfixes/proposal.md +51 -0
  20. rdc_cli-0.4.1/openspec/changes/2026-03-04-w6-windows-bugfixes/tasks.md +9 -0
  21. rdc_cli-0.4.1/openspec/changes/2026-03-04-w6-windows-bugfixes/test-plan.md +23 -0
  22. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/pixi.lock +237 -9
  23. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/pixi.toml +1 -1
  24. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/scripts/build_renderdoc.py +41 -0
  25. rdc_cli-0.4.1/scripts/ensure-skill-link.py +47 -0
  26. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/_platform.py +50 -4
  27. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/capture_core.py +44 -6
  28. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/commands/doctor.py +64 -1
  29. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/commands/vfs.py +38 -0
  30. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/discover.py +15 -0
  31. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/handlers/pixel.py +2 -0
  32. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/handlers/query.py +27 -1
  33. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/handlers/texture.py +12 -3
  34. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/services/session_service.py +34 -1
  35. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc_cli.egg-info/PKG-INFO +4 -4
  36. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc_cli.egg-info/SOURCES.txt +7 -6
  37. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/conftest.py +9 -0
  38. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/e2e/e2e_helpers.py +28 -0
  39. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/e2e/test_capture.py +23 -26
  40. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/e2e/test_debug.py +1 -2
  41. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/e2e/test_export.py +1 -2
  42. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/e2e/test_formats.py +1 -2
  43. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/e2e/test_query.py +1 -2
  44. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/e2e/test_shader_edit.py +1 -2
  45. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/mocks/mock_renderdoc.py +12 -0
  46. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_build_renderdoc.py +49 -0
  47. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_capture_core.py +133 -0
  48. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_cli_session_flag.py +19 -0
  49. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_daemon_transport.py +21 -5
  50. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_doctor.py +95 -1
  51. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_draws_events_daemon.py +121 -0
  52. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_pick_pixel_daemon.py +7 -0
  53. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_platform.py +85 -0
  54. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_session_commands.py +47 -0
  55. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_session_service.py +84 -1
  56. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_shader_preload.py +21 -0
  57. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_split_core.py +12 -0
  58. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_tex_stats_handler.py +27 -1
  59. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_vfs_commands.py +59 -1
  60. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/uv.lock +1 -39
  61. rdc_cli-0.3.9/docs/cli-reference.md +0 -8
  62. rdc_cli-0.3.9/docs/index.md +0 -35
  63. rdc_cli-0.3.9/docs/install.md +0 -63
  64. rdc_cli-0.3.9/docs/usage.md +0 -100
  65. rdc_cli-0.3.9/docs/vfs.md +0 -71
  66. rdc_cli-0.3.9/docs-astro/src/data/replay.json +0 -116
  67. rdc_cli-0.3.9/docs-astro/src/data/stats.json +0 -7
  68. rdc_cli-0.3.9/mkdocs.yml +0 -37
  69. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/.commitlintrc.yml +0 -0
  70. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/.githooks/pre-commit +0 -0
  71. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/.githooks/pre-push +0 -0
  72. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/.github/CODEOWNERS +0 -0
  73. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/.github/workflows/aur.yml +0 -0
  74. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/.github/workflows/commitlint.yml +0 -0
  75. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/.python-version +0 -0
  76. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/.release-please-manifest.json +0 -0
  77. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/LICENSE +0 -0
  78. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/Makefile +0 -0
  79. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/SECURITY.md +0 -0
  80. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/aur/PKGBUILD +0 -0
  81. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/aur/stable/PKGBUILD +0 -0
  82. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/docker/Dockerfile +0 -0
  83. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/docs-astro/astro.config.mjs +0 -0
  84. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/docs-astro/package-lock.json +0 -0
  85. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/docs-astro/package.json +0 -0
  86. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/docs-astro/public/.nojekyll +0 -0
  87. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/docs-astro/public/favicon.svg +0 -0
  88. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/docs-astro/src/components/Demo.astro +0 -0
  89. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/docs-astro/src/components/Features.astro +0 -0
  90. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/docs-astro/src/components/Footer.astro +0 -0
  91. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/docs-astro/src/components/Hero.astro +0 -0
  92. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/docs-astro/src/components/Navbar.astro +0 -0
  93. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/docs-astro/src/components/Philosophy.astro +0 -0
  94. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/docs-astro/src/components/Terminal.astro +0 -0
  95. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/docs-astro/src/components/ThemeSwitcher.astro +0 -0
  96. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/docs-astro/src/data/commands.json +0 -0
  97. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/docs-astro/src/layouts/Base.astro +0 -0
  98. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/docs-astro/src/layouts/Docs.astro +0 -0
  99. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/docs-astro/src/pages/docs/commands.astro +0 -0
  100. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/docs-astro/src/pages/docs/index.astro +0 -0
  101. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/docs-astro/src/pages/docs/remote.astro +0 -0
  102. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/docs-astro/src/pages/docs/usage.astro +0 -0
  103. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/docs-astro/src/pages/index.astro +0 -0
  104. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/docs-astro/src/styles/global.css +0 -0
  105. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/docs-astro/tailwind.config.mjs +0 -0
  106. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/docs-astro/tapes/pipeline.tape +0 -0
  107. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/docs-astro/tapes/quickstart.tape +0 -0
  108. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/docs-astro/tsconfig.json +0 -0
  109. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/mypy.ini +0 -0
  110. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-18-bootstrap-foundation/proposal.md +0 -0
  111. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-18-bootstrap-foundation/tasks.md +0 -0
  112. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-18-bootstrap-foundation/test-plan.md +0 -0
  113. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-18-ci-hardening/proposal.md +0 -0
  114. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-18-ci-hardening/specs/ci/spec.md +0 -0
  115. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-18-ci-hardening/tasks.md +0 -0
  116. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-18-ci-hardening/test-plan.md +0 -0
  117. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-18-phase0-core-checks/proposal.md +0 -0
  118. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-18-phase0-core-checks/specs/foundation/spec.md +0 -0
  119. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-18-phase0-core-checks/tasks.md +0 -0
  120. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-18-phase0-core-checks/test-plan.md +0 -0
  121. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-18-phase0-daemon-protocol/proposal.md +0 -0
  122. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-18-phase0-daemon-protocol/specs/daemon/spec.md +0 -0
  123. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-18-phase0-daemon-protocol/tasks.md +0 -0
  124. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-18-phase0-daemon-protocol/test-plan.md +0 -0
  125. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-18-phase0-daemon-transport/proposal.md +0 -0
  126. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-18-phase0-daemon-transport/specs/daemon/spec.md +0 -0
  127. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-18-phase0-daemon-transport/tasks.md +0 -0
  128. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-18-phase0-daemon-transport/test-plan.md +0 -0
  129. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-18-phase0-fixtures-docker/proposal.md +0 -0
  130. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-18-phase0-fixtures-docker/specs/tooling/spec.md +0 -0
  131. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-18-phase0-fixtures-docker/tasks.md +0 -0
  132. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-18-phase0-fixtures-docker/test-plan.md +0 -0
  133. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-18-phase0-pixi-env/proposal.md +0 -0
  134. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-18-phase0-pixi-env/specs/tooling/spec.md +0 -0
  135. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-18-phase0-pixi-env/tasks.md +0 -0
  136. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-18-phase0-pixi-env/test-plan.md +0 -0
  137. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-18-phase0-session-skeleton/proposal.md +0 -0
  138. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-18-phase0-session-skeleton/specs/session/spec.md +0 -0
  139. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-18-phase0-session-skeleton/tasks.md +0 -0
  140. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-18-phase0-session-skeleton/test-plan.md +0 -0
  141. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-18-phase0-structure-refactor/design.md +0 -0
  142. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-18-phase0-structure-refactor/proposal.md +0 -0
  143. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-18-phase0-structure-refactor/specs/architecture/spec.md +0 -0
  144. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-18-phase0-structure-refactor/tasks.md +0 -0
  145. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-18-phase0-structure-refactor/test-plan.md +0 -0
  146. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-19-phase1-count-shadermap/proposal.md +0 -0
  147. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-19-phase1-count-shadermap/specs/daemon/spec.md +0 -0
  148. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-19-phase1-count-shadermap/tasks.md +0 -0
  149. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-19-phase1-count-shadermap/test-plan.md +0 -0
  150. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-19-phase1-daemon-replay/proposal.md +0 -0
  151. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-19-phase1-daemon-replay/specs/daemon/spec.md +0 -0
  152. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-19-phase1-daemon-replay/specs/foundation/spec.md +0 -0
  153. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-19-phase1-daemon-replay/tasks.md +0 -0
  154. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-19-phase1-daemon-replay/test-plan.md +0 -0
  155. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-19-phase1-draws-events/proposal.md +0 -0
  156. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-19-phase1-draws-events/specs/daemon/spec.md +0 -0
  157. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-19-phase1-draws-events/tasks.md +0 -0
  158. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-19-phase1-draws-events/test-plan.md +0 -0
  159. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-19-phase1-log/proposal.md +0 -0
  160. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-19-phase1-log/tasks.md +0 -0
  161. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-19-phase1-log/test-plan.md +0 -0
  162. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-19-phase1-pass-detail/proposal.md +0 -0
  163. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-19-phase1-pass-detail/tasks.md +0 -0
  164. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-19-phase1-pass-detail/test-plan.md +0 -0
  165. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-19-phase1-resources-passes/proposal.md +0 -0
  166. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-19-phase1-resources-passes/specs/daemon/spec.md +0 -0
  167. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-19-phase1-resources-passes/tasks.md +0 -0
  168. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-19-phase1-resources-passes/test-plan.md +0 -0
  169. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-19-phase1-shader-extended/proposal.md +0 -0
  170. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-19-phase1-shader-extended/tasks.md +0 -0
  171. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-19-phase1-shader-extended/test-plan.md +0 -0
  172. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-19-phase1.5-vfs/proposal.md +0 -0
  173. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-19-phase1.5-vfs/tasks.md +0 -0
  174. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-19-phase1.5-vfs/test-plan.md +0 -0
  175. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-19-phase2-api-fix/proposal.md +0 -0
  176. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-19-phase2-api-fix/tasks.md +0 -0
  177. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-19-phase2-api-fix/test-plan.md +0 -0
  178. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-19-phase2-buffer-decode/proposal.md +0 -0
  179. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-19-phase2-buffer-decode/tasks.md +0 -0
  180. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-19-phase2-buffer-decode/test-plan.md +0 -0
  181. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-19-phase2-pipeline-state/proposal.md +0 -0
  182. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-19-phase2-pipeline-state/tasks.md +0 -0
  183. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-19-phase2-pipeline-state/test-plan.md +0 -0
  184. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-19-phase2-vfs-binary/proposal.md +0 -0
  185. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-19-phase2-vfs-binary/tasks.md +0 -0
  186. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-19-phase2-vfs-binary/test-plan.md +0 -0
  187. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-20-phase2-counters/proposal.md +0 -0
  188. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-20-phase2-counters/tasks.md +0 -0
  189. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-20-phase2-counters/test-plan.md +0 -0
  190. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-20-phase2-descriptors/proposal.md +0 -0
  191. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-20-phase2-descriptors/tasks.md +0 -0
  192. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-20-phase2-descriptors/test-plan.md +0 -0
  193. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-20-phase2-search/proposal.md +0 -0
  194. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-20-phase2-search/tasks.md +0 -0
  195. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-20-phase2-search/test-plan.md +0 -0
  196. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-20-phase2-usage/proposal.md +0 -0
  197. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-20-phase2-usage/tasks.md +0 -0
  198. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-20-phase2-usage/test-plan.md +0 -0
  199. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-20-phase2.5-aur-pkgbuild/proposal.md +0 -0
  200. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-20-phase2.5-aur-pkgbuild/tasks.md +0 -0
  201. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-20-phase2.5-aur-pkgbuild/test-plan.md +0 -0
  202. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-20-phase2.5-cli-enhancements/proposal.md +0 -0
  203. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-20-phase2.5-cli-enhancements/tasks.md +0 -0
  204. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-20-phase2.5-cli-enhancements/test-plan.md +0 -0
  205. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-20-phase2.5-python-compat-ci/proposal.md +0 -0
  206. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-20-phase2.5-python-compat-ci/tasks.md +0 -0
  207. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-20-phase2.5-python-compat-ci/test-plan.md +0 -0
  208. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-20-phase2.5-release-ci/proposal.md +0 -0
  209. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-20-phase2.5-release-ci/tasks.md +0 -0
  210. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-20-phase2.5-release-ci/test-plan.md +0 -0
  211. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-20-phase2.6-daemon-crash/proposal.md +0 -0
  212. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-20-phase2.6-daemon-crash/tasks.md +0 -0
  213. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-20-phase2.6-daemon-crash/test-plan.md +0 -0
  214. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-20-phase2.6-output-quality/proposal.md +0 -0
  215. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-20-phase2.6-output-quality/tasks.md +0 -0
  216. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-20-phase2.6-output-quality/test-plan.md +0 -0
  217. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-20-phase2.6-pipeline-extended/proposal.md +0 -0
  218. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-20-phase2.6-pipeline-extended/tasks.md +0 -0
  219. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-20-phase2.6-pipeline-extended/test-plan.md +0 -0
  220. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-20-phase2.6-shader-api/proposal.md +0 -0
  221. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-20-phase2.6-shader-api/tasks.md +0 -0
  222. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-20-phase2.6-shader-api/test-plan.md +0 -0
  223. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-20-vfs-path-completion/proposal.md +0 -0
  224. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-20-vfs-path-completion/tasks.md +0 -0
  225. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-20-vfs-path-completion/test-plan.md +0 -0
  226. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-21-fix-daemon-startup-timeout/proposal.md +0 -0
  227. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-21-fix-daemon-startup-timeout/tasks.md +0 -0
  228. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-21-fix-daemon-startup-timeout/test-plan.md +0 -0
  229. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-21-fix-event-break-and-test-flaky/proposal.md +0 -0
  230. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-21-fix-event-break-and-test-flaky/tasks.md +0 -0
  231. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-21-fix-event-break-and-test-flaky/test-plan.md +0 -0
  232. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-21-fix-pass-detection/proposal.md +0 -0
  233. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-21-fix-pass-detection/tasks.md +0 -0
  234. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-21-fix-pass-detection/test-plan.md +0 -0
  235. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-21-fix-vfs-pass-consistency/proposal.md +0 -0
  236. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-21-fix-vfs-pass-consistency/tasks.md +0 -0
  237. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-21-fix-vfs-pass-consistency/test-plan.md +0 -0
  238. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-21-phase2.7-bug-filters/proposal.md +0 -0
  239. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-21-phase2.7-bug-filters/tasks.md +0 -0
  240. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-21-phase2.7-bug-filters/test-plan.md +0 -0
  241. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-21-phase2.7-refactor-structure/proposal.md +0 -0
  242. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-21-phase2.7-refactor-structure/tasks.md +0 -0
  243. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-21-phase2.7-refactor-structure/test-plan.md +0 -0
  244. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-ai-agent-skill/proposal.md +0 -0
  245. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-ai-agent-skill/tasks.md +0 -0
  246. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-ai-agent-skill/test-plan.md +0 -0
  247. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-blackbox-bug-fixes/proposal.md +0 -0
  248. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-blackbox-bug-fixes/tasks.md +0 -0
  249. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-blackbox-bug-fixes/test-plan.md +0 -0
  250. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-bugfix-remaining-blackbox/proposal.md +0 -0
  251. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-bugfix-remaining-blackbox/tasks.md +0 -0
  252. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-bugfix-remaining-blackbox/test-plan.md +0 -0
  253. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-ci-repo-hardening/proposal.md +0 -0
  254. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-ci-repo-hardening/tasks.md +0 -0
  255. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-ci-repo-hardening/test-plan.md +0 -0
  256. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-code-maintainability/proposal.md +0 -0
  257. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-code-maintainability/tasks.md +0 -0
  258. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-code-maintainability/test-plan.md +0 -0
  259. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-consistent-output-options/proposal.md +0 -0
  260. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-consistent-output-options/tasks.md +0 -0
  261. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-consistent-output-options/test-plan.md +0 -0
  262. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-design-deviation-diff-completeness/proposal.md +0 -0
  263. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-design-deviation-diff-completeness/tasks.md +0 -0
  264. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-design-deviation-diff-completeness/test-plan.md +0 -0
  265. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-design-deviation-shader-api-fix/proposal.md +0 -0
  266. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-design-deviation-shader-api-fix/tasks.md +0 -0
  267. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-design-deviation-shader-api-fix/test-plan.md +0 -0
  268. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-design-deviation-vfs-ls-long/proposal.md +0 -0
  269. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-design-deviation-vfs-ls-long/tasks.md +0 -0
  270. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-design-deviation-vfs-ls-long/test-plan.md +0 -0
  271. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-diff-draws/proposal.md +0 -0
  272. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-diff-draws/tasks.md +0 -0
  273. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-diff-draws/test-plan.md +0 -0
  274. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-diff-framebuffer/proposal.md +0 -0
  275. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-diff-framebuffer/tasks.md +0 -0
  276. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-diff-framebuffer/test-plan.md +0 -0
  277. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-diff-infrastructure/proposal.md +0 -0
  278. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-diff-infrastructure/tasks.md +0 -0
  279. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-diff-infrastructure/test-plan.md +0 -0
  280. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-diff-pipeline/proposal.md +0 -0
  281. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-diff-pipeline/tasks.md +0 -0
  282. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-diff-pipeline/test-plan.md +0 -0
  283. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-diff-resources/proposal.md +0 -0
  284. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-diff-resources/tasks.md +0 -0
  285. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-diff-resources/test-plan.md +0 -0
  286. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-diff-stats/proposal.md +0 -0
  287. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-diff-stats/tasks.md +0 -0
  288. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-diff-stats/test-plan.md +0 -0
  289. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-docs-automation/proposal.md +0 -0
  290. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-docs-automation/tasks.md +0 -0
  291. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-docs-automation/test-plan.md +0 -0
  292. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-fix-json-error-and-search-preload/proposal.md +0 -0
  293. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-fix-json-error-and-search-preload/tasks.md +0 -0
  294. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-fix-json-error-and-search-preload/test-plan.md +0 -0
  295. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-image-compare/proposal.md +0 -0
  296. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-image-compare/tasks.md +0 -0
  297. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-image-compare/test-plan.md +0 -0
  298. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-phase3a-script/proposal.md +0 -0
  299. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-phase3a-script/tasks.md +0 -0
  300. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-phase3a-script/test-plan.md +0 -0
  301. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-phase3c-ci-assertions/proposal.md +0 -0
  302. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-phase3c-ci-assertions/tasks.md +0 -0
  303. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-phase3c-ci-assertions/test-plan.md +0 -0
  304. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-phase3c-snapshot/proposal.md +0 -0
  305. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-phase3c-snapshot/tasks.md +0 -0
  306. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-phase3c-snapshot/test-plan.md +0 -0
  307. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-phase4a-shader-debug/proposal.md +0 -0
  308. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-phase4a-shader-debug/tasks.md +0 -0
  309. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-phase4a-shader-debug/test-plan.md +0 -0
  310. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-phase4b-shader-edit-replay/proposal.md +0 -0
  311. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-phase4b-shader-edit-replay/tasks.md +0 -0
  312. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-phase4b-shader-edit-replay/test-plan.md +0 -0
  313. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-phase4c-mesh-export/proposal.md +0 -0
  314. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-phase4c-mesh-export/tasks.md +0 -0
  315. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-phase4c-mesh-export/test-plan.md +0 -0
  316. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-phase4c-overlay/proposal.md +0 -0
  317. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-phase4c-overlay/tasks.md +0 -0
  318. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-phase4c-overlay/test-plan.md +0 -0
  319. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-phase5-debug-thread/proposal.md +0 -0
  320. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-phase5-debug-thread/tasks.md +0 -0
  321. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-phase5-debug-thread/test-plan.md +0 -0
  322. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-phase5-pick-pixel/proposal.md +0 -0
  323. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-phase5-pick-pixel/tasks.md +0 -0
  324. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-phase5-pick-pixel/test-plan.md +0 -0
  325. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-phase5-tex-stats/proposal.md +0 -0
  326. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-phase5-tex-stats/tasks.md +0 -0
  327. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-phase5-tex-stats/test-plan.md +0 -0
  328. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-renderdoc-build-helper/proposal.md +0 -0
  329. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-renderdoc-build-helper/tasks.md +0 -0
  330. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-renderdoc-build-helper/test-plan.md +0 -0
  331. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-robustness-hardening/proposal.md +0 -0
  332. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-robustness-hardening/tasks.md +0 -0
  333. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-robustness-hardening/test-plan.md +0 -0
  334. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-security-hardening-2/proposal.md +0 -0
  335. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-security-hardening-2/tasks.md +0 -0
  336. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-security-hardening-2/test-plan.md +0 -0
  337. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-skill-auto-install/proposal.md +0 -0
  338. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-skill-auto-install/tasks.md +0 -0
  339. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-skill-auto-install/test-plan.md +0 -0
  340. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-worktree-isolation/proposal.md +0 -0
  341. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-worktree-isolation/tasks.md +0 -0
  342. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-22-worktree-isolation/test-plan.md +0 -0
  343. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-23-b17-eid-mutation/proposal.md +0 -0
  344. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-23-b17-eid-mutation/tasks.md +0 -0
  345. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-23-b17-eid-mutation/test-plan.md +0 -0
  346. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-23-b18-b19-b24-cli-ux/proposal.md +0 -0
  347. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-23-b18-b19-b24-cli-ux/tasks.md +0 -0
  348. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-23-b18-b19-b24-cli-ux/test-plan.md +0 -0
  349. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-23-b21-b22-b23-b25-daemon-lifecycle/proposal.md +0 -0
  350. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-23-b21-b22-b23-b25-daemon-lifecycle/tasks.md +0 -0
  351. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-23-b21-b22-b23-b25-daemon-lifecycle/test-plan.md +0 -0
  352. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-23-capture-process-leak-b26-b28/proposal.md +0 -0
  353. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-23-capture-process-leak-b26-b28/tasks.md +0 -0
  354. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-23-capture-process-leak-b26-b28/test-plan.md +0 -0
  355. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-23-docs-polish/proposal.md +0 -0
  356. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-23-docs-polish/tasks.md +0 -0
  357. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-23-docs-polish/test-plan.md +0 -0
  358. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-23-fix-aur-build/proposal.md +0 -0
  359. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-23-fix-aur-build/tasks.md +0 -0
  360. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-23-fix-aur-build/test-plan.md +0 -0
  361. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-23-fix-bugs-b10-b15-b16/proposal.md +0 -0
  362. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-23-fix-bugs-b10-b15-b16/tasks.md +0 -0
  363. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-23-fix-bugs-b10-b15-b16/test-plan.md +0 -0
  364. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-23-phase-w2-build-script/proposal.md +0 -0
  365. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-23-phase-w2-build-script/tasks.md +0 -0
  366. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-23-phase-w2-build-script/test-plan.md +0 -0
  367. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-23-phase5b-capture-unified/proposal.md +0 -0
  368. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-23-phase5b-capture-unified/tasks.md +0 -0
  369. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-23-phase5b-capture-unified/test-plan.md +0 -0
  370. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-23-test-gpu-coverage/proposal.md +0 -0
  371. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-23-test-gpu-coverage/tasks.md +0 -0
  372. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-23-test-gpu-coverage/test-plan.md +0 -0
  373. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-23-test-mock-accuracy/proposal.md +0 -0
  374. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-23-test-mock-accuracy/tasks.md +0 -0
  375. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-23-test-mock-accuracy/test-plan.md +0 -0
  376. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-24-b43-b44-remote-split/proposal.md +0 -0
  377. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-24-b43-b44-remote-split/tasks.md +0 -0
  378. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-24-b43-b44-remote-split/test-plan.md +0 -0
  379. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-24-phase-m-macos-support/proposal.md +0 -0
  380. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-24-phase-m-macos-support/tasks.md +0 -0
  381. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-24-phase-m-macos-support/test-plan.md +0 -0
  382. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-24-phase-r1-quick-wins/proposal.md +0 -0
  383. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-24-phase-r1-quick-wins/tasks.md +0 -0
  384. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-24-phase-r1-quick-wins/test-plan.md +0 -0
  385. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-24-phase-r2-test-infrastructure/proposal.md +0 -0
  386. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-24-phase-r2-test-infrastructure/tasks.md +0 -0
  387. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-24-phase-r2-test-infrastructure/test-plan.md +0 -0
  388. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-26-phase-r3-usability-fixes/proposal.md +0 -0
  389. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-26-phase-r3-usability-fixes/tasks.md +0 -0
  390. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-26-phase-r3-usability-fixes/test-plan.md +0 -0
  391. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-28-design-deviation-fixes/proposal.md +0 -0
  392. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-28-design-deviation-fixes/tasks.md +0 -0
  393. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-28-design-deviation-fixes/test-plan.md +0 -0
  394. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-28-dev-install-enhancement/proposal.md +0 -0
  395. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-28-dev-install-enhancement/tasks.md +0 -0
  396. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/changes/archive/2026-02-28-dev-install-enhancement/test-plan.md +0 -0
  397. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/specs/architecture/spec.md +0 -0
  398. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/specs/ci/spec.md +0 -0
  399. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/specs/daemon/spec.md +0 -0
  400. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/specs/foundation/spec.md +0 -0
  401. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/specs/packaging/spec.md +0 -0
  402. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/specs/session/spec.md +0 -0
  403. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/openspec/specs/tooling/spec.md +0 -0
  404. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/pyproject.toml +0 -0
  405. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/release-please-config.json +0 -0
  406. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/ruff.toml +0 -0
  407. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/scripts/build-renderdoc.sh +0 -0
  408. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/scripts/capture_fixture.sh +0 -0
  409. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/scripts/dev_install.py +0 -0
  410. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/scripts/e2e_test.py +0 -0
  411. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/scripts/ensure-renderdoc.py +0 -0
  412. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/scripts/ensure-renderdoc.sh +0 -0
  413. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/scripts/gen-commands.py +0 -0
  414. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/scripts/gen-replay.py +0 -0
  415. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/scripts/gen-skill-ref.py +0 -0
  416. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/scripts/gen-stats.py +0 -0
  417. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/scripts/gen_and_check.py +0 -0
  418. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/scripts/setup-renderdoc.sh +0 -0
  419. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/scripts/setup-vulkan-samples.sh +0 -0
  420. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/scripts/setup_vulkan_samples.py +0 -0
  421. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/scripts/verify-package.sh +0 -0
  422. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/scripts/verify_package.py +0 -0
  423. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/setup.cfg +0 -0
  424. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/__init__.py +0 -0
  425. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/_skills/SKILL.md +0 -0
  426. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/_skills/__init__.py +0 -0
  427. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/_skills/references/commands-quick-ref.md +0 -0
  428. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/_transport.py +0 -0
  429. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/adapter.py +0 -0
  430. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/cli.py +0 -0
  431. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/commands/_helpers.py +0 -0
  432. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/commands/assert_ci.py +0 -0
  433. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/commands/assert_image.py +0 -0
  434. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/commands/capture.py +0 -0
  435. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/commands/capture_control.py +0 -0
  436. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/commands/capturefile.py +0 -0
  437. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/commands/completion.py +0 -0
  438. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/commands/counters.py +0 -0
  439. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/commands/debug.py +0 -0
  440. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/commands/diff.py +0 -0
  441. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/commands/events.py +0 -0
  442. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/commands/export.py +0 -0
  443. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/commands/info.py +0 -0
  444. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/commands/install_skill.py +0 -0
  445. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/commands/mesh.py +0 -0
  446. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/commands/pick_pixel.py +0 -0
  447. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/commands/pipeline.py +0 -0
  448. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/commands/pixel.py +0 -0
  449. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/commands/remote.py +0 -0
  450. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/commands/resources.py +0 -0
  451. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/commands/script.py +0 -0
  452. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/commands/search.py +0 -0
  453. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/commands/serve.py +0 -0
  454. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/commands/session.py +0 -0
  455. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/commands/shader_edit.py +0 -0
  456. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/commands/snapshot.py +0 -0
  457. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/commands/tex_stats.py +0 -0
  458. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/commands/unix_helpers.py +0 -0
  459. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/commands/usage.py +0 -0
  460. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/daemon_client.py +0 -0
  461. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/daemon_server.py +0 -0
  462. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/diff/__init__.py +0 -0
  463. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/diff/alignment.py +0 -0
  464. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/diff/draws.py +0 -0
  465. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/diff/framebuffer.py +0 -0
  466. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/diff/pipeline.py +0 -0
  467. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/diff/resources.py +0 -0
  468. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/diff/stats.py +0 -0
  469. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/diff/summary.py +0 -0
  470. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/formatters/json_fmt.py +0 -0
  471. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/formatters/kv.py +0 -0
  472. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/formatters/options.py +0 -0
  473. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/formatters/tsv.py +0 -0
  474. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/handlers/__init__.py +0 -0
  475. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/handlers/_helpers.py +0 -0
  476. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/handlers/_types.py +0 -0
  477. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/handlers/buffer.py +0 -0
  478. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/handlers/capture.py +0 -0
  479. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/handlers/capturefile.py +0 -0
  480. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/handlers/core.py +0 -0
  481. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/handlers/debug.py +0 -0
  482. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/handlers/descriptor.py +0 -0
  483. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/handlers/pipe_state.py +0 -0
  484. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/handlers/script.py +0 -0
  485. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/handlers/shader.py +0 -0
  486. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/handlers/shader_edit.py +0 -0
  487. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/handlers/vfs.py +0 -0
  488. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/image_compare.py +0 -0
  489. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/protocol.py +0 -0
  490. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/remote_core.py +0 -0
  491. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/remote_state.py +0 -0
  492. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/services/__init__.py +0 -0
  493. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/services/diff_service.py +0 -0
  494. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/services/query_service.py +0 -0
  495. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/session_state.py +0 -0
  496. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/target_state.py +0 -0
  497. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/vfs/__init__.py +0 -0
  498. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/vfs/formatter.py +0 -0
  499. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/vfs/router.py +0 -0
  500. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc/vfs/tree_cache.py +0 -0
  501. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc_cli.egg-info/dependency_links.txt +0 -0
  502. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc_cli.egg-info/entry_points.txt +0 -0
  503. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc_cli.egg-info/requires.txt +0 -0
  504. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/src/rdc_cli.egg-info/top_level.txt +0 -0
  505. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/e2e/__init__.py +0 -0
  506. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/e2e/blackbox_test_catalog.md +0 -0
  507. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/e2e/conftest.py +0 -0
  508. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/e2e/test_advanced.py +0 -0
  509. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/e2e/test_assert.py +0 -0
  510. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/e2e/test_capturefile.py +0 -0
  511. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/e2e/test_diff.py +0 -0
  512. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/e2e/test_presession.py +0 -0
  513. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/e2e/test_session.py +0 -0
  514. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/e2e/test_vfs.py +0 -0
  515. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/fixtures/hello_triangle.rdc +0 -0
  516. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/fixtures/vkcube.rdc +0 -0
  517. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/fixtures/vkcube_validation.rdc +0 -0
  518. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/integration/test_build_renderdoc_integration.py +0 -0
  519. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/integration/test_daemon_handlers_real.py +0 -0
  520. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/integration/test_mock_api_sync.py +0 -0
  521. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/integration/test_real_replay.py +0 -0
  522. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/integration/test_vulkan_samples.py +0 -0
  523. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/conftest.py +0 -0
  524. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_adapter.py +0 -0
  525. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_assert_ci_commands.py +0 -0
  526. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_assert_image_command.py +0 -0
  527. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_binary_daemon.py +0 -0
  528. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_buffer_decode.py +0 -0
  529. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_capture.py +0 -0
  530. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_capture_control.py +0 -0
  531. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_capture_handlers.py +0 -0
  532. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_capturefile_commands.py +0 -0
  533. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_capturefile_handlers.py +0 -0
  534. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_ci_files.py +0 -0
  535. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_cli.py +0 -0
  536. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_completion.py +0 -0
  537. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_count_shadermap.py +0 -0
  538. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_counters_commands.py +0 -0
  539. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_counters_daemon.py +0 -0
  540. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_daemon_crash_regression.py +0 -0
  541. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_daemon_output_quality.py +0 -0
  542. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_daemon_pipeline_extended.py +0 -0
  543. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_daemon_server_unit.py +0 -0
  544. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_daemon_shader_api_fix.py +0 -0
  545. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_daemon_shader_extended.py +0 -0
  546. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_debug_commands.py +0 -0
  547. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_debug_handlers.py +0 -0
  548. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_descriptors_daemon.py +0 -0
  549. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_dev_install.py +0 -0
  550. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_diff_alignment.py +0 -0
  551. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_diff_command.py +0 -0
  552. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_diff_draws.py +0 -0
  553. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_diff_framebuffer.py +0 -0
  554. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_diff_pipeline.py +0 -0
  555. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_diff_resources.py +0 -0
  556. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_diff_service.py +0 -0
  557. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_diff_stats.py +0 -0
  558. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_diff_summary.py +0 -0
  559. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_discover.py +0 -0
  560. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_draws_daemon.py +0 -0
  561. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_draws_events_cli.py +0 -0
  562. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_eid_completion.py +0 -0
  563. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_events_commands.py +0 -0
  564. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_export_commands.py +0 -0
  565. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_export_overlay.py +0 -0
  566. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_fix1_draws_pass_name.py +0 -0
  567. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_fix2_vfs_intermediate_dirs.py +0 -0
  568. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_fix3_friendly_pass_name.py +0 -0
  569. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_formatters.py +0 -0
  570. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_formatters_kv.py +0 -0
  571. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_gen_skill_ref.py +0 -0
  572. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_handlers_remote.py +0 -0
  573. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_image_compare.py +0 -0
  574. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_info_commands.py +0 -0
  575. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_install_skill.py +0 -0
  576. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_json_errors.py +0 -0
  577. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_keep_remote.py +0 -0
  578. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_mesh_commands.py +0 -0
  579. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_mesh_handler.py +0 -0
  580. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_mock_capture_types.py +0 -0
  581. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_mock_renderdoc.py +0 -0
  582. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_open_remote.py +0 -0
  583. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_output_options.py +0 -0
  584. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_overlay_handler.py +0 -0
  585. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_pass_deps.py +0 -0
  586. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_pick_pixel_commands.py +0 -0
  587. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_pipeline_cli_phase27.py +0 -0
  588. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_pipeline_commands.py +0 -0
  589. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_pipeline_daemon.py +0 -0
  590. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_pipeline_section_routing.py +0 -0
  591. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_pipeline_shader.py +0 -0
  592. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_pipeline_state.py +0 -0
  593. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_pixel_history_commands.py +0 -0
  594. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_pixel_history_daemon.py +0 -0
  595. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_pixi_files.py +0 -0
  596. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_protocol.py +0 -0
  597. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_query_service.py +0 -0
  598. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_quickfix_batch.py +0 -0
  599. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_remote_commands.py +0 -0
  600. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_remote_core.py +0 -0
  601. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_remote_replay.py +0 -0
  602. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_remote_state.py +0 -0
  603. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_require_pipe.py +0 -0
  604. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_resource_semantic_completion.py +0 -0
  605. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_resources_commands.py +0 -0
  606. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_resources_filter.py +0 -0
  607. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_script_command.py +0 -0
  608. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_script_handler.py +0 -0
  609. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_search.py +0 -0
  610. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_semantic_completion.py +0 -0
  611. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_serve.py +0 -0
  612. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_session_completion.py +0 -0
  613. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_session_state.py +0 -0
  614. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_setup_vulkan_samples.py +0 -0
  615. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_shader_edit_commands.py +0 -0
  616. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_shader_edit_handlers.py +0 -0
  617. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_skill_structure.py +0 -0
  618. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_snapshot_command.py +0 -0
  619. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_split_binary.py +0 -0
  620. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_target_state.py +0 -0
  621. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_tex_stats_commands.py +0 -0
  622. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_tooling_files.py +0 -0
  623. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_unix_helpers_commands.py +0 -0
  624. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_usage_commands.py +0 -0
  625. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_usage_daemon.py +0 -0
  626. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_vfs_binary.py +0 -0
  627. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_vfs_completion.py +0 -0
  628. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_vfs_daemon.py +0 -0
  629. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_vfs_formatter.py +0 -0
  630. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_vfs_router.py +0 -0
  631. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_vfs_tree_cache.py +0 -0
  632. {rdc_cli-0.3.9 → rdc_cli-0.4.1}/tests/unit/test_windows_compat.py +0 -0
@@ -43,9 +43,6 @@ jobs:
43
43
  - name: Verify skill reference is fresh
44
44
  run: uv run python scripts/gen_and_check.py check scripts/gen-skill-ref.py src/rdc/_skills/references/commands-quick-ref.md
45
45
 
46
- - name: Verify replay data is fresh
47
- run: uv run python scripts/gen_and_check.py check scripts/gen-replay.py docs-astro/src/data/replay.json
48
-
49
46
  - name: Verify commands data is fresh
50
47
  run: uv run python scripts/gen_and_check.py check scripts/gen-commands.py docs-astro/src/data/commands.json
51
48
 
@@ -62,9 +62,6 @@ jobs:
62
62
  > docs-astro/src/data/stats.json
63
63
  cat docs-astro/src/data/stats.json
64
64
 
65
- - name: Build mkdocs
66
- run: uv run --with "mkdocs<2" --with mkdocs-material --with mkdocs-click mkdocs build -d _site
67
-
68
65
  - name: Set up Node.js
69
66
  uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4
70
67
  with:
@@ -78,11 +75,6 @@ jobs:
78
75
  npm ci
79
76
  npm run build
80
77
 
81
- - name: Merge mkdocs CLI reference into Astro output
82
- run: |
83
- mkdir -p docs-astro/dist/docs/cli-reference
84
- cp -r _site/cli-reference/* docs-astro/dist/docs/cli-reference/
85
-
86
78
  - name: Generate badge endpoint JSONs
87
79
  run: |
88
80
  mkdir -p docs-astro/dist/badges
@@ -4,6 +4,7 @@ __pycache__/
4
4
  *.pyo
5
5
  *.pyd
6
6
  .pytest_cache/
7
+ .pytest_tmp*
7
8
  .mypy_cache/
8
9
  .ruff_cache/
9
10
  .coverage
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rdc-cli
3
- Version: 0.3.9
3
+ Version: 0.4.1
4
4
  Summary: CLI for RenderDoc .rdc captures
5
5
  Author: Jim
6
6
  License-Expression: MIT
@@ -64,7 +64,7 @@ python scripts/build_renderdoc.py # one-time build (needs cmake + ninja)
64
64
  rdc doctor # verify everything works
65
65
  ```
66
66
 
67
- **PyPI — Windows** (experimental)
67
+ **PyPI — Windows**
68
68
 
69
69
  ```bash
70
70
  uv tool install rdc-cli # or: pipx install rdc-cli
@@ -107,7 +107,7 @@ pixi run setup-renderdoc # build renderdoc (pixi installs toolchain
107
107
  |----------|----------------------|--------------|
108
108
  | Linux | ✅ | ✅ |
109
109
  | macOS | ❌ (not supported yet) | ✅ (recommended) |
110
- | Windows | ✅ (experimental) | ✅ (experimental) |
110
+ | Windows | ✅ | ✅ |
111
111
 
112
112
  ### RenderDoc bootstrap (all platforms)
113
113
 
@@ -210,7 +210,7 @@ rdc-cli bridges that gap:
210
210
 
211
211
  ## Commands
212
212
 
213
- Run `rdc --help` for the full list, or `rdc <command> --help` for details. See the [full command reference](https://bananasjim.github.io/rdc-cli/docs/cli-reference/rdc/) for every option.
213
+ Run `rdc --help` for the full list, or `rdc <command> --help` for details. See the [full command reference](https://bananasjim.github.io/rdc-cli/docs/commands/) for every option.
214
214
 
215
215
  | Category | Commands |
216
216
  |----------|----------|
@@ -37,7 +37,7 @@ python scripts/build_renderdoc.py # one-time build (needs cmake + ninja)
37
37
  rdc doctor # verify everything works
38
38
  ```
39
39
 
40
- **PyPI — Windows** (experimental)
40
+ **PyPI — Windows**
41
41
 
42
42
  ```bash
43
43
  uv tool install rdc-cli # or: pipx install rdc-cli
@@ -80,7 +80,7 @@ pixi run setup-renderdoc # build renderdoc (pixi installs toolchain
80
80
  |----------|----------------------|--------------|
81
81
  | Linux | ✅ | ✅ |
82
82
  | macOS | ❌ (not supported yet) | ✅ (recommended) |
83
- | Windows | ✅ (experimental) | ✅ (experimental) |
83
+ | Windows | ✅ | ✅ |
84
84
 
85
85
  ### RenderDoc bootstrap (all platforms)
86
86
 
@@ -183,7 +183,7 @@ rdc-cli bridges that gap:
183
183
 
184
184
  ## Commands
185
185
 
186
- Run `rdc --help` for the full list, or `rdc <command> --help` for details. See the [full command reference](https://bananasjim.github.io/rdc-cli/docs/cli-reference/rdc/) for every option.
186
+ Run `rdc --help` for the full list, or `rdc <command> --help` for details. See the [full command reference](https://bananasjim.github.io/rdc-cli/docs/commands/) for every option.
187
187
 
188
188
  | Category | Commands |
189
189
  |----------|----------|
@@ -7,11 +7,14 @@ const categories = [
7
7
  { name: 'Session', color: 'from-gpu-accent/20', accent: 'text-gpu-accent', commands: ['open', 'close', 'status', 'goto', 'capture', 'doctor'] },
8
8
  { name: 'Inspection', color: 'from-gpu-green/20', accent: 'text-gpu-green', commands: ['info', 'stats', 'events', 'draws', 'event', 'draw', 'log'] },
9
9
  { name: 'GPU State', color: 'from-gpu-purple/20', accent: 'text-gpu-purple', commands: ['pipeline', 'bindings', 'shader', 'shaders', 'shader-map'] },
10
- { name: 'Debug', color: 'from-red-500/20', accent: 'text-red-400', commands: ['debug', 'pixel', 'pick-pixel', 'tex-stats'] },
10
+ { name: 'Debug', color: 'from-red-500/20', accent: 'text-red-400', commands: ['debug pixel', 'debug thread', 'debug vertex', 'pixel', 'pick-pixel', 'tex-stats'] },
11
11
  { name: 'Shader Edit', color: 'from-yellow-500/20', accent: 'text-yellow-400', commands: ['shader-build', 'shader-replace', 'shader-restore', 'shader-restore-all', 'shader-encodings'] },
12
12
  { name: 'Resources', color: 'from-gpu-orange/20', accent: 'text-gpu-orange', commands: ['resources', 'resource', 'passes', 'pass', 'usage'] },
13
13
  { name: 'Export', color: 'from-gpu-pink/20', accent: 'text-gpu-pink', commands: ['texture', 'rt', 'buffer', 'mesh', 'snapshot'] },
14
14
  { name: 'Assertions', color: 'from-emerald-500/20', accent: 'text-emerald-400', commands: ['assert-pixel', 'assert-image', 'assert-clean', 'assert-count', 'assert-state'] },
15
+ { name: 'Capture Control', color: 'from-indigo-500/20', accent: 'text-indigo-400', commands: ['attach', 'capture-trigger', 'capture-list', 'capture-copy'] },
16
+ { name: 'Remote', color: 'from-teal-500/20', accent: 'text-teal-400', commands: ['remote connect', 'remote list', 'remote capture', 'serve'] },
17
+ { name: 'Capture File', color: 'from-rose-500/20', accent: 'text-rose-400', commands: ['thumbnail', 'gpus', 'sections', 'section', 'callstacks'] },
15
18
  { name: 'Diff', color: 'from-sky-500/20', accent: 'text-sky-400', commands: ['diff'] },
16
19
  { name: 'Search', color: 'from-amber-500/20', accent: 'text-amber-400', commands: ['search', 'counters'] },
17
20
  { name: 'VFS', color: 'from-gpu-cyan/20', accent: 'text-gpu-cyan', commands: ['ls', 'cat', 'tree'] },
@@ -35,7 +38,7 @@ const categories = [
35
38
  <div class="flex flex-wrap gap-1.5 mt-auto">
36
39
  {cat.commands.map((cmd) => (
37
40
  <a
38
- href={`${base}docs/commands/#${cmd}`}
41
+ href={`${base}docs/commands/#${cmd.replace(/ /g, '-')}`}
39
42
  class="px-2.5 py-1 bg-gpu-deeper/80 rounded-md text-xs font-mono text-gray-400 hover:text-gpu-accent hover:bg-gpu-accent/10 transition-all duration-200"
40
43
  >
41
44
  {cmd}
@@ -14,9 +14,28 @@
14
14
  <div class="space-y-5">
15
15
  <div class="install-block opacity-0">
16
16
  <div class="flex items-center gap-2 mb-2">
17
- <span class="text-[10px] font-bold text-gpu-accent uppercase tracking-[0.2em]">PyPI</span>
17
+ <span class="text-[10px] font-bold text-gpu-green uppercase tracking-[0.2em]">Pixi</span>
18
18
  <span class="text-[10px] text-gray-500 tracking-wider">recommended</span>
19
19
  </div>
20
+ <div class="group relative terminal-window">
21
+ <div class="px-5 py-4 font-mono text-sm text-gray-200 space-y-1">
22
+ <div><span class="text-gpu-green select-none font-bold">$ </span>curl -fsSL https://pixi.sh/install.sh | bash</div>
23
+ <div class="text-gray-500"># restart your shell, then:</div>
24
+ <div><span class="text-gpu-green select-none font-bold">$ </span>pixi global install rdc-cli</div>
25
+ </div>
26
+ <button
27
+ class="copy-btn absolute top-3 right-3 px-2.5 py-1 text-[10px] text-gray-500 bg-gpu-card rounded-md opacity-100 md:opacity-0 md:group-hover:opacity-100 transition-all duration-200 hover:text-gpu-accent hover:bg-gpu-accent/10 uppercase tracking-wider font-bold"
28
+ data-copy="pixi global install rdc-cli"
29
+ >
30
+ Copy
31
+ </button>
32
+ </div>
33
+ </div>
34
+
35
+ <div class="install-block opacity-0">
36
+ <div class="flex items-center gap-2 mb-2">
37
+ <span class="text-[10px] font-bold text-gpu-accent uppercase tracking-[0.2em]">PyPI</span>
38
+ </div>
20
39
  <div class="group relative terminal-window">
21
40
  <div class="px-5 py-4 font-mono text-sm text-gray-200 space-y-1">
22
41
  <div><span class="text-gpu-green select-none font-bold">$ </span>pipx install rdc-cli</div>
@@ -0,0 +1,116 @@
1
+ [
2
+ [
3
+ {
4
+ "cmd": "rdc open hello_triangle.rdc",
5
+ "output": "opened: hello_triangle.rdc"
6
+ },
7
+ {
8
+ "cmd": "rdc info",
9
+ "output": "capture: hello_triangle.rdc\napi: Vulkan\nevent_count: 14\ndriver: NVIDIA 565.57.01"
10
+ },
11
+ {
12
+ "cmd": "rdc draws",
13
+ "output": "EID\tMARKER\tTRIANGLES\n11\tDrawIndexed\t1"
14
+ },
15
+ {
16
+ "cmd": "rdc pipeline 11",
17
+ "output": "type: Graphics\ngfx_pipe: 51\ntopology: TriangleList\nvs_shader: 111\nps_shader: 112"
18
+ },
19
+ {
20
+ "cmd": "rdc search \"main\"",
21
+ "output": "SHADER\tSTAGE\tLINE\tCONTENT\n111\tvs\t3\tvoid main() {\n112\tps\t4\tvoid main() {"
22
+ },
23
+ {
24
+ "cmd": "rdc close",
25
+ "output": "session closed"
26
+ }
27
+ ],
28
+ [
29
+ {
30
+ "cmd": "rdc open hello_triangle.rdc",
31
+ "output": "opened: hello_triangle.rdc"
32
+ },
33
+ {
34
+ "cmd": "rdc tree / --depth 1",
35
+ "output": "/\n draws/\n passes/\n resources/\n shaders/\n info\n log\n stats"
36
+ },
37
+ {
38
+ "cmd": "rdc ls /draws/11",
39
+ "output": "NAME\tKIND\npipeline/\tdir\nshader/\tdir\ncbuffer/\tdir\nvbuffer\tleaf\nibuffer\tleaf\ndescriptors\tleaf"
40
+ },
41
+ {
42
+ "cmd": "rdc cat /draws/11/pipeline/topology",
43
+ "output": "TriangleList"
44
+ },
45
+ {
46
+ "cmd": "rdc resources -q | wc -l",
47
+ "output": "6"
48
+ },
49
+ {
50
+ "cmd": "rdc draws --json | jq \".[0].triangles\"",
51
+ "output": "1"
52
+ },
53
+ {
54
+ "cmd": "rdc close",
55
+ "output": "session closed"
56
+ }
57
+ ],
58
+ [
59
+ {
60
+ "cmd": "rdc open hello_triangle.rdc",
61
+ "output": "opened: hello_triangle.rdc"
62
+ },
63
+ {
64
+ "cmd": "rdc pick-pixel 300 300 11",
65
+ "output": "r=0.0000 g=0.5000 b=0.0000 a=1.0000"
66
+ },
67
+ {
68
+ "cmd": "rdc pixel 300 300 11",
69
+ "output": "EID\tTEST\tR\tG\tB\tA\n11\tPassed\t0.0000\t0.5000\t0.0000\t1.0000"
70
+ },
71
+ {
72
+ "cmd": "rdc debug pixel 11 300 300",
73
+ "output": "result: r=0.0000 g=0.5000 b=0.0000 a=1.0000\nshader: 112 (ps)"
74
+ },
75
+ {
76
+ "cmd": "rdc debug pixel 11 300 300 --trace",
77
+ "output": "STEP\tLINE\tINST\tVAR\tVALUE\n0\t4\t0\tcolor\t(0.0, 1.0, 0.0, 1.0)\n1\t5\t1\toutColor\t(0.0, 0.5, 0.0, 1.0)"
78
+ },
79
+ {
80
+ "cmd": "rdc close",
81
+ "output": "session closed"
82
+ }
83
+ ],
84
+ [
85
+ {
86
+ "cmd": "rdc open hello_triangle.rdc",
87
+ "output": "opened: hello_triangle.rdc"
88
+ },
89
+ {
90
+ "cmd": "rdc draws --json",
91
+ "output": "[{\"eid\": 11, \"marker\": \"DrawIndexed\", \"triangles\": 1}]"
92
+ },
93
+ {
94
+ "cmd": "rdc assert-count draws --expect 1 --op eq",
95
+ "output": "PASS: draws == 1"
96
+ },
97
+ {
98
+ "cmd": "rdc assert-count events --expect 5 --op ge",
99
+ "output": "PASS: events >= 5 (actual: 14)"
100
+ },
101
+ {
102
+ "cmd": "rdc close",
103
+ "output": "session closed"
104
+ }
105
+ ],
106
+ [
107
+ {
108
+ "cmd": "rdc diff before.rdc after.rdc --draws",
109
+ "output": "--- before.rdc draws\n+++ after.rdc draws\n DrawIndexed(11): 1 tri\n+ DrawIndexed(14): 256 tri"
110
+ },
111
+ {
112
+ "cmd": "rdc diff before.rdc after.rdc --stats",
113
+ "output": "METRIC\tBEFORE\tAFTER\tDELTA\ndraws\t1\t2\t+1\ntriangles\t1\t257\t+256\nresources\t6\t8\t+2"
114
+ }
115
+ ]
116
+ ]
@@ -0,0 +1,7 @@
1
+ {
2
+ "command_count": 67,
3
+ "version": "0.3.9",
4
+ "description": "CLI for RenderDoc .rdc captures",
5
+ "test_count": 2542,
6
+ "coverage": "94%"
7
+ }
@@ -33,6 +33,16 @@ const base = import.meta.env.BASE_URL;
33
33
  <li><em>"GPU state"</em>, <em>"draw calls"</em>, <em>"pipeline"</em></li>
34
34
  </ul>
35
35
 
36
+ <h2 id="why-skill-not-mcp">Why Skill, Not MCP?</h2>
37
+ <p>rdc-cli deliberately uses a Claude Code <strong>skill</strong> (a prompt file that teaches the agent CLI usage) rather than an MCP server. Here's why:</p>
38
+ <ul>
39
+ <li><strong>Not universal</strong> -- MCP is tied to specific AI clients that implement the protocol. A CLI skill works with any agent that can execute shell commands.</li>
40
+ <li><strong>Cannot run in CI</strong> -- MCP requires a persistent server process and a compatible client. CI pipelines need plain CLI commands, not RPC connections.</li>
41
+ <li><strong>Context window bloat</strong> -- MCP returns full tool schemas and large structured payloads that fill the agent's context window. CLI output is compact text -- pipe through <code>grep</code> or <code>jq</code> to extract only what matters.</li>
42
+ <li><strong>No Unix pipe composability</strong> -- MCP is an RPC protocol; results don't flow through stdout. You cannot <code>rdc draws | grep Triangle | wc -l</code> with MCP. The entire Unix tool ecosystem is lost.</li>
43
+ <li><strong>Skill = thin CLI wrapper</strong> -- A skill is just a prompt that teaches the agent to use the CLI. Zero infrastructure, zero dependencies, full pipe composability, works in CI, works with any AI that has shell access.</li>
44
+ </ul>
45
+
36
46
  <h2 id="agent-friendly-design">Agent-Friendly Design</h2>
37
47
 
38
48
  <h3>VFS Path Navigation</h3>
@@ -142,7 +142,7 @@ rdc log | grep -i error &amp;&amp; exit 1 # fail on errors</code></pre>
142
142
  <li><strong>Deterministic paths</strong> &mdash; <code>/draws/142/shader/ps</code> always means the same thing</li>
143
143
  <li><strong>Machine-parseable output</strong> &mdash; TSV and JSON, never mixed formats on stdout</li>
144
144
  <li><strong>Iterative exploration</strong> &mdash; <code>ls</code> to discover structure, <code>cat</code> to read data, just like a real filesystem</li>
145
- <li><strong>Escape hatch</strong> &mdash; <code>rdc script</code> executes arbitrary Python inside the daemon when the 60 built-in commands aren't enough</li>
145
+ <li><strong>Escape hatch</strong> &mdash; <code>rdc script</code> executes arbitrary Python inside the daemon when the 67 built-in commands aren't enough</li>
146
146
  </ul>
147
147
 
148
148
  <p>
@@ -275,10 +275,10 @@ rdc passes --json | jq '.[] | select(.draw_count > 50)'</code></pre>
275
275
  <h2 id="pixel-ladder">Pixel Investigation Ladder</h2>
276
276
 
277
277
  <pre><code>{"# Step 1: Read pixel color at (400, 300)"}
278
- rdc pick-pixel 142 400 300
278
+ rdc pick-pixel 400 300 142
279
279
 
280
280
  {"# Step 2: Full pixel history — who modified this pixel?"}
281
- rdc pixel 142 400 300
281
+ rdc pixel 400 300 142
282
282
 
283
283
  {"# Step 3: Debug the pixel shader that drew it"}
284
284
  rdc debug pixel 142 400 300
@@ -289,6 +289,9 @@ rdc debug pixel 142 400 300 --trace
289
289
  {"# Step 5: Dump variables at a specific line"}
290
290
  rdc debug pixel 142 400 300 --dump-at 15</code></pre>
291
291
 
292
+ <!-- Argument order note: debug pixel and assert-pixel take EID X Y;
293
+ pick-pixel and pixel take X Y [EID] -->
294
+
292
295
  <h2 id="buffer-decode">Buffer Decode via VFS</h2>
293
296
 
294
297
  <pre><code>{"# Read decoded constant buffer values"}
@@ -371,10 +374,10 @@ rdc shader 142 ps --constants</code></pre>
371
374
  rdc log
372
375
 
373
376
  {"# Filter by severity"}
374
- rdc log --level error
377
+ rdc log --level HIGH
375
378
 
376
379
  {"# Assert no errors in CI"}
377
- rdc assert-clean --min-severity error
380
+ rdc assert-clean --min-severity HIGH
378
381
 
379
382
  {"# Check pipeline state for issues"}
380
383
  rdc pipeline 142
@@ -3,7 +3,15 @@ import Docs from '../../layouts/Docs.astro';
3
3
  ---
4
4
 
5
5
  <Docs title="Installation">
6
- <h2>PyPI (Recommended)</h2>
6
+ <h2>Pixi (Recommended)</h2>
7
+ <p>
8
+ Pixi handles the Python environment and all dependencies automatically.
9
+ No manual virtualenv or renderdoc module setup needed.
10
+ </p>
11
+ <pre><code>curl -fsSL https://pixi.sh/install.sh | bash
12
+ pixi global install rdc-cli</code></pre>
13
+
14
+ <h2>PyPI</h2>
7
15
  <pre><code>pipx install rdc-cli</code></pre>
8
16
  <p>
9
17
  This installs the <code>rdc</code> command. You still need the renderdoc
@@ -48,9 +56,9 @@ pixi run setup-renderdoc</code></pre>
48
56
  <td>Supported (recommended)</td>
49
57
  </tr>
50
58
  <tr>
51
- <td>Windows (experimental)</td>
52
- <td>Experimental</td>
53
- <td>Experimental</td>
59
+ <td>Windows</td>
60
+ <td>Supported</td>
61
+ <td>Supported</td>
54
62
  </tr>
55
63
  </tbody>
56
64
  </table>
@@ -84,7 +84,6 @@ import Docs from '../../layouts/Docs.astro';
84
84
  │ ├── info
85
85
  │ ├── disasm
86
86
  │ └── used-by
87
- ├── by-marker/
88
87
  ├── counters/
89
88
  │ └── list
90
89
  └── current # alias for current event</code></pre>
@@ -93,7 +92,7 @@ import Docs from '../../layouts/Docs.astro';
93
92
 
94
93
  <pre><code># List top level
95
94
  rdc ls /
96
- # → capabilities info stats log events/ draws/ by-marker/
95
+ # → capabilities info stats log events/ draws/
97
96
  # passes/ resources/ textures/ buffers/ shaders/ counters/ current
98
97
 
99
98
  # Drill into a draw call
@@ -154,8 +154,8 @@ test('landing page has dynamic command count from stats.json', () => {
154
154
  assert(indexHtml.includes(count), `Missing "${count}" commands count (from stats.json)`);
155
155
  });
156
156
 
157
- test('landing page has all 12 command categories', () => {
158
- const categories = ['Session', 'Inspection', 'GPU State', 'Debug', 'Shader Edit', 'Resources', 'Export', 'Assertions', 'Diff', 'Search', 'VFS', 'Utility'];
157
+ test('landing page has all 15 command categories', () => {
158
+ const categories = ['Session', 'Inspection', 'GPU State', 'Debug', 'Shader Edit', 'Resources', 'Export', 'Assertions', 'Capture Control', 'Remote', 'Capture File', 'Diff', 'Search', 'VFS', 'Utility'];
159
159
  for (const cat of categories) {
160
160
  assert(indexHtml.includes(cat), `Missing command category: ${cat}`);
161
161
  }
@@ -0,0 +1,72 @@
1
+ # OpenSpec Proposal: P2 Bug Fix Batch (B75 + Remote Export + Daemon Survival)
2
+
3
+ ## Motivation
4
+
5
+ Three P2 bugs affect correctness and reliability of core workflows:
6
+
7
+ 1. **B75 — `rdc event` parameter values missing**: The event detail command returns empty strings for all numeric and boolean parameter values, making it useless for debugging draw calls. Root cause is that `SDObject.AsString()` in RenderDoc's SWIG binding only works for `String`/`Enum` basetypes; all other basetypes (UnsignedInteger, SignedInteger, Float, Boolean, Resource) return an empty string. The raw POD fields on `SDObjectPODData` must be read directly based on `basetype`.
8
+
9
+ 2. **Remote Export silent failure**: `rdc tex export`, `rdc rt export`, `rdc rt depth`, and `rdc pick pixel` silently succeed (returning empty or zero data) when the daemon is running in remote/proxy mode, even though `SaveTexture()` and `PickPixel()` require a GPU-side replay controller that is not available in that mode. Users get no error, just garbage output.
10
+
11
+ 3. **Daemon Survival on Windows SSH**: When a user connects via SSH on Windows and launches the daemon in background, the daemon process is killed when the SSH session disconnects. The `CREATE_NO_WINDOW` flag alone is not sufficient; the process must also be detached from the controlling terminal via `CREATE_NEW_PROCESS_GROUP | DETACHED_PROCESS`.
12
+
13
+ ## Design
14
+
15
+ ### B75: `_extract_sd_value()` helper in `query.py`
16
+
17
+ Replace the `child.AsString()` call inside `_handle_event()` with a new private helper `_extract_sd_value(child)` that switches on `child.type.basetype`:
18
+
19
+ | basetype value | SDObject field | Python expression |
20
+ |---|---|---|
21
+ | 7 (UnsignedInteger) | `data.basic.u` | `str(child.data.basic.u)` |
22
+ | 8 (SignedInteger) | `data.basic.i` | `str(child.data.basic.i)` |
23
+ | 9 (Float) | `data.basic.d` | `str(child.data.basic.d)` |
24
+ | 10 (Boolean) | `data.basic.b` | `str(bool(child.data.basic.b))` |
25
+ | 12 (Resource) | `data.basic.id` | `str(int(child.data.basic.id))` |
26
+ | 5, 6 (String, Enum) | `AsString()` or `data.str` | `child.AsString()` |
27
+ | default | — | `child.AsString()` (last-resort fallback) |
28
+
29
+ The helper remains private (`_extract_sd_value`) and is only called from `_handle_event()`.
30
+
31
+ `SDBasicData` on the mock (`tests/mocks/mock_renderdoc.py`) must gain the fields `u`, `i`, `d`, `b`, `id` so unit tests can exercise all branches. `SDObject` in the mock must expose a `type` attribute with a `basetype` field matching the integer constants above.
32
+
33
+ ### Remote Export: `is_remote` guard
34
+
35
+ Four handlers in `texture.py` and `pixel.py` that call GPU-only API must return an error before touching the replay controller when `state.is_remote` is true. The error message mirrors the existing pattern from `_handle_rt_overlay`:
36
+
37
+ ```
38
+ "not supported in remote mode"
39
+ ```
40
+
41
+ Affected handlers — guard goes as first statement in function body (before `rd is None` check), matching `_handle_rt_overlay` pattern:
42
+ - `_handle_tex_export` (texture.py ~line 65)
43
+ - `_handle_rt_export` (texture.py ~line 117)
44
+ - `_handle_rt_depth` (texture.py ~line 147)
45
+ - `_handle_pick_pixel` (pixel.py ~line 131)
46
+
47
+ No logic changes beyond the early return; existing `_handle_rt_overlay` guard is the canonical reference.
48
+
49
+ ### Daemon Survival: Windows creation flags
50
+
51
+ In `src/rdc/_platform.py`, the `popen_flags()` function's Windows branch currently returns:
52
+
53
+ ```python
54
+ {"creationflags": 0x08000000} # CREATE_NO_WINDOW
55
+ ```
56
+
57
+ Change to:
58
+
59
+ ```python
60
+ {"creationflags": 0x00000200 | 0x00000008}
61
+ # CREATE_NEW_PROCESS_GROUP | DETACHED_PROCESS
62
+ ```
63
+
64
+ **Note**: `DETACHED_PROCESS` (0x8) and `CREATE_NO_WINDOW` (0x08000000) are mutually exclusive per Win32 docs — they cannot be ORed together. `DETACHED_PROCESS` is the stronger option: it completely detaches from the parent's console, ensuring the daemon survives SSH session teardown. `CREATE_NEW_PROCESS_GROUP` (0x200) provides signal isolation. The previous `CREATE_NO_WINDOW` is **replaced**, not added to. Unix behavior is unchanged.
65
+
66
+ ## Risk Assessment
67
+
68
+ | Bug | Risk | Mitigation |
69
+ |---|---|---|
70
+ | B75 | Medium | `basetype` integer constants are part of RenderDoc's stable public API and have not changed across v1.x. The `AsString()` fallback ensures no regression for unknown future basetypes. Mock update keeps unit tests accurate. |
71
+ | Remote Export | Low | Pure early-return guards, no existing logic is altered. The pattern is already proven by `_handle_rt_overlay`. |
72
+ | Daemon Survival | Low | Only changes Windows `creationflags` bit mask. Existing Unix path is untouched. The three flags are stable Win32 constants that have existed since Windows XP. |
@@ -0,0 +1,29 @@
1
+ # Tasks: P2 Bugfix Batch
2
+
3
+ ## Agent A: B75 — SDObject value extraction
4
+
5
+ - [ ] A1: Update `tests/mocks/mock_renderdoc.py` — Add `SDType` class with `basetype` field, update `SDBasic` to have `u`, `i`, `d`, `b`, `id` fields alongside `value`, add `type` attribute to `SDObject`
6
+ - [ ] A2: Add `_extract_sd_value(child: Any) -> str` helper to `src/rdc/handlers/query.py` — maps basetype enum to correct data field
7
+ - [ ] A3: Update `_handle_event()` in `src/rdc/handlers/query.py` — replace `child.AsString()` with `_extract_sd_value(child)` call
8
+ - [ ] A4: Update `tests/unit/test_draws_events_daemon.py` — add `TestB75SDValueExtraction` class with 8 test cases
9
+ - [ ] A5: Update `tests/unit/test_daemon_crash_regression.py` — update SD mock construction if needed to work with new `SDBasic` fields
10
+
11
+ ## Agent B: Remote Export — `is_remote` guard
12
+
13
+ - [ ] B1: Add `is_remote` guard to `_handle_tex_export()` in `src/rdc/handlers/texture.py`
14
+ - [ ] B2: Add `is_remote` guard to `_handle_rt_export()` in `src/rdc/handlers/texture.py`
15
+ - [ ] B3: Add `is_remote` guard to `_handle_rt_depth()` in `src/rdc/handlers/texture.py`
16
+ - [ ] B4: Add `is_remote` guard to `_handle_pick_pixel()` in `src/rdc/handlers/pixel.py`
17
+ - [ ] B5: Add `test_pick_pixel_remote_rejected()` to `tests/unit/test_pick_pixel_daemon.py`
18
+ - [ ] B6: Add remote mode tests for `tex_export`, `rt_export`, `rt_depth` in existing texture test file or new file alongside existing tests
19
+
20
+ ## Agent C: Daemon Survival — Windows creation flags
21
+
22
+ - [ ] C1: Update `popen_flags()` in `src/rdc/_platform.py` — add `CREATE_NEW_PROCESS_GROUP | DETACHED_PROCESS` flags
23
+ - [ ] C2: Add `TestPopenFlagsWindows` to `tests/unit/test_platform.py` — verify all three flag bits present
24
+
25
+ ## Verification (main agent)
26
+
27
+ - [ ] V1: `pixi run lint` passes
28
+ - [ ] V2: `pixi run test` passes with zero failures
29
+ - [ ] V3: Windows VM: pull branch, run `rdc event 11` to verify B75 parameter values
@@ -0,0 +1,109 @@
1
+ # Test Plan: P2 Bugfix Batch
2
+
3
+ ## B75 — `_extract_sd_value()` SDObject type dispatch
4
+
5
+ Test class: `TestExtractSDValue` in `tests/unit/test_draws_events_daemon.py`.
6
+
7
+ All cases call `_handle_request(rpc_request("event", {"eid": 42}), state)` with a
8
+ structured file whose chunk child has the SDObject under test. Assert that the
9
+ `Parameters` field in `resp["result"]` contains the expected string for each basetype.
10
+ The state is built with `make_daemon_state(structured_file=..., actions=...)` where
11
+ the action at EID 42 has `events=[APIEvent(eventId=42, chunkIndex=0)]`.
12
+
13
+ ### B75-01 — UnsignedInteger (basetype=7)
14
+ - Build `SDObject` with `type.basetype=7`, `data.basic.u=255`
15
+ - Assert `Parameters` contains `"255"`
16
+
17
+ ### B75-02 — SignedInteger (basetype=8)
18
+ - Build `SDObject` with `type.basetype=8`, `data.basic.i=-42`
19
+ - Assert `Parameters` contains `"-42"`
20
+
21
+ ### B75-03 — Float (basetype=9)
22
+ - Build `SDObject` with `type.basetype=9`, `data.basic.d=3.14`
23
+ - Assert `Parameters` contains `"3.14"` (or a float-formatted representation of 3.14)
24
+
25
+ ### B75-04 — Boolean (basetype=10)
26
+ - Build `SDObject` with `type.basetype=10`, `data.basic.b=True`
27
+ - Assert `Parameters` contains `"True"`
28
+
29
+ ### B75-05 — Resource (basetype=12)
30
+ - Build `SDObject` with `type.basetype=12`, `data.basic.id=42`
31
+ - Assert `Parameters` contains `"42"`
32
+
33
+ ### B75-06 — String (basetype=5)
34
+ - Build `SDObject` with `type.basetype=5`, `data.str="hello"`
35
+ - Assert `Parameters` contains `"hello"`
36
+
37
+ ### B75-07 — Enum (basetype=6)
38
+ - Build `SDObject` with `type.basetype=6`, `data.str="VK_FORMAT_R8G8B8A8_UNORM"`
39
+ - Assert `Parameters` contains `"VK_FORMAT_R8G8B8A8_UNORM"`
40
+
41
+ ### B75-08 — No `type` attribute (legacy fallback)
42
+ - Build `SDObject` that has no `type` attribute (standard mock default)
43
+ - Assert `Parameters` contains the result of `AsString()` on the object (falls back gracefully, no exception)
44
+
45
+ ### B75-09 — Unknown basetype (99)
46
+ - Build `SDObject` with `type.basetype=99`, `data.basic.value=0`
47
+ - Assert no exception is raised and `Parameters` contains the `AsString()` fallback value
48
+
49
+ ---
50
+
51
+ ## Remote Export (RE) — `is_remote` guard for export handlers
52
+
53
+ Add one test per handler in the relevant test file. Each test calls
54
+ `_handle_request(rpc_request("<method>", params), state)` where `state` is built
55
+ with `make_daemon_state(is_remote=True, rd=mock_renderdoc)`. The `rd` param must be
56
+ set so the test doesn't hit the `rd is None` error before reaching the remote guard.
57
+ Assert `resp["error"]["code"] == -32002` and the message contains `"not supported in remote mode"`.
58
+
59
+ ### RE-01 — `pick_pixel` remote guard
60
+ - File: `tests/unit/test_pick_pixel_daemon.py`
61
+ - State: `make_daemon_state(is_remote=True)`
62
+ - Call: `rpc_request("pick_pixel", {"x": 0, "y": 0})`
63
+ - Assert: `resp["error"]["code"] == -32002`, message contains `"not supported in remote mode"`
64
+
65
+ ### RE-02 — `tex_export` remote guard
66
+ - File: `tests/unit/test_tex_stats_handler.py` or a new class in the texture handler test file
67
+ - State: `make_daemon_state(is_remote=True)`
68
+ - Call: `rpc_request("tex_export", {"id": 1})`
69
+ - Assert: `resp["error"]["code"] == -32002`, message contains `"not supported in remote mode"`
70
+
71
+ ### RE-03 — `rt_export` remote guard
72
+ - Same file as RE-02
73
+ - State: `make_daemon_state(is_remote=True)`
74
+ - Call: `rpc_request("rt_export", {"eid": 10, "target": 0})`
75
+ - Assert: `resp["error"]["code"] == -32002`, message contains `"not supported in remote mode"`
76
+
77
+ ### RE-04 — `rt_depth` remote guard
78
+ - Same file as RE-02
79
+ - State: `make_daemon_state(is_remote=True)`
80
+ - Call: `rpc_request("rt_depth", {"eid": 10})`
81
+ - Assert: `resp["error"]["code"] == -32002`, message contains `"not supported in remote mode"`
82
+
83
+ ---
84
+
85
+ ## Daemon Survival (DS) — `popen_flags()` platform dispatch
86
+
87
+ Test class: `TestPopenFlagsPlatform` in `tests/unit/test_platform.py`.
88
+ Use `monkeypatch.setattr("rdc._platform._WIN", ...)` to control the platform branch
89
+ without running on a real Windows system.
90
+
91
+ ### DS-01 — Windows flags
92
+ - Monkeypatch `_WIN=True`
93
+ - Call `popen_flags()`
94
+ - Assert result is a dict with key `"creationflags"`
95
+ - Assert `CREATE_NEW_PROCESS_GROUP` (0x200) bit is set
96
+ - Assert `DETACHED_PROCESS` (0x8) bit is set
97
+ - Assert `CREATE_NO_WINDOW` (0x08000000) is NOT set (mutually exclusive with DETACHED_PROCESS)
98
+
99
+ ### DS-02 — Unix returns empty dict
100
+ - Monkeypatch `_WIN=False`
101
+ - Call `popen_flags()`
102
+ - Assert result `== {}`
103
+
104
+ ---
105
+
106
+ ## Regression
107
+
108
+ - All existing tests must continue to pass after the changes.
109
+ - `pixi run lint` produces zero warnings or errors.