Safety, verification, and reports
CoCo Asset Flow is designed around explicit evidence and a deterministic write boundary.
Preview is read-only
Section titled “Preview is read-only”Preview scans Source, validates the saved Profile, builds the Plan, and writes JSON artifacts outside Assets.
It does not move, rename, delete, or change Unity assets.
Every Plan has an identity derived from its inputs and expected operations. Changing Source, Profile path, Profile content, or relevant project state invalidates an older Preview.
Apply requires confirmation
Section titled “Apply requires confirmation”Apply revalidates the current Source, Profile, and Plan before entering the transaction. The user must confirm the displayed Plan ID.
The Executor uses Unity AssetDatabase APIs and checks their error returns. It never edits .meta files directly.
Delete uses quarantine
Section titled “Delete uses quarantine”Delete does not immediately erase the source asset. It first moves the asset under:
Assets/CoCoAssetFlow_Quarantine/<RunId>Permanent deletion occurs only after staged-state verification succeeds.
Do not select the quarantine folder as Source or destination.
Rollback
Section titled “Rollback”Before relevant writes, the Executor records reverse paths, typed importer settings, generated assets, and content backups where required.
If a pre-commit failure occurs, it attempts to:
- reverse asset moves;
- restore changed Texture and FBX importer settings;
- restore Material and Prefab content when needed;
- remove generated outputs;
- restore quarantine state;
- verify paths, GUIDs, hashes, references, and settings.
Rollback does not use Git.
If rollback cannot prove full restoration, the Report marks it incomplete and keeps the diagnostic evidence.
Verification
Section titled “Verification”A successful run verifies:
- GUIDs: moved asset identity is preserved;
- references: Material/Texture and planned FBX Material relationships remain valid;
- importer settings: declared Texture and FBX values match;
- Prefab state: only declared component, Missing Script, and root-motion changes occurred;
- Material state: no undeclared Shader, keyword, value, or Texture-reference change occurred;
- generated assets: expected
.animor static Prefab outputs exist; - Source Empty: the Source contains no assets;
- idempotency: a second plan contains zero changes.
Unity may harmlessly reserialize some files. Canonical state comparison distinguishes supported representational normalization from undeclared semantic change. Unproven differences fail closed.
Report location
Section titled “Report location”Runs are written outside Assets:
CoCoAssetFlowReports/<SourceName>/<RunId>/Depending on the operation, the directory can contain:
asset-inventory.jsoncleanup-profile-validation.jsoncleanup-plan.jsonasset-inventory.after.jsoncleanup-report.jsoncanonical-state-audit.jsonPreview artifacts
Section titled “Preview artifacts”asset-inventory.json: scanned assets and relevant imported state.cleanup-profile-validation.json: Schema and semantic validation.cleanup-plan.json: complete deterministic Dry Run.
Apply artifacts
Section titled “Apply artifacts”asset-inventory.after.json: post-Apply state.cleanup-report.json: Applied, Skipped, Failed, Unsupported, rollback, and verification results.canonical-state-audit.json: detailed accepted normalization or rejected field differences when present.
Large failures are grouped by Diagnostic ID in the main Report. Complete field differences remain in the sidecar to avoid duplicating large exception payloads across every asset.
Read-only Batch entry points
Section titled “Read-only Batch entry points”Batch Scan:
-executeMethod Yunxee.CoCoAssetFlow.UnityEditor.CleanupBatch.RunScan-cleanupSource Assets/Imports/EnvironmentPackBatch Preview:
-executeMethod Yunxee.CoCoAssetFlow.UnityEditor.CleanupBatch.RunPreview-cleanupSource Assets/Imports/EnvironmentPack-cleanupProfile Assets/CoCoAssetFlow/Profiles/Default.cleanup.jsonThere is no Batch Apply entry point.