Introduce ScriptableRendererData dirty/invalidation support so renderer and feature caches can be released and rebuilt within the same managed asset runtime.
Add managed probes and scripting coverage for non-public dirty APIs and for renderer rebuild after invalidation, then archive the completed phase plan.
Introduce a formal ScriptableRendererData setup seam so renderer feature attachment is owned by renderer data instead of renderer constructors pulling feature caches.
Route lifecycle and reuse probes through the new setup path, lock the non-public setup seam in the API surface probe, and update scripting expectations accordingly.
Promote ScriptableRenderer renderer-recording context methods to the primary Universal execution seam and route the renderer-driven pipeline through that seam.
Update managed probes and scripting expectations to cover the new non-public renderer recording contract, and archive the completed phase plan.
Introduce renderer-driven and renderer-backed managed pipeline base types in the Universal package.
Move shared renderer-data/default-renderer ownership out of UniversalRenderPipelineAsset, migrate probe assets onto the generic seam, and expose renderer recording/request context types for future SRP expansion.
Update scripting API-surface expectations and validate with build, unit tests, scripting tests, and old editor smoke.
Expose native camera frame planning controls to managed pipeline assets and renderer features.
Allow managed planning to override fullscreen stage heuristics while keeping CameraFramePlan as the native execution contract.
Add scripting coverage, probe assets, and archive the phase plan after build, test, and editor smoke validation.
Invoke managed pipeline disposal and asset runtime cleanup from the native bridge lifecycle. Add Universal renderer and feature cleanup hooks plus regression probes to verify runtime cache teardown semantics.
Move shared managed ScriptableRenderPipeline instance ownership into MonoManagedRenderPipelineAssetRuntime.
Make stage recorders borrow the runtime-owned pipeline instead of creating and destroying private handles.
Add a regression test that locks one CreatePipeline call across multiple stage recorders.