Repository navigation
Implement FRONT-510 external CLI scene workflows - #2420
Merged
Merged
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Motivation
perastage-clican perform deterministic headless scene edits against an explicitly supplied.mvrinput and publish only to an explicitly supplied.mvroutput.--overwriteis explicitly requested.Description
perastage-cli scene <input.mvr> --output <output.mvr> --command <text> [--command <text> ...] [--overwrite] [--json]with deterministic ordered--commandexecution and optional JSON envelope output. (newcli/scene_command.{h,cpp}and CLI grammar/help updates).perastage::external_scene::Execute(newmvr/external_scene_workflow.cppand header) which acquires an MVR package, reads an isolated scene viamvr::AcquireImportPackage/mvr::ReadAcquiredMvrPackage, executes Console text lines through the sharedperastage_command_text_processor, and only on full success serializes a canonical snapshot and publishes it atomically to the requested output path.ProjectMutationHostthat reports dirty state without creating GUI Undo entries and preserves per-CommandMutationTransactionsemantics.ExportCanonicalSnapshotToFile) and split application-owned overloads intomvrexporter_application.cppso CLI uses the explicit-scene export path without consultingConfigManager.perastage_mvr_exportandperastage_external_scene_workflowtargets and wired the CLI support target to link the external-workflow consumer; adjusted CMake to keep exporter and read components in production targets rather than moving format logic intocli/.development_clifrontend truthfully exposes the implemented operations (scene.selection.clear→ full;scene.selection.update→ partial;scene.transform.position/rotation→ full).tests/perastage_cli_scene_test.pythat runs the builtperastage-cliagainst synthetic MVR fixtures and verifies transform, canonical export, package/resource retention, byte-for-byte source preservation, existing-destination protection, overwrite behavior, failure-safety, and same-input/output rejection; addedtests/check_external_scene_workflow_boundary.shto ensure the external workflow contains no GUI/ConfigManager or IPC dependencies; hooked tests into CTest.Testing
perastage_cli,perastage_cli_runner_test,perastage_cli_inspection_presentation_test,capability_catalog_test, and the new scene tests; targeted build and test runs were executed in CI-like local mode and completed successfully.PerastageCliRunner,PerastageCliInspectionPresentation,PerastageCliSmoke,PerastageCliInspect,PerastageCliScene,ExternalSceneWorkflowBoundary, andCapabilityCatalog; all targeted tests passed.tests/check_perastage_tree_modules.sh,tests/check_no_configmanager_get_in_gui.sh,python3 tests/check_source_file_size.py,python3 tests/check_repository_hygiene.py, and CLI boundary checks; all passed.If you want, I can open the formal pull request with this branch title and the summary above as the PR body, or iterate on the test cases, documentation wording, or CLI JSON envelope schema.
Codex Task