rdc-cli 0.5.5__tar.gz → 0.5.6__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/.github/workflows/aur.yml +2 -2
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/PKG-INFO +1 -1
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/docs-astro/src/data/commands.json +1 -1
- rdc_cli-0.5.6/openspec/changes/2026-06-04-open-gpu-override/proposal.md +83 -0
- rdc_cli-0.5.6/openspec/changes/2026-06-04-open-gpu-override/tasks.md +14 -0
- rdc_cli-0.5.6/openspec/changes/2026-06-04-open-gpu-override/test-plan.md +36 -0
- rdc_cli-0.5.6/openspec/changes/archive/2026-05-17-fix-aur-deploy-action-v413/proposal.md +101 -0
- rdc_cli-0.5.6/openspec/changes/archive/2026-05-17-fix-aur-deploy-action-v413/tasks.md +12 -0
- rdc_cli-0.5.6/openspec/changes/archive/2026-05-17-fix-aur-deploy-action-v413/test-plan.md +34 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/specs/daemon/spec.md +6 -1
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/_skills/references/commands-quick-ref.md +1 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/commands/doctor.py +8 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/commands/session.py +18 -2
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/daemon_server.py +55 -8
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/discover.py +14 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/services/session_service.py +7 -1
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc_cli.egg-info/PKG-INFO +1 -1
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc_cli.egg-info/SOURCES.txt +6 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_daemon_server_unit.py +50 -1
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_discover.py +58 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_doctor.py +26 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_session_commands.py +26 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_session_service.py +27 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/.commitlintrc.yml +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/.githooks/pre-commit +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/.githooks/pre-push +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/.github/CODEOWNERS +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/.github/workflows/ci.yml +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/.github/workflows/commitlint.yml +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/.github/workflows/docs.yml +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/.gitignore +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/.python-version +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/.release-please-manifest.json +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/CONTRIBUTING.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/LICENSE +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/Makefile +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/README.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/SECURITY.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/aur/PKGBUILD +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/aur/stable/PKGBUILD +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/docker/Dockerfile +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/docs-astro/astro.config.mjs +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/docs-astro/package-lock.json +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/docs-astro/package.json +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/docs-astro/public/.nojekyll +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/docs-astro/public/favicon.svg +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/docs-astro/src/components/Commands.astro +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/docs-astro/src/components/Demo.astro +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/docs-astro/src/components/Features.astro +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/docs-astro/src/components/Footer.astro +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/docs-astro/src/components/Hero.astro +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/docs-astro/src/components/Install.astro +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/docs-astro/src/components/Navbar.astro +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/docs-astro/src/components/Philosophy.astro +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/docs-astro/src/components/Terminal.astro +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/docs-astro/src/components/ThemeSwitcher.astro +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/docs-astro/src/data/replay.json +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/docs-astro/src/data/stats.json +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/docs-astro/src/layouts/Base.astro +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/docs-astro/src/layouts/Docs.astro +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/docs-astro/src/pages/docs/ai-integration.astro +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/docs-astro/src/pages/docs/commands.astro +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/docs-astro/src/pages/docs/design.astro +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/docs-astro/src/pages/docs/examples.astro +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/docs-astro/src/pages/docs/index.astro +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/docs-astro/src/pages/docs/install.astro +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/docs-astro/src/pages/docs/remote.astro +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/docs-astro/src/pages/docs/usage.astro +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/docs-astro/src/pages/docs/vfs.astro +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/docs-astro/src/pages/index.astro +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/docs-astro/src/styles/global.css +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/docs-astro/tailwind.config.mjs +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/docs-astro/tapes/pipeline.tape +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/docs-astro/tapes/quickstart.tape +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/docs-astro/tests/validate.mjs +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/docs-astro/tsconfig.json +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/mypy.ini +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/2026-03-03-bugfix-p2-batch/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/2026-03-03-bugfix-p2-batch/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/2026-03-03-bugfix-p2-batch/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/2026-03-04-w6-windows-bugfixes/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/2026-03-04-w6-windows-bugfixes/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/2026-03-04-w6-windows-bugfixes/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-bootstrap-foundation/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-bootstrap-foundation/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-bootstrap-foundation/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-ci-hardening/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-ci-hardening/specs/ci/spec.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-ci-hardening/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-ci-hardening/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-core-checks/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-core-checks/specs/foundation/spec.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-core-checks/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-core-checks/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-daemon-protocol/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-daemon-protocol/specs/daemon/spec.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-daemon-protocol/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-daemon-protocol/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-daemon-transport/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-daemon-transport/specs/daemon/spec.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-daemon-transport/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-daemon-transport/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-fixtures-docker/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-fixtures-docker/specs/tooling/spec.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-fixtures-docker/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-fixtures-docker/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-pixi-env/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-pixi-env/specs/tooling/spec.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-pixi-env/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-pixi-env/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-session-skeleton/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-session-skeleton/specs/session/spec.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-session-skeleton/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-session-skeleton/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-structure-refactor/design.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-structure-refactor/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-structure-refactor/specs/architecture/spec.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-structure-refactor/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-18-phase0-structure-refactor/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-count-shadermap/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-count-shadermap/specs/daemon/spec.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-count-shadermap/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-count-shadermap/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-daemon-replay/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-daemon-replay/specs/daemon/spec.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-daemon-replay/specs/foundation/spec.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-daemon-replay/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-daemon-replay/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-draws-events/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-draws-events/specs/daemon/spec.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-draws-events/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-draws-events/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-log/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-log/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-log/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-pass-detail/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-pass-detail/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-pass-detail/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-resources-passes/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-resources-passes/specs/daemon/spec.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-resources-passes/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-resources-passes/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-shader-extended/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-shader-extended/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1-shader-extended/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1.5-vfs/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1.5-vfs/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase1.5-vfs/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase2-api-fix/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase2-api-fix/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase2-api-fix/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase2-buffer-decode/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase2-buffer-decode/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase2-buffer-decode/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase2-pipeline-state/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase2-pipeline-state/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase2-pipeline-state/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase2-vfs-binary/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase2-vfs-binary/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-19-phase2-vfs-binary/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2-counters/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2-counters/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2-counters/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2-descriptors/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2-descriptors/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2-descriptors/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2-search/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2-search/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2-search/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2-usage/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2-usage/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2-usage/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2.5-aur-pkgbuild/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2.5-aur-pkgbuild/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2.5-aur-pkgbuild/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2.5-cli-enhancements/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2.5-cli-enhancements/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2.5-cli-enhancements/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2.5-python-compat-ci/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2.5-python-compat-ci/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2.5-python-compat-ci/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2.5-release-ci/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2.5-release-ci/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2.5-release-ci/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2.6-daemon-crash/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2.6-daemon-crash/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2.6-daemon-crash/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2.6-output-quality/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2.6-output-quality/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2.6-output-quality/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2.6-pipeline-extended/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2.6-pipeline-extended/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2.6-pipeline-extended/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2.6-shader-api/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2.6-shader-api/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-phase2.6-shader-api/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-vfs-path-completion/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-vfs-path-completion/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-20-vfs-path-completion/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-21-fix-daemon-startup-timeout/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-21-fix-daemon-startup-timeout/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-21-fix-daemon-startup-timeout/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-21-fix-event-break-and-test-flaky/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-21-fix-event-break-and-test-flaky/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-21-fix-event-break-and-test-flaky/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-21-fix-pass-detection/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-21-fix-pass-detection/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-21-fix-pass-detection/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-21-fix-vfs-pass-consistency/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-21-fix-vfs-pass-consistency/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-21-fix-vfs-pass-consistency/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-21-phase2.7-bug-filters/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-21-phase2.7-bug-filters/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-21-phase2.7-bug-filters/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-21-phase2.7-refactor-structure/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-21-phase2.7-refactor-structure/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-21-phase2.7-refactor-structure/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-ai-agent-skill/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-ai-agent-skill/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-ai-agent-skill/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-blackbox-bug-fixes/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-blackbox-bug-fixes/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-blackbox-bug-fixes/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-bugfix-remaining-blackbox/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-bugfix-remaining-blackbox/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-bugfix-remaining-blackbox/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-ci-repo-hardening/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-ci-repo-hardening/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-ci-repo-hardening/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-code-maintainability/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-code-maintainability/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-code-maintainability/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-consistent-output-options/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-consistent-output-options/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-consistent-output-options/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-design-deviation-diff-completeness/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-design-deviation-diff-completeness/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-design-deviation-diff-completeness/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-design-deviation-shader-api-fix/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-design-deviation-shader-api-fix/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-design-deviation-shader-api-fix/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-design-deviation-vfs-ls-long/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-design-deviation-vfs-ls-long/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-design-deviation-vfs-ls-long/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-diff-draws/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-diff-draws/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-diff-draws/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-diff-framebuffer/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-diff-framebuffer/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-diff-framebuffer/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-diff-infrastructure/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-diff-infrastructure/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-diff-infrastructure/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-diff-pipeline/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-diff-pipeline/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-diff-pipeline/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-diff-resources/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-diff-resources/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-diff-resources/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-diff-stats/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-diff-stats/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-diff-stats/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-docs-automation/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-docs-automation/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-docs-automation/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-fix-json-error-and-search-preload/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-fix-json-error-and-search-preload/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-fix-json-error-and-search-preload/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-image-compare/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-image-compare/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-image-compare/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase3a-script/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase3a-script/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase3a-script/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase3c-ci-assertions/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase3c-ci-assertions/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase3c-ci-assertions/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase3c-snapshot/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase3c-snapshot/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase3c-snapshot/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase4a-shader-debug/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase4a-shader-debug/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase4a-shader-debug/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase4b-shader-edit-replay/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase4b-shader-edit-replay/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase4b-shader-edit-replay/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase4c-mesh-export/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase4c-mesh-export/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase4c-mesh-export/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase4c-overlay/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase4c-overlay/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase4c-overlay/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase5-debug-thread/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase5-debug-thread/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase5-debug-thread/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase5-pick-pixel/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase5-pick-pixel/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase5-pick-pixel/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase5-tex-stats/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase5-tex-stats/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-phase5-tex-stats/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-renderdoc-build-helper/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-renderdoc-build-helper/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-renderdoc-build-helper/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-robustness-hardening/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-robustness-hardening/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-robustness-hardening/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-security-hardening-2/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-security-hardening-2/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-security-hardening-2/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-skill-auto-install/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-skill-auto-install/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-skill-auto-install/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-worktree-isolation/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-worktree-isolation/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-22-worktree-isolation/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-b17-eid-mutation/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-b17-eid-mutation/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-b17-eid-mutation/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-b18-b19-b24-cli-ux/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-b18-b19-b24-cli-ux/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-b18-b19-b24-cli-ux/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-b21-b22-b23-b25-daemon-lifecycle/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-b21-b22-b23-b25-daemon-lifecycle/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-b21-b22-b23-b25-daemon-lifecycle/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-capture-process-leak-b26-b28/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-capture-process-leak-b26-b28/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-capture-process-leak-b26-b28/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-docs-polish/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-docs-polish/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-docs-polish/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-fix-aur-build/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-fix-aur-build/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-fix-aur-build/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-fix-bugs-b10-b15-b16/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-fix-bugs-b10-b15-b16/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-fix-bugs-b10-b15-b16/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-phase-w2-build-script/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-phase-w2-build-script/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-phase-w2-build-script/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-phase5b-capture-unified/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-phase5b-capture-unified/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-phase5b-capture-unified/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-test-gpu-coverage/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-test-gpu-coverage/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-test-gpu-coverage/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-test-mock-accuracy/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-test-mock-accuracy/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-23-test-mock-accuracy/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-24-b43-b44-remote-split/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-24-b43-b44-remote-split/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-24-b43-b44-remote-split/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-24-phase-m-macos-support/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-24-phase-m-macos-support/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-24-phase-m-macos-support/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-24-phase-r1-quick-wins/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-24-phase-r1-quick-wins/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-24-phase-r1-quick-wins/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-24-phase-r2-test-infrastructure/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-24-phase-r2-test-infrastructure/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-24-phase-r2-test-infrastructure/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-26-phase-r3-usability-fixes/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-26-phase-r3-usability-fixes/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-26-phase-r3-usability-fixes/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-28-design-deviation-fixes/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-28-design-deviation-fixes/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-28-design-deviation-fixes/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-28-dev-install-enhancement/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-28-dev-install-enhancement/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-02-28-dev-install-enhancement/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-05-15-fix-225-d3d12-multi-gpu/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-05-15-fix-225-d3d12-multi-gpu/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-05-15-fix-225-d3d12-multi-gpu/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-05-15-issue-224-cbuffer-export/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-05-15-issue-224-cbuffer-export/specs/daemon/spec.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-05-15-issue-224-cbuffer-export/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-05-15-issue-224-cbuffer-export/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-05-15-issue-224-vsin-mesh/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-05-15-issue-224-vsin-mesh/specs/daemon/spec.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-05-15-issue-224-vsin-mesh/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-05-15-issue-224-vsin-mesh/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-05-17-fix-225-d3d12-chunk-name/proposal.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-05-17-fix-225-d3d12-chunk-name/tasks.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/changes/archive/2026-05-17-fix-225-d3d12-chunk-name/test-plan.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/specs/architecture/spec.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/specs/ci/spec.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/specs/foundation/spec.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/specs/packaging/spec.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/specs/session/spec.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/openspec/specs/tooling/spec.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/pixi.lock +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/pixi.toml +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/pyproject.toml +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/release-please-config.json +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/ruff.toml +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/scripts/build-renderdoc.sh +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/scripts/build_renderdoc.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/scripts/capture_fixture.sh +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/scripts/dev_install.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/scripts/e2e_test.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/scripts/ensure-renderdoc.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/scripts/ensure-renderdoc.sh +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/scripts/ensure-skill-link.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/scripts/gen-commands.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/scripts/gen-replay.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/scripts/gen-skill-ref.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/scripts/gen-stats.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/scripts/gen_and_check.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/scripts/setup-renderdoc.sh +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/scripts/setup-vulkan-samples.sh +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/scripts/setup_android_tools.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/scripts/setup_vulkan_samples.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/scripts/verify-package.sh +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/scripts/verify_package.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/setup.cfg +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/__init__.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/_build_renderdoc.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/_platform.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/_progress.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/_skills/SKILL.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/_skills/__init__.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/_transport.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/adapter.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/capture_core.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/cli.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/commands/_helpers.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/commands/android.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/commands/assert_ci.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/commands/assert_image.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/commands/capture.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/commands/capture_control.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/commands/capturefile.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/commands/cbuffer.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/commands/completion.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/commands/counters.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/commands/debug.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/commands/diff.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/commands/events.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/commands/export.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/commands/info.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/commands/install_skill.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/commands/mesh.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/commands/pick_pixel.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/commands/pipeline.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/commands/pixel.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/commands/remote.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/commands/resources.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/commands/script.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/commands/search.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/commands/serve.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/commands/setup_renderdoc.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/commands/shader_edit.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/commands/snapshot.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/commands/tex_stats.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/commands/unix_helpers.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/commands/unused_targets.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/commands/usage.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/commands/vfs.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/daemon_client.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/diff/__init__.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/diff/alignment.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/diff/draws.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/diff/framebuffer.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/diff/pipeline.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/diff/resources.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/diff/stats.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/diff/summary.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/formatters/json_fmt.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/formatters/kv.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/formatters/options.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/formatters/tsv.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/handlers/__init__.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/handlers/_helpers.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/handlers/_types.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/handlers/buffer.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/handlers/capture.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/handlers/capturefile.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/handlers/core.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/handlers/debug.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/handlers/descriptor.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/handlers/pipe_state.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/handlers/pixel.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/handlers/query.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/handlers/script.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/handlers/shader.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/handlers/shader_edit.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/handlers/texture.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/handlers/unused.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/handlers/vfs.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/image_compare.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/protocol.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/remote_core.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/remote_state.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/services/__init__.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/services/diff_service.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/services/query_service.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/session_state.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/target_state.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/vfs/__init__.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/vfs/formatter.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/vfs/router.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc/vfs/tree_cache.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc_cli.egg-info/dependency_links.txt +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc_cli.egg-info/entry_points.txt +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc_cli.egg-info/requires.txt +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/src/rdc_cli.egg-info/top_level.txt +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/conftest.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/e2e/__init__.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/e2e/blackbox_test_catalog.md +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/e2e/conftest.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/e2e/e2e_helpers.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/e2e/test_advanced.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/e2e/test_assert.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/e2e/test_capture.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/e2e/test_capturefile.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/e2e/test_debug.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/e2e/test_diff.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/e2e/test_export.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/e2e/test_formats.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/e2e/test_presession.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/e2e/test_query.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/e2e/test_session.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/e2e/test_shader_edit.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/e2e/test_vfs.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/fixtures/gles-multipass-debug.apk +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/fixtures/gles-triangle-debug.apk +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/fixtures/gles_android_mali.rdc +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/fixtures/gles_multipass_mali.rdc +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/fixtures/hello_triangle.rdc +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/fixtures/vkcube.rdc +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/fixtures/vkcube_validation.rdc +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/integration/test_build_renderdoc_integration.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/integration/test_daemon_handlers_real.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/integration/test_mock_api_sync.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/integration/test_real_replay.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/integration/test_vulkan_samples.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/mocks/mock_renderdoc.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/conftest.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_adapter.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_android_commands.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_assert_ci_commands.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_assert_image_command.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_binary_daemon.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_buffer_decode.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_build_renderdoc.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_capture.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_capture_control.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_capture_core.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_capture_handlers.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_capturefile_commands.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_capturefile_handlers.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_cbuffer_commands.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_ci_files.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_cli.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_cli_session_flag.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_completion.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_count_shadermap.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_counters_commands.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_counters_daemon.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_daemon_crash_regression.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_daemon_output_quality.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_daemon_pipeline_extended.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_daemon_shader_api_fix.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_daemon_shader_extended.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_daemon_transport.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_debug_commands.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_debug_handlers.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_descriptors_daemon.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_dev_install.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_diff_alignment.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_diff_command.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_diff_draws.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_diff_framebuffer.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_diff_pipeline.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_diff_resources.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_diff_service.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_diff_stats.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_diff_summary.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_doctor_hints.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_draws_daemon.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_draws_events_cli.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_draws_events_daemon.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_eid_completion.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_events_commands.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_export_commands.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_export_overlay.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_fix1_draws_pass_name.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_fix2_vfs_intermediate_dirs.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_fix3_friendly_pass_name.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_formatters.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_formatters_kv.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_gen_skill_ref.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_handlers_remote.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_image_compare.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_info_commands.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_install_skill.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_json_errors.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_keep_remote.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_mesh_commands.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_mesh_handler.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_mock_capture_types.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_mock_renderdoc.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_open_remote.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_output_options.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_overlay_handler.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_pass_deps.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_pick_pixel_commands.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_pick_pixel_daemon.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_pipeline_cli_phase27.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_pipeline_commands.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_pipeline_daemon.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_pipeline_section_routing.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_pipeline_shader.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_pipeline_state.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_pixel_history_commands.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_pixel_history_daemon.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_pixi_files.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_platform.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_progress.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_protocol.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_query_service.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_quickfix_batch.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_remote_commands.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_remote_core.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_remote_replay.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_remote_setup.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_remote_state.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_remote_status_disconnect.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_require_pipe.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_resource_semantic_completion.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_resources_commands.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_resources_filter.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_script_command.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_script_handler.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_search.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_semantic_completion.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_serve.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_session_completion.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_session_state.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_setup_renderdoc.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_setup_vulkan_samples.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_shader_edit_commands.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_shader_edit_handlers.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_shader_preload.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_skill_structure.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_snapshot_command.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_split_binary.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_split_core.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_target_state.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_tex_stats_commands.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_tex_stats_handler.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_tooling_files.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_unix_helpers_commands.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_unused_targets.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_usage_commands.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_usage_daemon.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_vfs_binary.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_vfs_commands.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_vfs_completion.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_vfs_daemon.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_vfs_formatter.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_vfs_router.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_vfs_tree_cache.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/tests/unit/test_windows_compat.py +0 -0
- {rdc_cli-0.5.5 → rdc_cli-0.5.6}/uv.lock +0 -0
|
@@ -22,7 +22,7 @@ jobs:
|
|
|
22
22
|
steps:
|
|
23
23
|
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
|
24
24
|
|
|
25
|
-
- uses: KSXGitHub/github-actions-deploy-aur@
|
|
25
|
+
- uses: KSXGitHub/github-actions-deploy-aur@da03e160361ce01bf087e790b6ffd196d7dccff7 # v4.1.3
|
|
26
26
|
with:
|
|
27
27
|
pkgname: rdc-cli-git
|
|
28
28
|
pkgbuild: aur/PKGBUILD
|
|
@@ -69,7 +69,7 @@ jobs:
|
|
|
69
69
|
sed -i "s/^pkgver=.*/pkgver=${VERSION}/" aur/stable/PKGBUILD
|
|
70
70
|
sed -i "s/'PLACEHOLDER'/'${SHA256}'/" aur/stable/PKGBUILD
|
|
71
71
|
|
|
72
|
-
- uses: KSXGitHub/github-actions-deploy-aur@
|
|
72
|
+
- uses: KSXGitHub/github-actions-deploy-aur@da03e160361ce01bf087e790b6ffd196d7dccff7 # v4.1.3
|
|
73
73
|
with:
|
|
74
74
|
pkgname: rdc-cli
|
|
75
75
|
pkgbuild: aur/stable/PKGBUILD
|
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"name": "open",
|
|
10
10
|
"id": "open",
|
|
11
11
|
"help": "Create local default session and start daemon skeleton.",
|
|
12
|
-
"usage": "rdc open [CAPTURE] [--preload] [--proxy HOST[:PORT]|adb://SERIAL] [--android] [--serial TEXT] [--remote HOST[:PORT]] [--listen [ADDR]:PORT] [--connect HOST:PORT] [--token TEXT] [--timeout FLOAT]"
|
|
12
|
+
"usage": "rdc open [CAPTURE] [--preload] [--proxy HOST[:PORT]|adb://SERIAL] [--android] [--serial TEXT] [--remote HOST[:PORT]] [--listen [ADDR]:PORT] [--connect HOST:PORT] [--token TEXT] [--timeout FLOAT] [--gpu INDEX|NAME|DEVICEID]"
|
|
13
13
|
},
|
|
14
14
|
{
|
|
15
15
|
"name": "close",
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
# Add `--gpu` override to `rdc open`
|
|
2
|
+
|
|
3
|
+
## Problem
|
|
4
|
+
|
|
5
|
+
When a capture is replayed, the daemon picks the replay GPU automatically via
|
|
6
|
+
`_match_capture_gpu()`: it matches the capture's recorded device name (Vulkan)
|
|
7
|
+
or adapter description / DeviceId (D3D12), and **falls back to vendor priority
|
|
8
|
+
(nVidia > AMD > Intel)** when nothing matches.
|
|
9
|
+
|
|
10
|
+
On a multi-GPU host that fallback is `filtered[0]` after a stable sort, i.e. the
|
|
11
|
+
first-enumerated device of the highest-priority vendor — frequently the
|
|
12
|
+
integrated GPU. There is no way for the user to override it:
|
|
13
|
+
|
|
14
|
+
- `rdc open` exposes no GPU selection flag.
|
|
15
|
+
- The fallback cannot be steered toward a discrete GPU, a specific device, or a
|
|
16
|
+
GPU whose name does not match the capture's recorded name (common when
|
|
17
|
+
replaying a capture taken on different hardware).
|
|
18
|
+
|
|
19
|
+
This complements the recent multi-GPU auto-matching work (#225) by giving the
|
|
20
|
+
analyst an explicit escape hatch when auto-selection picks the wrong device.
|
|
21
|
+
|
|
22
|
+
Note: an explicit GPU choice does not make a capture portable across
|
|
23
|
+
incompatible hardware (RADV descriptor layouts differ per GPU generation); it
|
|
24
|
+
only controls *which* available GPU replay is attempted on.
|
|
25
|
+
|
|
26
|
+
## Solution
|
|
27
|
+
|
|
28
|
+
Add an optional `--gpu INDEX|NAME|DEVICEID` flag to `rdc open` that forces the
|
|
29
|
+
replay GPU, overriding auto-selection.
|
|
30
|
+
|
|
31
|
+
Resolution order against `cap.GetAvailableGPUs()`:
|
|
32
|
+
|
|
33
|
+
1. **0-based index** — `--gpu 1` selects the second enumerated GPU.
|
|
34
|
+
2. **device ID** — decimal or `0x` hex (`--gpu 0x747e`), matched against
|
|
35
|
+
`GPUDevice.deviceID`.
|
|
36
|
+
3. **name substring** — case-insensitive (`--gpu "7800 XT"`).
|
|
37
|
+
|
|
38
|
+
If the preference matches no available GPU, a warning is logged listing the
|
|
39
|
+
available GPUs and replay falls back to the existing auto-selection (non-fatal).
|
|
40
|
+
|
|
41
|
+
### Plumbing
|
|
42
|
+
|
|
43
|
+
The flag threads CLI → daemon, reusing the existing daemon-arg channel:
|
|
44
|
+
|
|
45
|
+
- `commands/session.py`: `--gpu` option on `open_cmd`; ignored (with a warning)
|
|
46
|
+
for `--connect` (an external daemon is already running). Passed to
|
|
47
|
+
`open_session` / `listen_open_session`.
|
|
48
|
+
- `services/session_service.py`: `start_daemon(..., gpu=...)` appends
|
|
49
|
+
`--gpu <value>` to the daemon argv; `open_session` / `listen_open_session`
|
|
50
|
+
forward it.
|
|
51
|
+
- `daemon_server.py`: `--gpu` arg → `DaemonState.gpu_pref`; `_match_capture_gpu`
|
|
52
|
+
gains a `pref` parameter that short-circuits to the resolved GPU before
|
|
53
|
+
auto-matching. Applied at both the local and remote replay call sites.
|
|
54
|
+
|
|
55
|
+
Out of scope: changing the default auto-selection (vendor priority is unchanged).
|
|
56
|
+
|
|
57
|
+
## Spec Delta
|
|
58
|
+
|
|
59
|
+
The existing scenario "Multi-GPU capture replay" under **Requirement: Replay
|
|
60
|
+
lifecycle** in `openspec/specs/daemon/spec.md` (added by #226, amended by #230)
|
|
61
|
+
is amended so the user `--gpu` preference takes precedence over auto-selection:
|
|
62
|
+
|
|
63
|
+
```diff
|
|
64
|
+
#### Scenario: Multi-GPU capture replay
|
|
65
|
+
- **WHEN** the capture was taken on a multi-GPU system
|
|
66
|
+
- **AND** multiple GPUs are available for replay
|
|
67
|
+
-- **THEN** the daemon walks structured-data chunks whose name contains any of
|
|
68
|
+
+- **THEN** if the user passed `--gpu` (a 0-based index, a PCI device ID in
|
|
69
|
+
+ decimal or `0x` hex, or a case-insensitive name substring) that resolves to an
|
|
70
|
+
+ available GPU, that GPU is selected and structured-data inspection is skipped
|
|
71
|
+
+- **AND** otherwise the daemon walks structured-data chunks whose name contains any of
|
|
72
|
+
"Driver Initialisation Parameters", "DriverInit", "EnumAdapters", or
|
|
73
|
+
"CreateDXGIFactory"
|
|
74
|
+
...
|
|
75
|
+
- **AND** if no structured-data match exists, Software/WARP adapters are excluded
|
|
76
|
+
and the highest-ranked discrete GPU is preferred (nVidia > AMD > Intel)
|
|
77
|
+
+- **AND** an unresolved `--gpu` preference logs a warning and falls back to the
|
|
78
|
+
+ auto-selection above
|
|
79
|
+
- **AND** a single available GPU is always returned directly without inspection
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
This delta has been applied to `openspec/specs/daemon/spec.md` as part of this
|
|
83
|
+
change.
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
# Tasks: Add `--gpu` override to `rdc open`
|
|
2
|
+
|
|
3
|
+
- [x] `daemon_server.py`: add `_resolve_gpu_pref()` (index / deviceID / name substring)
|
|
4
|
+
- [x] `daemon_server.py`: add `pref` param to `_match_capture_gpu()`; short-circuit before auto-match, warn + fall back when no match
|
|
5
|
+
- [x] `daemon_server.py`: `--gpu` arg, `DaemonState.gpu_pref`, pass `state.gpu_pref` at local + remote call sites
|
|
6
|
+
- [x] `services/session_service.py`: `start_daemon(gpu=...)` appends `--gpu`; forward through `open_session` / `listen_open_session`
|
|
7
|
+
- [x] `commands/session.py`: `--gpu` option on `open_cmd`; warn-and-ignore with `--connect`; pass to open paths
|
|
8
|
+
- [x] `openspec/specs/daemon/spec.md`: apply Spec Delta to the "Multi-GPU capture replay" scenario (user `--gpu` precedence + unresolved fallback)
|
|
9
|
+
- [x] Unit tests: `_resolve_gpu_pref` forms; `_match_capture_gpu` pref precedence + no-match fallback warning; `start_daemon` argv; CLI passthrough + `--connect` warning
|
|
10
|
+
- [x] Update existing fakes broken by new signature/attr (`test_remote_replay_passes_sd` spy, sigterm-handler `mock_args`)
|
|
11
|
+
- [x] `pixi run check` green (lint + typecheck + tests)
|
|
12
|
+
- [ ] Fresh review of the diff
|
|
13
|
+
- [ ] Open PR targeting `master`
|
|
14
|
+
- [ ] Archive this OpenSpec folder after merge
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
# Test Plan: `--gpu` override for `rdc open`
|
|
2
|
+
|
|
3
|
+
## Unit (mocked — no GPU required)
|
|
4
|
+
|
|
5
|
+
`tests/unit/test_daemon_server_unit.py` (`TestMatchCaptureGpu`):
|
|
6
|
+
|
|
7
|
+
1. **Index** — `pref="1"` returns the second GPU.
|
|
8
|
+
2. **Name substring** — `pref="7800 xt"` matches case-insensitively.
|
|
9
|
+
3. **Device ID** — `pref="29822"` (decimal) and `pref="0x747e"` (hex) both match
|
|
10
|
+
`deviceID==29822`.
|
|
11
|
+
4. **Precedence** — with a Vulkan `deviceName` chunk that would auto-match GPU B,
|
|
12
|
+
`pref="AMD"` still selects GPU A.
|
|
13
|
+
5. **No match** — `pref="Matrox"` logs a `--gpu` warning and falls back to the
|
|
14
|
+
vendor-priority auto-selection.
|
|
15
|
+
6. **`_resolve_gpu_pref`** — index / name / hex resolve; unknown and empty → None.
|
|
16
|
+
|
|
17
|
+
`tests/unit/test_session_service.py`:
|
|
18
|
+
|
|
19
|
+
7. `start_daemon(gpu="1")` puts `--gpu 1` in the daemon argv; default omits `--gpu`.
|
|
20
|
+
|
|
21
|
+
`tests/unit/test_session_commands.py`:
|
|
22
|
+
|
|
23
|
+
8. `rdc open CAP --gpu 1` forwards `gpu="1"` to `start_daemon`.
|
|
24
|
+
9. `rdc open --connect host:port --token T --gpu 1` prints
|
|
25
|
+
`warning: --gpu is ignored with --connect`.
|
|
26
|
+
|
|
27
|
+
Run: `pixi run test` (unit only; no GPU/e2e). Full gate: `pixi run check`.
|
|
28
|
+
|
|
29
|
+
## Manual (requires a multi-GPU host + renderdoc)
|
|
30
|
+
|
|
31
|
+
- `rdc open frame.rdc --gpu <discrete-name>` then `rdc status` / a replay query;
|
|
32
|
+
daemon log shows `replay GPU (user --gpu=...)`.
|
|
33
|
+
- `rdc open frame.rdc --gpu nonsense` logs the no-match warning and still opens
|
|
34
|
+
via auto-selection.
|
|
35
|
+
|
|
36
|
+
(Not run in CI: needs real hardware; out of scope for the unit suite.)
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
# Fix AUR Deploy Action Pin: v4.1.1 → v4.1.3
|
|
2
|
+
|
|
3
|
+
## Problem
|
|
4
|
+
|
|
5
|
+
### Symptom
|
|
6
|
+
|
|
7
|
+
`AUR Publish` workflow run 26001352704, job `Publish rdc-cli (stable)`, failed on
|
|
8
|
+
the v0.5.5 tag with:
|
|
9
|
+
|
|
10
|
+
```
|
|
11
|
+
bash: --command: invalid option
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
The job exited before `/build.sh` ran. The `aur-git` job was not triggered (it
|
|
15
|
+
fires on branch push only). The v0.5.5 PyPI release and GitHub Release were
|
|
16
|
+
already shipped; the AUR `rdc-cli` package was not updated.
|
|
17
|
+
|
|
18
|
+
### Root cause
|
|
19
|
+
|
|
20
|
+
Both jobs pin
|
|
21
|
+
`KSXGitHub/github-actions-deploy-aur@2ac5a4c1d7035885d46b10e3193393be8460b6f1`
|
|
22
|
+
(v4.1.1). That action's `entrypoint.sh` ends with:
|
|
23
|
+
|
|
24
|
+
```sh
|
|
25
|
+
exec runuser builder --command 'bash -l -c /build.sh'
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
With the `util-linux` `runuser` binary now present in the current `archlinux:base`
|
|
29
|
+
Docker image, the `--command` flag is parsed as an option to `bash` (su(1)-compat
|
|
30
|
+
syntax passes the argument onward), and bash has no `--command` option. The process
|
|
31
|
+
crashes before `/build.sh` ever runs.
|
|
32
|
+
|
|
33
|
+
This latent bug existed in v3.0.1 through v4.1.1 of the action. Earlier workflow
|
|
34
|
+
runs on v0.5.2/v0.5.3 were green because the then-current `archlinux:base` image
|
|
35
|
+
did not expose the issue. A recent Arch base image update surfaced it.
|
|
36
|
+
|
|
37
|
+
### Why `post_process: git checkout -B master` is innocent
|
|
38
|
+
|
|
39
|
+
`build.sh` (which clones the AUR repo, evaluates `$post_process`, commits, and
|
|
40
|
+
force-pushes to AUR master) is byte-identical across v4.1.1, v4.1.2, and v4.1.3.
|
|
41
|
+
The crash happens in `entrypoint.sh` before `build.sh` is ever invoked, so
|
|
42
|
+
`post_process` was never reached and plays no role in the failure.
|
|
43
|
+
|
|
44
|
+
### Fix-forward context
|
|
45
|
+
|
|
46
|
+
The v0.5.5 PyPI package and GitHub Release are already published and cannot be
|
|
47
|
+
retracted. The only outstanding item is the AUR `rdc-cli` package backfill, which
|
|
48
|
+
requires a successful workflow run for version 0.5.5.
|
|
49
|
+
|
|
50
|
+
## Solution
|
|
51
|
+
|
|
52
|
+
Bump the action pin on **both** jobs in `.github/workflows/aur.yml`:
|
|
53
|
+
|
|
54
|
+
| Location | Current | After |
|
|
55
|
+
|---|---|---|
|
|
56
|
+
| Line 25, job `aur-git` | `2ac5a4c1d7035885d46b10e3193393be8460b6f1 # v4.1.1` | `da03e160361ce01bf087e790b6ffd196d7dccff7 # v4.1.3` |
|
|
57
|
+
| Line 72, job `aur-stable` | `2ac5a4c1d7035885d46b10e3193393be8460b6f1 # v4.1.1` | `da03e160361ce01bf087e790b6ffd196d7dccff7 # v4.1.3` |
|
|
58
|
+
|
|
59
|
+
All other inputs on both jobs (`force_push: true`, `post_process: git checkout -B
|
|
60
|
+
master`, `pkgname`, `pkgbuild`, credential secrets) remain unchanged.
|
|
61
|
+
|
|
62
|
+
v4.1.3 fixes `entrypoint.sh` to:
|
|
63
|
+
|
|
64
|
+
```sh
|
|
65
|
+
exec runuser -u builder -- bash -l /build.sh
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
This is the POSIX-correct `runuser` invocation that does not pass arguments to
|
|
69
|
+
bash. v4.1.2 used `runuser -u builder -- bash -l -c /build.sh` (also correct);
|
|
70
|
+
v4.1.3 drops the redundant `-c`.
|
|
71
|
+
|
|
72
|
+
## Why the bump is safe with respect to #183 and #184
|
|
73
|
+
|
|
74
|
+
The `post_process: git checkout -B master` input (PR #183, detached-HEAD fix) and
|
|
75
|
+
`force_push: true` input (PR #184) are passed to `build.sh` as environment
|
|
76
|
+
variables, not to `entrypoint.sh`. Because `build.sh` is byte-identical across
|
|
77
|
+
v4.1.1, v4.1.2, and v4.1.3, both fixes are fully preserved by this pin bump.
|
|
78
|
+
|
|
79
|
+
## Residual risk
|
|
80
|
+
|
|
81
|
+
The action uses `FROM archlinux:base` with no image digest pin. A future update to
|
|
82
|
+
the Arch base image could introduce a different incompatibility regardless of the
|
|
83
|
+
action tag. This is inherent to the action's design; no mitigation is proposed
|
|
84
|
+
here beyond monitoring workflow runs after future Arch base image refreshes.
|
|
85
|
+
|
|
86
|
+
## Spec delta
|
|
87
|
+
|
|
88
|
+
There is no existing spec in `openspec/specs/` covering AUR publishing or CI
|
|
89
|
+
release workflows. No spec delta applies.
|
|
90
|
+
|
|
91
|
+
## Post-merge backfill (operational, not a code change)
|
|
92
|
+
|
|
93
|
+
After this PR merges, manually trigger `AUR Publish` via `workflow_dispatch` with
|
|
94
|
+
input `version=0.5.5`. The `aur-stable` job will:
|
|
95
|
+
1. Normalize version → `0.5.5`
|
|
96
|
+
2. Checkout `refs/tags/v0.5.5` (already exists)
|
|
97
|
+
3. `curl` the tarball and compute sha256
|
|
98
|
+
4. Patch `aur/stable/PKGBUILD`
|
|
99
|
+
5. Deploy to AUR via the fixed action
|
|
100
|
+
|
|
101
|
+
This is the acceptance gate for this change.
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# Tasks: AUR Deploy Action Pin v4.1.1 → v4.1.3
|
|
2
|
+
|
|
3
|
+
- [ ] Opus review of `proposal.md` and `test-plan.md`; revise as needed
|
|
4
|
+
- [ ] `.github/workflows/aur.yml` line 25: bump action pin from `2ac5a4c1d7035885d46b10e3193393be8460b6f1 # v4.1.1` to `da03e160361ce01bf087e790b6ffd196d7dccff7 # v4.1.3`
|
|
5
|
+
- [ ] `.github/workflows/aur.yml` line 72: same pin bump (job `aur-stable`)
|
|
6
|
+
- [ ] Static checks: grep confirms new SHA appears exactly twice, old SHA absent, both jobs retain `force_push: true` and `post_process: git checkout -B master`, YAML parses cleanly
|
|
7
|
+
- [ ] Fresh review of the two-line diff
|
|
8
|
+
- [ ] Open PR targeting `master`
|
|
9
|
+
- [ ] After merge: trigger `AUR Publish` via `workflow_dispatch` with `version=0.5.5`
|
|
10
|
+
- [ ] Verify job `Publish rdc-cli (stable)` succeeds (no `bash: --command` crash)
|
|
11
|
+
- [ ] Verify AUR `rdc-cli` package shows `pkgver=0.5.5`
|
|
12
|
+
- [ ] Archive this OpenSpec folder
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
# Test Plan: AUR Deploy Action Pin v4.1.1 → v4.1.3
|
|
2
|
+
|
|
3
|
+
There are no unit tests for a workflow YAML change. Verification is static
|
|
4
|
+
inspection followed by a live workflow run.
|
|
5
|
+
|
|
6
|
+
## Static verification (pre-merge)
|
|
7
|
+
|
|
8
|
+
1. **Pin appears exactly twice.** `grep` for
|
|
9
|
+
`da03e160361ce01bf087e790b6ffd196d7dccff7` in
|
|
10
|
+
`.github/workflows/aur.yml` returns exactly 2 lines, one per job.
|
|
11
|
+
|
|
12
|
+
2. **Old pin is absent.** `grep` for `2ac5a4c1d7035885d46b10e3193393be8460b6f1`
|
|
13
|
+
or `v4.1.1` returns no matches.
|
|
14
|
+
|
|
15
|
+
3. **Version comment is present on both lines.** Both occurrences of the new SHA
|
|
16
|
+
are followed by the comment `# v4.1.3`.
|
|
17
|
+
|
|
18
|
+
4. **Preserved inputs — both jobs.** `grep` confirms both jobs retain:
|
|
19
|
+
- `force_push: true`
|
|
20
|
+
- `post_process: git checkout -B master`
|
|
21
|
+
|
|
22
|
+
5. **YAML parses cleanly.** `python3 -c "import yaml, sys; yaml.safe_load(sys.stdin)"
|
|
23
|
+
< .github/workflows/aur.yml` exits 0. (The repo does not include actionlint or
|
|
24
|
+
yamllint; Python's yaml module is the available static check.)
|
|
25
|
+
|
|
26
|
+
## Live verification (post-merge)
|
|
27
|
+
|
|
28
|
+
6. **workflow_dispatch v0.5.5 succeeds.** Trigger `AUR Publish` via
|
|
29
|
+
`workflow_dispatch` with input `version=0.5.5`. Job `Publish rdc-cli (stable)`
|
|
30
|
+
must complete with a green check — specifically, the `entrypoint.sh` crash
|
|
31
|
+
(`bash: --command: invalid option`) must not appear.
|
|
32
|
+
|
|
33
|
+
7. **AUR package updated.** After the dispatch run, the AUR `rdc-cli` package page
|
|
34
|
+
shows `pkgver=0.5.5`. This is the acceptance gate.
|
|
@@ -38,7 +38,10 @@ ReplayController for the duration of the session.
|
|
|
38
38
|
#### Scenario: Multi-GPU capture replay
|
|
39
39
|
- **WHEN** the capture was taken on a multi-GPU system
|
|
40
40
|
- **AND** multiple GPUs are available for replay
|
|
41
|
-
- **THEN** the
|
|
41
|
+
- **THEN** if the user passed `--gpu` (a 0-based index, a PCI device ID in
|
|
42
|
+
decimal or `0x` hex, or a case-insensitive name substring) that resolves to an
|
|
43
|
+
available GPU, that GPU is selected and structured-data inspection is skipped
|
|
44
|
+
- **AND** otherwise the daemon walks structured-data chunks whose name contains any of
|
|
42
45
|
"Driver Initialisation Parameters", "DriverInit", "EnumAdapters", or
|
|
43
46
|
"CreateDXGIFactory"
|
|
44
47
|
- **AND** within each such chunk descends recursively (depth ≤ 5) to locate an
|
|
@@ -49,6 +52,8 @@ ReplayController for the duration of the session.
|
|
|
49
52
|
DeviceId match is found
|
|
50
53
|
- **AND** if no structured-data match exists, Software/WARP adapters are excluded
|
|
51
54
|
and the highest-ranked discrete GPU is preferred (nVidia > AMD > Intel)
|
|
55
|
+
- **AND** an unresolved `--gpu` preference logs a warning and falls back to the
|
|
56
|
+
auto-selection above
|
|
52
57
|
- **AND** a single available GPU is always returned directly without inspection
|
|
53
58
|
|
|
54
59
|
### Requirement: Navigation methods
|
|
@@ -644,6 +644,7 @@ Create local default session and start daemon skeleton.
|
|
|
644
644
|
| `--connect` | Connect to an already-running external daemon. | text | |
|
|
645
645
|
| `--token` | Authentication token (required with --connect). | text | |
|
|
646
646
|
| `--timeout` | Daemon startup timeout in seconds. | float | |
|
|
647
|
+
| `--gpu` | Force the replay GPU by 0-based index, name substring, or device ID (overrides auto-selection). | text | |
|
|
647
648
|
|
|
648
649
|
## `rdc pass`
|
|
649
650
|
|
|
@@ -61,6 +61,14 @@ def _import_renderdoc() -> tuple[Any | None, CheckResult]:
|
|
|
61
61
|
False,
|
|
62
62
|
f"incompatible at {diag.candidate_path} -- rebuild renderdoc for current Python",
|
|
63
63
|
)
|
|
64
|
+
if diag is not None and diag.result == ProbeResult.IMPORT_FAILED:
|
|
65
|
+
return None, CheckResult(
|
|
66
|
+
"renderdoc-module",
|
|
67
|
+
False,
|
|
68
|
+
f"found at {diag.candidate_path} but failed to import"
|
|
69
|
+
" -- likely built for a different Python (ABI mismatch);"
|
|
70
|
+
" rebuild for current Python",
|
|
71
|
+
)
|
|
64
72
|
return None, CheckResult("renderdoc-module", False, "not found in search paths")
|
|
65
73
|
|
|
66
74
|
version = getattr(module, "GetVersionString", lambda: "unknown")()
|
|
@@ -186,6 +186,14 @@ def _complete_capture_path(
|
|
|
186
186
|
default=None,
|
|
187
187
|
help="Daemon startup timeout in seconds.",
|
|
188
188
|
)
|
|
189
|
+
@click.option(
|
|
190
|
+
"--gpu",
|
|
191
|
+
"gpu",
|
|
192
|
+
default=None,
|
|
193
|
+
metavar="INDEX|NAME|DEVICEID",
|
|
194
|
+
help="Force the replay GPU by 0-based index, name substring, or device ID "
|
|
195
|
+
"(overrides auto-selection).",
|
|
196
|
+
)
|
|
189
197
|
def open_cmd(
|
|
190
198
|
capture: str | None,
|
|
191
199
|
preload: bool,
|
|
@@ -197,6 +205,7 @@ def open_cmd(
|
|
|
197
205
|
connect: str | None,
|
|
198
206
|
connect_token: str | None,
|
|
199
207
|
timeout: float | None,
|
|
208
|
+
gpu: str | None,
|
|
200
209
|
) -> None:
|
|
201
210
|
"""Create local default session and start daemon skeleton."""
|
|
202
211
|
# Handle --remote deprecation
|
|
@@ -242,6 +251,11 @@ def open_cmd(
|
|
|
242
251
|
if connect is None and connect_token is not None:
|
|
243
252
|
click.echo("warning: --token is ignored without --connect", err=True)
|
|
244
253
|
|
|
254
|
+
# --gpu configures the daemon's replay; an external daemon (--connect) is
|
|
255
|
+
# already running, so it cannot apply here.
|
|
256
|
+
if gpu is not None and connect is not None:
|
|
257
|
+
click.echo("warning: --gpu is ignored with --connect", err=True)
|
|
258
|
+
|
|
245
259
|
# Dispatch: --connect
|
|
246
260
|
if connect is not None:
|
|
247
261
|
assert connect_token is not None
|
|
@@ -276,7 +290,9 @@ def open_cmd(
|
|
|
276
290
|
click.echo(f"error: file not found: {capture}", err=True)
|
|
277
291
|
raise SystemExit(1)
|
|
278
292
|
try:
|
|
279
|
-
ok, result = listen_open_session(
|
|
293
|
+
ok, result = listen_open_session(
|
|
294
|
+
capture, listen, remote_url=proxy_url, timeout=timeout, gpu=gpu
|
|
295
|
+
)
|
|
280
296
|
except ValueError as exc:
|
|
281
297
|
click.echo(f"error: {exc}", err=True)
|
|
282
298
|
raise SystemExit(1) from None
|
|
@@ -300,7 +316,7 @@ def open_cmd(
|
|
|
300
316
|
if proxy_url is None and not Path(capture).exists():
|
|
301
317
|
click.echo(f"error: file not found: {capture}", err=True)
|
|
302
318
|
raise SystemExit(1)
|
|
303
|
-
ok, message = open_session(capture, remote_url=proxy_url, timeout=timeout)
|
|
319
|
+
ok, message = open_session(capture, remote_url=proxy_url, timeout=timeout, gpu=gpu)
|
|
304
320
|
if not ok:
|
|
305
321
|
click.echo(message, err=True)
|
|
306
322
|
raise SystemExit(1)
|
|
@@ -141,6 +141,7 @@ class DaemonState:
|
|
|
141
141
|
_debug_messages_cache: list[Any] | None = None
|
|
142
142
|
remote: Any = None
|
|
143
143
|
remote_url: str = ""
|
|
144
|
+
gpu_pref: str = ""
|
|
144
145
|
is_remote: bool = False
|
|
145
146
|
local_capture_path: str = ""
|
|
146
147
|
local_capture_is_temp: bool = False
|
|
@@ -226,18 +227,49 @@ def _find_adapter_description(chunk: Any) -> AdapterMatch | None:
|
|
|
226
227
|
return None
|
|
227
228
|
|
|
228
229
|
|
|
229
|
-
def
|
|
230
|
+
def _resolve_gpu_pref(gpus: list[Any], pref: str) -> Any | None:
|
|
231
|
+
"""Resolve a user ``--gpu`` preference against the available GPUs.
|
|
232
|
+
|
|
233
|
+
Accepts, in order: a 0-based index, a device ID (decimal or ``0x`` hex),
|
|
234
|
+
or a case-insensitive substring of the GPU name. Returns the matching
|
|
235
|
+
``GPUDevice``, or ``None`` if nothing matches.
|
|
236
|
+
"""
|
|
237
|
+
pref = pref.strip()
|
|
238
|
+
if not pref:
|
|
239
|
+
return None
|
|
240
|
+
if pref.isdigit() and int(pref) < len(gpus):
|
|
241
|
+
return gpus[int(pref)]
|
|
242
|
+
try:
|
|
243
|
+
want_id = int(pref, 0)
|
|
244
|
+
except ValueError:
|
|
245
|
+
want_id = None
|
|
246
|
+
if want_id is not None:
|
|
247
|
+
for g in gpus:
|
|
248
|
+
if g.deviceID == want_id:
|
|
249
|
+
return g
|
|
250
|
+
needle = pref.lower()
|
|
251
|
+
for g in gpus:
|
|
252
|
+
if needle in g.name.lower():
|
|
253
|
+
return g
|
|
254
|
+
return None
|
|
255
|
+
|
|
256
|
+
|
|
257
|
+
def _match_capture_gpu(
|
|
258
|
+
cap: Any, sd: Any = None, rd: Any = None, pref: str | None = None
|
|
259
|
+
) -> Any | None:
|
|
230
260
|
"""Pick the replay GPU that produced ``cap``.
|
|
231
261
|
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
262
|
+
When *pref* is given (the user's ``--gpu``), it takes precedence over
|
|
263
|
+
auto-selection. Otherwise walks structured-data chunks to match the
|
|
264
|
+
capture's Vulkan ``vkEnumeratePhysicalDevices`` device name or the D3D12
|
|
265
|
+
adapter description, falling back to vendor priority (nVidia > AMD >
|
|
266
|
+
Intel, Software/WARP excluded) when no chunk-based match succeeds.
|
|
236
267
|
|
|
237
268
|
Args:
|
|
238
269
|
cap: An open renderdoc capture file.
|
|
239
270
|
sd: Optional structured data from ``cap.GetStructuredData()``.
|
|
240
271
|
rd: Optional renderdoc module, used for ``GPUVendor`` enum lookup.
|
|
272
|
+
pref: Optional user GPU preference (index, device ID, or name substring).
|
|
241
273
|
|
|
242
274
|
Returns:
|
|
243
275
|
The selected ``GPUDevice`` or ``None`` when no GPUs are available.
|
|
@@ -246,6 +278,16 @@ def _match_capture_gpu(cap: Any, sd: Any = None, rd: Any = None) -> Any | None:
|
|
|
246
278
|
gpus = cap.GetAvailableGPUs()
|
|
247
279
|
if not gpus:
|
|
248
280
|
return None
|
|
281
|
+
if pref:
|
|
282
|
+
chosen = _resolve_gpu_pref(gpus, pref)
|
|
283
|
+
if chosen is not None:
|
|
284
|
+
_log.info("replay GPU (user --gpu=%r): %s", pref, chosen.name)
|
|
285
|
+
return chosen
|
|
286
|
+
_log.warning(
|
|
287
|
+
"--gpu=%r matched no available GPU; available=%r -- using auto-selection",
|
|
288
|
+
pref,
|
|
289
|
+
[(g.name, g.deviceID) for g in gpus],
|
|
290
|
+
)
|
|
249
291
|
if len(gpus) == 1:
|
|
250
292
|
return gpus[0]
|
|
251
293
|
|
|
@@ -363,7 +405,7 @@ def _load_replay(state: DaemonState) -> str | None:
|
|
|
363
405
|
return "local replay not supported on this platform"
|
|
364
406
|
|
|
365
407
|
opts = rd.ReplayOptions()
|
|
366
|
-
gpu = _match_capture_gpu(cap, cap.GetStructuredData(), rd)
|
|
408
|
+
gpu = _match_capture_gpu(cap, cap.GetStructuredData(), rd, state.gpu_pref or None)
|
|
367
409
|
if gpu is not None:
|
|
368
410
|
opts.forceGPUVendor = gpu.vendor
|
|
369
411
|
opts.forceGPUDeviceID = gpu.deviceID
|
|
@@ -520,7 +562,9 @@ def _load_remote_replay(state: DaemonState, remote_url: str) -> str | None:
|
|
|
520
562
|
try:
|
|
521
563
|
open_result = tmp_cap.OpenFile(state.local_capture_path, "", None)
|
|
522
564
|
if open_result == rd.ResultCode.Succeeded:
|
|
523
|
-
gpu = _match_capture_gpu(
|
|
565
|
+
gpu = _match_capture_gpu(
|
|
566
|
+
tmp_cap, tmp_cap.GetStructuredData(), rd, state.gpu_pref or None
|
|
567
|
+
)
|
|
524
568
|
if gpu is not None:
|
|
525
569
|
remote_opts.forceGPUVendor = gpu.vendor
|
|
526
570
|
remote_opts.forceGPUDeviceID = gpu.deviceID
|
|
@@ -703,9 +747,12 @@ def main() -> None: # pragma: no cover
|
|
|
703
747
|
parser.add_argument("--idle-timeout", type=int, default=1800)
|
|
704
748
|
parser.add_argument("--no-replay", action="store_true", help=argparse.SUPPRESS)
|
|
705
749
|
parser.add_argument("--remote-url", default=None)
|
|
750
|
+
parser.add_argument("--gpu", default=None)
|
|
706
751
|
args = parser.parse_args()
|
|
707
752
|
|
|
708
|
-
state = DaemonState(
|
|
753
|
+
state = DaemonState(
|
|
754
|
+
capture=args.capture, current_eid=0, token=args.token, gpu_pref=args.gpu or ""
|
|
755
|
+
)
|
|
709
756
|
|
|
710
757
|
if not args.no_replay:
|
|
711
758
|
if args.remote_url:
|
|
@@ -56,6 +56,16 @@ def _is_arm_studio_dir(directory: str) -> bool:
|
|
|
56
56
|
return any("arm-performance-studio" in p.lower() for p in parts)
|
|
57
57
|
|
|
58
58
|
|
|
59
|
+
def _has_renderdoc_module(directory: str) -> bool:
|
|
60
|
+
"""Return True if *directory* holds an importable renderdoc module artifact."""
|
|
61
|
+
d = Path(directory)
|
|
62
|
+
return (
|
|
63
|
+
(d / "renderdoc.py").is_file()
|
|
64
|
+
or bool(list(d.glob("renderdoc*.so")))
|
|
65
|
+
or bool(list(d.glob("renderdoc*.pyd")))
|
|
66
|
+
)
|
|
67
|
+
|
|
68
|
+
|
|
59
69
|
def _preload_librenderdoc(directory: str) -> None:
|
|
60
70
|
"""Preload librenderdoc.so with RTLD_GLOBAL for ARM PS patched module.
|
|
61
71
|
|
|
@@ -174,6 +184,10 @@ def find_renderdoc() -> ModuleType | None:
|
|
|
174
184
|
_diagnostic = outcome
|
|
175
185
|
elif outcome.result == ProbeResult.TIMEOUT:
|
|
176
186
|
_diagnostic = outcome
|
|
187
|
+
elif outcome.result == ProbeResult.IMPORT_FAILED and _has_renderdoc_module(path):
|
|
188
|
+
# A module file is present but won't load (e.g. built for another
|
|
189
|
+
# Python); keep it so the caller can tell this from "not found".
|
|
190
|
+
_diagnostic = outcome
|
|
177
191
|
|
|
178
192
|
if crash_prone_candidates:
|
|
179
193
|
_diagnostic = ProbeOutcome(
|
|
@@ -46,6 +46,7 @@ def start_daemon(
|
|
|
46
46
|
host: str = "127.0.0.1",
|
|
47
47
|
idle_timeout: int = 1800,
|
|
48
48
|
remote_url: str | None = None,
|
|
49
|
+
gpu: str | None = None,
|
|
49
50
|
) -> subprocess.Popen[str]:
|
|
50
51
|
cmd = [
|
|
51
52
|
sys.executable,
|
|
@@ -62,6 +63,8 @@ def start_daemon(
|
|
|
62
63
|
"--idle-timeout",
|
|
63
64
|
str(idle_timeout),
|
|
64
65
|
]
|
|
66
|
+
if gpu:
|
|
67
|
+
cmd += ["--gpu", gpu]
|
|
65
68
|
if remote_url:
|
|
66
69
|
cmd += ["--remote-url", remote_url]
|
|
67
70
|
elif not _renderdoc_available():
|
|
@@ -136,6 +139,7 @@ def open_session(
|
|
|
136
139
|
*,
|
|
137
140
|
remote_url: str | None = None,
|
|
138
141
|
timeout: float | None = None,
|
|
142
|
+
gpu: str | None = None,
|
|
139
143
|
) -> tuple[bool, str]:
|
|
140
144
|
exists, err = _check_existing_session()
|
|
141
145
|
if exists:
|
|
@@ -148,7 +152,7 @@ def open_session(
|
|
|
148
152
|
for _attempt in range(max_attempts):
|
|
149
153
|
port = pick_port()
|
|
150
154
|
token = secrets.token_hex(16)
|
|
151
|
-
proc = start_daemon(str(capture), port, token, remote_url=remote_url)
|
|
155
|
+
proc = start_daemon(str(capture), port, token, remote_url=remote_url, gpu=gpu)
|
|
152
156
|
|
|
153
157
|
ok, detail = wait_for_ping(host, port, token, timeout_s=resolved_timeout, proc=proc)
|
|
154
158
|
if ok:
|
|
@@ -382,6 +386,7 @@ def listen_open_session(
|
|
|
382
386
|
*,
|
|
383
387
|
remote_url: str | None = None,
|
|
384
388
|
timeout: float | None = None,
|
|
389
|
+
gpu: str | None = None,
|
|
385
390
|
) -> tuple[bool, dict[str, Any] | str]:
|
|
386
391
|
"""Open a session with the daemon listening on a specified address.
|
|
387
392
|
|
|
@@ -408,6 +413,7 @@ def listen_open_session(
|
|
|
408
413
|
token,
|
|
409
414
|
host=bind_host,
|
|
410
415
|
remote_url=remote_url,
|
|
416
|
+
gpu=gpu,
|
|
411
417
|
)
|
|
412
418
|
|
|
413
419
|
ok, detail = wait_for_ping(
|
|
@@ -71,6 +71,9 @@ openspec/changes/2026-03-03-bugfix-p2-batch/test-plan.md
|
|
|
71
71
|
openspec/changes/2026-03-04-w6-windows-bugfixes/proposal.md
|
|
72
72
|
openspec/changes/2026-03-04-w6-windows-bugfixes/tasks.md
|
|
73
73
|
openspec/changes/2026-03-04-w6-windows-bugfixes/test-plan.md
|
|
74
|
+
openspec/changes/2026-06-04-open-gpu-override/proposal.md
|
|
75
|
+
openspec/changes/2026-06-04-open-gpu-override/tasks.md
|
|
76
|
+
openspec/changes/2026-06-04-open-gpu-override/test-plan.md
|
|
74
77
|
openspec/changes/archive/2026-02-18-bootstrap-foundation/proposal.md
|
|
75
78
|
openspec/changes/archive/2026-02-18-bootstrap-foundation/tasks.md
|
|
76
79
|
openspec/changes/archive/2026-02-18-bootstrap-foundation/test-plan.md
|
|
@@ -372,6 +375,9 @@ openspec/changes/archive/2026-05-15-issue-224-vsin-mesh/specs/daemon/spec.md
|
|
|
372
375
|
openspec/changes/archive/2026-05-17-fix-225-d3d12-chunk-name/proposal.md
|
|
373
376
|
openspec/changes/archive/2026-05-17-fix-225-d3d12-chunk-name/tasks.md
|
|
374
377
|
openspec/changes/archive/2026-05-17-fix-225-d3d12-chunk-name/test-plan.md
|
|
378
|
+
openspec/changes/archive/2026-05-17-fix-aur-deploy-action-v413/proposal.md
|
|
379
|
+
openspec/changes/archive/2026-05-17-fix-aur-deploy-action-v413/tasks.md
|
|
380
|
+
openspec/changes/archive/2026-05-17-fix-aur-deploy-action-v413/test-plan.md
|
|
375
381
|
openspec/specs/architecture/spec.md
|
|
376
382
|
openspec/specs/ci/spec.md
|
|
377
383
|
openspec/specs/daemon/spec.md
|