Safety-aware Maya scene organization for production handoff
A lightweight Maya Python utility being built to turn hard-to-read scene hierarchies into reviewable handoff structure.
Before validation, production needs readable structure.
Maya Production Pipeliner is a small Maya-native tooling project focused on one practical problem: making scene structure easier to read before deeper validation, export, review, or downstream handoff begins.
The tool is being built to:
- scan scene facts;
- classify objects into handoff routes;
- preserve unsafe content by default;
- preview planned actions through Dry Run;
- gate future Apply behavior behind explicit safety rules;
- write traceable TXT and JSON reports.
This repository is not a general validation framework, exporter, publisher, rig repair tool, material fixer, or studio pipeline replacement.
Maya scenes often become operationally messy before they become technically invalid. Production meshes, utilities, references, hidden objects, instanced geometry, rig-sensitive content, material issues, duplicate names, and previous tool output can all coexist in the same Outliner.
This project exists to make that first layer readable and reportable before anyone trusts later pipeline steps.
This repository is still in controlled implementation.
| Area | Status |
|---|---|
| Scope contract | Locked at v1.1.3 |
| Core runtime | Implemented in slices |
| Dry Run | Implemented and validated in focused checklist slices |
| Apply | Creates group structure and moves eligible routed objects; mayapy-validated through Phase 8c |
| Mutating Apply (full) | Group creation, movement, idempotency, failure handling, and leaf reclassification validated; release gate closed |
| UI | Minimal UI implemented; Dry Run and Apply smoke validated in Maya 2027.1 |
| Release status | Not release-ready |
Treat planned behavior as planned until code and manual Maya validation evidence are both present in the repository.
Scan scene facts
-> classify route decisions
-> build a route plan
-> preserve unsafe content
-> execute through Dry Run or Apply
-> write TXT/JSON reports
Current safety posture:
- Dry Run is strictly observational and non-mutating.
- Apply creates or reuses the output group structure and moves eligible routed objects into their target groups. Protected content — referenced nodes, instanced geometry, rig/deformer-sensitive objects — remains report-only and is never moved.
- Idempotency and already-in-target detection are validated. Leaf reclassification after user edits is the remaining open case.
This project favors preservation over convenience.
Unsafe or unclear content should be preserved and reported rather than moved. Referenced nodes, instanced geometry, rig/deformer-sensitive content, internal tool structure, and other unsafe cases are intentionally handled conservatively.
For the architecture rationale and future Apply boundaries, see the linked docs below rather than treating this README as the full contract.
The README is the public entry point. Deeper material lives in focused docs.
| Document | Purpose |
|---|---|
docs/usage.md |
Public usage model, scope modes, execution modes, and launch expectations |
docs/architecture/pipeline_overview.md |
Pipeline flow, module boundaries, output structure, and architecture graph |
docs/reference/data_contracts.md |
ObjectRecord, RouteDecision, RunResult, and operation status reference |
docs/reference/reporting.md |
TXT/JSON report structure, warning model, and report path behavior |
docs/architecture/apply_safety_contract.md |
Current Apply preflight boundary and future Safe Apply contract |
docs/architecture/defensive_design.md |
Defensive design rationale and risk framing |
docs/planning/frozen_scope_contract_v1.1.3.md |
Scope authority, boundaries, and frozen contract details |
docs/planning/implementation_plan.md |
Build order, gates, and implementation phases |
docs/testing/manual_test_checklist.md |
Manual Maya validation evidence by slice |
docs/planning/project_bible_v1.1.3.md |
Original product rationale and development context |
Functional installation guidance is still conservative by design.
Current intended manual setup:
- Clone or download this repository.
- Add the repository root to Maya's Python path using a local Maya path setup method such as
userSetup.pyor a.pthfile. - Launch Maya and call the public launcher from the Script Editor.
Intended launch pattern:
from maya_production_pipeliner import launcher
launcher.launch()Treat that launch path as the intended public interface, not as proof of a finished end-user installation flow.
Current limitations include:
- Apply moves eligible routed objects and is idempotent; leaf reclassification after user edits is not yet validated;
- no claim of production-ready or release-ready behavior;
- no promise of full validation, publishing, export correctness, shader repair, namespace conflict resolution, telemetry, or generalized pipeline runtime features;
- no guarantee that every planned feature in the frozen scope is already implemented.
Examples and planning docs may describe target behavior. The manual checklist and runtime code are the sources to consult for what has actually been validated.
MIT License. See LICENSE.
Designed and developed by Gustavo Henrique Banck.
This is a public development repository. Implementation status is tracked openly as the tool is built in small vertical slices.