Skip to content

🚀 deploy(release): sync main from dev/v1.6 for v1.6.0 - #214

Merged
scttbnsn merged 1 commit into
mainfrom
sync/v1.6.0
Aug 9, 2026
Merged

🚀 deploy(release): sync main from dev/v1.6 for v1.6.0#214
scttbnsn merged 1 commit into
mainfrom
sync/v1.6.0

Conversation

@scttbnsn

@scttbnsn scttbnsn commented Aug 9, 2026

Copy link
Copy Markdown
Contributor

Syncs main to the dev/v1.6 tip (9d8ea57) ahead of cutting v1.6.0 GA, per the release branch discipline: main only advances by merging from the active dev branch, immediately before each cut.

Everything here already landed on dev/v1.6 through CI-green PRs since the rc.1 sync (#200) and the rc.2 sync (#204): #206 (mktemp scratch dir, fixes #205), #207 (fuzz deadline-flake retry, fixes #198), #208 (bounded exec-inspect decode, fixes #188), #209 (weekly engine-matrix integration workflow, fixes #187), #210 (portwing/drydock preset conformance tests, fixes #196), #212 (tri-tool harness pinned to live /events + trigger contracts, fixes #211), #213 (GA promotion: changelog, README, chart + website version flips).

After merge:

  1. Tree-equality check must pass: git diff --quiet origin/main origin/dev/v1.6
  2. Re-run quality-tri-tool-conformance.yml from main against ghcr.io/codeswhat/sockguard:1.6.0-rc.1 — all 3 matrix rows must be green (RELEASING.md pre-GA gate)
  3. Only then cut the tag via release-cut.yml with release_tag: v1.6.0

Changelog

  • ✨ Added bounded exec-inspect response handling and tests.
  • ✨ Added Drydock and Portwing preset conformance tests.
  • ✨ Added weekly integration tests for Docker Engine versions 26.1.4, 28.0.4, 29.2.1, and 29.7.2.
  • ✨ Added fuzz deadline-flake retry handling.
  • ✨ Added v1.6.0 release content and v1.7.0 roadmap entries.
  • 🔧 Updated tri-tool conformance checks for /events and Drydock-triggered updates.
  • 🔧 Updated website comparisons for multiple listeners and native Podman libpod support.
  • 🔧 Updated Helm and website versions to 1.6.0.
  • 🔒 Preserved bounded response limits before exec-inspect JSON decoding.

Concerns

  • Verify origin/main and origin/dev/v1.6 have identical trees after merge.
  • Rerun tri-tool conformance against ghcr.io/codeswhat/sockguard:1.6.0-rc.1.
  • Create the v1.6.0 tag with release-cut.yml.
  • Confirm Docker Engine matrix legs validate the exact daemon versions and pinned BusyBox digest.
  • Confirm fuzz retries occur only for context deadline exceeded without a newly generated crasher.
  • Review conformance tests for any request path that bypasses default-deny middleware.

@vercel

vercel Bot commented Aug 9, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
sockguard-website Ready Ready Preview Aug 9, 2026 3:58am

@coderabbitai

coderabbitai Bot commented Aug 9, 2026

Copy link
Copy Markdown

Review Change Stack

Warning

Review limit reached

@scttbnsn, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 44 minutes

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: c4b2d461-05c9-4877-960a-dbf158d9f72d

📥 Commits

Reviewing files that changed from the base of the PR and between f734290 and 636fa64.

⛔ Files ignored due to path filters (1)
  • CHANGELOG.md is excluded by !CHANGELOG.md
📒 Files selected for processing (2)
  • .github/workflows/ci-verify.yml
  • README.md
📝 Walkthrough

Walkthrough

The PR adds Drydock and Portwing integration conformance suites, a Docker Engine version matrix workflow, and tri-tool assertion updates. It bounds exec-inspection response bodies before decoding. It refines fuzz retry handling. It updates project, chart, README, website comparison, and roadmap metadata for v1.6.0 and v1.7.0.

Possibly related issues

Possibly related PRs

  • CodesWhat/sockguard#134 — Directly relates to bounded and validated HTTP response handling in app/internal/filter/exec.go.
  • CodesWhat/sockguard#184 — The new preset tests cover classic build and BuildKit restrictions introduced by this PR.
  • CodesWhat/sockguard#197 — The tri-tool harness changes extend the same run-matrix.sh conformance flow.
🚥 Pre-merge checks | ✅ 2
✅ Passed checks (2 passed)
Check name Status Explanation
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch sync/v1.6.0

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 2

🧹 Nitpick comments (4)
app/integration/portwing_preset_conformance_test.go (2)

26-33: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Rename portwingPresetConfigPath to a family-neutral name.

newDrydockIntegrationPresetHandler in app/integration/drydock_preset_conformance_test.go calls this function and needs a comment to explain why a drydock helper uses a portwing-named function. Rename it to presetConfigPath and drop that explanation.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@app/integration/portwing_preset_conformance_test.go` around lines 26 - 33,
Rename the helper function portwingPresetConfigPath to presetConfigPath and
update all callers, including newDrydockIntegrationPresetHandler, to use the
family-neutral name. Remove the comment explaining the portwing-specific naming,
if present.

185-220: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Use bytes.NewReader(tarBody) instead of strings.NewReader(string(tarBody)).

Same nit as app/integration/drydock_preset_conformance_test.go. bytes is already imported here.

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@app/integration/portwing_preset_conformance_test.go` around lines 185 - 220,
Replace strings.NewReader(string(tarBody)) with bytes.NewReader(tarBody) in both
build request setups within the build-run-instruction-denied and
build-run-free-classic-build-allowed tests, reusing the existing bytes import.
app/integration/drydock_preset_conformance_test.go (2)

245-263: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low value

Use bytes.NewReader for the tar body.

strings.NewReader(string(tarBody)) copies the byte slice into a string first. bytes is already imported.

♻️ Proposed change
-		req := httptest.NewRequest(http.MethodPost, "/build", strings.NewReader(string(tarBody))).WithContext(ctx)
+		req := httptest.NewRequest(http.MethodPost, "/build", bytes.NewReader(tarBody)).WithContext(ctx)

Also applies to: 265-279

🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@app/integration/drydock_preset_conformance_test.go` around lines 245 - 263,
Update the request construction in the build-run-instruction-denied test and the
corresponding test around lines 265-279 to pass tarBody directly via
bytes.NewReader instead of converting it with
strings.NewReader(string(tarBody)).

95-146: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick win

Four identical helpers exist in two files of the same package. Both suites compile into package integration_test, so each pair can be a single shared helper. The deny/allow helpers and the tar helper differ only in name.

  • app/integration/drydock_preset_conformance_test.go#L95-L146: delete drydockBodyDenied and drydockBodyAllowed; call shared presetBodyDenied / presetBodyAllowed.
  • app/integration/drydock_preset_conformance_test.go#L209-L228: delete mustDrydockBuildContextTar; call the shared tar helper.
  • app/integration/portwing_preset_conformance_test.go#L71-L123: rename portwingBodyDenied / portwingBodyAllowed to presetBodyDenied / presetBodyAllowed and keep them as the single copy, or move them to a shared preset helpers file.
  • app/integration/portwing_preset_conformance_test.go#L225-L244: rename mustPortwingBuildContextTar to mustPresetBuildContextTar and keep it as the single copy.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

In `@app/integration/drydock_preset_conformance_test.go` around lines 95 - 146,
Remove the duplicate helpers and consolidate the shared implementations: in
app/integration/drydock_preset_conformance_test.go lines 95-146, delete
drydockBodyDenied and drydockBodyAllowed and update callers to presetBodyDenied
and presetBodyAllowed; in app/integration/drydock_preset_conformance_test.go
lines 209-228, delete mustDrydockBuildContextTar and use
mustPresetBuildContextTar. In
app/integration/portwing_preset_conformance_test.go lines 71-123, rename
portwingBodyDenied and portwingBodyAllowed to presetBodyDenied and
presetBodyAllowed as the retained shared implementations; in
app/integration/portwing_preset_conformance_test.go lines 225-244, rename
mustPortwingBuildContextTar to mustPresetBuildContextTar and update all callers.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In @.github/workflows/ci-verify.yml:
- Around line 407-413: Update the run_fuzz function to capture and return
PIPESTATUS[0] immediately after the go test and tee pipeline, preserving the go
test exit status so failures trigger crash handling.

In `@README.md`:
- Line 75: Update the README comparison block and its surrounding comparison
prose to reflect the shipped v1.6.0 state: change the libpod support and
multiple-listener rows from “Planned v1.6” to delivered/current status, and
revise the related CetusGuard advantage claims to match the website comparison
data’s ties. Preserve the existing comparison structure and terminology.

---

Nitpick comments:
In `@app/integration/drydock_preset_conformance_test.go`:
- Around line 245-263: Update the request construction in the
build-run-instruction-denied test and the corresponding test around lines
265-279 to pass tarBody directly via bytes.NewReader instead of converting it
with strings.NewReader(string(tarBody)).
- Around line 95-146: Remove the duplicate helpers and consolidate the shared
implementations: in app/integration/drydock_preset_conformance_test.go lines
95-146, delete drydockBodyDenied and drydockBodyAllowed and update callers to
presetBodyDenied and presetBodyAllowed; in
app/integration/drydock_preset_conformance_test.go lines 209-228, delete
mustDrydockBuildContextTar and use mustPresetBuildContextTar. In
app/integration/portwing_preset_conformance_test.go lines 71-123, rename
portwingBodyDenied and portwingBodyAllowed to presetBodyDenied and
presetBodyAllowed as the retained shared implementations; in
app/integration/portwing_preset_conformance_test.go lines 225-244, rename
mustPortwingBuildContextTar to mustPresetBuildContextTar and update all callers.

In `@app/integration/portwing_preset_conformance_test.go`:
- Around line 26-33: Rename the helper function portwingPresetConfigPath to
presetConfigPath and update all callers, including
newDrydockIntegrationPresetHandler, to use the family-neutral name. Remove the
comment explaining the portwing-specific naming, if present.
- Around line 185-220: Replace strings.NewReader(string(tarBody)) with
bytes.NewReader(tarBody) in both build request setups within the
build-run-instruction-denied and build-run-free-classic-build-allowed tests,
reusing the existing bytes import.
🪄 Autofix

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: a9578a9d-6694-425e-967b-5cffde0f042b

📥 Commits

Reviewing files that changed from the base of the PR and between 951d98a and f734290.

⛔ Files ignored due to path filters (1)
  • CHANGELOG.md is excluded by !CHANGELOG.md
📒 Files selected for processing (16)
  • .github/workflows/ci-verify.yml
  • .github/workflows/quality-integration-engines.yml
  • README.md
  • app/integration/drydock_preset_conformance_test.go
  • app/integration/portwing_preset_conformance_test.go
  • app/internal/filter/exec.go
  • app/internal/filter/exec_test.go
  • chart/sockguard/Chart.yaml
  • scripts/tri-tool-conformance/README.md
  • scripts/tri-tool-conformance/run-matrix.sh
  • website/src/app/data/comparison-rows.ts
  • website/src/app/page-data.test.mjs
  • website/src/lib/comparison-route-data/cetusguard.tsx
  • website/src/lib/comparison-route-data/linuxserver.tsx
  • website/src/lib/site-config.ts
  • website/src/lib/site-content.ts

Comment thread .github/workflows/ci-verify.yml
Comment thread README.md

@biggest-littlest biggest-littlest left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sync commit tree verified equal to dev/v1.6 tip (9d8ea57); all checks green.

Single sync commit on top of main carrying the dev/v1.6 tip tree (de8015b):
🔒 security(exec): bounded exec-inspect response decode (#208)
🧪 test(integration): portwing/drydock preset conformance suites (#210)
🧪 test(ci): weekly engine-matrix integration workflow (#209)
🔧 config(ci): fuzz deadline-flake retry + exit-status propagation (#207, #215)
🔧 chore(conformance): mktemp scratch dir + live /events + trigger contracts (#206, #212)
🔧 chore(release): GA promotion — changelog, README, chart, website (#213, #215)

@biggest-littlest biggest-littlest left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Rebuilt sync commit verified tree-equal to dev/v1.6 tip (de8015b); review follow-ups landed via #215; all checks green.

@ALARGECOMPANY ALARGECOMPANY left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Second approval — sync commit matches dev/v1.6 tree, CI green.

@scttbnsn
scttbnsn merged commit ffa73f2 into main Aug 9, 2026
53 checks passed
@scttbnsn
scttbnsn deleted the sync/v1.6.0 branch August 9, 2026 04:06
scttbnsn added a commit that referenced this pull request Aug 9, 2026
Single sync commit on top of main carrying the dev/v1.6 tip tree:
🐛 fix(conformance): fast Portwing inventory poll in the test overlay (#216)
— plus the #214 content this supersedes if any drift remains.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

3 participants