dcc-mcp-shogun 0.2.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. dcc_mcp_shogun-0.2.0/.gitignore +10 -0
  2. dcc_mcp_shogun-0.2.0/.release-please-manifest.json +3 -0
  3. dcc_mcp_shogun-0.2.0/LICENSE +21 -0
  4. dcc_mcp_shogun-0.2.0/PKG-INFO +143 -0
  5. dcc_mcp_shogun-0.2.0/README.md +117 -0
  6. dcc_mcp_shogun-0.2.0/docs/showcase.md +59 -0
  7. dcc_mcp_shogun-0.2.0/examples/showcase/assets/dcc-mcp-shogun-showcase.bvh +370 -0
  8. dcc_mcp_shogun-0.2.0/examples/showcase/generate_showcase_bvh.py +213 -0
  9. dcc_mcp_shogun-0.2.0/pyproject.toml +66 -0
  10. dcc_mcp_shogun-0.2.0/release-please-config.json +18 -0
  11. dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/__init__.py +17 -0
  12. dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/__version__.py +1 -0
  13. dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/dispatcher.py +22 -0
  14. dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/runtime.py +494 -0
  15. dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/sdk.py +262 -0
  16. dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/server.py +157 -0
  17. dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skill_result.py +24 -0
  18. dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-files/SKILL.md +38 -0
  19. dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-files/scripts/export_motion.py +16 -0
  20. dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-files/scripts/import_motion.py +27 -0
  21. dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-files/scripts/save_scene.py +16 -0
  22. dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-files/tools.yaml +88 -0
  23. dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-processing/SKILL.md +37 -0
  24. dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-processing/scripts/_result.py +3 -0
  25. dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-processing/scripts/_run.py +5 -0
  26. dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-processing/scripts/auto_label.py +17 -0
  27. dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-processing/scripts/fix_occlusion.py +17 -0
  28. dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-processing/scripts/inspect_processing_settings.py +18 -0
  29. dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-processing/scripts/reconstruct.py +17 -0
  30. dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-processing/scripts/retarget.py +17 -0
  31. dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-processing/scripts/solve.py +17 -0
  32. dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-processing/tools.yaml +143 -0
  33. dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-scene/SKILL.md +35 -0
  34. dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-scene/scripts/_result.py +3 -0
  35. dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-scene/scripts/get_bone_details.py +22 -0
  36. dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-scene/scripts/get_constraint_details.py +16 -0
  37. dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-scene/scripts/get_subject_parameter.py +16 -0
  38. dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-scene/scripts/get_trajectory_at_frame.py +17 -0
  39. dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-scene/scripts/get_trajectory_window.py +16 -0
  40. dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-scene/scripts/inspect_scene.py +21 -0
  41. dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-scene/scripts/list_bones.py +18 -0
  42. dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-scene/scripts/list_constraints.py +16 -0
  43. dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-scene/scripts/list_markers.py +15 -0
  44. dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-scene/scripts/list_subject_parameters.py +16 -0
  45. dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-scene/tools.yaml +252 -0
  46. dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-timeline/SKILL.md +33 -0
  47. dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-timeline/scripts/_result.py +3 -0
  48. dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-timeline/scripts/clear_time_selection.py +18 -0
  49. dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-timeline/scripts/inspect_timeline.py +18 -0
  50. dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-timeline/scripts/select_time_range.py +18 -0
  51. dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-timeline/scripts/set_current_frame.py +18 -0
  52. dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-timeline/scripts/set_play_range.py +18 -0
  53. dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/skills/shogun-timeline/tools.yaml +111 -0
  54. dcc_mcp_shogun-0.2.0/src/dcc_mcp_shogun/state.py +28 -0
  55. dcc_mcp_shogun-0.2.0/tests/test_package.py +138 -0
  56. dcc_mcp_shogun-0.2.0/tests/test_runtime.py +427 -0
  57. dcc_mcp_shogun-0.2.0/tests/test_sdk.py +77 -0
  58. dcc_mcp_shogun-0.2.0/tests/test_skill_results.py +33 -0
  59. dcc_mcp_shogun-0.2.0/tests/test_state.py +27 -0
  60. dcc_mcp_shogun-0.2.0/tools/lint_skills.py +19 -0
@@ -0,0 +1,10 @@
1
+ /.pytest_cache/
2
+ /.ruff_cache/
3
+ /.venv/
4
+ /dist/
5
+ /dist-*/
6
+ /build/
7
+ /artifacts/
8
+ *.egg-info/
9
+ __pycache__/
10
+ *.py[cod]
@@ -0,0 +1,3 @@
1
+ {
2
+ ".": "0.2.0"
3
+ }
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 loonghao
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
@@ -0,0 +1,143 @@
1
+ Metadata-Version: 2.5
2
+ Name: dcc-mcp-shogun
3
+ Version: 0.2.0
4
+ Summary: Typed DCC-MCP adapter for Vicon Shogun Post motion-capture workflows
5
+ Author-email: loonghao <hal.long@outlook.com>
6
+ License: MIT
7
+ License-File: LICENSE
8
+ Keywords: animation,dcc,mcp,motion-capture,shogun,vicon
9
+ Classifier: Development Status :: 3 - Alpha
10
+ Classifier: License :: OSI Approved :: MIT License
11
+ Classifier: Operating System :: Microsoft :: Windows
12
+ Classifier: Programming Language :: Python :: 3
13
+ Classifier: Programming Language :: Python :: 3.9
14
+ Classifier: Programming Language :: Python :: 3.10
15
+ Classifier: Programming Language :: Python :: 3.11
16
+ Classifier: Programming Language :: Python :: 3.12
17
+ Classifier: Topic :: Multimedia :: Graphics :: 3D Modeling
18
+ Requires-Python: >=3.9
19
+ Requires-Dist: dcc-mcp-core<1.0.0,>=0.19.86
20
+ Provides-Extra: dev
21
+ Requires-Dist: build>=1.2; extra == 'dev'
22
+ Requires-Dist: pytest>=8; extra == 'dev'
23
+ Requires-Dist: ruff>=0.8; extra == 'dev'
24
+ Requires-Dist: twine>=6; extra == 'dev'
25
+ Description-Content-Type: text/markdown
26
+
27
+ # dcc-mcp-shogun
28
+
29
+ ![dcc-mcp-shogun brand lockup](docs/assets/dcc-mcp-shogun.svg)
30
+
31
+ [![CI](https://github.com/dcc-mcp/dcc-mcp-shogun/actions/workflows/ci.yml/badge.svg)](https://github.com/dcc-mcp/dcc-mcp-shogun/actions/workflows/ci.yml)
32
+ [![PyPI](https://img.shields.io/pypi/v/dcc-mcp-shogun.svg)](https://pypi.org/project/dcc-mcp-shogun/)
33
+ [![Python](https://img.shields.io/pypi/pyversions/dcc-mcp-shogun.svg)](https://pypi.org/project/dcc-mcp-shogun/)
34
+
35
+ A typed, local-first DCC-MCP adapter for Vicon Shogun Post motion-capture
36
+ inspection, timeline control, bounded processing, and file workflows.
37
+
38
+ ![Motion data to typed tools to verified scene](docs/images/shogun-scene-showcase.webp)
39
+
40
+ The adapter uses Vicon's official local `ViconShogunPost` control-stream SDK and
41
+ its `Timeline` and `Offline` interfaces. It does not expose arbitrary Python or
42
+ HSL execution. Application controls not exposed by the SDK remain an explicit,
43
+ exact-window DCC UI Control fallback.
44
+
45
+ Shogun Post ships an external Python SDK. The adapter runs in its own Python
46
+ process and connects to the application's local control stream; it does not rely
47
+ on a general-purpose Python interpreter embedded in the Shogun Post UI.
48
+
49
+ ## Capabilities
50
+
51
+ - inspect path-redacted scene metadata and bounded subject lists;
52
+ - inspect subject markers, skeleton hierarchy, constraints, and static subject
53
+ parameters;
54
+ - query one marker trajectory value or an inclusive window of at most 2,000
55
+ frames;
56
+ - inspect and explicitly change current frame, selected time ranges, and play
57
+ range through the capability-gated `Timeline` interface;
58
+ - inspect a stable allowlist of processing settings and invoke reconstruct,
59
+ auto-label, occlusion fixing, solve, or retarget through the official
60
+ `Offline` interface;
61
+ - expose capability-gated import, save, and export calls that map directly to
62
+ the official SDK;
63
+ - register one Shogun Post GUI instance with the DCC-MCP local gateway.
64
+
65
+ The mutating surface is deliberately narrow. Processing requires an explicit
66
+ `current_frame` or `selected_ranges` scope; the complete play range is not an
67
+ available implicit default. The adapter does not expose scene replacement,
68
+ arbitrary HSL/Python execution, or raw trajectory writes. Existing outputs fail
69
+ closed unless `overwrite=true`, and public results omit full paths.
70
+
71
+ The read-only `shogun-scene` Skill is live-validated against Shogun Post 1.19.
72
+ That host build rejected the SDK's `ImportFile` call with `ControlError`, without
73
+ partially changing the scene. The separate `shogun-files` Skill therefore
74
+ remains explicitly host-build and license-capability gated: its tools are typed
75
+ and fail closed, but import/save/export are not claimed as live-supported on
76
+ 1.19.
77
+
78
+ The same 1.19 host exposes the official `Timeline` and `Offline` Python classes
79
+ but rejects their commands as invalid for that host application. The
80
+ `shogun-timeline` and `shogun-processing` Skills therefore remain explicitly
81
+ capability-gated: their schemas and SDK mappings are tested, while 1.19 support
82
+ is not claimed. A rejection is returned as a bounded typed error and never
83
+ triggers UI automation.
84
+
85
+ The implemented contracts follow Vicon's official
86
+ [Python SDK interface guide](https://vicon-help.atlassian.net/wiki/spaces/Shogun111/pages/13208701/Use%2BVicon%2BShogunPost%2BSDK%2Binterfaces)
87
+ and [HSL command reference](https://help.vicon.com/download/attachments/196380086/HSL%20scripting%20with%20Vicon%20Shogun.pdf).
88
+
89
+ ## Showcase
90
+
91
+ The repository includes an original, deterministic 240-frame BVH motion source
92
+ and generator under [`examples/showcase`](examples/showcase). It is intended for
93
+ reproducible import experiments without redistributing production capture data.
94
+
95
+ See [`docs/showcase.md`](docs/showcase.md) for the full launch, discovery,
96
+ inspection, and evidence workflow.
97
+
98
+ ## Local development
99
+
100
+ Start Vicon Shogun Post with your normal application launcher. Then install
101
+ this adapter in a Python environment that can import `dcc-mcp-core`:
102
+
103
+ ```powershell
104
+ python -m pip install -e ".[dev]"
105
+ dcc-mcp-shogun --host-pid <SHOGUN_POST_PID>
106
+ ```
107
+
108
+ The adapter discovers the official SDK beside the selected host process. An
109
+ operator can instead set `DCC_MCP_SHOGUN_SDK_PATH` to the SDK's `Win64`
110
+ directory. The adapter resolves the selected host process's control-stream
111
+ listener; `DCC_MCP_SHOGUN_CONTROL_PORT` may override it only when that port is
112
+ owned by the same host process.
113
+
114
+ The DCC-MCP listener uses an OS-assigned loopback port unless `--mcp-port` or
115
+ `DCC_MCP_SHOGUN_PORT` is explicitly set. Use `dcc-mcp-cli list`, `search`,
116
+ `describe`, and `call` rather than storing the resolved endpoint.
117
+
118
+ ## Validation
119
+
120
+ ```powershell
121
+ python -m ruff check src tests tools
122
+ python -m ruff format --check src tests tools
123
+ python -m pytest
124
+ python tools/lint_skills.py
125
+ python -m build
126
+ ```
127
+
128
+ ## Privacy and safety
129
+
130
+ - Connections are limited to the local Shogun control stream.
131
+ - Tool results reduce file paths to base names.
132
+ - Errors report exception classes, not SDK install paths or machine details.
133
+ - The scene Skill is read-only; the file Skill exposes only bounded
134
+ import/save/export operations; processing never defaults to the full play
135
+ range.
136
+ - Authentication, licensing, UAC, and security dialogs are never automated.
137
+
138
+ Vicon and Shogun are trademarks of Vicon Motion Systems Ltd. This independent
139
+ adapter is not affiliated with or endorsed by Vicon.
140
+
141
+ ## License
142
+
143
+ MIT
@@ -0,0 +1,117 @@
1
+ # dcc-mcp-shogun
2
+
3
+ ![dcc-mcp-shogun brand lockup](docs/assets/dcc-mcp-shogun.svg)
4
+
5
+ [![CI](https://github.com/dcc-mcp/dcc-mcp-shogun/actions/workflows/ci.yml/badge.svg)](https://github.com/dcc-mcp/dcc-mcp-shogun/actions/workflows/ci.yml)
6
+ [![PyPI](https://img.shields.io/pypi/v/dcc-mcp-shogun.svg)](https://pypi.org/project/dcc-mcp-shogun/)
7
+ [![Python](https://img.shields.io/pypi/pyversions/dcc-mcp-shogun.svg)](https://pypi.org/project/dcc-mcp-shogun/)
8
+
9
+ A typed, local-first DCC-MCP adapter for Vicon Shogun Post motion-capture
10
+ inspection, timeline control, bounded processing, and file workflows.
11
+
12
+ ![Motion data to typed tools to verified scene](docs/images/shogun-scene-showcase.webp)
13
+
14
+ The adapter uses Vicon's official local `ViconShogunPost` control-stream SDK and
15
+ its `Timeline` and `Offline` interfaces. It does not expose arbitrary Python or
16
+ HSL execution. Application controls not exposed by the SDK remain an explicit,
17
+ exact-window DCC UI Control fallback.
18
+
19
+ Shogun Post ships an external Python SDK. The adapter runs in its own Python
20
+ process and connects to the application's local control stream; it does not rely
21
+ on a general-purpose Python interpreter embedded in the Shogun Post UI.
22
+
23
+ ## Capabilities
24
+
25
+ - inspect path-redacted scene metadata and bounded subject lists;
26
+ - inspect subject markers, skeleton hierarchy, constraints, and static subject
27
+ parameters;
28
+ - query one marker trajectory value or an inclusive window of at most 2,000
29
+ frames;
30
+ - inspect and explicitly change current frame, selected time ranges, and play
31
+ range through the capability-gated `Timeline` interface;
32
+ - inspect a stable allowlist of processing settings and invoke reconstruct,
33
+ auto-label, occlusion fixing, solve, or retarget through the official
34
+ `Offline` interface;
35
+ - expose capability-gated import, save, and export calls that map directly to
36
+ the official SDK;
37
+ - register one Shogun Post GUI instance with the DCC-MCP local gateway.
38
+
39
+ The mutating surface is deliberately narrow. Processing requires an explicit
40
+ `current_frame` or `selected_ranges` scope; the complete play range is not an
41
+ available implicit default. The adapter does not expose scene replacement,
42
+ arbitrary HSL/Python execution, or raw trajectory writes. Existing outputs fail
43
+ closed unless `overwrite=true`, and public results omit full paths.
44
+
45
+ The read-only `shogun-scene` Skill is live-validated against Shogun Post 1.19.
46
+ That host build rejected the SDK's `ImportFile` call with `ControlError`, without
47
+ partially changing the scene. The separate `shogun-files` Skill therefore
48
+ remains explicitly host-build and license-capability gated: its tools are typed
49
+ and fail closed, but import/save/export are not claimed as live-supported on
50
+ 1.19.
51
+
52
+ The same 1.19 host exposes the official `Timeline` and `Offline` Python classes
53
+ but rejects their commands as invalid for that host application. The
54
+ `shogun-timeline` and `shogun-processing` Skills therefore remain explicitly
55
+ capability-gated: their schemas and SDK mappings are tested, while 1.19 support
56
+ is not claimed. A rejection is returned as a bounded typed error and never
57
+ triggers UI automation.
58
+
59
+ The implemented contracts follow Vicon's official
60
+ [Python SDK interface guide](https://vicon-help.atlassian.net/wiki/spaces/Shogun111/pages/13208701/Use%2BVicon%2BShogunPost%2BSDK%2Binterfaces)
61
+ and [HSL command reference](https://help.vicon.com/download/attachments/196380086/HSL%20scripting%20with%20Vicon%20Shogun.pdf).
62
+
63
+ ## Showcase
64
+
65
+ The repository includes an original, deterministic 240-frame BVH motion source
66
+ and generator under [`examples/showcase`](examples/showcase). It is intended for
67
+ reproducible import experiments without redistributing production capture data.
68
+
69
+ See [`docs/showcase.md`](docs/showcase.md) for the full launch, discovery,
70
+ inspection, and evidence workflow.
71
+
72
+ ## Local development
73
+
74
+ Start Vicon Shogun Post with your normal application launcher. Then install
75
+ this adapter in a Python environment that can import `dcc-mcp-core`:
76
+
77
+ ```powershell
78
+ python -m pip install -e ".[dev]"
79
+ dcc-mcp-shogun --host-pid <SHOGUN_POST_PID>
80
+ ```
81
+
82
+ The adapter discovers the official SDK beside the selected host process. An
83
+ operator can instead set `DCC_MCP_SHOGUN_SDK_PATH` to the SDK's `Win64`
84
+ directory. The adapter resolves the selected host process's control-stream
85
+ listener; `DCC_MCP_SHOGUN_CONTROL_PORT` may override it only when that port is
86
+ owned by the same host process.
87
+
88
+ The DCC-MCP listener uses an OS-assigned loopback port unless `--mcp-port` or
89
+ `DCC_MCP_SHOGUN_PORT` is explicitly set. Use `dcc-mcp-cli list`, `search`,
90
+ `describe`, and `call` rather than storing the resolved endpoint.
91
+
92
+ ## Validation
93
+
94
+ ```powershell
95
+ python -m ruff check src tests tools
96
+ python -m ruff format --check src tests tools
97
+ python -m pytest
98
+ python tools/lint_skills.py
99
+ python -m build
100
+ ```
101
+
102
+ ## Privacy and safety
103
+
104
+ - Connections are limited to the local Shogun control stream.
105
+ - Tool results reduce file paths to base names.
106
+ - Errors report exception classes, not SDK install paths or machine details.
107
+ - The scene Skill is read-only; the file Skill exposes only bounded
108
+ import/save/export operations; processing never defaults to the full play
109
+ range.
110
+ - Authentication, licensing, UAC, and security dialogs are never automated.
111
+
112
+ Vicon and Shogun are trademarks of Vicon Motion Systems Ltd. This independent
113
+ adapter is not affiliated with or endorsed by Vicon.
114
+
115
+ ## License
116
+
117
+ MIT
@@ -0,0 +1,59 @@
1
+ # Shogun MCP showcase
2
+
3
+ This showcase demonstrates a bounded motion-capture workflow without publishing
4
+ studio capture data, installation paths, machine names, or credentials.
5
+
6
+ ## What it proves
7
+
8
+ 1. Generate an original 240-frame, 30 FPS BVH motion source.
9
+ 2. Launch Shogun Post through the operator's normal package environment.
10
+ 3. Bind the adapter to one explicit Shogun Post PID and its owned control port.
11
+ 4. Discover the instance and its typed tools through `dcc-mcp-cli`.
12
+ 5. Inspect the active scene through Vicon's official external Python SDK.
13
+ 6. Probe the host's file-operation capability with the anonymous BVH through
14
+ the typed `shogun-files` Skill.
15
+ 7. Probe the official `Timeline` and `Offline` interfaces through their typed
16
+ Skills without running UI fallback.
17
+ 8. Continue to save/export only when the selected host build accepts the import;
18
+ otherwise retain the fail-closed result as compatibility evidence.
19
+
20
+ ## Reproduce
21
+
22
+ ```powershell
23
+ python examples/showcase/generate_showcase_bvh.py
24
+ dcc-mcp-shogun --host-pid <SHOGUN_POST_PID>
25
+ dcc-mcp-cli list
26
+ dcc-mcp-cli search scene --dcc-type shogun
27
+ dcc-mcp-cli call <instance>.shogun_scene__inspect_scene --json '{}' --wait
28
+ dcc-mcp-cli load-skill shogun-timeline --dcc-type shogun --instance-id <instance>
29
+ dcc-mcp-cli call <instance>.shogun_timeline__inspect_timeline --json '{}' --wait
30
+ dcc-mcp-cli load-skill shogun-processing --dcc-type shogun --instance-id <instance>
31
+ dcc-mcp-cli call <instance>.shogun_processing__inspect_processing_settings --json '{"section":"reconstruct"}' --wait
32
+ dcc-mcp-cli load-skill shogun-files --dcc-type shogun --instance-id <instance>
33
+ dcc-mcp-cli call <instance>.shogun_files__import_motion --json-file import.json --wait
34
+ ```
35
+
36
+ The generated asset is deterministic and safe to commit. It contains no actor,
37
+ production, or filesystem metadata. A real production scene is intentionally
38
+ not included.
39
+
40
+ ## Acceptance evidence
41
+
42
+ - the selected Shogun PID owns the resolved local control-stream listener;
43
+ - the adapter registers as `shogun` and reports Shogun Post 1.19;
44
+ - `inspect_scene` completes against the live application;
45
+ - Shogun Post 1.19 rejects the official SDK `ImportFile` call with
46
+ `ControlError`, and a follow-up typed inspection confirms no partial scene
47
+ mutation;
48
+ - import, save, and export implementations use only the official SDK and return
49
+ path-redacted result metadata, but are not presented as live-supported on
50
+ that host build;
51
+ - Shogun Post 1.19 rejects the official `Timeline` and `Offline` interface
52
+ commands as invalid for that host application; typed calls return bounded
53
+ errors, so support is not overclaimed and no processing mutation is attempted;
54
+ - returned scene paths are reduced to file names;
55
+ - vendor exceptions are reduced to exception class names without tracebacks;
56
+ - unit tests, skill validation, package build, metadata check, and CI all pass.
57
+
58
+ The illustration is an explanatory workflow graphic, not a Shogun screenshot.
59
+ Real-host acceptance retains separate CLI results and host-visible evidence.