Status: Not started
Related: GH #1115, GH #1124
The PR controller uses 3 SSA field managers (packagerev-controller, packagerev-controller-render, packagerev-controller-kptfile) because updateStatus, updateRenderStatus, and updateKptfileFields apply disjoint field sets at different points in the reconcile loop. With SSA, a single field manager would release ownership of fields not included in a partial apply.
However, multiple field managers within one controller is unusual — it obscures ownership, increases etcd writes, and complicates the ownership table.
Fix: build a complete apply object containing all PR-controller-owned fields in every status patch, enabling a single field manager. Merge updateStatus + updateRenderStatus + updateKptfileFields (status portion) into one unified apply. The spec patch (readinessGates, packageMetadata) can also use the same manager.
Risk: fake clients don't implement managed fields tracking — regressions won't be caught by unit tests. Requires e2e integration tests that assert on managedFields entries, specifically validating the handoff from repository-controller-seed to packagerev-controller via ForceOwnership.
Acceptance Criteria:
PR controller uses a single field manager for all its writes
No SSA ownership conflicts with repo controller
Seeded fields correctly taken over on first render
e2e integration tests validate managedFields entries
Status: Not started
Related: GH #1115, GH #1124
The PR controller uses 3 SSA field managers (packagerev-controller, packagerev-controller-render, packagerev-controller-kptfile) because updateStatus, updateRenderStatus, and updateKptfileFields apply disjoint field sets at different points in the reconcile loop. With SSA, a single field manager would release ownership of fields not included in a partial apply.
However, multiple field managers within one controller is unusual — it obscures ownership, increases etcd writes, and complicates the ownership table.
Fix: build a complete apply object containing all PR-controller-owned fields in every status patch, enabling a single field manager. Merge updateStatus + updateRenderStatus + updateKptfileFields (status portion) into one unified apply. The spec patch (readinessGates, packageMetadata) can also use the same manager.
Risk: fake clients don't implement managed fields tracking — regressions won't be caught by unit tests. Requires e2e integration tests that assert on managedFields entries, specifically validating the handoff from repository-controller-seed to packagerev-controller via ForceOwnership.
Acceptance Criteria:
PR controller uses a single field manager for all its writes
No SSA ownership conflicts with repo controller
Seeded fields correctly taken over on first render
e2e integration tests validate managedFields entries