profile-compaction: CollapseConfig CRD + projection overlay + user-maged lifecycle#325
profile-compaction: CollapseConfig CRD + projection overlay + user-maged lifecycle#325entlein wants to merge 2 commits into
Conversation
…naged lifecycle Signed-off-by: entlein <einentlein@gmail.com>
|
Warning Rate limit exceeded
You’ve run out of usage credits. Purchase more in the billing tab. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: ⛔ Files ignored due to path filters (17)
📒 Files selected for processing (23)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
… final state Signed-off-by: entlein <einentlein@gmail.com>
🧩 Analysis chain
🏁 Script executed: Length of output: 193 🏁 Script executed: Length of output: 208
Atomicity Assessment —
|
| Component | Justification |
|---|---|
| CRD types + v1beta1 conversion | Core — inseparable |
| Generated deepcopy / protobuf / openapi | Codegen artifacts — must travel with the type definition |
| Generated clientset / informers / listers | Codegen artifacts — must travel with the type definition |
| etcd registration | Required to make the resource storable — inseparable from CRD introduction |
applicationprofile_processor + containerprofile_processor |
First consumer in this repo — reasonable to bundle here |
pkg/registry/file/cleanup.go |
Logically cohesive (user-managed lifecycle gate) but is a separable concern |
artifacts/collapseconfiguration-default-sample.yaml |
Low-risk, conventional to ship with the CRD |
The only split worth flagging is that cleanup.go is a behavioral policy change independent of the CRD API surface. If you ever need to bisect a regression, that separation could help — but it is not a blocking concern.
Cross-PR Coupling Flags
🔴 Hard compile-time dependency: #325 → #323
applicationprofile_processor and containerprofile_processor in #325 import and call the CollapseConfig provider, whose Go types are introduced in #323. #325 cannot compile without #323's types in the target branch. This is your expected and correctly modeled Tier 0 → Tier 2 dependency.
Merge gate: #323 must be merged (or squashed per your advisory) before #325 can target main.
🟡 Same-tier ordering: #325 and #322
Both are Tier 2. If the processors in #325 reference exec-related types added by #322 (e.g., CompareExecArgs), you have an intra-tier ordering constraint. If the processors only depend on CollapseConfig (#323) and existing types, #322 and #325 are independently mergeable in any order after #323.
Recommend verifying: Do applicationprofile_processor or containerprofile_processor in #325 import anything from #322's CompareExecArgs surface? If yes, #322 must precede #325.
🟡 Cross-repo dependency: #325 → node-agent#808
The projection overlay in node-agent#808 presumably consumes the CollapseConfig CRD registered by #325. This is your expected Tier 2 → Tier 4 dependency. No action needed in #325 itself, but node-agent#808 cannot target a release that doesn't include #325.
✅ No coupling detected: #325 ↔ #324 (networkmatch)
The networkmatch package (Tier 3) operates on a distinct resource surface and shares no apparent file-level overlap with the CollapseConfig CRD or the exec processors.
Summary Table
`#323` (Tier 0) ──► `#325` (Tier 2) ──► node-agent#808 (Tier 4)
│
possible order dep
│
`#322` (Tier 2)
The tier structure is correct. The one item to double-check before merging #325 is whether its processors import any symbol from #322 — if so, serialize #322 before #325 within Tier 2.
✅ Actions performed
Full review triggered.
CollapseConfigCRD (v1beta1 with conversion, deepcopy, protobuf, openapi, generated clientset/informers/listers, etcd registration)lets cluster operators declare path-prefix policies that drive profile-compaction without code changes
applicationprofile_processor+containerprofile_processorconsume the CollapseConfig provider to choose per-profile collapse strategies at admission timepkg/registry/file/cleanup.go: cleanup loop skips user-managed resources (annotation-based marker, not labels —labels would silently miss every user-managed profile)
artifacts/collapseconfiguration-default-sample.yamlships a sample CR