feat(projection): add ExecsByPath composite-key surface to ProjectedContainerProfile#812
feat(projection): add ExecsByPath composite-key surface to ProjectedContainerProfile#812entlein wants to merge 1 commit into
Conversation
…ontainerProfile 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 selected for processing (3)
✨ 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 |
|
@coderabbitai review Collective re-review request after applying your atomic-split advisory + rabbit-feedback fixes across the full SBOB upstream PR set. Each PR is now scoped to a single tier per your dependency map: Tier 0 (opens):
Tier 2 (execs):
Tier 3 (network):
Tier 4 (tamper/sign):
Umbrellas:
Please confirm atomicity per your earlier advisory and flag any remaining cross-PR coupling we missed. |
🧩 Analysis chain🏁 Script executed: Length of output: 9271
|
| PR | Verdict | Notes |
|---|---|---|
#812 (this) |
✅ atomic | Purely additive; no new imports; no changes to existing behaviour |
#807 → #812 |
✅ clean dep | #807 needs ExecsByPath present; #812 is the sole provider |
#808 → #812 |
#808 must drop its own ExecsByPath addition to avoid a merge conflict after #812 lands; confirm #808's PR description calls this out |
|
#812 → storage |
✅ no coupling | No new storage symbols imported; compiles against storage main today |
No other cross-PR coupling found in the files touched by #812.
✅ Actions performed
Review triggered.
Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.
This PR (R0040 args consumer) references dynamicpathdetector.CompareExecArgs, which ships in k8sstormcenter/storage's upstream-pr/sbob-execs branch (the storage sibling of kubescape/storage#322), not in any released kubescape/storage tag. The PR's existing go.mod pin (v0.0.258) does not contain it. Adds a replace directive to the sister branch's current tip (5e39d001 — feat(apis): add ExecCalls.ArgsRequired + MatchExecArgs to express 'no args'). Removed when the sister storage PR kubescape/storage#322 merges and a release ships CompareExecArgs. Companion to the stacking-on-NA-kubescape#812 cherry-pick (provides cp.ExecsByPath) in the previous commits on this branch. Resolves the matthyx 'does not build' blocker on PR kubescape#807 (2026-05-27).
This PR (R0040 args consumer) references dynamicpathdetector.CompareExecArgs, which ships in k8sstormcenter/storage's upstream-pr/sbob-execs branch (the storage sibling of kubescape/storage#322), not in any released kubescape/storage tag. The PR's existing go.mod pin (v0.0.258) does not contain it. Adds a replace directive to the sister branch's current tip (5e39d001 — feat(apis): add ExecCalls.ArgsRequired + MatchExecArgs to express 'no args'). Removed when the sister storage PR kubescape/storage#322 merges and a release ships CompareExecArgs. Companion to the stacking-on-NA-kubescape#812 cherry-pick (provides cp.ExecsByPath) in the previous commits on this branch. Resolves the matthyx 'does not build' blocker on PR kubescape#807 (2026-05-27). Signed-off-by: entlein <einentlein@gmail.com>
This PR (R0040 args consumer) references dynamicpathdetector.CompareExecArgs, which ships in k8sstormcenter/storage's upstream-pr/sbob-execs branch (the storage sibling of kubescape/storage#322), not in any released kubescape/storage tag. The PR's existing go.mod pin (v0.0.258) does not contain it. Adds a replace directive to the sister branch's current tip (5e39d001 — feat(apis): add ExecCalls.ArgsRequired + MatchExecArgs to express 'no args'). Removed when the sister storage PR kubescape/storage#322 merges and a release ships CompareExecArgs. Companion to the stacking-on-NA-kubescape#812 cherry-pick (provides cp.ExecsByPath) in the previous commits on this branch. Resolves the matthyx 'does not build' blocker on PR kubescape#807 (2026-05-27). Signed-off-by: entlein <einentlein@gmail.com>
This PR (R0040 args consumer) references dynamicpathdetector.CompareExecArgs, which ships in k8sstormcenter/storage's upstream-pr/sbob-execs branch (the storage sibling of kubescape/storage#322), not in any released kubescape/storage tag. The PR's existing go.mod pin (v0.0.258) does not contain it. Adds a replace directive to the sister branch's current tip (5e39d001 — feat(apis): add ExecCalls.ArgsRequired + MatchExecArgs to express 'no args'). Removed when the sister storage PR kubescape/storage#322 merges and a release ships CompareExecArgs. Companion to the stacking-on-NA-kubescape#812 cherry-pick (provides cp.ExecsByPath) in the previous commits on this branch. Resolves the matthyx 'does not build' blocker on PR kubescape#807 (2026-05-27). Signed-off-by: entlein <einentlein@gmail.com>
This PR (R0040 args consumer) references dynamicpathdetector.CompareExecArgs, which ships in k8sstormcenter/storage's upstream-pr/sbob-execs branch (the storage sibling of kubescape/storage#322), not in any released kubescape/storage tag. The PR's existing go.mod pin (v0.0.258) does not contain it. Adds a replace directive to the sister branch's current tip (5e39d001 — feat(apis): add ExecCalls.ArgsRequired + MatchExecArgs to express 'no args'). Removed when the sister storage PR kubescape/storage#322 merges and a release ships CompareExecArgs. Companion to the stacking-on-NA-kubescape#812 cherry-pick (provides cp.ExecsByPath) in the previous commits on this branch. Resolves the matthyx 'does not build' blocker on PR kubescape#807 (2026-05-27). Signed-off-by: entlein <einentlein@gmail.com>
This PR (R0040 args consumer) references dynamicpathdetector.CompareExecArgs, which ships in k8sstormcenter/storage's upstream-pr/sbob-execs branch (the storage sibling of kubescape/storage#322), not in any released kubescape/storage tag. The PR's existing go.mod pin (v0.0.258) does not contain it. Adds a replace directive to the sister branch's current tip (5e39d001 — feat(apis): add ExecCalls.ArgsRequired + MatchExecArgs to express 'no args'). Removed when the sister storage PR kubescape/storage#322 merges and a release ships CompareExecArgs. Companion to the stacking-on-NA-kubescape#812 cherry-pick (provides cp.ExecsByPath) in the previous commits on this branch. Resolves the matthyx 'does not build' blocker on PR kubescape#807 (2026-05-27). Signed-off-by: entlein <einentlein@gmail.com>
This PR (R0040 args consumer) references dynamicpathdetector.CompareExecArgs, which ships in k8sstormcenter/storage's upstream-pr/sbob-execs branch (the storage sibling of kubescape/storage#322), not in any released kubescape/storage tag. The PR's existing go.mod pin (v0.0.258) does not contain it. Adds a replace directive to the sister branch's current tip (5e39d001 — feat(apis): add ExecCalls.ArgsRequired + MatchExecArgs to express 'no args'). Removed when the sister storage PR kubescape/storage#322 merges and a release ships CompareExecArgs. Companion to the stacking-on-NA-kubescape#812 cherry-pick (provides cp.ExecsByPath) in the previous commits on this branch. Resolves the matthyx 'does not build' blocker on PR kubescape#807 (2026-05-27). Signed-off-by: entlein <einentlein@gmail.com>
|
will not be merged, will be subsumed into 807 |
…807) * feat(projection): add ExecsByPath composite-key surface to ProjectedContainerProfile Signed-off-by: entlein <einentlein@gmail.com> * path-wildcards: anchored trailing-* + per-endpoint port + R0040 args Signed-off-by: entlein <einentlein@gmail.com> * restoring ap_was_path_opened_with_flags Signed-off-by: entlein <einentlein@gmail.com> * apply rabbit feedback: align R0040 args consumer with rc1 final state Signed-off-by: entlein <einentlein@gmail.com> * build(go.mod): replace kubescape/storage with sister execs branch This PR (R0040 args consumer) references dynamicpathdetector.CompareExecArgs, which ships in k8sstormcenter/storage's upstream-pr/sbob-execs branch (the storage sibling of kubescape/storage#322), not in any released kubescape/storage tag. The PR's existing go.mod pin (v0.0.258) does not contain it. Adds a replace directive to the sister branch's current tip (5e39d001 — feat(apis): add ExecCalls.ArgsRequired + MatchExecArgs to express 'no args'). Removed when the sister storage PR kubescape/storage#322 merges and a release ships CompareExecArgs. Companion to the stacking-on-NA-#812 cherry-pick (provides cp.ExecsByPath) in the previous commits on this branch. Resolves the matthyx 'does not build' blocker on PR #807 (2026-05-27). Signed-off-by: entlein <einentlein@gmail.com> * test: add Test_32_UnexpectedProcessArguments + fixtures Signed-off-by: entlein <einentlein@gmail.com> * test: add Test_32_UnexpectedProcessArguments + fixtures Signed-off-by: entlein <einentlein@gmail.com> * build(go.mod): drop sister-branch replace; pin kubescape/storage v0.0.278 Storage PR kubescape/storage#322 (CompareExecArgs + MatchExecArgs + ExecCalls.ArgsRequired) merged to kubescape/storage main and a release was cut (v0.0.278, 2026-05-28). The k8sstormcenter sister-branch replace is no longer needed — pinning the real tag. Signed-off-by: entlein <einentlein@gmail.com> * fix(tests): de-duplicate Test_32 / file-header / package decl Previous Test_32 add appended the full umbrella component_test.go on top of the legitimate one, producing two //go:build directives, two package clauses, two import blocks and a triplicated Test_32 body. gofmt -e rejected the file at lines 1574, 1576, 4978, 5206. Truncates to the last legitimate line and re-appends only the Test_32 function from the umbrella branch. File parses clean, single instance of each top-level element. Resolves matthyx blocker (1) on PR #807 (2026-05-28). Signed-off-by: entlein <einentlein@gmail.com> * build(go.mod): tidy + pin runtime-spec v1.2.1 for -mod=readonly clean Storage v0.0.278 bump pulled in a transitive dep set that drove runtime-spec up to v1.3.0, which is incompatible with containerd v1.7.32's spec_opts.go (cannot use int64 as *int64). Upstream NA main runs on runtime-spec v1.2.1; pin it the same way here via replace so 'go test -mod=readonly' is clean (matthyx blocker 2 on PR #807, 2026-05-28). Also runs full mod tidy now that v0.0.278 has shipped — populates the transitive go.sum entries that were missing under the previous sister-branch replace, so CI's -mod=readonly accepts the module graph. Signed-off-by: entlein <einentlein@gmail.com> * fix(projection): ExecsByPath becomes path -> []argv-vectors Previous shape (map[string][]string) collapsed duplicate Path entries to the last seen, breaking merged profiles where mergeApplicationProfile legitimately appends multiple ExecCalls per path with distinct argv shapes. ap.was_executed_with_args silently rejected valid executions that matched any but the final entry (matthyx blocker 3 on PR #807, 2026-05-28). extractExecsByPath now appends each Args slice to a per-path list. wasExecutedWithArgs iterates the list and returns true when any vector matches via CompareExecArgs. The 'absent key means no argv constraint' back-compat semantic is unchanged. Cloned-slice invariant preserved. Updates TestApply_ExecsByPath_PopulatesFromSpec to assert the appended-list shape and the second-entry mutation invariant. Signed-off-by: entlein <einentlein@gmail.com> * test(mock): populate ExecsByPath in RuleObjectCacheMock projection Mirrors containerprofilecache.Apply's extractExecsByPath shape so exec-args unit tests exercise the real wildcard matcher instead of hitting the absent-key 'no argv constraint' back-compat fallback. Same per-Path append + nil→empty-slice rules. Fixes the four TestExecWithArgsWildcardInProfile cases that were silently returning true (back-compat) and getting marked as failing expected:false (sh -x wrong flag, ls -l no directory, echo goodbye world wrong literal anchor, curl --pass alice wrong literal). Signed-off-by: entlein <einentlein@gmail.com> * test 27 is for PR 807, test 32 is for PR 805, now swapping them , also go mod sync with main Signed-off-by: entlein <einentlein@gmail.com> * restoring earlier go dependencies Signed-off-by: entlein <einentlein@gmail.com> * go.mod dependencies Signed-off-by: entlein <einentlein@gmail.com> * adding strings in import Signed-off-by: entlein <einentlein@gmail.com> * rebase attempt 1 Signed-off-by: entlein <einentlein@gmail.com> * consolidating PRs 807 811 and 812 all into 807 Signed-off-by: entlein <einentlein@gmail.com> --------- Signed-off-by: entlein <einentlein@gmail.com> Co-authored-by: Entlein <eineintlein@gmail.com>
Adds
ExecsByPath map[string][]stringtoProjectedContainerProfile, populated byprojection_apply.Apply()fromcp.Spec.Execs. Nil sourceArgsprojects to an empty-but-non-nil slice, so the map distinguishes "path never recorded" (key absent) from "path recorded with no args" (key present,[]string{}).Required by node-agent#807. No new imports, no storage bump. Tests cover nil→empty projection, cloned-slice (no source aliasing), and last-write-wins on duplicate paths.