rdc-cli 0.3.6__tar.gz → 0.3.8__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.3.6/src/rdc_cli.egg-info → rdc_cli-0.3.8}/PKG-INFO +12 -9
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/README.md +11 -8
- rdc_cli-0.3.8/openspec/changes/archive/2026-02-28-design-deviation-fixes/proposal.md +68 -0
- rdc_cli-0.3.8/openspec/changes/archive/2026-02-28-design-deviation-fixes/tasks.md +25 -0
- rdc_cli-0.3.8/openspec/changes/archive/2026-02-28-design-deviation-fixes/test-plan.md +45 -0
- rdc_cli-0.3.8/openspec/changes/archive/2026-02-28-dev-install-enhancement/proposal.md +136 -0
- rdc_cli-0.3.8/openspec/changes/archive/2026-02-28-dev-install-enhancement/tasks.md +13 -0
- rdc_cli-0.3.8/openspec/changes/archive/2026-02-28-dev-install-enhancement/test-plan.md +56 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/pixi.lock +221 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/pixi.toml +5 -1
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/pyproject.toml +5 -2
- rdc_cli-0.3.8/scripts/dev_install.py +89 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/scripts/e2e-test.sh +2 -2
- rdc_cli-0.3.8/scripts/setup-vulkan-samples.sh +28 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/_skills/references/commands-quick-ref.md +16 -1
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/cli.py +2 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/commands/_helpers.py +27 -45
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/commands/capturefile.py +45 -3
- rdc_cli-0.3.8/src/rdc/commands/completion.py +185 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/commands/events.py +2 -2
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/commands/export.py +7 -5
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/commands/resources.py +105 -34
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/commands/session.py +16 -19
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/commands/usage.py +1 -5
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/commands/vfs.py +12 -3
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/daemon_server.py +36 -4
- rdc_cli-0.3.8/src/rdc/handlers/__init__.py +1 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/handlers/_helpers.py +57 -10
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/handlers/buffer.py +14 -13
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/handlers/capture.py +0 -6
- rdc_cli-0.3.8/src/rdc/handlers/capturefile.py +254 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/handlers/core.py +3 -11
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/handlers/debug.py +2 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/handlers/descriptor.py +7 -6
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/handlers/pipe_state.py +54 -53
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/handlers/pixel.py +10 -9
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/handlers/query.py +109 -13
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/handlers/shader.py +35 -21
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/handlers/shader_edit.py +10 -9
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/handlers/texture.py +16 -14
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/handlers/vfs.py +8 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/services/query_service.py +124 -1
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/services/session_service.py +4 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/vfs/router.py +10 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/vfs/tree_cache.py +46 -7
- {rdc_cli-0.3.6 → rdc_cli-0.3.8/src/rdc_cli.egg-info}/PKG-INFO +12 -9
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc_cli.egg-info/SOURCES.txt +43 -15
- rdc_cli-0.3.8/tests/e2e/__init__.py +0 -0
- rdc_cli-0.3.8/tests/e2e/blackbox_test_catalog.md +291 -0
- rdc_cli-0.3.8/tests/e2e/conftest.py +77 -0
- rdc_cli-0.3.8/tests/e2e/e2e_helpers.py +58 -0
- rdc_cli-0.3.8/tests/e2e/test_advanced.py +121 -0
- rdc_cli-0.3.8/tests/e2e/test_assert.py +193 -0
- rdc_cli-0.3.8/tests/e2e/test_capture.py +219 -0
- rdc_cli-0.3.8/tests/e2e/test_capturefile.py +93 -0
- rdc_cli-0.3.8/tests/e2e/test_debug.py +138 -0
- rdc_cli-0.3.8/tests/e2e/test_diff.py +120 -0
- rdc_cli-0.3.8/tests/e2e/test_export.py +177 -0
- rdc_cli-0.3.8/tests/e2e/test_formats.py +147 -0
- rdc_cli-0.3.8/tests/e2e/test_presession.py +96 -0
- rdc_cli-0.3.8/tests/e2e/test_query.py +293 -0
- rdc_cli-0.3.8/tests/e2e/test_session.py +164 -0
- rdc_cli-0.3.8/tests/e2e/test_shader_edit.py +158 -0
- rdc_cli-0.3.8/tests/e2e/test_vfs.py +355 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/mocks/mock_renderdoc.py +19 -1
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/conftest.py +1 -1
- rdc_cli-0.3.8/tests/unit/test_capturefile_commands.py +342 -0
- rdc_cli-0.3.8/tests/unit/test_capturefile_handlers.py +502 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_completion.py +8 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_daemon_output_quality.py +13 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_daemon_server_unit.py +167 -30
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_daemon_shader_extended.py +36 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_debug_commands.py +1 -1
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_debug_handlers.py +22 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_descriptors_daemon.py +3 -1
- rdc_cli-0.3.8/tests/unit/test_dev_install.py +267 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_draws_events_daemon.py +151 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_info_commands.py +4 -2
- rdc_cli-0.3.8/tests/unit/test_pass_deps.py +691 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_pipeline_cli_phase27.py +2 -2
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_pipeline_commands.py +4 -4
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_pipeline_shader.py +3 -3
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_remote_commands.py +3 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_remote_replay.py +1 -0
- rdc_cli-0.3.8/tests/unit/test_require_pipe.py +53 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_resource_semantic_completion.py +8 -5
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_resources_commands.py +1 -1
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_resources_filter.py +5 -5
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_script_command.py +5 -5
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_search.py +13 -3
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_session_completion.py +2 -26
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_shader_preload.py +16 -2
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_split_binary.py +5 -3
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_split_core.py +1 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_tex_stats_handler.py +27 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_unix_helpers_commands.py +1 -1
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_vfs_commands.py +20 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_vfs_completion.py +23 -12
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_vfs_daemon.py +121 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_vfs_router.py +92 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_vfs_tree_cache.py +170 -1
- rdc_cli-0.3.6/src/rdc/commands/completion.py +0 -49
- rdc_cli-0.3.6/src/rdc/handlers/__init__.py +0 -15
- rdc_cli-0.3.6/src/rdc/handlers/capturefile.py +0 -115
- rdc_cli-0.3.6/tests/unit/test_capturefile_commands.py +0 -118
- rdc_cli-0.3.6/tests/unit/test_capturefile_handlers.py +0 -153
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/.commitlintrc.yml +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/.githooks/pre-commit +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/.githooks/pre-push +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/.github/CODEOWNERS +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/.github/workflows/aur.yml +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/.github/workflows/ci.yml +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/.github/workflows/commitlint.yml +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/.github/workflows/docs.yml +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/.gitignore +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/.python-version +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/.release-please-manifest.json +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/LICENSE +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/Makefile +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/SECURITY.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/aur/PKGBUILD +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/aur/stable/PKGBUILD +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/docker/Dockerfile +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/docs/cli-reference.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/docs/index.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/docs/install.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/docs/usage.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/docs/vfs.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/docs-astro/astro.config.mjs +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/docs-astro/package-lock.json +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/docs-astro/package.json +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/docs-astro/public/.nojekyll +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/docs-astro/public/favicon.svg +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/docs-astro/src/components/Commands.astro +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/docs-astro/src/components/Demo.astro +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/docs-astro/src/components/Features.astro +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/docs-astro/src/components/Footer.astro +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/docs-astro/src/components/Hero.astro +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/docs-astro/src/components/Install.astro +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/docs-astro/src/components/Navbar.astro +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/docs-astro/src/components/Philosophy.astro +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/docs-astro/src/components/Terminal.astro +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/docs-astro/src/components/ThemeSwitcher.astro +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/docs-astro/src/data/commands.json +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/docs-astro/src/data/replay.json +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/docs-astro/src/data/stats.json +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/docs-astro/src/layouts/Base.astro +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/docs-astro/src/layouts/Docs.astro +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/docs-astro/src/pages/docs/ai-integration.astro +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/docs-astro/src/pages/docs/commands.astro +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/docs-astro/src/pages/docs/design.astro +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/docs-astro/src/pages/docs/examples.astro +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/docs-astro/src/pages/docs/index.astro +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/docs-astro/src/pages/docs/install.astro +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/docs-astro/src/pages/docs/remote.astro +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/docs-astro/src/pages/docs/usage.astro +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/docs-astro/src/pages/docs/vfs.astro +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/docs-astro/src/pages/index.astro +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/docs-astro/src/styles/global.css +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/docs-astro/tailwind.config.mjs +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/docs-astro/tapes/pipeline.tape +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/docs-astro/tapes/quickstart.tape +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/docs-astro/tests/validate.mjs +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/docs-astro/tsconfig.json +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/mkdocs.yml +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/mypy.ini +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-18-bootstrap-foundation/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-18-bootstrap-foundation/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-18-bootstrap-foundation/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-18-ci-hardening/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-18-ci-hardening/specs/ci/spec.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-18-ci-hardening/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-18-ci-hardening/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-18-phase0-core-checks/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-18-phase0-core-checks/specs/foundation/spec.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-18-phase0-core-checks/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-18-phase0-core-checks/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-18-phase0-daemon-protocol/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-18-phase0-daemon-protocol/specs/daemon/spec.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-18-phase0-daemon-protocol/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-18-phase0-daemon-protocol/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-18-phase0-daemon-transport/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-18-phase0-daemon-transport/specs/daemon/spec.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-18-phase0-daemon-transport/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-18-phase0-daemon-transport/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-18-phase0-fixtures-docker/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-18-phase0-fixtures-docker/specs/tooling/spec.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-18-phase0-fixtures-docker/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-18-phase0-fixtures-docker/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-18-phase0-pixi-env/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-18-phase0-pixi-env/specs/tooling/spec.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-18-phase0-pixi-env/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-18-phase0-pixi-env/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-18-phase0-session-skeleton/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-18-phase0-session-skeleton/specs/session/spec.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-18-phase0-session-skeleton/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-18-phase0-session-skeleton/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-18-phase0-structure-refactor/design.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-18-phase0-structure-refactor/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-18-phase0-structure-refactor/specs/architecture/spec.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-18-phase0-structure-refactor/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-18-phase0-structure-refactor/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-19-phase1-count-shadermap/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-19-phase1-count-shadermap/specs/daemon/spec.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-19-phase1-count-shadermap/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-19-phase1-count-shadermap/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-19-phase1-daemon-replay/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-19-phase1-daemon-replay/specs/daemon/spec.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-19-phase1-daemon-replay/specs/foundation/spec.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-19-phase1-daemon-replay/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-19-phase1-daemon-replay/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-19-phase1-draws-events/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-19-phase1-draws-events/specs/daemon/spec.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-19-phase1-draws-events/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-19-phase1-draws-events/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-19-phase1-log/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-19-phase1-log/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-19-phase1-log/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-19-phase1-pass-detail/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-19-phase1-pass-detail/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-19-phase1-pass-detail/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-19-phase1-resources-passes/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-19-phase1-resources-passes/specs/daemon/spec.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-19-phase1-resources-passes/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-19-phase1-resources-passes/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-19-phase1-shader-extended/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-19-phase1-shader-extended/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-19-phase1-shader-extended/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-19-phase1.5-vfs/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-19-phase1.5-vfs/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-19-phase1.5-vfs/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-19-phase2-api-fix/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-19-phase2-api-fix/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-19-phase2-api-fix/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-19-phase2-buffer-decode/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-19-phase2-buffer-decode/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-19-phase2-buffer-decode/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-19-phase2-pipeline-state/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-19-phase2-pipeline-state/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-19-phase2-pipeline-state/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-19-phase2-vfs-binary/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-19-phase2-vfs-binary/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-19-phase2-vfs-binary/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-20-phase2-counters/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-20-phase2-counters/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-20-phase2-counters/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-20-phase2-descriptors/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-20-phase2-descriptors/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-20-phase2-descriptors/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-20-phase2-search/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-20-phase2-search/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-20-phase2-search/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-20-phase2-usage/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-20-phase2-usage/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-20-phase2-usage/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-20-phase2.5-aur-pkgbuild/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-20-phase2.5-aur-pkgbuild/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-20-phase2.5-aur-pkgbuild/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-20-phase2.5-cli-enhancements/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-20-phase2.5-cli-enhancements/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-20-phase2.5-cli-enhancements/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-20-phase2.5-python-compat-ci/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-20-phase2.5-python-compat-ci/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-20-phase2.5-python-compat-ci/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-20-phase2.5-release-ci/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-20-phase2.5-release-ci/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-20-phase2.5-release-ci/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-20-phase2.6-daemon-crash/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-20-phase2.6-daemon-crash/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-20-phase2.6-daemon-crash/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-20-phase2.6-output-quality/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-20-phase2.6-output-quality/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-20-phase2.6-output-quality/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-20-phase2.6-pipeline-extended/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-20-phase2.6-pipeline-extended/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-20-phase2.6-pipeline-extended/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-20-phase2.6-shader-api/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-20-phase2.6-shader-api/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-20-phase2.6-shader-api/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-20-vfs-path-completion/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-20-vfs-path-completion/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-20-vfs-path-completion/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-21-fix-daemon-startup-timeout/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-21-fix-daemon-startup-timeout/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-21-fix-daemon-startup-timeout/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-21-fix-event-break-and-test-flaky/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-21-fix-event-break-and-test-flaky/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-21-fix-event-break-and-test-flaky/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-21-fix-pass-detection/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-21-fix-pass-detection/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-21-fix-pass-detection/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-21-fix-vfs-pass-consistency/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-21-fix-vfs-pass-consistency/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-21-fix-vfs-pass-consistency/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-21-phase2.7-bug-filters/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-21-phase2.7-bug-filters/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-21-phase2.7-bug-filters/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-21-phase2.7-refactor-structure/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-21-phase2.7-refactor-structure/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-21-phase2.7-refactor-structure/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-ai-agent-skill/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-ai-agent-skill/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-ai-agent-skill/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-blackbox-bug-fixes/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-blackbox-bug-fixes/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-blackbox-bug-fixes/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-bugfix-remaining-blackbox/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-bugfix-remaining-blackbox/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-bugfix-remaining-blackbox/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-ci-repo-hardening/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-ci-repo-hardening/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-ci-repo-hardening/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-code-maintainability/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-code-maintainability/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-code-maintainability/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-consistent-output-options/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-consistent-output-options/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-consistent-output-options/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-design-deviation-diff-completeness/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-design-deviation-diff-completeness/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-design-deviation-diff-completeness/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-design-deviation-shader-api-fix/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-design-deviation-shader-api-fix/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-design-deviation-shader-api-fix/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-design-deviation-vfs-ls-long/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-design-deviation-vfs-ls-long/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-design-deviation-vfs-ls-long/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-diff-draws/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-diff-draws/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-diff-draws/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-diff-framebuffer/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-diff-framebuffer/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-diff-framebuffer/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-diff-infrastructure/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-diff-infrastructure/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-diff-infrastructure/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-diff-pipeline/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-diff-pipeline/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-diff-pipeline/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-diff-resources/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-diff-resources/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-diff-resources/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-diff-stats/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-diff-stats/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-diff-stats/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-docs-automation/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-docs-automation/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-docs-automation/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-fix-json-error-and-search-preload/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-fix-json-error-and-search-preload/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-fix-json-error-and-search-preload/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-image-compare/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-image-compare/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-image-compare/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-phase3a-script/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-phase3a-script/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-phase3a-script/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-phase3c-ci-assertions/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-phase3c-ci-assertions/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-phase3c-ci-assertions/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-phase3c-snapshot/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-phase3c-snapshot/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-phase3c-snapshot/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-phase4a-shader-debug/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-phase4a-shader-debug/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-phase4a-shader-debug/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-phase4b-shader-edit-replay/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-phase4b-shader-edit-replay/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-phase4b-shader-edit-replay/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-phase4c-mesh-export/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-phase4c-mesh-export/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-phase4c-mesh-export/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-phase4c-overlay/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-phase4c-overlay/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-phase4c-overlay/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-phase5-debug-thread/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-phase5-debug-thread/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-phase5-debug-thread/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-phase5-pick-pixel/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-phase5-pick-pixel/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-phase5-pick-pixel/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-phase5-tex-stats/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-phase5-tex-stats/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-phase5-tex-stats/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-renderdoc-build-helper/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-renderdoc-build-helper/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-renderdoc-build-helper/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-robustness-hardening/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-robustness-hardening/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-robustness-hardening/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-security-hardening-2/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-security-hardening-2/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-security-hardening-2/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-skill-auto-install/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-skill-auto-install/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-skill-auto-install/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-worktree-isolation/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-worktree-isolation/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-22-worktree-isolation/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-23-b17-eid-mutation/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-23-b17-eid-mutation/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-23-b17-eid-mutation/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-23-b18-b19-b24-cli-ux/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-23-b18-b19-b24-cli-ux/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-23-b18-b19-b24-cli-ux/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-23-b21-b22-b23-b25-daemon-lifecycle/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-23-b21-b22-b23-b25-daemon-lifecycle/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-23-b21-b22-b23-b25-daemon-lifecycle/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-23-capture-process-leak-b26-b28/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-23-capture-process-leak-b26-b28/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-23-capture-process-leak-b26-b28/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-23-docs-polish/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-23-docs-polish/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-23-docs-polish/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-23-fix-aur-build/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-23-fix-aur-build/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-23-fix-aur-build/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-23-fix-bugs-b10-b15-b16/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-23-fix-bugs-b10-b15-b16/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-23-fix-bugs-b10-b15-b16/test-plan.md +0 -0
- {rdc_cli-0.3.6/openspec/changes → rdc_cli-0.3.8/openspec/changes/archive}/2026-02-23-phase-w2-build-script/proposal.md +0 -0
- {rdc_cli-0.3.6/openspec/changes → rdc_cli-0.3.8/openspec/changes/archive}/2026-02-23-phase-w2-build-script/tasks.md +0 -0
- {rdc_cli-0.3.6/openspec/changes → rdc_cli-0.3.8/openspec/changes/archive}/2026-02-23-phase-w2-build-script/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-23-phase5b-capture-unified/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-23-phase5b-capture-unified/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-23-phase5b-capture-unified/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-23-test-gpu-coverage/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-23-test-gpu-coverage/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-23-test-gpu-coverage/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-23-test-mock-accuracy/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-23-test-mock-accuracy/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-23-test-mock-accuracy/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-24-b43-b44-remote-split/proposal.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-24-b43-b44-remote-split/tasks.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/changes/archive/2026-02-24-b43-b44-remote-split/test-plan.md +0 -0
- {rdc_cli-0.3.6/openspec/changes → rdc_cli-0.3.8/openspec/changes/archive}/2026-02-24-phase-m-macos-support/proposal.md +0 -0
- {rdc_cli-0.3.6/openspec/changes → rdc_cli-0.3.8/openspec/changes/archive}/2026-02-24-phase-m-macos-support/tasks.md +0 -0
- {rdc_cli-0.3.6/openspec/changes → rdc_cli-0.3.8/openspec/changes/archive}/2026-02-24-phase-m-macos-support/test-plan.md +0 -0
- {rdc_cli-0.3.6/openspec/changes → rdc_cli-0.3.8/openspec/changes/archive}/2026-02-24-phase-r1-quick-wins/proposal.md +0 -0
- {rdc_cli-0.3.6/openspec/changes → rdc_cli-0.3.8/openspec/changes/archive}/2026-02-24-phase-r1-quick-wins/tasks.md +0 -0
- {rdc_cli-0.3.6/openspec/changes → rdc_cli-0.3.8/openspec/changes/archive}/2026-02-24-phase-r1-quick-wins/test-plan.md +0 -0
- {rdc_cli-0.3.6/openspec/changes → rdc_cli-0.3.8/openspec/changes/archive}/2026-02-24-phase-r2-test-infrastructure/proposal.md +0 -0
- {rdc_cli-0.3.6/openspec/changes → rdc_cli-0.3.8/openspec/changes/archive}/2026-02-24-phase-r2-test-infrastructure/tasks.md +0 -0
- {rdc_cli-0.3.6/openspec/changes → rdc_cli-0.3.8/openspec/changes/archive}/2026-02-24-phase-r2-test-infrastructure/test-plan.md +0 -0
- {rdc_cli-0.3.6/openspec/changes → rdc_cli-0.3.8/openspec/changes/archive}/2026-02-26-phase-r3-usability-fixes/proposal.md +0 -0
- {rdc_cli-0.3.6/openspec/changes → rdc_cli-0.3.8/openspec/changes/archive}/2026-02-26-phase-r3-usability-fixes/tasks.md +0 -0
- {rdc_cli-0.3.6/openspec/changes → rdc_cli-0.3.8/openspec/changes/archive}/2026-02-26-phase-r3-usability-fixes/test-plan.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/specs/architecture/spec.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/specs/ci/spec.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/specs/daemon/spec.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/specs/foundation/spec.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/specs/packaging/spec.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/specs/session/spec.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/openspec/specs/tooling/spec.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/release-please-config.json +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/ruff.toml +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/scripts/build-renderdoc.sh +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/scripts/build_renderdoc.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/scripts/capture_fixture.sh +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/scripts/ensure-renderdoc.sh +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/scripts/gen-commands.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/scripts/gen-replay.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/scripts/gen-skill-ref.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/scripts/gen-stats.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/scripts/setup-renderdoc.sh +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/scripts/verify-package.sh +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/setup.cfg +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/__init__.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/_platform.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/_skills/SKILL.md +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/_skills/__init__.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/_transport.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/adapter.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/capture_core.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/commands/assert_ci.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/commands/assert_image.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/commands/capture.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/commands/capture_control.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/commands/counters.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/commands/debug.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/commands/diff.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/commands/doctor.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/commands/info.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/commands/install_skill.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/commands/mesh.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/commands/pick_pixel.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/commands/pipeline.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/commands/pixel.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/commands/remote.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/commands/script.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/commands/search.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/commands/serve.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/commands/shader_edit.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/commands/snapshot.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/commands/tex_stats.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/commands/unix_helpers.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/daemon_client.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/diff/__init__.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/diff/alignment.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/diff/draws.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/diff/framebuffer.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/diff/pipeline.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/diff/resources.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/diff/stats.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/diff/summary.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/discover.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/formatters/json_fmt.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/formatters/kv.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/formatters/options.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/formatters/tsv.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/handlers/_types.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/handlers/script.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/image_compare.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/protocol.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/remote_core.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/remote_state.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/services/__init__.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/services/diff_service.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/session_state.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/target_state.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/vfs/__init__.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc/vfs/formatter.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc_cli.egg-info/dependency_links.txt +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc_cli.egg-info/entry_points.txt +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc_cli.egg-info/requires.txt +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/src/rdc_cli.egg-info/top_level.txt +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/conftest.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/fixtures/hello_triangle.rdc +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/fixtures/vkcube.rdc +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/fixtures/vkcube_validation.rdc +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/integration/test_build_renderdoc_integration.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/integration/test_daemon_handlers_real.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/integration/test_mock_api_sync.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/integration/test_real_replay.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/integration/test_vulkan_samples.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_adapter.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_assert_ci_commands.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_assert_image_command.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_binary_daemon.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_buffer_decode.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_build_renderdoc.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_capture.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_capture_control.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_capture_core.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_capture_handlers.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_ci_files.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_cli.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_cli_session_flag.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_count_shadermap.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_counters_commands.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_counters_daemon.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_daemon_crash_regression.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_daemon_pipeline_extended.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_daemon_shader_api_fix.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_daemon_transport.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_diff_alignment.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_diff_command.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_diff_draws.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_diff_framebuffer.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_diff_pipeline.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_diff_resources.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_diff_service.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_diff_stats.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_diff_summary.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_discover.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_doctor.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_draws_daemon.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_draws_events_cli.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_eid_completion.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_events_commands.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_export_commands.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_export_overlay.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_fix1_draws_pass_name.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_fix2_vfs_intermediate_dirs.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_fix3_friendly_pass_name.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_formatters.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_formatters_kv.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_gen_skill_ref.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_handlers_remote.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_image_compare.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_install_skill.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_json_errors.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_keep_remote.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_mesh_commands.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_mesh_handler.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_mock_capture_types.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_mock_renderdoc.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_open_remote.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_output_options.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_overlay_handler.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_pick_pixel_commands.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_pick_pixel_daemon.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_pipeline_daemon.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_pipeline_section_routing.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_pipeline_state.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_pixel_history_commands.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_pixel_history_daemon.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_pixi_files.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_platform.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_protocol.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_query_service.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_remote_core.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_remote_state.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_script_handler.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_semantic_completion.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_serve.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_session_commands.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_session_service.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_session_state.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_shader_edit_commands.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_shader_edit_handlers.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_skill_structure.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_snapshot_command.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_target_state.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_tex_stats_commands.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_tooling_files.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_usage_commands.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_usage_daemon.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_vfs_binary.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/tests/unit/test_vfs_formatter.py +0 -0
- {rdc_cli-0.3.6 → rdc_cli-0.3.8}/uv.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rdc-cli
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.8
|
|
4
4
|
Summary: CLI for RenderDoc .rdc captures
|
|
5
5
|
Author: Jim
|
|
6
6
|
License-Expression: MIT
|
|
@@ -61,7 +61,7 @@ rdc close
|
|
|
61
61
|
**PyPI — Linux** (recommended)
|
|
62
62
|
|
|
63
63
|
```bash
|
|
64
|
-
|
|
64
|
+
uv tool install rdc-cli # or: pipx install rdc-cli
|
|
65
65
|
python scripts/build_renderdoc.py # one-time build (needs cmake + ninja)
|
|
66
66
|
rdc doctor # verify everything works
|
|
67
67
|
```
|
|
@@ -69,7 +69,7 @@ rdc doctor # verify everything works
|
|
|
69
69
|
**PyPI — Windows** (experimental)
|
|
70
70
|
|
|
71
71
|
```bash
|
|
72
|
-
pipx install rdc-cli
|
|
72
|
+
uv tool install rdc-cli # or: pipx install rdc-cli
|
|
73
73
|
python scripts/build_renderdoc.py # needs cmake + Visual Studio Build Tools
|
|
74
74
|
rdc doctor
|
|
75
75
|
```
|
|
@@ -77,7 +77,7 @@ rdc doctor
|
|
|
77
77
|
**PyPI — macOS** (Split client only)
|
|
78
78
|
|
|
79
79
|
```bash
|
|
80
|
-
pipx install rdc-cli
|
|
80
|
+
uv tool install rdc-cli # or: pipx install rdc-cli
|
|
81
81
|
# Local replay on macOS is not supported right now.
|
|
82
82
|
# Use Split mode and run replay on a Linux/Windows daemon:
|
|
83
83
|
# rdc open /tmp/frame.rdc --listen 0.0.0.0:54321 # on replay host
|
|
@@ -99,8 +99,8 @@ yay -S rdc-cli # stable: tracks tagged releases
|
|
|
99
99
|
git clone https://github.com/BANANASJIM/rdc-cli.git
|
|
100
100
|
cd rdc-cli
|
|
101
101
|
pixi install && pixi run sync
|
|
102
|
-
|
|
103
|
-
pixi run setup-renderdoc
|
|
102
|
+
pixi run install # editable install + shell completions
|
|
103
|
+
pixi run setup-renderdoc # build renderdoc (pixi installs toolchain on macOS)
|
|
104
104
|
```
|
|
105
105
|
|
|
106
106
|
### Platform Support Matrix
|
|
@@ -180,9 +180,9 @@ rdc capture --output /tmp/game.rdc -- /path/to/game
|
|
|
180
180
|
rdc open /tmp/game_frame0.rdc --listen 0.0.0.0:54321
|
|
181
181
|
|
|
182
182
|
# On macOS client (no local renderdoc required)
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
183
|
+
rdc open --connect host:54321 --token TOKEN
|
|
184
|
+
rdc capture --output /tmp/mac_capture.rdc -- /usr/bin/vkcube
|
|
185
|
+
rdc remote capture /usr/bin/vkcube -o /tmp/mac_remote.rdc
|
|
186
186
|
rdc close --shutdown
|
|
187
187
|
```
|
|
188
188
|
|
|
@@ -238,6 +238,8 @@ Options available on most list/query commands (not every command supports all):
|
|
|
238
238
|
|
|
239
239
|
### Shell completions
|
|
240
240
|
|
|
241
|
+
Completions are installed automatically by `pixi run install`. To install manually:
|
|
242
|
+
|
|
241
243
|
```bash
|
|
242
244
|
rdc completion bash > ~/.local/share/bash-completion/completions/rdc
|
|
243
245
|
rdc completion zsh > ~/.zfunc/_rdc
|
|
@@ -248,6 +250,7 @@ rdc completion fish > ~/.config/fish/completions/rdc.fish
|
|
|
248
250
|
|
|
249
251
|
```bash
|
|
250
252
|
pixi run sync # install deps + git hooks + renderdoc symlink
|
|
253
|
+
pixi run install # editable install + shell completions
|
|
251
254
|
pixi run check # lint + typecheck + test
|
|
252
255
|
pixi run verify # full packaging verification
|
|
253
256
|
```
|
|
@@ -32,7 +32,7 @@ rdc close
|
|
|
32
32
|
**PyPI — Linux** (recommended)
|
|
33
33
|
|
|
34
34
|
```bash
|
|
35
|
-
|
|
35
|
+
uv tool install rdc-cli # or: pipx install rdc-cli
|
|
36
36
|
python scripts/build_renderdoc.py # one-time build (needs cmake + ninja)
|
|
37
37
|
rdc doctor # verify everything works
|
|
38
38
|
```
|
|
@@ -40,7 +40,7 @@ rdc doctor # verify everything works
|
|
|
40
40
|
**PyPI — Windows** (experimental)
|
|
41
41
|
|
|
42
42
|
```bash
|
|
43
|
-
pipx install rdc-cli
|
|
43
|
+
uv tool install rdc-cli # or: pipx install rdc-cli
|
|
44
44
|
python scripts/build_renderdoc.py # needs cmake + Visual Studio Build Tools
|
|
45
45
|
rdc doctor
|
|
46
46
|
```
|
|
@@ -48,7 +48,7 @@ rdc doctor
|
|
|
48
48
|
**PyPI — macOS** (Split client only)
|
|
49
49
|
|
|
50
50
|
```bash
|
|
51
|
-
pipx install rdc-cli
|
|
51
|
+
uv tool install rdc-cli # or: pipx install rdc-cli
|
|
52
52
|
# Local replay on macOS is not supported right now.
|
|
53
53
|
# Use Split mode and run replay on a Linux/Windows daemon:
|
|
54
54
|
# rdc open /tmp/frame.rdc --listen 0.0.0.0:54321 # on replay host
|
|
@@ -70,8 +70,8 @@ yay -S rdc-cli # stable: tracks tagged releases
|
|
|
70
70
|
git clone https://github.com/BANANASJIM/rdc-cli.git
|
|
71
71
|
cd rdc-cli
|
|
72
72
|
pixi install && pixi run sync
|
|
73
|
-
|
|
74
|
-
pixi run setup-renderdoc
|
|
73
|
+
pixi run install # editable install + shell completions
|
|
74
|
+
pixi run setup-renderdoc # build renderdoc (pixi installs toolchain on macOS)
|
|
75
75
|
```
|
|
76
76
|
|
|
77
77
|
### Platform Support Matrix
|
|
@@ -151,9 +151,9 @@ rdc capture --output /tmp/game.rdc -- /path/to/game
|
|
|
151
151
|
rdc open /tmp/game_frame0.rdc --listen 0.0.0.0:54321
|
|
152
152
|
|
|
153
153
|
# On macOS client (no local renderdoc required)
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
154
|
+
rdc open --connect host:54321 --token TOKEN
|
|
155
|
+
rdc capture --output /tmp/mac_capture.rdc -- /usr/bin/vkcube
|
|
156
|
+
rdc remote capture /usr/bin/vkcube -o /tmp/mac_remote.rdc
|
|
157
157
|
rdc close --shutdown
|
|
158
158
|
```
|
|
159
159
|
|
|
@@ -209,6 +209,8 @@ Options available on most list/query commands (not every command supports all):
|
|
|
209
209
|
|
|
210
210
|
### Shell completions
|
|
211
211
|
|
|
212
|
+
Completions are installed automatically by `pixi run install`. To install manually:
|
|
213
|
+
|
|
212
214
|
```bash
|
|
213
215
|
rdc completion bash > ~/.local/share/bash-completion/completions/rdc
|
|
214
216
|
rdc completion zsh > ~/.zfunc/_rdc
|
|
@@ -219,6 +221,7 @@ rdc completion fish > ~/.config/fish/completions/rdc.fish
|
|
|
219
221
|
|
|
220
222
|
```bash
|
|
221
223
|
pixi run sync # install deps + git hooks + renderdoc symlink
|
|
224
|
+
pixi run install # editable install + shell completions
|
|
222
225
|
pixi run check # lint + typecheck + test
|
|
223
226
|
pixi run verify # full packaging verification
|
|
224
227
|
```
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
# Design Deviation Fixes
|
|
2
|
+
|
|
3
|
+
**Date**: 2026-02-28
|
|
4
|
+
**Priority**: DEV-1 (P2), DEV-2 (P3), DEV-3 (P3)
|
|
5
|
+
|
|
6
|
+
## Motivation
|
|
7
|
+
|
|
8
|
+
An audit of the rdc-cli codebase against the canonical design documents identified three deviations from spec. Two are cosmetic or documentation-level issues (P3); one is a missing VFS feature that breaks the path-addressing contract (P2).
|
|
9
|
+
|
|
10
|
+
- **DEV-1**: The VFS router does not expose `/draws/{eid}/bindings/{set}/{binding}` leaf nodes despite the spec in `设计/路径寻址设计.md` requiring them. Users and tooling that navigate the VFS tree cannot read individual binding details at the slot level.
|
|
11
|
+
- **DEV-2**: `设计/命令总览.md` annotates `diff --trace` and `diff --trace-all` as Phase 4, but those flags depend on pixel tracing and shader debug, which are Phase 5C capabilities. The wrong annotation creates misleading roadmap expectations.
|
|
12
|
+
- **DEV-3**: `rdc open --listen` omits the `connect with:` convenience line from its output, which the split-mode design (`设计/远程Split模式.md`) requires. Users must manually compose the connection command from separate host/port/token lines.
|
|
13
|
+
|
|
14
|
+
## Scope
|
|
15
|
+
|
|
16
|
+
| ID | Component | Kind | Priority |
|
|
17
|
+
|----|-----------|------|----------|
|
|
18
|
+
| DEV-1 | `src/rdc/vfs/router.py`, `tree_cache.py`, `vfs.py` | Feature gap | P2 |
|
|
19
|
+
| DEV-2 | `Documents/Obsidian Vault/rdoc-cli/设计/命令总览.md` | Doc correction | P3 |
|
|
20
|
+
| DEV-3 | `src/rdc/commands/session.py` | Output line gap | P3 |
|
|
21
|
+
|
|
22
|
+
## Design
|
|
23
|
+
|
|
24
|
+
### DEV-1: VFS binding leaf node route
|
|
25
|
+
|
|
26
|
+
The VFS currently treats `/draws/{eid}/bindings/{set}` as a terminal directory. The spec requires a further level: `/draws/{eid}/bindings/{set}/{binding}` where `{binding}` is the slot index (fixedBindNumber), returning per-slot binding details.
|
|
27
|
+
|
|
28
|
+
**router.py**: Add a leaf route entry immediately after the existing bindings set route:
|
|
29
|
+
|
|
30
|
+
```python
|
|
31
|
+
_r(
|
|
32
|
+
r"/draws/(?P<eid>\d+)/bindings/(?P<set>\d+)/(?P<binding>\d+)",
|
|
33
|
+
"leaf", "bindings",
|
|
34
|
+
[("eid", int), ("set", int), ("binding", int)],
|
|
35
|
+
)
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
**tree_cache.py**: The `binding_sets` field on the per-event cache entry currently stores `set[int]` (set indices only). Change it to `dict[int, set[int]]` mapping set index to a set of slot indices. During tree population, collect `fixedBindNumber` from both `readOnlyResources` and `readWriteResources` for each pipeline stage, mirroring the cbuffer leaf pattern used at lines 327-349. Generate `VfsNode` leaf children under each set directory node for each discovered slot.
|
|
39
|
+
|
|
40
|
+
**vfs.py**: Add an `_EXTRACTORS["bindings"]` entry that formats leaf content as TSV with columns: `EID`, `STAGE`, `KIND`, `SET`, `SLOT`, `NAME`. The extractor passes the resolved `(eid, set, binding)` triple to `_handle_bindings`, which already accepts set and binding filter parameters.
|
|
41
|
+
|
|
42
|
+
### DEV-2: diff --trace Phase annotation correction
|
|
43
|
+
|
|
44
|
+
In `设计/命令总览.md`, lines 165-166 annotate `diff --trace` and `diff --trace-all` as Phase 4. Change both annotations to Phase 5C to reflect their true dependency on pixel tracing and shader debug infrastructure.
|
|
45
|
+
|
|
46
|
+
No code changes are required.
|
|
47
|
+
|
|
48
|
+
### DEV-3: --listen connect hint output
|
|
49
|
+
|
|
50
|
+
In `src/rdc/commands/session.py`, after the `token:` output line (currently line 179), insert:
|
|
51
|
+
|
|
52
|
+
```python
|
|
53
|
+
click.echo(
|
|
54
|
+
f"connect with: rdc open --connect"
|
|
55
|
+
f" {result['host']}:{result['port']}"
|
|
56
|
+
f" --token {result['token']}"
|
|
57
|
+
)
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
This produces a ready-to-copy connection command consistent with the spec in `设计/远程Split模式.md`. The format matches the `rdc open --connect HOST:PORT --token TOKEN` invocation documented there.
|
|
61
|
+
|
|
62
|
+
## Risks
|
|
63
|
+
|
|
64
|
+
**DEV-1**: Changing `binding_sets` from `set[int]` to `dict[int, set[int]]` alters the shape of children lists in the VFS tree. Completion logic and `ls` output that iterate over binding set children must be verified to handle the new slot-level leaf nodes without regressions. Mitigation: follow the cbuffer implementation pattern exactly, which is already exercised by existing tests.
|
|
65
|
+
|
|
66
|
+
**DEV-2**: Documentation only. Zero code risk. Annotation change may prompt questions from users who see Phase 5C on the roadmap for those flags.
|
|
67
|
+
|
|
68
|
+
**DEV-3**: Existing tests that assert the exact `rdc open --listen` output will fail if they check for a specific number of output lines or match on the full stdout string. Those tests must be updated to include the new hint line. No behavioral change occurs.
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# Tasks: Design Deviation Fixes
|
|
2
|
+
|
|
3
|
+
## DEV-1: VFS Binding Leaf Node Route (Agent A — worktree)
|
|
4
|
+
|
|
5
|
+
- [ ] `src/rdc/vfs/router.py` — Add leaf route for `/draws/{eid}/bindings/{set}/{binding}` with `handler="bindings"`
|
|
6
|
+
- [ ] `src/rdc/vfs/tree_cache.py` — Change `binding_sets: set[int]` to `dict[int, set[int]]`; collect `fixedBindNumber` from `readOnlyResources` and `readWriteResources`; create `VfsNode` leaf nodes and set children lists on set-directory nodes (mirror cbuffer pattern at lines 342-349)
|
|
7
|
+
- [ ] `src/rdc/commands/vfs.py` — Add `_EXTRACTORS["bindings"]` with TSV formatter
|
|
8
|
+
- [ ] `tests/unit/test_vfs_router.py` — Add binding leaf route resolution tests
|
|
9
|
+
- [ ] `tests/unit/test_vfs_tree_cache.py` (or equivalent) — Add binding leaf node population tests
|
|
10
|
+
- [ ] `tests/unit/test_vfs_commands.py` — Add binding extractor TSV tests (T1-5, T1-6)
|
|
11
|
+
|
|
12
|
+
## DEV-2: diff --trace Phase Annotation (main agent — doc only)
|
|
13
|
+
|
|
14
|
+
- [ ] Obsidian `设计/命令总览.md` — Change Phase `"4"` to `"5C"` on the `diff --trace` and `diff --trace-all` lines (lines 165–166)
|
|
15
|
+
|
|
16
|
+
## DEV-3: --listen Connect Hint (Agent B — worktree)
|
|
17
|
+
|
|
18
|
+
- [ ] `src/rdc/commands/session.py` — Add `"connect with:"` output line after the token line in `--listen` mode
|
|
19
|
+
- [ ] `tests/unit/test_split_core.py` — Add assertion for `"connect with:"` line in `test_listen_outputs_connection_info`
|
|
20
|
+
|
|
21
|
+
## Post-implementation
|
|
22
|
+
|
|
23
|
+
- [ ] Merge worktree outputs back to feature branch
|
|
24
|
+
- [ ] Run `pixi run lint && pixi run test` — zero failures allowed
|
|
25
|
+
- [ ] New Opus subagent code review
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
# Test Plan: Design Deviation Fixes (DEV-1, DEV-2, DEV-3)
|
|
2
|
+
|
|
3
|
+
## DEV-1: VFS Binding Leaf Node Route
|
|
4
|
+
|
|
5
|
+
### `tests/unit/test_vfs_router.py` — router resolution
|
|
6
|
+
|
|
7
|
+
| ID | Component | Description | Expected Result |
|
|
8
|
+
|----|-----------|-------------|-----------------|
|
|
9
|
+
| T1-1 | VFS router | `resolve_path("/draws/142/bindings/0/0")` | Returns `PathMatch(kind="leaf", handler="bindings", args={"eid": 142, "set": 0, "binding": 0})` |
|
|
10
|
+
| T1-2 | VFS router | `resolve_path("/draws/142/bindings/0/5")` | Returns `PathMatch(kind="leaf", handler="bindings", args={"eid": 142, "set": 0, "binding": 5})` |
|
|
11
|
+
|
|
12
|
+
### `tests/unit/test_vfs_tree_cache.py` — tree population
|
|
13
|
+
|
|
14
|
+
| ID | Component | Description | Expected Result |
|
|
15
|
+
|----|-----------|-------------|-----------------|
|
|
16
|
+
| T1-3 | Tree cache | `populate_draw_subtree` called for a draw with bindings | Creates child nodes at path `bindings/{set}/{binding}` for each descriptor |
|
|
17
|
+
| T1-4 | Tree cache | Binding child nodes structure | Each binding child has `kind="leaf"` and `name` equal to the binding slot number as a string |
|
|
18
|
+
|
|
19
|
+
### `tests/unit/test_vfs_commands.py` — extractor behavior
|
|
20
|
+
|
|
21
|
+
| ID | Component | Description | Expected Result |
|
|
22
|
+
|----|-----------|-------------|-----------------|
|
|
23
|
+
| T1-5 | VFS extractor | `_EXTRACTORS["bindings"]` called with valid rows | Formats output as TSV with header line `EID\tSTAGE\tKIND\tSET\tSLOT\tNAME` followed by data rows |
|
|
24
|
+
| T1-6 | VFS extractor | `_EXTRACTORS["bindings"]` called with empty rows list | Returns only the header line with no data rows and no error |
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## DEV-2: `diff --trace` Phase Annotation (doc-only)
|
|
29
|
+
|
|
30
|
+
| ID | Component | Description | Expected Result |
|
|
31
|
+
|----|-----------|-------------|-----------------|
|
|
32
|
+
| T2-1 | Documentation | Manual check of `设计/命令总览.md` for `diff --trace` entries | Phase annotation shows `5C` (changed from `4`) for all `diff --trace` command lines |
|
|
33
|
+
|
|
34
|
+
No automated code tests required for this item.
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## DEV-3: `--listen` "connect with:" Output Line
|
|
39
|
+
|
|
40
|
+
### `tests/unit/test_split_core.py` — CLI output assertions
|
|
41
|
+
|
|
42
|
+
| ID | Component | Description | Expected Result |
|
|
43
|
+
|----|-----------|-------------|-----------------|
|
|
44
|
+
| T3-1 | `--listen` output | `test_listen_outputs_connection_info` asserts "connect with:" line | Output contains the line `connect with: rdc open --connect 0.0.0.0:9999 --token secret123` |
|
|
45
|
+
| T3-2 | `--listen` output | Existing host/port/token line assertions still pass | Output still contains separate host, port, and token lines (no regression) |
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
# Dev Install Enhancement
|
|
2
|
+
|
|
3
|
+
**Date**: 2026-02-28
|
|
4
|
+
**Priority**: P3
|
|
5
|
+
|
|
6
|
+
## Motivation
|
|
7
|
+
|
|
8
|
+
`pixi run install` currently executes a single `uv tool install -e . --force`, placing the `rdc` binary at `~/.local/bin/rdc`. Shell tab-completion — one of the primary developer ergonomics features — is entirely absent from this flow. After installing, users must discover the `rdc completion` subcommand, know their shell's completion drop-in directory, redirect output manually, and reload their shell.
|
|
9
|
+
|
|
10
|
+
The project's `pixi.toml` also omits `win-64` from its platform list. Windows developers cannot create a pixi environment at all, even though the Python code and `uv` itself are cross-platform. Adding `win-64` unblocks Windows contributors.
|
|
11
|
+
|
|
12
|
+
Both gaps can be resolved in a single changeset: replace the one-liner `install` task with a Python script `scripts/dev_install.py` that orchestrates the full install sequence (binary + completions).
|
|
13
|
+
|
|
14
|
+
## Scope
|
|
15
|
+
|
|
16
|
+
| ID | Component | Kind | Priority |
|
|
17
|
+
|----|-----------|------|----------|
|
|
18
|
+
| DI-1 | `scripts/dev_install.py` (new) | Feature | P3 |
|
|
19
|
+
| DI-2 | `pixi.toml` — `install` task + `win-64` platform | Config change | P3 |
|
|
20
|
+
|
|
21
|
+
## Design
|
|
22
|
+
|
|
23
|
+
### DI-1: scripts/dev_install.py
|
|
24
|
+
|
|
25
|
+
The script runs via `uv run python scripts/dev_install.py`, giving it full access to the project's Python environment. It directly imports completion generation from `rdc.commands.completion` instead of shelling out to `rdc completion`, eliminating the PATH dependency.
|
|
26
|
+
|
|
27
|
+
**Step 1 — binary install**
|
|
28
|
+
|
|
29
|
+
```python
|
|
30
|
+
subprocess.run(["uv", "tool", "install", "-e", ".", "--force"], check=True)
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
Exits with a non-zero code if `uv` fails, propagating the error naturally.
|
|
34
|
+
|
|
35
|
+
**Step 2 — shell detection**
|
|
36
|
+
|
|
37
|
+
Reuse and extend `rdc.commands.completion._detect_shell()` to handle Windows:
|
|
38
|
+
|
|
39
|
+
```python
|
|
40
|
+
def _detect_shell() -> str:
|
|
41
|
+
if sys.platform == "win32":
|
|
42
|
+
return "powershell"
|
|
43
|
+
name = Path(os.environ.get("SHELL", "bash")).name
|
|
44
|
+
return name if name in {"bash", "zsh", "fish"} else "bash"
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
This aligns with the existing `_detect_shell()` in `completion.py` which falls back to `"bash"` when `$SHELL` is unset or unrecognized.
|
|
48
|
+
|
|
49
|
+
**Step 3 — completion generation (direct import)**
|
|
50
|
+
|
|
51
|
+
```python
|
|
52
|
+
from rdc.commands.completion import _generate
|
|
53
|
+
|
|
54
|
+
completion_text = _generate(shell)
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
This reuses the existing tested code, including bash/zsh patches. No subprocess call to `rdc` is needed.
|
|
58
|
+
|
|
59
|
+
**Step 4 — write to platform-standard location**
|
|
60
|
+
|
|
61
|
+
| Shell | Target path |
|
|
62
|
+
|-------|-------------|
|
|
63
|
+
| bash | `~/.local/share/bash-completion/completions/rdc` |
|
|
64
|
+
| zsh | `~/.zfunc/_rdc` |
|
|
65
|
+
| fish | `~/.config/fish/completions/rdc.fish` |
|
|
66
|
+
| powershell | instructions printed to stdout only |
|
|
67
|
+
|
|
68
|
+
Parent directories are created via `Path.mkdir(parents=True, exist_ok=True)`.
|
|
69
|
+
|
|
70
|
+
**Step 5 — summary**
|
|
71
|
+
|
|
72
|
+
```text
|
|
73
|
+
[ok] rdc installed via uv tool install
|
|
74
|
+
[ok] zsh completion written to ~/.zfunc/_rdc
|
|
75
|
+
hint: add 'fpath=(~/.zfunc $fpath)' and 'autoload -Uz compinit && compinit' to ~/.zshrc
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
For zsh, the script always prints the fpath hint (harmless if already configured, avoids unreliable detection of zsh's `$fpath` array which is not exported as an environment variable).
|
|
79
|
+
|
|
80
|
+
For PowerShell, the script prints a note directing users to `rdc completion --help`.
|
|
81
|
+
|
|
82
|
+
**Full script skeleton**:
|
|
83
|
+
|
|
84
|
+
```python
|
|
85
|
+
#!/usr/bin/env python3
|
|
86
|
+
"""Developer install: uv tool install + shell completion setup."""
|
|
87
|
+
|
|
88
|
+
from __future__ import annotations
|
|
89
|
+
|
|
90
|
+
import os
|
|
91
|
+
import shutil
|
|
92
|
+
import subprocess
|
|
93
|
+
import sys
|
|
94
|
+
from pathlib import Path
|
|
95
|
+
|
|
96
|
+
_COMPLETION_PATHS: dict[str, Path] = {
|
|
97
|
+
"bash": Path.home() / ".local/share/bash-completion/completions/rdc",
|
|
98
|
+
"zsh": Path.home() / ".zfunc/_rdc",
|
|
99
|
+
"fish": Path.home() / ".config/fish/completions/rdc.fish",
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
def _detect_shell() -> str: ...
|
|
103
|
+
def _install_binary() -> None: ...
|
|
104
|
+
def _install_completion(shell: str) -> None: ...
|
|
105
|
+
|
|
106
|
+
if __name__ == "__main__":
|
|
107
|
+
_install_binary()
|
|
108
|
+
shell = _detect_shell()
|
|
109
|
+
_install_completion(shell)
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### DI-2: pixi.toml changes
|
|
113
|
+
|
|
114
|
+
**Platform list** — add `win-64`:
|
|
115
|
+
|
|
116
|
+
```toml
|
|
117
|
+
platforms = ["linux-64", "osx-arm64", "osx-64", "win-64"]
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
**Install task**:
|
|
121
|
+
|
|
122
|
+
```toml
|
|
123
|
+
install = "uv run python scripts/dev_install.py"
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
Note: `pixi.lock` will be regenerated to include `win-64` packages. The main dependencies (`python`, `uv`) are available on `win-64` via conda-forge. The `osx-*` target-specific deps (`cmake`, `autoconf`, etc.) do not affect `win-64`.
|
|
127
|
+
|
|
128
|
+
## Risks
|
|
129
|
+
|
|
130
|
+
**Completion generation failure**: If `_generate()` raises (e.g., due to a Click version incompatibility), the error is caught and reported as a warning. The binary install is already complete, so the user has a working `rdc` — just without completions. Non-fatal.
|
|
131
|
+
|
|
132
|
+
**zsh `fpath` not configured**: Writing `~/.zfunc/_rdc` only takes effect if the user's `.zshrc` loads `~/.zfunc` via `fpath`. The script always prints the required snippet. Subsequent installs are silent about this.
|
|
133
|
+
|
|
134
|
+
**File write permissions**: On some systems, completion directories may have restricted permissions. The script catches `PermissionError` and prints a warning with the manual command, then continues.
|
|
135
|
+
|
|
136
|
+
**Windows pixi lock growth**: Adding `win-64` causes pixi to resolve packages for a new platform. The lock file grows. Existing CI on Linux/macOS is unaffected. `pixi.lock` changes must be verified on all platforms.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
# Tasks: Dev Install Enhancement
|
|
2
|
+
|
|
3
|
+
## Implementation (Opus worktree agent)
|
|
4
|
+
|
|
5
|
+
- [ ] `scripts/dev_install.py` — create Python script that runs `uv tool install`, detects shell, generates completion via direct import of `rdc.commands.completion._generate`, writes to platform-standard path for bash/zsh/fish (PowerShell prints instructions only), and prints summary
|
|
6
|
+
- [ ] `pixi.toml` — change `install` task to `"uv run python scripts/dev_install.py"`; add `"win-64"` to platforms
|
|
7
|
+
- [ ] `tests/unit/test_dev_install.py` — unit tests covering shell detection, completion file writing per shell, parent dir creation, uv install subprocess call, error handling (non-fatal completion failure, PermissionError), and end-to-end flow
|
|
8
|
+
|
|
9
|
+
## Post-implementation
|
|
10
|
+
|
|
11
|
+
- [ ] Merge worktree output back to feature branch
|
|
12
|
+
- [ ] Run `pixi run lint && pixi run test` — zero failures allowed
|
|
13
|
+
- [ ] New Opus subagent code review
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
# Test Plan: Dev Install Enhancement
|
|
2
|
+
|
|
3
|
+
## Shell Detection
|
|
4
|
+
|
|
5
|
+
### `tests/unit/test_dev_install.py`
|
|
6
|
+
|
|
7
|
+
| ID | Component | Description | Expected Result |
|
|
8
|
+
|----|-----------|-------------|-----------------|
|
|
9
|
+
| SD-1 | `_detect_shell` | `SHELL=/bin/zsh` | Returns `"zsh"` |
|
|
10
|
+
| SD-2 | `_detect_shell` | `SHELL=/usr/bin/bash` | Returns `"bash"` |
|
|
11
|
+
| SD-3 | `_detect_shell` | `SHELL=/usr/bin/fish` | Returns `"fish"` |
|
|
12
|
+
| SD-4 | `_detect_shell` | `SHELL` unset | Falls back to `"bash"` |
|
|
13
|
+
| SD-5 | `_detect_shell` | `sys.platform == "win32"` | Returns `"powershell"` regardless of `SHELL` |
|
|
14
|
+
| SD-6 | `_detect_shell` | `SHELL=/usr/local/bin/zsh` (non-standard prefix) | Returns `"zsh"` |
|
|
15
|
+
| SD-7 | `_detect_shell` | `SHELL=/usr/bin/tcsh` (unsupported shell) | Falls back to `"bash"` |
|
|
16
|
+
|
|
17
|
+
## Completion Installation
|
|
18
|
+
|
|
19
|
+
### `tests/unit/test_dev_install.py`
|
|
20
|
+
|
|
21
|
+
| ID | Component | Description | Expected Result |
|
|
22
|
+
|----|-----------|-------------|-----------------|
|
|
23
|
+
| CI-1 | `_install_completion` | bash → writes to `~/.local/share/bash-completion/completions/rdc` | File exists at correct path with expected content |
|
|
24
|
+
| CI-2 | `_install_completion` | zsh → writes to `~/.zfunc/_rdc` | File exists at correct path with expected content |
|
|
25
|
+
| CI-3 | `_install_completion` | fish → writes to `~/.config/fish/completions/rdc.fish` | File exists at correct path with expected content |
|
|
26
|
+
| CI-4 | `_install_completion` | parent directory does not exist → created automatically | Parent dirs created; file written successfully |
|
|
27
|
+
| CI-5 | `_install_completion` | powershell → no file written, prints instructions | No file created; stdout contains instruction text |
|
|
28
|
+
| CI-6 | `_install_completion` | existing completion file is overwritten | File updated with new content |
|
|
29
|
+
| CI-7 | `_install_completion` | zsh completion prints fpath hint | stdout contains fpath snippet |
|
|
30
|
+
|
|
31
|
+
## UV Tool Install
|
|
32
|
+
|
|
33
|
+
### `tests/unit/test_dev_install.py`
|
|
34
|
+
|
|
35
|
+
| ID | Component | Description | Expected Result |
|
|
36
|
+
|----|-----------|-------------|-----------------|
|
|
37
|
+
| UV-1 | `_install_binary` | calls subprocess with `["uv", "tool", "install", "-e", ".", "--force"]` | `subprocess.run` invoked with exact args and `check=True` |
|
|
38
|
+
| UV-2 | `_install_binary` | `CalledProcessError` → propagates | Exception raised; subsequent steps not executed |
|
|
39
|
+
|
|
40
|
+
## Error Handling
|
|
41
|
+
|
|
42
|
+
### `tests/unit/test_dev_install.py`
|
|
43
|
+
|
|
44
|
+
| ID | Component | Description | Expected Result |
|
|
45
|
+
|----|-----------|-------------|-----------------|
|
|
46
|
+
| EH-1 | `_install_completion` | `_generate()` raises → non-fatal | Warning printed; script continues; no file written |
|
|
47
|
+
| EH-2 | `_install_completion` | file write `PermissionError` → non-fatal | Warning printed; script continues |
|
|
48
|
+
|
|
49
|
+
## End-to-End Flow
|
|
50
|
+
|
|
51
|
+
### `tests/unit/test_dev_install.py`
|
|
52
|
+
|
|
53
|
+
| ID | Component | Description | Expected Result |
|
|
54
|
+
|----|-----------|-------------|-----------------|
|
|
55
|
+
| E2E-1 | `main` | full flow with mocked subprocess and `_generate` | Binary install runs first, then shell detected, completion written, summary printed |
|
|
56
|
+
| E2E-2 | `main` | binary install fails → completion install skipped | Only error from uv install shown; no completion attempt |
|