feat: provenance de carpeta vs Workspace en 3D y Director - #89
Merged
Conversation
Los writers de Hunyuan3D, Rig, Director y canciones alternativas pasan output_folder para el directorio físico y no inventan workspace_id. Los IDs de job/task/pipeline van a execution; el GLB se conserva si falla el sidecar.
PR Review — Loreframe StudioRisk: medium Automated review from Findings
Changed files
CONTRIBUTING checklist
Posted by the repo PR review workflow. Re-runs on each push to the PR. |
Owner
Author
|
@cursor review |
There was a problem hiding this comment.
✅ Bugbot reviewed your changes and found no new issues!
Comment @cursor review or bugbot run to trigger another review on this PR
Reviewed by Cursor Bugbot for commit f7aad1e. Configure here.
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.
Objetivo
Aplica el contrato de dominio de #86 al flujo 3D + Director. PR cohesivo de writers de servicio (no
_launch_runtime.py). +691/−23.Contrato
workspace_id= ID opcional de colección Workspace. No se inventa a partir del nombre de un directorio.output_folder= nombre de la carpeta de salida física (nunca una ruta absoluta del host).workspacede jobs/pipelines en este código es el nombre de carpeta → se pasa comooutput_folder=.origin.actor/tool/capability. Actor ausente permaneceunknown, nunca se inventauser.generation.model, no origin.publish_generation_sidecar_best_effort).job_id,task_id,root_task_id,pipeline_iden correlaciones del sidecar →execution.*. El pipeline id de Director sigue forzandotool=director.Writers tocados
app/services/model3d_service.py— Hunyuan3D:output_folder=+model_type/provideren paramsapp/services/rig_service.py— mismo patrón,tool=rigapp/services/director_pipeline.py—_write_director_assembly_sidecarypersist_pipeline_output_timingapp/services/alternative_songs.py—save_sidecar/ remount: carpeta vs colección real (workspace_…); copia IDs de pipeline DirectorNo se toca Studio generate, Wizard, Series Lab, Comics ni
_launch_runtime.py.Tests
tests/test_model3d_rig_task_identity.py— carpeta sinworkspace_id, IDs enexecution, GLB sobrevive si el publish interno lanzatests/test_director_pipeline_timing.py— assembly/timing:output_folder,pipeline_id/job_id/task_idtests/test_alternative_songs.py— folder-only, colección real distinta, IDs de Director en remounttests/test_provenance_3d_director.py— writers vía helpers / sidecar parcheadotests/test_asset_manifest.pyyscripts/architecture_contracts.py— sin cambios de contratoLocal: 64 passed.
python scripts/architecture_contracts.pyok.No mezclar hasta CI verde.
Note
Medium Risk
Changes gallery manifest origin/execution fields across multiple production paths; incorrect prior
workspace_idusage could affect downstream provenance consumers, but scope is metadata writers with broad test coverage and no auth or payment logic.Overview
Aligns 3D, Rig, Director, and alternative-songs sidecar writers with the asset-manifest provenance contract:
workspace_idis only an optional Workspace collection (workspace_…), andoutput_folderis the physical output directory basename (never a host path).Hunyuan3D and rig jobs now publish with
output_folder=derived from the job’sworkspacestring, plusmodel_type/provideron generation params. Director assembly and timing persistence do the same, and they recordpipeline_id,job_id,task_id, androot_task_idon manifests forexecution.*correlation.Alternative songs resolves folder vs collection via
_sidecar_location(folder names are not invented as collections; real collection IDs are preserved on re-save). Remount sidecars copy Director pipeline/task IDs and default remountprovidertoffmpeg.Tests are updated and
test_provenance_3d_director.pyadds end-to-end checks (absolute paths stripped, folder-only origin, provenance round-trip).Reviewed by Cursor Bugbot for commit f7aad1e. Configure here.