rdc-cli 0.5.1__tar.gz → 0.5.2__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 (643) hide show
  1. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/.github/workflows/ci.yml +2 -1
  2. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/PKG-INFO +1 -1
  3. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/data/commands.json +1 -1
  4. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/pixi.toml +1 -0
  5. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/_skills/SKILL.md +0 -1
  6. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/_skills/references/commands-quick-ref.md +0 -1
  7. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/resources.py +1 -14
  8. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/daemon_server.py +2 -2
  9. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/handlers/query.py +0 -6
  10. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/handlers/texture.py +8 -0
  11. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/services/query_service.py +20 -52
  12. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc_cli.egg-info/PKG-INFO +1 -1
  13. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc_cli.egg-info/SOURCES.txt +0 -1
  14. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_binary_daemon.py +14 -0
  15. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_query_service.py +126 -0
  16. rdc_cli-0.5.1/tests/unit/test_rt_switches.py +0 -243
  17. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/.commitlintrc.yml +0 -0
  18. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/.githooks/pre-commit +0 -0
  19. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/.githooks/pre-push +0 -0
  20. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/.github/CODEOWNERS +0 -0
  21. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
  22. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
  23. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
  24. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
  25. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/.github/workflows/aur.yml +0 -0
  26. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/.github/workflows/commitlint.yml +0 -0
  27. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/.github/workflows/docs.yml +0 -0
  28. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/.gitignore +0 -0
  29. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/.python-version +0 -0
  30. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/.release-please-manifest.json +0 -0
  31. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/CONTRIBUTING.md +0 -0
  32. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/LICENSE +0 -0
  33. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/Makefile +0 -0
  34. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/README.md +0 -0
  35. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/SECURITY.md +0 -0
  36. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/aur/PKGBUILD +0 -0
  37. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/aur/stable/PKGBUILD +0 -0
  38. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docker/Dockerfile +0 -0
  39. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/astro.config.mjs +0 -0
  40. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/package-lock.json +0 -0
  41. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/package.json +0 -0
  42. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/public/.nojekyll +0 -0
  43. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/public/favicon.svg +0 -0
  44. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/components/Commands.astro +0 -0
  45. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/components/Demo.astro +0 -0
  46. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/components/Features.astro +0 -0
  47. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/components/Footer.astro +0 -0
  48. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/components/Hero.astro +0 -0
  49. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/components/Install.astro +0 -0
  50. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/components/Navbar.astro +0 -0
  51. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/components/Philosophy.astro +0 -0
  52. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/components/Terminal.astro +0 -0
  53. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/components/ThemeSwitcher.astro +0 -0
  54. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/data/replay.json +0 -0
  55. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/data/stats.json +0 -0
  56. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/layouts/Base.astro +0 -0
  57. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/layouts/Docs.astro +0 -0
  58. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/pages/docs/ai-integration.astro +0 -0
  59. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/pages/docs/commands.astro +0 -0
  60. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/pages/docs/design.astro +0 -0
  61. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/pages/docs/examples.astro +0 -0
  62. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/pages/docs/index.astro +0 -0
  63. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/pages/docs/install.astro +0 -0
  64. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/pages/docs/remote.astro +0 -0
  65. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/pages/docs/usage.astro +0 -0
  66. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/pages/docs/vfs.astro +0 -0
  67. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/pages/index.astro +0 -0
  68. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/styles/global.css +0 -0
  69. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/tailwind.config.mjs +0 -0
  70. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/tapes/pipeline.tape +0 -0
  71. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/tapes/quickstart.tape +0 -0
  72. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/tests/validate.mjs +0 -0
  73. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/tsconfig.json +0 -0
  74. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/mypy.ini +0 -0
  75. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/2026-03-03-bugfix-p2-batch/proposal.md +0 -0
  76. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/2026-03-03-bugfix-p2-batch/tasks.md +0 -0
  77. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/2026-03-03-bugfix-p2-batch/test-plan.md +0 -0
  78. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/2026-03-04-w6-windows-bugfixes/proposal.md +0 -0
  79. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/2026-03-04-w6-windows-bugfixes/tasks.md +0 -0
  80. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/2026-03-04-w6-windows-bugfixes/test-plan.md +0 -0
  81. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-bootstrap-foundation/proposal.md +0 -0
  82. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-bootstrap-foundation/tasks.md +0 -0
  83. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-bootstrap-foundation/test-plan.md +0 -0
  84. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-ci-hardening/proposal.md +0 -0
  85. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-ci-hardening/specs/ci/spec.md +0 -0
  86. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-ci-hardening/tasks.md +0 -0
  87. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-ci-hardening/test-plan.md +0 -0
  88. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-phase0-core-checks/proposal.md +0 -0
  89. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-phase0-core-checks/specs/foundation/spec.md +0 -0
  90. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-phase0-core-checks/tasks.md +0 -0
  91. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-phase0-core-checks/test-plan.md +0 -0
  92. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-phase0-daemon-protocol/proposal.md +0 -0
  93. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-phase0-daemon-protocol/specs/daemon/spec.md +0 -0
  94. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-phase0-daemon-protocol/tasks.md +0 -0
  95. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-phase0-daemon-protocol/test-plan.md +0 -0
  96. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-phase0-daemon-transport/proposal.md +0 -0
  97. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-phase0-daemon-transport/specs/daemon/spec.md +0 -0
  98. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-phase0-daemon-transport/tasks.md +0 -0
  99. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-phase0-daemon-transport/test-plan.md +0 -0
  100. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-phase0-fixtures-docker/proposal.md +0 -0
  101. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-phase0-fixtures-docker/specs/tooling/spec.md +0 -0
  102. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-phase0-fixtures-docker/tasks.md +0 -0
  103. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-phase0-fixtures-docker/test-plan.md +0 -0
  104. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-phase0-pixi-env/proposal.md +0 -0
  105. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-phase0-pixi-env/specs/tooling/spec.md +0 -0
  106. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-phase0-pixi-env/tasks.md +0 -0
  107. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-phase0-pixi-env/test-plan.md +0 -0
  108. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-phase0-session-skeleton/proposal.md +0 -0
  109. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-phase0-session-skeleton/specs/session/spec.md +0 -0
  110. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-phase0-session-skeleton/tasks.md +0 -0
  111. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-phase0-session-skeleton/test-plan.md +0 -0
  112. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-phase0-structure-refactor/design.md +0 -0
  113. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-phase0-structure-refactor/proposal.md +0 -0
  114. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-phase0-structure-refactor/specs/architecture/spec.md +0 -0
  115. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-phase0-structure-refactor/tasks.md +0 -0
  116. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-phase0-structure-refactor/test-plan.md +0 -0
  117. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1-count-shadermap/proposal.md +0 -0
  118. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1-count-shadermap/specs/daemon/spec.md +0 -0
  119. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1-count-shadermap/tasks.md +0 -0
  120. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1-count-shadermap/test-plan.md +0 -0
  121. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1-daemon-replay/proposal.md +0 -0
  122. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1-daemon-replay/specs/daemon/spec.md +0 -0
  123. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1-daemon-replay/specs/foundation/spec.md +0 -0
  124. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1-daemon-replay/tasks.md +0 -0
  125. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1-daemon-replay/test-plan.md +0 -0
  126. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1-draws-events/proposal.md +0 -0
  127. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1-draws-events/specs/daemon/spec.md +0 -0
  128. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1-draws-events/tasks.md +0 -0
  129. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1-draws-events/test-plan.md +0 -0
  130. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1-log/proposal.md +0 -0
  131. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1-log/tasks.md +0 -0
  132. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1-log/test-plan.md +0 -0
  133. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1-pass-detail/proposal.md +0 -0
  134. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1-pass-detail/tasks.md +0 -0
  135. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1-pass-detail/test-plan.md +0 -0
  136. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1-resources-passes/proposal.md +0 -0
  137. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1-resources-passes/specs/daemon/spec.md +0 -0
  138. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1-resources-passes/tasks.md +0 -0
  139. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1-resources-passes/test-plan.md +0 -0
  140. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1-shader-extended/proposal.md +0 -0
  141. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1-shader-extended/tasks.md +0 -0
  142. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1-shader-extended/test-plan.md +0 -0
  143. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1.5-vfs/proposal.md +0 -0
  144. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1.5-vfs/tasks.md +0 -0
  145. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1.5-vfs/test-plan.md +0 -0
  146. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase2-api-fix/proposal.md +0 -0
  147. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase2-api-fix/tasks.md +0 -0
  148. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase2-api-fix/test-plan.md +0 -0
  149. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase2-buffer-decode/proposal.md +0 -0
  150. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase2-buffer-decode/tasks.md +0 -0
  151. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase2-buffer-decode/test-plan.md +0 -0
  152. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase2-pipeline-state/proposal.md +0 -0
  153. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase2-pipeline-state/tasks.md +0 -0
  154. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase2-pipeline-state/test-plan.md +0 -0
  155. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase2-vfs-binary/proposal.md +0 -0
  156. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase2-vfs-binary/tasks.md +0 -0
  157. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase2-vfs-binary/test-plan.md +0 -0
  158. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2-counters/proposal.md +0 -0
  159. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2-counters/tasks.md +0 -0
  160. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2-counters/test-plan.md +0 -0
  161. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2-descriptors/proposal.md +0 -0
  162. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2-descriptors/tasks.md +0 -0
  163. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2-descriptors/test-plan.md +0 -0
  164. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2-search/proposal.md +0 -0
  165. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2-search/tasks.md +0 -0
  166. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2-search/test-plan.md +0 -0
  167. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2-usage/proposal.md +0 -0
  168. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2-usage/tasks.md +0 -0
  169. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2-usage/test-plan.md +0 -0
  170. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2.5-aur-pkgbuild/proposal.md +0 -0
  171. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2.5-aur-pkgbuild/tasks.md +0 -0
  172. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2.5-aur-pkgbuild/test-plan.md +0 -0
  173. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2.5-cli-enhancements/proposal.md +0 -0
  174. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2.5-cli-enhancements/tasks.md +0 -0
  175. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2.5-cli-enhancements/test-plan.md +0 -0
  176. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2.5-python-compat-ci/proposal.md +0 -0
  177. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2.5-python-compat-ci/tasks.md +0 -0
  178. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2.5-python-compat-ci/test-plan.md +0 -0
  179. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2.5-release-ci/proposal.md +0 -0
  180. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2.5-release-ci/tasks.md +0 -0
  181. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2.5-release-ci/test-plan.md +0 -0
  182. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2.6-daemon-crash/proposal.md +0 -0
  183. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2.6-daemon-crash/tasks.md +0 -0
  184. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2.6-daemon-crash/test-plan.md +0 -0
  185. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2.6-output-quality/proposal.md +0 -0
  186. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2.6-output-quality/tasks.md +0 -0
  187. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2.6-output-quality/test-plan.md +0 -0
  188. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2.6-pipeline-extended/proposal.md +0 -0
  189. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2.6-pipeline-extended/tasks.md +0 -0
  190. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2.6-pipeline-extended/test-plan.md +0 -0
  191. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2.6-shader-api/proposal.md +0 -0
  192. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2.6-shader-api/tasks.md +0 -0
  193. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2.6-shader-api/test-plan.md +0 -0
  194. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-vfs-path-completion/proposal.md +0 -0
  195. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-vfs-path-completion/tasks.md +0 -0
  196. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-vfs-path-completion/test-plan.md +0 -0
  197. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-21-fix-daemon-startup-timeout/proposal.md +0 -0
  198. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-21-fix-daemon-startup-timeout/tasks.md +0 -0
  199. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-21-fix-daemon-startup-timeout/test-plan.md +0 -0
  200. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-21-fix-event-break-and-test-flaky/proposal.md +0 -0
  201. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-21-fix-event-break-and-test-flaky/tasks.md +0 -0
  202. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-21-fix-event-break-and-test-flaky/test-plan.md +0 -0
  203. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-21-fix-pass-detection/proposal.md +0 -0
  204. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-21-fix-pass-detection/tasks.md +0 -0
  205. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-21-fix-pass-detection/test-plan.md +0 -0
  206. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-21-fix-vfs-pass-consistency/proposal.md +0 -0
  207. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-21-fix-vfs-pass-consistency/tasks.md +0 -0
  208. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-21-fix-vfs-pass-consistency/test-plan.md +0 -0
  209. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-21-phase2.7-bug-filters/proposal.md +0 -0
  210. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-21-phase2.7-bug-filters/tasks.md +0 -0
  211. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-21-phase2.7-bug-filters/test-plan.md +0 -0
  212. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-21-phase2.7-refactor-structure/proposal.md +0 -0
  213. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-21-phase2.7-refactor-structure/tasks.md +0 -0
  214. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-21-phase2.7-refactor-structure/test-plan.md +0 -0
  215. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-ai-agent-skill/proposal.md +0 -0
  216. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-ai-agent-skill/tasks.md +0 -0
  217. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-ai-agent-skill/test-plan.md +0 -0
  218. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-blackbox-bug-fixes/proposal.md +0 -0
  219. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-blackbox-bug-fixes/tasks.md +0 -0
  220. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-blackbox-bug-fixes/test-plan.md +0 -0
  221. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-bugfix-remaining-blackbox/proposal.md +0 -0
  222. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-bugfix-remaining-blackbox/tasks.md +0 -0
  223. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-bugfix-remaining-blackbox/test-plan.md +0 -0
  224. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-ci-repo-hardening/proposal.md +0 -0
  225. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-ci-repo-hardening/tasks.md +0 -0
  226. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-ci-repo-hardening/test-plan.md +0 -0
  227. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-code-maintainability/proposal.md +0 -0
  228. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-code-maintainability/tasks.md +0 -0
  229. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-code-maintainability/test-plan.md +0 -0
  230. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-consistent-output-options/proposal.md +0 -0
  231. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-consistent-output-options/tasks.md +0 -0
  232. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-consistent-output-options/test-plan.md +0 -0
  233. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-design-deviation-diff-completeness/proposal.md +0 -0
  234. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-design-deviation-diff-completeness/tasks.md +0 -0
  235. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-design-deviation-diff-completeness/test-plan.md +0 -0
  236. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-design-deviation-shader-api-fix/proposal.md +0 -0
  237. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-design-deviation-shader-api-fix/tasks.md +0 -0
  238. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-design-deviation-shader-api-fix/test-plan.md +0 -0
  239. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-design-deviation-vfs-ls-long/proposal.md +0 -0
  240. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-design-deviation-vfs-ls-long/tasks.md +0 -0
  241. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-design-deviation-vfs-ls-long/test-plan.md +0 -0
  242. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-diff-draws/proposal.md +0 -0
  243. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-diff-draws/tasks.md +0 -0
  244. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-diff-draws/test-plan.md +0 -0
  245. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-diff-framebuffer/proposal.md +0 -0
  246. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-diff-framebuffer/tasks.md +0 -0
  247. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-diff-framebuffer/test-plan.md +0 -0
  248. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-diff-infrastructure/proposal.md +0 -0
  249. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-diff-infrastructure/tasks.md +0 -0
  250. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-diff-infrastructure/test-plan.md +0 -0
  251. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-diff-pipeline/proposal.md +0 -0
  252. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-diff-pipeline/tasks.md +0 -0
  253. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-diff-pipeline/test-plan.md +0 -0
  254. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-diff-resources/proposal.md +0 -0
  255. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-diff-resources/tasks.md +0 -0
  256. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-diff-resources/test-plan.md +0 -0
  257. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-diff-stats/proposal.md +0 -0
  258. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-diff-stats/tasks.md +0 -0
  259. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-diff-stats/test-plan.md +0 -0
  260. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-docs-automation/proposal.md +0 -0
  261. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-docs-automation/tasks.md +0 -0
  262. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-docs-automation/test-plan.md +0 -0
  263. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-fix-json-error-and-search-preload/proposal.md +0 -0
  264. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-fix-json-error-and-search-preload/tasks.md +0 -0
  265. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-fix-json-error-and-search-preload/test-plan.md +0 -0
  266. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-image-compare/proposal.md +0 -0
  267. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-image-compare/tasks.md +0 -0
  268. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-image-compare/test-plan.md +0 -0
  269. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase3a-script/proposal.md +0 -0
  270. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase3a-script/tasks.md +0 -0
  271. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase3a-script/test-plan.md +0 -0
  272. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase3c-ci-assertions/proposal.md +0 -0
  273. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase3c-ci-assertions/tasks.md +0 -0
  274. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase3c-ci-assertions/test-plan.md +0 -0
  275. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase3c-snapshot/proposal.md +0 -0
  276. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase3c-snapshot/tasks.md +0 -0
  277. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase3c-snapshot/test-plan.md +0 -0
  278. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase4a-shader-debug/proposal.md +0 -0
  279. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase4a-shader-debug/tasks.md +0 -0
  280. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase4a-shader-debug/test-plan.md +0 -0
  281. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase4b-shader-edit-replay/proposal.md +0 -0
  282. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase4b-shader-edit-replay/tasks.md +0 -0
  283. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase4b-shader-edit-replay/test-plan.md +0 -0
  284. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase4c-mesh-export/proposal.md +0 -0
  285. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase4c-mesh-export/tasks.md +0 -0
  286. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase4c-mesh-export/test-plan.md +0 -0
  287. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase4c-overlay/proposal.md +0 -0
  288. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase4c-overlay/tasks.md +0 -0
  289. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase4c-overlay/test-plan.md +0 -0
  290. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase5-debug-thread/proposal.md +0 -0
  291. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase5-debug-thread/tasks.md +0 -0
  292. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase5-debug-thread/test-plan.md +0 -0
  293. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase5-pick-pixel/proposal.md +0 -0
  294. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase5-pick-pixel/tasks.md +0 -0
  295. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase5-pick-pixel/test-plan.md +0 -0
  296. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase5-tex-stats/proposal.md +0 -0
  297. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase5-tex-stats/tasks.md +0 -0
  298. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase5-tex-stats/test-plan.md +0 -0
  299. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-renderdoc-build-helper/proposal.md +0 -0
  300. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-renderdoc-build-helper/tasks.md +0 -0
  301. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-renderdoc-build-helper/test-plan.md +0 -0
  302. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-robustness-hardening/proposal.md +0 -0
  303. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-robustness-hardening/tasks.md +0 -0
  304. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-robustness-hardening/test-plan.md +0 -0
  305. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-security-hardening-2/proposal.md +0 -0
  306. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-security-hardening-2/tasks.md +0 -0
  307. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-security-hardening-2/test-plan.md +0 -0
  308. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-skill-auto-install/proposal.md +0 -0
  309. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-skill-auto-install/tasks.md +0 -0
  310. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-skill-auto-install/test-plan.md +0 -0
  311. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-worktree-isolation/proposal.md +0 -0
  312. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-worktree-isolation/tasks.md +0 -0
  313. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-worktree-isolation/test-plan.md +0 -0
  314. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-b17-eid-mutation/proposal.md +0 -0
  315. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-b17-eid-mutation/tasks.md +0 -0
  316. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-b17-eid-mutation/test-plan.md +0 -0
  317. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-b18-b19-b24-cli-ux/proposal.md +0 -0
  318. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-b18-b19-b24-cli-ux/tasks.md +0 -0
  319. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-b18-b19-b24-cli-ux/test-plan.md +0 -0
  320. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-b21-b22-b23-b25-daemon-lifecycle/proposal.md +0 -0
  321. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-b21-b22-b23-b25-daemon-lifecycle/tasks.md +0 -0
  322. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-b21-b22-b23-b25-daemon-lifecycle/test-plan.md +0 -0
  323. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-capture-process-leak-b26-b28/proposal.md +0 -0
  324. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-capture-process-leak-b26-b28/tasks.md +0 -0
  325. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-capture-process-leak-b26-b28/test-plan.md +0 -0
  326. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-docs-polish/proposal.md +0 -0
  327. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-docs-polish/tasks.md +0 -0
  328. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-docs-polish/test-plan.md +0 -0
  329. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-fix-aur-build/proposal.md +0 -0
  330. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-fix-aur-build/tasks.md +0 -0
  331. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-fix-aur-build/test-plan.md +0 -0
  332. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-fix-bugs-b10-b15-b16/proposal.md +0 -0
  333. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-fix-bugs-b10-b15-b16/tasks.md +0 -0
  334. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-fix-bugs-b10-b15-b16/test-plan.md +0 -0
  335. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-phase-w2-build-script/proposal.md +0 -0
  336. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-phase-w2-build-script/tasks.md +0 -0
  337. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-phase-w2-build-script/test-plan.md +0 -0
  338. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-phase5b-capture-unified/proposal.md +0 -0
  339. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-phase5b-capture-unified/tasks.md +0 -0
  340. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-phase5b-capture-unified/test-plan.md +0 -0
  341. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-test-gpu-coverage/proposal.md +0 -0
  342. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-test-gpu-coverage/tasks.md +0 -0
  343. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-test-gpu-coverage/test-plan.md +0 -0
  344. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-test-mock-accuracy/proposal.md +0 -0
  345. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-test-mock-accuracy/tasks.md +0 -0
  346. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-test-mock-accuracy/test-plan.md +0 -0
  347. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-24-b43-b44-remote-split/proposal.md +0 -0
  348. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-24-b43-b44-remote-split/tasks.md +0 -0
  349. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-24-b43-b44-remote-split/test-plan.md +0 -0
  350. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-24-phase-m-macos-support/proposal.md +0 -0
  351. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-24-phase-m-macos-support/tasks.md +0 -0
  352. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-24-phase-m-macos-support/test-plan.md +0 -0
  353. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-24-phase-r1-quick-wins/proposal.md +0 -0
  354. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-24-phase-r1-quick-wins/tasks.md +0 -0
  355. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-24-phase-r1-quick-wins/test-plan.md +0 -0
  356. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-24-phase-r2-test-infrastructure/proposal.md +0 -0
  357. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-24-phase-r2-test-infrastructure/tasks.md +0 -0
  358. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-24-phase-r2-test-infrastructure/test-plan.md +0 -0
  359. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-26-phase-r3-usability-fixes/proposal.md +0 -0
  360. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-26-phase-r3-usability-fixes/tasks.md +0 -0
  361. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-26-phase-r3-usability-fixes/test-plan.md +0 -0
  362. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-28-design-deviation-fixes/proposal.md +0 -0
  363. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-28-design-deviation-fixes/tasks.md +0 -0
  364. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-28-design-deviation-fixes/test-plan.md +0 -0
  365. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-28-dev-install-enhancement/proposal.md +0 -0
  366. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-28-dev-install-enhancement/tasks.md +0 -0
  367. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-28-dev-install-enhancement/test-plan.md +0 -0
  368. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/specs/architecture/spec.md +0 -0
  369. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/specs/ci/spec.md +0 -0
  370. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/specs/daemon/spec.md +0 -0
  371. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/specs/foundation/spec.md +0 -0
  372. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/specs/packaging/spec.md +0 -0
  373. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/specs/session/spec.md +0 -0
  374. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/specs/tooling/spec.md +0 -0
  375. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/pixi.lock +0 -0
  376. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/pyproject.toml +0 -0
  377. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/release-please-config.json +0 -0
  378. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/ruff.toml +0 -0
  379. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/scripts/build-renderdoc.sh +0 -0
  380. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/scripts/build_renderdoc.py +0 -0
  381. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/scripts/capture_fixture.sh +0 -0
  382. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/scripts/dev_install.py +0 -0
  383. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/scripts/e2e_test.py +0 -0
  384. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/scripts/ensure-renderdoc.py +0 -0
  385. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/scripts/ensure-renderdoc.sh +0 -0
  386. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/scripts/ensure-skill-link.py +0 -0
  387. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/scripts/gen-commands.py +0 -0
  388. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/scripts/gen-replay.py +0 -0
  389. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/scripts/gen-skill-ref.py +0 -0
  390. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/scripts/gen-stats.py +0 -0
  391. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/scripts/gen_and_check.py +0 -0
  392. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/scripts/setup-renderdoc.sh +0 -0
  393. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/scripts/setup-vulkan-samples.sh +0 -0
  394. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/scripts/setup_android_tools.py +0 -0
  395. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/scripts/setup_vulkan_samples.py +0 -0
  396. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/scripts/verify-package.sh +0 -0
  397. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/scripts/verify_package.py +0 -0
  398. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/setup.cfg +0 -0
  399. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/__init__.py +0 -0
  400. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/_build_renderdoc.py +0 -0
  401. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/_platform.py +0 -0
  402. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/_skills/__init__.py +0 -0
  403. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/_transport.py +0 -0
  404. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/adapter.py +0 -0
  405. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/capture_core.py +0 -0
  406. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/cli.py +0 -0
  407. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/_helpers.py +0 -0
  408. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/android.py +0 -0
  409. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/assert_ci.py +0 -0
  410. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/assert_image.py +0 -0
  411. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/capture.py +0 -0
  412. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/capture_control.py +0 -0
  413. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/capturefile.py +0 -0
  414. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/completion.py +0 -0
  415. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/counters.py +0 -0
  416. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/debug.py +0 -0
  417. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/diff.py +0 -0
  418. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/doctor.py +0 -0
  419. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/events.py +0 -0
  420. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/export.py +0 -0
  421. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/info.py +0 -0
  422. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/install_skill.py +0 -0
  423. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/mesh.py +0 -0
  424. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/pick_pixel.py +0 -0
  425. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/pipeline.py +0 -0
  426. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/pixel.py +0 -0
  427. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/remote.py +0 -0
  428. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/script.py +0 -0
  429. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/search.py +0 -0
  430. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/serve.py +0 -0
  431. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/session.py +0 -0
  432. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/setup_renderdoc.py +0 -0
  433. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/shader_edit.py +0 -0
  434. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/snapshot.py +0 -0
  435. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/tex_stats.py +0 -0
  436. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/unix_helpers.py +0 -0
  437. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/unused_targets.py +0 -0
  438. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/usage.py +0 -0
  439. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/vfs.py +0 -0
  440. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/daemon_client.py +0 -0
  441. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/diff/__init__.py +0 -0
  442. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/diff/alignment.py +0 -0
  443. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/diff/draws.py +0 -0
  444. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/diff/framebuffer.py +0 -0
  445. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/diff/pipeline.py +0 -0
  446. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/diff/resources.py +0 -0
  447. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/diff/stats.py +0 -0
  448. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/diff/summary.py +0 -0
  449. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/discover.py +0 -0
  450. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/formatters/json_fmt.py +0 -0
  451. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/formatters/kv.py +0 -0
  452. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/formatters/options.py +0 -0
  453. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/formatters/tsv.py +0 -0
  454. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/handlers/__init__.py +0 -0
  455. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/handlers/_helpers.py +0 -0
  456. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/handlers/_types.py +0 -0
  457. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/handlers/buffer.py +0 -0
  458. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/handlers/capture.py +0 -0
  459. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/handlers/capturefile.py +0 -0
  460. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/handlers/core.py +0 -0
  461. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/handlers/debug.py +0 -0
  462. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/handlers/descriptor.py +0 -0
  463. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/handlers/pipe_state.py +0 -0
  464. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/handlers/pixel.py +0 -0
  465. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/handlers/script.py +0 -0
  466. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/handlers/shader.py +0 -0
  467. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/handlers/shader_edit.py +0 -0
  468. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/handlers/unused.py +0 -0
  469. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/handlers/vfs.py +0 -0
  470. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/image_compare.py +0 -0
  471. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/protocol.py +0 -0
  472. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/remote_core.py +0 -0
  473. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/remote_state.py +0 -0
  474. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/services/__init__.py +0 -0
  475. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/services/diff_service.py +0 -0
  476. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/services/session_service.py +0 -0
  477. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/session_state.py +0 -0
  478. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/target_state.py +0 -0
  479. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/vfs/__init__.py +0 -0
  480. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/vfs/formatter.py +0 -0
  481. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/vfs/router.py +0 -0
  482. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/vfs/tree_cache.py +0 -0
  483. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc_cli.egg-info/dependency_links.txt +0 -0
  484. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc_cli.egg-info/entry_points.txt +0 -0
  485. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc_cli.egg-info/requires.txt +0 -0
  486. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc_cli.egg-info/top_level.txt +0 -0
  487. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/conftest.py +0 -0
  488. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/e2e/__init__.py +0 -0
  489. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/e2e/blackbox_test_catalog.md +0 -0
  490. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/e2e/conftest.py +0 -0
  491. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/e2e/e2e_helpers.py +0 -0
  492. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/e2e/test_advanced.py +0 -0
  493. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/e2e/test_assert.py +0 -0
  494. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/e2e/test_capture.py +0 -0
  495. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/e2e/test_capturefile.py +0 -0
  496. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/e2e/test_debug.py +0 -0
  497. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/e2e/test_diff.py +0 -0
  498. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/e2e/test_export.py +0 -0
  499. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/e2e/test_formats.py +0 -0
  500. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/e2e/test_presession.py +0 -0
  501. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/e2e/test_query.py +0 -0
  502. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/e2e/test_session.py +0 -0
  503. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/e2e/test_shader_edit.py +0 -0
  504. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/e2e/test_vfs.py +0 -0
  505. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/fixtures/gles-multipass-debug.apk +0 -0
  506. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/fixtures/gles-triangle-debug.apk +0 -0
  507. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/fixtures/gles_android_mali.rdc +0 -0
  508. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/fixtures/gles_multipass_mali.rdc +0 -0
  509. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/fixtures/hello_triangle.rdc +0 -0
  510. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/fixtures/vkcube.rdc +0 -0
  511. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/fixtures/vkcube_validation.rdc +0 -0
  512. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/integration/test_build_renderdoc_integration.py +0 -0
  513. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/integration/test_daemon_handlers_real.py +0 -0
  514. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/integration/test_mock_api_sync.py +0 -0
  515. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/integration/test_real_replay.py +0 -0
  516. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/integration/test_vulkan_samples.py +0 -0
  517. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/mocks/mock_renderdoc.py +0 -0
  518. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/conftest.py +0 -0
  519. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_adapter.py +0 -0
  520. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_android_commands.py +0 -0
  521. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_assert_ci_commands.py +0 -0
  522. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_assert_image_command.py +0 -0
  523. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_buffer_decode.py +0 -0
  524. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_build_renderdoc.py +0 -0
  525. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_capture.py +0 -0
  526. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_capture_control.py +0 -0
  527. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_capture_core.py +0 -0
  528. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_capture_handlers.py +0 -0
  529. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_capturefile_commands.py +0 -0
  530. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_capturefile_handlers.py +0 -0
  531. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_ci_files.py +0 -0
  532. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_cli.py +0 -0
  533. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_cli_session_flag.py +0 -0
  534. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_completion.py +0 -0
  535. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_count_shadermap.py +0 -0
  536. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_counters_commands.py +0 -0
  537. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_counters_daemon.py +0 -0
  538. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_daemon_crash_regression.py +0 -0
  539. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_daemon_output_quality.py +0 -0
  540. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_daemon_pipeline_extended.py +0 -0
  541. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_daemon_server_unit.py +0 -0
  542. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_daemon_shader_api_fix.py +0 -0
  543. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_daemon_shader_extended.py +0 -0
  544. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_daemon_transport.py +0 -0
  545. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_debug_commands.py +0 -0
  546. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_debug_handlers.py +0 -0
  547. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_descriptors_daemon.py +0 -0
  548. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_dev_install.py +0 -0
  549. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_diff_alignment.py +0 -0
  550. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_diff_command.py +0 -0
  551. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_diff_draws.py +0 -0
  552. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_diff_framebuffer.py +0 -0
  553. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_diff_pipeline.py +0 -0
  554. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_diff_resources.py +0 -0
  555. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_diff_service.py +0 -0
  556. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_diff_stats.py +0 -0
  557. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_diff_summary.py +0 -0
  558. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_discover.py +0 -0
  559. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_doctor.py +0 -0
  560. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_draws_daemon.py +0 -0
  561. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_draws_events_cli.py +0 -0
  562. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_draws_events_daemon.py +0 -0
  563. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_eid_completion.py +0 -0
  564. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_events_commands.py +0 -0
  565. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_export_commands.py +0 -0
  566. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_export_overlay.py +0 -0
  567. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_fix1_draws_pass_name.py +0 -0
  568. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_fix2_vfs_intermediate_dirs.py +0 -0
  569. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_fix3_friendly_pass_name.py +0 -0
  570. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_formatters.py +0 -0
  571. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_formatters_kv.py +0 -0
  572. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_gen_skill_ref.py +0 -0
  573. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_handlers_remote.py +0 -0
  574. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_image_compare.py +0 -0
  575. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_info_commands.py +0 -0
  576. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_install_skill.py +0 -0
  577. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_json_errors.py +0 -0
  578. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_keep_remote.py +0 -0
  579. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_mesh_commands.py +0 -0
  580. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_mesh_handler.py +0 -0
  581. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_mock_capture_types.py +0 -0
  582. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_mock_renderdoc.py +0 -0
  583. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_open_remote.py +0 -0
  584. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_output_options.py +0 -0
  585. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_overlay_handler.py +0 -0
  586. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_pass_deps.py +0 -0
  587. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_pick_pixel_commands.py +0 -0
  588. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_pick_pixel_daemon.py +0 -0
  589. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_pipeline_cli_phase27.py +0 -0
  590. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_pipeline_commands.py +0 -0
  591. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_pipeline_daemon.py +0 -0
  592. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_pipeline_section_routing.py +0 -0
  593. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_pipeline_shader.py +0 -0
  594. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_pipeline_state.py +0 -0
  595. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_pixel_history_commands.py +0 -0
  596. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_pixel_history_daemon.py +0 -0
  597. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_pixi_files.py +0 -0
  598. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_platform.py +0 -0
  599. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_protocol.py +0 -0
  600. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_quickfix_batch.py +0 -0
  601. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_remote_commands.py +0 -0
  602. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_remote_core.py +0 -0
  603. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_remote_replay.py +0 -0
  604. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_remote_state.py +0 -0
  605. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_require_pipe.py +0 -0
  606. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_resource_semantic_completion.py +0 -0
  607. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_resources_commands.py +0 -0
  608. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_resources_filter.py +0 -0
  609. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_script_command.py +0 -0
  610. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_script_handler.py +0 -0
  611. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_search.py +0 -0
  612. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_semantic_completion.py +0 -0
  613. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_serve.py +0 -0
  614. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_session_commands.py +0 -0
  615. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_session_completion.py +0 -0
  616. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_session_service.py +0 -0
  617. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_session_state.py +0 -0
  618. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_setup_renderdoc.py +0 -0
  619. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_setup_vulkan_samples.py +0 -0
  620. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_shader_edit_commands.py +0 -0
  621. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_shader_edit_handlers.py +0 -0
  622. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_shader_preload.py +0 -0
  623. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_skill_structure.py +0 -0
  624. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_snapshot_command.py +0 -0
  625. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_split_binary.py +0 -0
  626. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_split_core.py +0 -0
  627. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_target_state.py +0 -0
  628. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_tex_stats_commands.py +0 -0
  629. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_tex_stats_handler.py +0 -0
  630. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_tooling_files.py +0 -0
  631. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_unix_helpers_commands.py +0 -0
  632. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_unused_targets.py +0 -0
  633. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_usage_commands.py +0 -0
  634. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_usage_daemon.py +0 -0
  635. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_vfs_binary.py +0 -0
  636. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_vfs_commands.py +0 -0
  637. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_vfs_completion.py +0 -0
  638. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_vfs_daemon.py +0 -0
  639. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_vfs_formatter.py +0 -0
  640. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_vfs_router.py +0 -0
  641. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_vfs_tree_cache.py +0 -0
  642. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_windows_compat.py +0 -0
  643. {rdc_cli-0.5.1 → rdc_cli-0.5.2}/uv.lock +0 -0
@@ -56,7 +56,8 @@ jobs:
56
56
  enable-cache: true
57
57
  - run: uv python install 3.12
58
58
  - run: uv sync --extra dev
59
- - run: uv run --with pip-audit pip-audit
59
+ # CVE-2026-4539: no fixed pygments release yet (last_affected=2.19.2); ignore until upstream ships a patch
60
+ - run: uv run --with pip-audit pip-audit --ignore-vuln CVE-2026-4539
60
61
 
61
62
  validate-aur:
62
63
  name: Validate AUR PKGBUILD
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rdc-cli
3
- Version: 0.5.1
3
+ Version: 0.5.2
4
4
  Summary: CLI for RenderDoc .rdc captures
5
5
  Author: Jim
6
6
  License-Expression: MIT
@@ -168,7 +168,7 @@
168
168
  "name": "passes",
169
169
  "id": "passes",
170
170
  "help": "List render passes.",
171
- "usage": "rdc passes [--json] [--deps] [--dot] [--graph] [--table] [--switches] [--no-header] [--jsonl] [-q]"
171
+ "usage": "rdc passes [--json] [--deps] [--dot] [--graph] [--table] [--no-header] [--jsonl] [-q]"
172
172
  },
173
173
  {
174
174
  "name": "pass",
@@ -60,6 +60,7 @@ RENDERDOC_PYTHON_PATH = ".local/renderdoc"
60
60
  PYTHONPATH = "src"
61
61
 
62
62
  [tasks]
63
+ rdc = "uv run rdc"
63
64
  sync = "uv sync --extra dev && git config core.hooksPath .githooks && python scripts/ensure-renderdoc.py && python scripts/ensure-skill-link.py"
64
65
  install = "uv run python scripts/dev_install.py"
65
66
  setup-renderdoc = "python scripts/build_renderdoc.py .local/renderdoc --build-dir .local/renderdoc-build"
@@ -68,7 +68,6 @@ rdc events --json | jq '.[] | select(.type == "DrawIndexed")'
68
68
  ```bash
69
69
  rdc passes # TSV table
70
70
  rdc passes --json # includes load_ops/store_ops per pass
71
- rdc passes --switches # adds RT_SWITCHES column (TBR optimization)
72
71
  rdc passes --deps --table # per-pass READS/WRITES/LOAD/STORE
73
72
  ```
74
73
 
@@ -652,7 +652,6 @@ List render passes.
652
652
  | `--dot` | Graphviz DOT output (requires --deps). | flag | |
653
653
  | `--graph` | Human-readable graph (requires --deps). | flag | |
654
654
  | `--table` | Per-pass I/O table (requires --deps). | flag | |
655
- | `--switches` | Show RT switch count per pass (TBR flush risk). | flag | |
656
655
  | `--no-header` | Omit TSV header | flag | |
657
656
  | `--jsonl` | JSONL output | flag | |
658
657
  | `-q, --quiet` | Print primary key column only | flag | |
@@ -173,12 +173,6 @@ def resource_cmd(resid: int, use_json: bool) -> None:
173
173
  default=False,
174
174
  help="Per-pass I/O table (requires --deps).",
175
175
  )
176
- @click.option(
177
- "--switches",
178
- is_flag=True,
179
- default=False,
180
- help="Show RT switch count per pass (TBR flush risk).",
181
- )
182
176
  @list_output_options
183
177
  def passes_cmd( # noqa: PLR0913
184
178
  use_json: bool,
@@ -186,7 +180,6 @@ def passes_cmd( # noqa: PLR0913
186
180
  dot: bool,
187
181
  graph: bool,
188
182
  table: bool,
189
- switches: bool,
190
183
  no_header: bool,
191
184
  use_jsonl: bool,
192
185
  quiet: bool,
@@ -204,10 +197,7 @@ def passes_cmd( # noqa: PLR0913
204
197
  _passes_deps(use_json, dot, graph, table)
205
198
  return
206
199
 
207
- params: dict[str, Any] = {}
208
- if switches:
209
- params["switches"] = True
210
- result = call("passes", params)
200
+ result = call("passes", {})
211
201
  tree: dict[str, Any] = result.get("tree", {})
212
202
  if use_json:
213
203
  write_json(tree)
@@ -221,8 +211,6 @@ def passes_cmd( # noqa: PLR0913
221
211
  sys.stdout.write(str(p.get("name", "")) + "\n")
222
212
  else:
223
213
  header = ["NAME", "DRAWS", "DISPATCHES", "TRIANGLES", "BEGIN_EID", "END_EID"]
224
- if switches:
225
- header.append("RT_SWITCHES")
226
214
  tsv_rows = [
227
215
  [
228
216
  p.get("name", "-"),
@@ -232,7 +220,6 @@ def passes_cmd( # noqa: PLR0913
232
220
  p.get("begin_eid", "-"),
233
221
  p.get("end_eid", "-"),
234
222
  ]
235
- + ([p.get("rt_switches", {}).get("count", 0)] if switches else [])
236
223
  for p in passes
237
224
  ]
238
225
  write_tsv(tsv_rows, header=header, no_header=no_header)
@@ -198,7 +198,7 @@ def _load_replay(state: DaemonState) -> str | None:
198
198
  state.rd = rd
199
199
  version = _detect_version(rd)
200
200
  state.adapter = RenderDocAdapter(controller=controller, version=version)
201
- state.structured_file = cap.GetStructuredData()
201
+ state.structured_file = state.adapter.get_structured_file()
202
202
 
203
203
  _init_adapter_state(state)
204
204
  return None
@@ -339,9 +339,9 @@ def _load_remote_replay(state: DaemonState, remote_url: str) -> str | None:
339
339
 
340
340
  state.cap = cap
341
341
  state.rd = rd
342
- state.structured_file = cap.GetStructuredData()
343
342
  version = _detect_version(rd)
344
343
  state.adapter = RenderDocAdapter(controller=controller, version=version)
344
+ state.structured_file = state.adapter.get_structured_file()
345
345
 
346
346
  _init_adapter_state(state)
347
347
  _start_ping_thread(state)
@@ -200,12 +200,6 @@ def _handle_passes(
200
200
  actions = state.adapter.get_root_actions()
201
201
  tree = get_pass_hierarchy(actions, state.structured_file)
202
202
 
203
- if params.get("switches"):
204
- from rdc.services.query_service import _count_rt_switches
205
-
206
- for p in tree.get("passes", []):
207
- p["rt_switches"] = _count_rt_switches(actions, p["begin_eid"], p["end_eid"])
208
-
209
203
  return _result_response(request_id, {"tree": tree}), True
210
204
 
211
205
 
@@ -82,6 +82,10 @@ def _handle_tex_export(
82
82
  return _error_response(
83
83
  request_id, -32001, f"mip {mip} out of range (max: {tex.mips - 1})"
84
84
  ), True
85
+ eid = int(params.get("eid", state.current_eid))
86
+ err = _set_frame_event(state, eid)
87
+ if err:
88
+ return _error_response(request_id, -32002, err), True
85
89
  temp_path = state.temp_dir / f"tex_{res_id}_mip{mip}.png"
86
90
  controller = state.adapter.controller
87
91
  texsave = _make_texsave(state.rd, tex.resourceId, mip)
@@ -107,6 +111,10 @@ def _handle_tex_raw(
107
111
  tex = state.tex_map.get(res_id)
108
112
  if tex is None:
109
113
  return _error_response(request_id, -32001, f"texture {res_id} not found"), True
114
+ eid = int(params.get("eid", state.current_eid))
115
+ err = _set_frame_event(state, eid)
116
+ if err:
117
+ return _error_response(request_id, -32002, err), True
110
118
  controller = state.adapter.controller
111
119
  sub = _make_subresource(state.rd)
112
120
  raw_data = controller.GetTextureData(tex.resourceId, sub)
@@ -774,59 +774,27 @@ def _build_synthetic_pass_list(actions: list[Any], sf: Any = None) -> list[dict[
774
774
  return passes
775
775
 
776
776
 
777
- def _count_rt_switches(
778
- actions: list[Any],
779
- begin_eid: int,
780
- end_eid: int,
781
- ) -> dict[str, Any]:
782
- """Count render-target switches within a pass EID range.
783
-
784
- Args:
785
- actions: Root action list from ReplayController.
786
- begin_eid: First EID of the pass (inclusive).
787
- end_eid: Last EID of the pass (inclusive).
788
-
789
- Returns:
790
- Dict with ``count`` (int) and ``switches`` list of dicts
791
- containing ``eid``, ``from_targets``, and ``to_targets``.
792
- """
793
- leaf_actions: list[Any] = []
794
-
795
- def _collect(nodes: list[Any]) -> None:
796
- for a in nodes:
797
- flags = int(a.flags)
798
- if flags & _DRAW_OR_DISPATCH_OR_CLEAR:
799
- if begin_eid <= a.eventId <= end_eid:
800
- leaf_actions.append(a)
801
- if a.children:
802
- _collect(a.children)
803
-
804
- _collect(actions)
805
- leaf_actions.sort(key=lambda a: a.eventId)
806
-
807
- switches: list[dict[str, Any]] = []
808
- prev_key: tuple[int, ...] | None = None
809
- for a in leaf_actions:
810
- key = _rt_key(a)
811
- if prev_key is not None and key != prev_key:
812
- switches.append(
813
- {
814
- "eid": a.eventId,
815
- "from_targets": prev_key,
816
- "to_targets": key,
817
- }
818
- )
819
- prev_key = key
820
-
821
- return {"count": len(switches), "switches": switches}
822
-
823
-
824
777
  def _pass_list_with_fallback(actions: list[Any], sf: Any = None) -> list[dict[str, Any]]:
825
- """Build pass list, falling back to synthetic RT inference if no API passes found."""
826
- passes = _build_pass_list(actions, sf)
827
- if not passes:
828
- passes = _build_synthetic_pass_list(actions, sf)
829
- return passes
778
+ """Build pass list, merging explicit passes with gap-filling synthetic passes."""
779
+ explicit = _build_pass_list(actions, sf)
780
+ if not explicit:
781
+ return _build_synthetic_pass_list(actions, sf)
782
+ synthetic = _build_synthetic_pass_list(actions, sf)
783
+ if not synthetic:
784
+ return explicit
785
+ # Keep synthetic passes whose EID range doesn't overlap any explicit pass
786
+ gap_fills = [
787
+ s
788
+ for s in synthetic
789
+ if not any(
790
+ s["begin_eid"] <= e["end_eid"] and s["end_eid"] >= e["begin_eid"] for e in explicit
791
+ )
792
+ ]
793
+ if not gap_fills:
794
+ return explicit
795
+ merged = explicit + gap_fills
796
+ merged.sort(key=lambda p: p["begin_eid"])
797
+ return merged
830
798
 
831
799
 
832
800
  def get_pass_detail(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rdc-cli
3
- Version: 0.5.1
3
+ Version: 0.5.2
4
4
  Summary: CLI for RenderDoc .rdc captures
5
5
  Author: Jim
6
6
  License-Expression: MIT
@@ -605,7 +605,6 @@ tests/unit/test_require_pipe.py
605
605
  tests/unit/test_resource_semantic_completion.py
606
606
  tests/unit/test_resources_commands.py
607
607
  tests/unit/test_resources_filter.py
608
- tests/unit/test_rt_switches.py
609
608
  tests/unit/test_script_command.py
610
609
  tests/unit/test_script_handler.py
611
610
  tests/unit/test_search.py
@@ -244,6 +244,13 @@ class TestTexExport:
244
244
  assert resp["error"]["code"] == -32001
245
245
  assert "mip" in resp["error"]["message"]
246
246
 
247
+ def test_eid_out_of_range(self, tmp_path):
248
+ state = _make_handler_state(tmp_path)
249
+ resp, _ = _handle_request(
250
+ rpc_request("tex_export", {"id": 42, "eid": 99999}, token="abcdef1234567890"), state
251
+ )
252
+ assert resp["error"]["code"] == -32002
253
+
247
254
  def test_no_temp_dir(self):
248
255
  state = DaemonState(capture="test.rdc", current_eid=0, token="abcdef1234567890")
249
256
  state.adapter = RenderDocAdapter(
@@ -275,6 +282,13 @@ class TestTexRaw:
275
282
  )
276
283
  assert resp["error"]["code"] == -32001
277
284
 
285
+ def test_eid_out_of_range(self, tmp_path):
286
+ state = _make_handler_state(tmp_path)
287
+ resp, _ = _handle_request(
288
+ rpc_request("tex_raw", {"id": 42, "eid": 99999}, token="abcdef1234567890"), state
289
+ )
290
+ assert resp["error"]["code"] == -32002
291
+
278
292
  def test_no_temp_dir(self):
279
293
  state = DaemonState(capture="test.rdc", current_eid=0, token="abcdef1234567890")
280
294
  state.adapter = RenderDocAdapter(
@@ -14,6 +14,7 @@ from rdc.services.query_service import (
14
14
  _build_synthetic_pass_list,
15
15
  _friendly_pass_name,
16
16
  _parse_load_store_ops,
17
+ _pass_list_with_fallback,
17
18
  aggregate_stats,
18
19
  filter_by_pass,
19
20
  filter_by_pattern,
@@ -1048,3 +1049,128 @@ class TestSyntheticPassIntegrationGL:
1048
1049
  detail = get_pass_detail(actions, None, 0)
1049
1050
  assert detail is not None
1050
1051
  assert detail["draws"] == 1
1052
+
1053
+
1054
+ class TestPassListHybridFallback:
1055
+ """_pass_list_with_fallback merges explicit + gap-filling synthetic passes."""
1056
+
1057
+ def test_mixed_explicit_and_synthetic(self) -> None:
1058
+ """Explicit passes cover EID 10-12, synthetic fills gap at EID 60-61."""
1059
+ begin = ActionDescription(
1060
+ eventId=10,
1061
+ flags=ActionFlags.BeginPass | ActionFlags.PassBoundary,
1062
+ _name="vkCmdBeginRenderPass(C=Clear)",
1063
+ )
1064
+ draw1 = ActionDescription(
1065
+ eventId=11,
1066
+ flags=ActionFlags.Drawcall,
1067
+ numIndices=6,
1068
+ outputs=_make_outputs(100),
1069
+ depthOut=ResourceId(50),
1070
+ _name="d1",
1071
+ )
1072
+ end = ActionDescription(
1073
+ eventId=12,
1074
+ flags=ActionFlags.EndPass | ActionFlags.PassBoundary,
1075
+ _name="vkCmdEndRenderPass(C=Store)",
1076
+ )
1077
+ # Gap actions: different RT, no BeginPass
1078
+ rt2 = _make_outputs(200)
1079
+ gap_draw1 = ActionDescription(
1080
+ eventId=60,
1081
+ flags=ActionFlags.Drawcall,
1082
+ numIndices=9,
1083
+ outputs=rt2,
1084
+ depthOut=ResourceId(0),
1085
+ _name="ssao",
1086
+ )
1087
+ gap_draw2 = ActionDescription(
1088
+ eventId=61,
1089
+ flags=ActionFlags.Drawcall,
1090
+ numIndices=12,
1091
+ outputs=rt2,
1092
+ depthOut=ResourceId(0),
1093
+ _name="bloom",
1094
+ )
1095
+ actions = [begin, draw1, end, gap_draw1, gap_draw2]
1096
+ passes = _pass_list_with_fallback(actions)
1097
+ assert len(passes) == 2
1098
+ assert passes[0]["begin_eid"] <= 12
1099
+ assert passes[1]["begin_eid"] == 60
1100
+ assert passes[1]["draws"] == 2
1101
+
1102
+ def test_pure_explicit_no_gaps(self) -> None:
1103
+ """All actions inside BeginPass -> only explicit passes returned."""
1104
+ begin = ActionDescription(
1105
+ eventId=10,
1106
+ flags=ActionFlags.BeginPass | ActionFlags.PassBoundary,
1107
+ _name="vkCmdBeginRenderPass(C=Clear)",
1108
+ )
1109
+ draw = ActionDescription(
1110
+ eventId=11,
1111
+ flags=ActionFlags.Drawcall,
1112
+ numIndices=6,
1113
+ outputs=_make_outputs(100),
1114
+ depthOut=ResourceId(50),
1115
+ _name="d",
1116
+ )
1117
+ end = ActionDescription(
1118
+ eventId=12,
1119
+ flags=ActionFlags.EndPass | ActionFlags.PassBoundary,
1120
+ _name="vkCmdEndRenderPass(C=Store)",
1121
+ )
1122
+ passes = _pass_list_with_fallback([begin, draw, end])
1123
+ assert len(passes) == 1
1124
+ assert passes[0]["draws"] == 1
1125
+
1126
+ def test_pure_synthetic_fallback(self) -> None:
1127
+ """No BeginPass at all -> full synthetic fallback."""
1128
+ rt = _make_outputs(100)
1129
+ actions = [
1130
+ ActionDescription(
1131
+ eventId=1,
1132
+ flags=ActionFlags.Drawcall,
1133
+ numIndices=6,
1134
+ outputs=rt,
1135
+ depthOut=ResourceId(50),
1136
+ _name="glDrawArrays",
1137
+ ),
1138
+ ]
1139
+ passes = _pass_list_with_fallback(actions)
1140
+ assert len(passes) == 1
1141
+ assert passes[0]["draws"] == 1
1142
+
1143
+ def test_overlapping_synthetic_discarded(self) -> None:
1144
+ """Synthetic pass overlapping explicit pass EID range is discarded."""
1145
+ begin = ActionDescription(
1146
+ eventId=10,
1147
+ flags=ActionFlags.BeginPass | ActionFlags.PassBoundary,
1148
+ _name="vkCmdBeginRenderPass(C=Clear)",
1149
+ )
1150
+ draw1 = ActionDescription(
1151
+ eventId=15,
1152
+ flags=ActionFlags.Drawcall,
1153
+ numIndices=6,
1154
+ outputs=_make_outputs(100),
1155
+ depthOut=ResourceId(50),
1156
+ _name="d1",
1157
+ )
1158
+ # Overlapping draw inside BeginPass EID range but different RT
1159
+ draw_overlap = ActionDescription(
1160
+ eventId=18,
1161
+ flags=ActionFlags.Drawcall,
1162
+ numIndices=3,
1163
+ outputs=_make_outputs(200),
1164
+ depthOut=ResourceId(0),
1165
+ _name="overlap",
1166
+ )
1167
+ end = ActionDescription(
1168
+ eventId=20,
1169
+ flags=ActionFlags.EndPass | ActionFlags.PassBoundary,
1170
+ _name="vkCmdEndRenderPass(C=Store)",
1171
+ )
1172
+ actions = [begin, draw1, draw_overlap, end]
1173
+ passes = _pass_list_with_fallback(actions)
1174
+ # Synthetic pass for draw_overlap (EID 18) overlaps explicit (10-20) -> discarded
1175
+ assert len(passes) == 1
1176
+ assert passes[0]["begin_eid"] <= 15
@@ -1,243 +0,0 @@
1
- """Tests for RT switch detection (T8: rdc passes --switches)."""
2
-
3
- from __future__ import annotations
4
-
5
- import json
6
-
7
- from click.testing import CliRunner
8
- from conftest import patch_cli_session
9
- from mock_renderdoc import ActionDescription, ActionFlags, ResourceId
10
-
11
- from rdc.commands.resources import passes_cmd
12
- from rdc.services.query_service import _count_rt_switches
13
-
14
-
15
- def _action(
16
- eid: int,
17
- flags: int = ActionFlags.Drawcall,
18
- outputs: list[int] | None = None,
19
- depth: int = 0,
20
- ) -> ActionDescription:
21
- out = [ResourceId(v) for v in (outputs or [0] * 8)]
22
- while len(out) < 8:
23
- out.append(ResourceId(0))
24
- return ActionDescription(
25
- eventId=eid,
26
- flags=flags,
27
- _name=f"draw@{eid}",
28
- outputs=out,
29
- depthOut=ResourceId(depth),
30
- numIndices=3,
31
- numInstances=1,
32
- )
33
-
34
-
35
- # ── Service tests ──────────────────────────────────────────────────
36
-
37
-
38
- def test_no_rt_switches() -> None:
39
- """All actions share same RT -> 0 switches."""
40
- actions = [
41
- _action(10, outputs=[100]),
42
- _action(20, outputs=[100]),
43
- _action(30, outputs=[100]),
44
- ]
45
- result = _count_rt_switches(actions, 10, 30)
46
- assert result["count"] == 0
47
- assert result["switches"] == []
48
-
49
-
50
- def test_two_rt_switches() -> None:
51
- """RT changes twice within the pass EID range."""
52
- actions = [
53
- _action(10, outputs=[100], depth=50),
54
- _action(20, outputs=[200], depth=50), # switch 1
55
- _action(30, outputs=[200], depth=50),
56
- _action(40, outputs=[300], depth=60), # switch 2
57
- ]
58
- result = _count_rt_switches(actions, 10, 40)
59
- assert result["count"] == 2
60
- assert len(result["switches"]) == 2
61
-
62
- sw0 = result["switches"][0]
63
- assert sw0["eid"] == 20
64
- assert 100 in sw0["from_targets"]
65
- assert 200 in sw0["to_targets"]
66
-
67
- sw1 = result["switches"][1]
68
- assert sw1["eid"] == 40
69
-
70
-
71
- def test_actions_outside_eid_range_ignored() -> None:
72
- """Actions outside the specified EID range are not counted."""
73
- actions = [
74
- _action(5, outputs=[100]), # before range
75
- _action(10, outputs=[100]),
76
- _action(20, outputs=[200]), # switch within range
77
- _action(50, outputs=[300]), # after range
78
- ]
79
- result = _count_rt_switches(actions, 10, 20)
80
- assert result["count"] == 1
81
- assert result["switches"][0]["eid"] == 20
82
-
83
-
84
- def test_nested_actions() -> None:
85
- """Actions nested in children are found."""
86
- child1 = _action(10, outputs=[100])
87
- child2 = _action(20, outputs=[200])
88
- parent = ActionDescription(
89
- eventId=5,
90
- flags=ActionFlags.PushMarker,
91
- _name="Marker",
92
- children=[child1, child2],
93
- )
94
- result = _count_rt_switches([parent], 5, 25)
95
- assert result["count"] == 1
96
-
97
-
98
- def test_dispatch_and_clear_counted() -> None:
99
- """Dispatch and clear actions participate in RT switch detection."""
100
- actions = [
101
- _action(10, flags=ActionFlags.Drawcall, outputs=[100]),
102
- _action(20, flags=ActionFlags.Dispatch, outputs=[200]),
103
- _action(30, flags=ActionFlags.Clear, outputs=[200]),
104
- ]
105
- result = _count_rt_switches(actions, 10, 30)
106
- assert result["count"] == 1
107
-
108
-
109
- def test_empty_actions() -> None:
110
- """No actions -> 0 switches."""
111
- result = _count_rt_switches([], 0, 100)
112
- assert result["count"] == 0
113
- assert result["switches"] == []
114
-
115
-
116
- # ── Handler test ───────────────────────────────────────────────────
117
-
118
-
119
- def test_handle_passes_switches() -> None:
120
- """Handler adds rt_switches when switches param is set."""
121
- from conftest import make_daemon_state
122
-
123
- a1 = _action(10, outputs=[100])
124
- a2 = _action(20, outputs=[200])
125
- begin = ActionDescription(
126
- eventId=5,
127
- flags=ActionFlags.BeginPass | ActionFlags.PassBoundary,
128
- _name="TestPass",
129
- children=[a1, a2],
130
- )
131
- end = ActionDescription(
132
- eventId=25,
133
- flags=ActionFlags.EndPass | ActionFlags.PassBoundary,
134
- _name="EndPass",
135
- )
136
- state = make_daemon_state(actions=[begin, end])
137
-
138
- from rdc.handlers.query import _handle_passes
139
-
140
- resp, _ = _handle_passes(1, {"switches": True}, state)
141
- passes = resp["result"]["tree"]["passes"]
142
- assert len(passes) >= 1
143
- p = passes[0]
144
- assert "rt_switches" in p
145
- assert p["rt_switches"]["count"] == 1
146
-
147
-
148
- def test_handle_passes_no_switches_param() -> None:
149
- """Without switches param, no rt_switches key is added."""
150
- from conftest import make_daemon_state
151
-
152
- a1 = _action(10, outputs=[100])
153
- begin = ActionDescription(
154
- eventId=5,
155
- flags=ActionFlags.BeginPass | ActionFlags.PassBoundary,
156
- _name="TestPass",
157
- children=[a1],
158
- )
159
- end = ActionDescription(
160
- eventId=15,
161
- flags=ActionFlags.EndPass | ActionFlags.PassBoundary,
162
- _name="EndPass",
163
- )
164
- state = make_daemon_state(actions=[begin, end])
165
-
166
- from rdc.handlers.query import _handle_passes
167
-
168
- resp, _ = _handle_passes(1, {}, state)
169
- passes = resp["result"]["tree"]["passes"]
170
- for p in passes:
171
- assert "rt_switches" not in p
172
-
173
-
174
- # ── CLI tests ──────────────────────────────────────────────────────
175
-
176
- _PASSES_WITH_SWITCHES = {
177
- "tree": {
178
- "passes": [
179
- {
180
- "name": "Shadow",
181
- "draws": 3,
182
- "dispatches": 0,
183
- "triangles": 600,
184
- "begin_eid": 10,
185
- "end_eid": 50,
186
- "load_ops": [],
187
- "store_ops": [],
188
- "rt_switches": {
189
- "count": 2,
190
- "switches": [
191
- {"eid": 20, "from_targets": [100, 0], "to_targets": [200, 0]},
192
- {"eid": 40, "from_targets": [200, 0], "to_targets": [300, 0]},
193
- ],
194
- },
195
- },
196
- ]
197
- }
198
- }
199
-
200
-
201
- def test_cli_switches_tsv(monkeypatch: object) -> None:
202
- """--switches adds RT_SWITCHES column in TSV."""
203
- patch_cli_session(monkeypatch, _PASSES_WITH_SWITCHES) # type: ignore[arg-type]
204
- result = CliRunner().invoke(passes_cmd, ["--switches"])
205
- assert result.exit_code == 0
206
- assert "RT_SWITCHES" in result.output
207
- assert "2" in result.output
208
-
209
-
210
- def test_cli_switches_json(monkeypatch: object) -> None:
211
- """--switches --json includes rt_switches in output."""
212
- patch_cli_session(monkeypatch, _PASSES_WITH_SWITCHES) # type: ignore[arg-type]
213
- result = CliRunner().invoke(passes_cmd, ["--switches", "--json"])
214
- assert result.exit_code == 0
215
- data = json.loads(result.output)
216
- assert "rt_switches" in data["passes"][0]
217
- assert data["passes"][0]["rt_switches"]["count"] == 2
218
-
219
-
220
- def test_cli_no_switches_no_column(monkeypatch: object) -> None:
221
- """Without --switches, no RT_SWITCHES column."""
222
- patch_cli_session(
223
- monkeypatch, # type: ignore[arg-type]
224
- {
225
- "tree": {
226
- "passes": [
227
- {
228
- "name": "Shadow",
229
- "draws": 3,
230
- "dispatches": 0,
231
- "triangles": 600,
232
- "begin_eid": 10,
233
- "end_eid": 50,
234
- "load_ops": [],
235
- "store_ops": [],
236
- }
237
- ]
238
- }
239
- },
240
- )
241
- result = CliRunner().invoke(passes_cmd, [])
242
- assert result.exit_code == 0
243
- assert "RT_SWITCHES" not in result.output
File without changes
File without changes
File without changes
File without changes