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.
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/.github/workflows/ci.yml +2 -1
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/PKG-INFO +1 -1
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/data/commands.json +1 -1
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/pixi.toml +1 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/_skills/SKILL.md +0 -1
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/_skills/references/commands-quick-ref.md +0 -1
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/resources.py +1 -14
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/daemon_server.py +2 -2
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/handlers/query.py +0 -6
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/handlers/texture.py +8 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/services/query_service.py +20 -52
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc_cli.egg-info/PKG-INFO +1 -1
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc_cli.egg-info/SOURCES.txt +0 -1
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_binary_daemon.py +14 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_query_service.py +126 -0
- rdc_cli-0.5.1/tests/unit/test_rt_switches.py +0 -243
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/.commitlintrc.yml +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/.githooks/pre-commit +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/.githooks/pre-push +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/.github/CODEOWNERS +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/.github/ISSUE_TEMPLATE/bug_report.yml +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/.github/ISSUE_TEMPLATE/config.yml +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/.github/ISSUE_TEMPLATE/feature_request.yml +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/.github/PULL_REQUEST_TEMPLATE.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/.github/workflows/aur.yml +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/.github/workflows/commitlint.yml +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/.github/workflows/docs.yml +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/.gitignore +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/.python-version +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/.release-please-manifest.json +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/CONTRIBUTING.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/LICENSE +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/Makefile +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/README.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/SECURITY.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/aur/PKGBUILD +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/aur/stable/PKGBUILD +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docker/Dockerfile +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/astro.config.mjs +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/package-lock.json +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/package.json +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/public/.nojekyll +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/public/favicon.svg +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/components/Commands.astro +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/components/Demo.astro +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/components/Features.astro +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/components/Footer.astro +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/components/Hero.astro +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/components/Install.astro +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/components/Navbar.astro +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/components/Philosophy.astro +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/components/Terminal.astro +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/components/ThemeSwitcher.astro +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/data/replay.json +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/data/stats.json +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/layouts/Base.astro +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/layouts/Docs.astro +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/pages/docs/ai-integration.astro +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/pages/docs/commands.astro +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/pages/docs/design.astro +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/pages/docs/examples.astro +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/pages/docs/index.astro +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/pages/docs/install.astro +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/pages/docs/remote.astro +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/pages/docs/usage.astro +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/pages/docs/vfs.astro +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/pages/index.astro +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/src/styles/global.css +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/tailwind.config.mjs +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/tapes/pipeline.tape +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/tapes/quickstart.tape +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/tests/validate.mjs +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/docs-astro/tsconfig.json +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/mypy.ini +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/2026-03-03-bugfix-p2-batch/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/2026-03-03-bugfix-p2-batch/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/2026-03-03-bugfix-p2-batch/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/2026-03-04-w6-windows-bugfixes/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/2026-03-04-w6-windows-bugfixes/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/2026-03-04-w6-windows-bugfixes/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-bootstrap-foundation/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-bootstrap-foundation/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-bootstrap-foundation/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-ci-hardening/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-ci-hardening/specs/ci/spec.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-ci-hardening/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-ci-hardening/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-phase0-core-checks/proposal.md +0 -0
- {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
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-phase0-core-checks/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-phase0-core-checks/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-phase0-daemon-protocol/proposal.md +0 -0
- {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
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-phase0-daemon-protocol/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-phase0-daemon-protocol/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-phase0-daemon-transport/proposal.md +0 -0
- {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
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-phase0-daemon-transport/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-phase0-daemon-transport/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-phase0-fixtures-docker/proposal.md +0 -0
- {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
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-phase0-fixtures-docker/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-phase0-fixtures-docker/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-phase0-pixi-env/proposal.md +0 -0
- {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
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-phase0-pixi-env/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-phase0-pixi-env/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-phase0-session-skeleton/proposal.md +0 -0
- {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
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-phase0-session-skeleton/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-phase0-session-skeleton/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-phase0-structure-refactor/design.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-phase0-structure-refactor/proposal.md +0 -0
- {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
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-phase0-structure-refactor/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-18-phase0-structure-refactor/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1-count-shadermap/proposal.md +0 -0
- {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
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1-count-shadermap/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1-count-shadermap/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1-daemon-replay/proposal.md +0 -0
- {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
- {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
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1-daemon-replay/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1-daemon-replay/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1-draws-events/proposal.md +0 -0
- {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
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1-draws-events/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1-draws-events/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1-log/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1-log/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1-log/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1-pass-detail/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1-pass-detail/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1-pass-detail/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1-resources-passes/proposal.md +0 -0
- {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
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1-resources-passes/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1-resources-passes/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1-shader-extended/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1-shader-extended/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1-shader-extended/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1.5-vfs/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1.5-vfs/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase1.5-vfs/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase2-api-fix/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase2-api-fix/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase2-api-fix/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase2-buffer-decode/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase2-buffer-decode/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase2-buffer-decode/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase2-pipeline-state/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase2-pipeline-state/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase2-pipeline-state/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase2-vfs-binary/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase2-vfs-binary/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-19-phase2-vfs-binary/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2-counters/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2-counters/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2-counters/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2-descriptors/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2-descriptors/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2-descriptors/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2-search/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2-search/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2-search/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2-usage/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2-usage/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2-usage/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2.5-aur-pkgbuild/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2.5-aur-pkgbuild/tasks.md +0 -0
- {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
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2.5-cli-enhancements/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2.5-cli-enhancements/tasks.md +0 -0
- {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
- {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
- {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
- {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
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2.5-release-ci/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2.5-release-ci/tasks.md +0 -0
- {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
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2.6-daemon-crash/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2.6-daemon-crash/tasks.md +0 -0
- {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
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2.6-output-quality/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2.6-output-quality/tasks.md +0 -0
- {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
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2.6-pipeline-extended/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2.6-pipeline-extended/tasks.md +0 -0
- {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
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2.6-shader-api/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-phase2.6-shader-api/tasks.md +0 -0
- {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
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-vfs-path-completion/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-vfs-path-completion/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-20-vfs-path-completion/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-21-fix-daemon-startup-timeout/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-21-fix-daemon-startup-timeout/tasks.md +0 -0
- {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
- {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
- {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
- {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
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-21-fix-pass-detection/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-21-fix-pass-detection/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-21-fix-pass-detection/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-21-fix-vfs-pass-consistency/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-21-fix-vfs-pass-consistency/tasks.md +0 -0
- {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
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-21-phase2.7-bug-filters/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-21-phase2.7-bug-filters/tasks.md +0 -0
- {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
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-21-phase2.7-refactor-structure/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-21-phase2.7-refactor-structure/tasks.md +0 -0
- {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
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-ai-agent-skill/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-ai-agent-skill/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-ai-agent-skill/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-blackbox-bug-fixes/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-blackbox-bug-fixes/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-blackbox-bug-fixes/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-bugfix-remaining-blackbox/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-bugfix-remaining-blackbox/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-bugfix-remaining-blackbox/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-ci-repo-hardening/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-ci-repo-hardening/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-ci-repo-hardening/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-code-maintainability/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-code-maintainability/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-code-maintainability/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-consistent-output-options/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-consistent-output-options/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-consistent-output-options/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-design-deviation-diff-completeness/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-design-deviation-diff-completeness/tasks.md +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-diff-draws/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-diff-draws/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-diff-draws/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-diff-framebuffer/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-diff-framebuffer/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-diff-framebuffer/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-diff-infrastructure/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-diff-infrastructure/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-diff-infrastructure/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-diff-pipeline/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-diff-pipeline/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-diff-pipeline/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-diff-resources/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-diff-resources/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-diff-resources/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-diff-stats/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-diff-stats/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-diff-stats/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-docs-automation/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-docs-automation/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-docs-automation/test-plan.md +0 -0
- {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
- {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
- {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
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-image-compare/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-image-compare/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-image-compare/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase3a-script/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase3a-script/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase3a-script/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase3c-ci-assertions/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase3c-ci-assertions/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase3c-ci-assertions/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase3c-snapshot/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase3c-snapshot/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase3c-snapshot/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase4a-shader-debug/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase4a-shader-debug/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase4a-shader-debug/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase4b-shader-edit-replay/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase4b-shader-edit-replay/tasks.md +0 -0
- {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
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase4c-mesh-export/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase4c-mesh-export/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase4c-mesh-export/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase4c-overlay/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase4c-overlay/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase4c-overlay/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase5-debug-thread/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase5-debug-thread/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase5-debug-thread/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase5-pick-pixel/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase5-pick-pixel/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase5-pick-pixel/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase5-tex-stats/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase5-tex-stats/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-phase5-tex-stats/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-renderdoc-build-helper/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-renderdoc-build-helper/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-renderdoc-build-helper/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-robustness-hardening/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-robustness-hardening/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-robustness-hardening/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-security-hardening-2/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-security-hardening-2/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-security-hardening-2/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-skill-auto-install/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-skill-auto-install/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-skill-auto-install/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-worktree-isolation/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-worktree-isolation/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-22-worktree-isolation/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-b17-eid-mutation/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-b17-eid-mutation/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-b17-eid-mutation/test-plan.md +0 -0
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {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
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-docs-polish/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-docs-polish/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-docs-polish/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-fix-aur-build/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-fix-aur-build/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-fix-aur-build/test-plan.md +0 -0
- {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
- {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
- {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
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-phase-w2-build-script/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-phase-w2-build-script/tasks.md +0 -0
- {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
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-phase5b-capture-unified/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-phase5b-capture-unified/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-phase5b-capture-unified/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-test-gpu-coverage/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-test-gpu-coverage/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-test-gpu-coverage/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-test-mock-accuracy/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-test-mock-accuracy/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-23-test-mock-accuracy/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-24-b43-b44-remote-split/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-24-b43-b44-remote-split/tasks.md +0 -0
- {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
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-24-phase-m-macos-support/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-24-phase-m-macos-support/tasks.md +0 -0
- {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
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-24-phase-r1-quick-wins/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-24-phase-r1-quick-wins/tasks.md +0 -0
- {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
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-24-phase-r2-test-infrastructure/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-24-phase-r2-test-infrastructure/tasks.md +0 -0
- {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
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-26-phase-r3-usability-fixes/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-26-phase-r3-usability-fixes/tasks.md +0 -0
- {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
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-28-design-deviation-fixes/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-28-design-deviation-fixes/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-28-design-deviation-fixes/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-28-dev-install-enhancement/proposal.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-28-dev-install-enhancement/tasks.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/changes/archive/2026-02-28-dev-install-enhancement/test-plan.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/specs/architecture/spec.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/specs/ci/spec.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/specs/daemon/spec.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/specs/foundation/spec.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/specs/packaging/spec.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/specs/session/spec.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/openspec/specs/tooling/spec.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/pixi.lock +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/pyproject.toml +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/release-please-config.json +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/ruff.toml +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/scripts/build-renderdoc.sh +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/scripts/build_renderdoc.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/scripts/capture_fixture.sh +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/scripts/dev_install.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/scripts/e2e_test.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/scripts/ensure-renderdoc.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/scripts/ensure-renderdoc.sh +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/scripts/ensure-skill-link.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/scripts/gen-commands.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/scripts/gen-replay.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/scripts/gen-skill-ref.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/scripts/gen-stats.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/scripts/gen_and_check.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/scripts/setup-renderdoc.sh +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/scripts/setup-vulkan-samples.sh +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/scripts/setup_android_tools.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/scripts/setup_vulkan_samples.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/scripts/verify-package.sh +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/scripts/verify_package.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/setup.cfg +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/__init__.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/_build_renderdoc.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/_platform.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/_skills/__init__.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/_transport.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/adapter.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/capture_core.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/cli.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/_helpers.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/android.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/assert_ci.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/assert_image.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/capture.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/capture_control.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/capturefile.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/completion.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/counters.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/debug.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/diff.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/doctor.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/events.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/export.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/info.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/install_skill.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/mesh.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/pick_pixel.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/pipeline.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/pixel.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/remote.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/script.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/search.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/serve.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/session.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/setup_renderdoc.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/shader_edit.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/snapshot.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/tex_stats.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/unix_helpers.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/unused_targets.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/usage.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/commands/vfs.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/daemon_client.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/diff/__init__.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/diff/alignment.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/diff/draws.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/diff/framebuffer.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/diff/pipeline.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/diff/resources.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/diff/stats.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/diff/summary.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/discover.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/formatters/json_fmt.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/formatters/kv.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/formatters/options.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/formatters/tsv.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/handlers/__init__.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/handlers/_helpers.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/handlers/_types.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/handlers/buffer.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/handlers/capture.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/handlers/capturefile.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/handlers/core.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/handlers/debug.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/handlers/descriptor.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/handlers/pipe_state.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/handlers/pixel.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/handlers/script.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/handlers/shader.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/handlers/shader_edit.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/handlers/unused.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/handlers/vfs.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/image_compare.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/protocol.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/remote_core.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/remote_state.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/services/__init__.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/services/diff_service.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/services/session_service.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/session_state.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/target_state.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/vfs/__init__.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/vfs/formatter.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/vfs/router.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc/vfs/tree_cache.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc_cli.egg-info/dependency_links.txt +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc_cli.egg-info/entry_points.txt +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc_cli.egg-info/requires.txt +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/src/rdc_cli.egg-info/top_level.txt +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/conftest.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/e2e/__init__.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/e2e/blackbox_test_catalog.md +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/e2e/conftest.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/e2e/e2e_helpers.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/e2e/test_advanced.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/e2e/test_assert.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/e2e/test_capture.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/e2e/test_capturefile.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/e2e/test_debug.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/e2e/test_diff.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/e2e/test_export.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/e2e/test_formats.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/e2e/test_presession.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/e2e/test_query.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/e2e/test_session.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/e2e/test_shader_edit.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/e2e/test_vfs.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/fixtures/gles-multipass-debug.apk +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/fixtures/gles-triangle-debug.apk +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/fixtures/gles_android_mali.rdc +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/fixtures/gles_multipass_mali.rdc +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/fixtures/hello_triangle.rdc +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/fixtures/vkcube.rdc +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/fixtures/vkcube_validation.rdc +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/integration/test_build_renderdoc_integration.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/integration/test_daemon_handlers_real.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/integration/test_mock_api_sync.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/integration/test_real_replay.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/integration/test_vulkan_samples.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/mocks/mock_renderdoc.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/conftest.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_adapter.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_android_commands.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_assert_ci_commands.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_assert_image_command.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_buffer_decode.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_build_renderdoc.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_capture.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_capture_control.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_capture_core.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_capture_handlers.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_capturefile_commands.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_capturefile_handlers.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_ci_files.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_cli.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_cli_session_flag.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_completion.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_count_shadermap.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_counters_commands.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_counters_daemon.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_daemon_crash_regression.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_daemon_output_quality.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_daemon_pipeline_extended.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_daemon_server_unit.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_daemon_shader_api_fix.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_daemon_shader_extended.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_daemon_transport.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_debug_commands.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_debug_handlers.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_descriptors_daemon.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_dev_install.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_diff_alignment.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_diff_command.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_diff_draws.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_diff_framebuffer.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_diff_pipeline.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_diff_resources.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_diff_service.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_diff_stats.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_diff_summary.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_discover.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_doctor.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_draws_daemon.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_draws_events_cli.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_draws_events_daemon.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_eid_completion.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_events_commands.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_export_commands.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_export_overlay.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_fix1_draws_pass_name.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_fix2_vfs_intermediate_dirs.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_fix3_friendly_pass_name.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_formatters.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_formatters_kv.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_gen_skill_ref.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_handlers_remote.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_image_compare.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_info_commands.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_install_skill.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_json_errors.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_keep_remote.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_mesh_commands.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_mesh_handler.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_mock_capture_types.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_mock_renderdoc.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_open_remote.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_output_options.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_overlay_handler.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_pass_deps.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_pick_pixel_commands.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_pick_pixel_daemon.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_pipeline_cli_phase27.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_pipeline_commands.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_pipeline_daemon.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_pipeline_section_routing.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_pipeline_shader.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_pipeline_state.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_pixel_history_commands.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_pixel_history_daemon.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_pixi_files.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_platform.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_protocol.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_quickfix_batch.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_remote_commands.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_remote_core.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_remote_replay.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_remote_state.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_require_pipe.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_resource_semantic_completion.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_resources_commands.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_resources_filter.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_script_command.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_script_handler.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_search.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_semantic_completion.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_serve.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_session_commands.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_session_completion.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_session_service.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_session_state.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_setup_renderdoc.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_setup_vulkan_samples.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_shader_edit_commands.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_shader_edit_handlers.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_shader_preload.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_skill_structure.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_snapshot_command.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_split_binary.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_split_core.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_target_state.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_tex_stats_commands.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_tex_stats_handler.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_tooling_files.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_unix_helpers_commands.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_unused_targets.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_usage_commands.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_usage_daemon.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_vfs_binary.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_vfs_commands.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_vfs_completion.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_vfs_daemon.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_vfs_formatter.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_vfs_router.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_vfs_tree_cache.py +0 -0
- {rdc_cli-0.5.1 → rdc_cli-0.5.2}/tests/unit/test_windows_compat.py +0 -0
- {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
|
-
-
|
|
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
|
|
@@ -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] [--
|
|
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
|
-
|
|
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 =
|
|
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,
|
|
826
|
-
|
|
827
|
-
if not
|
|
828
|
-
|
|
829
|
-
|
|
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(
|
|
@@ -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
|
|
File without changes
|