Skip to content

πŸ”§ chore(sync): advance main to dev/v1.6 for the v1.6.0-rc.7 cut - #610

Merged
scttbnsn merged 1 commit into
mainfrom
sync/main-20260726-rc7
Jul 26, 2026
Merged

πŸ”§ chore(sync): advance main to dev/v1.6 for the v1.6.0-rc.7 cut#610
scttbnsn merged 1 commit into
mainfrom
sync/main-20260726-rc7

Conversation

@scttbnsn

@scttbnsn scttbnsn commented Jul 26, 2026

Copy link
Copy Markdown
Contributor

Routine pre-cut sync: takes dev/v1.6 (391c1b7d) wholesale onto main so the rc.7 tag cuts from a tree identical to the dev branch.

Delta since the rc.6 sync (#603):

Head branch is a throwaway (sync/main-20260726-rc7), not dev/v1.6, so auto-delete-head-branches can't touch the dev branch (#596 lesson).

Changelog

  • πŸ› Fixed identity drift across maturity tracking, notification deduplication, and scan write-back.
  • πŸ› Prevented stale or removed containers from being overwritten or resurrected during scans.
  • ✨ Added shared candidate-identity extraction and raw-container access APIs.
  • πŸ”§ Updated maturity/age filtering and sorting behavior and expanded regression coverage.
  • πŸ”§ Regenerated the server icon bundle.
  • πŸ”§ Bumped release surfaces, documentation, mocks, and validation tests from v1.6.0-rc.6 to v1.6.0-rc.7.
  • ✨ Added v1.6.0-rc.7 release highlights and GA-compatible release-surface checks.

@vercel

vercel Bot commented Jul 26, 2026

Copy link
Copy Markdown

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

Project Deployment Actions Updated (UTC)
drydock-website Ready Ready Preview, Comment Jul 26, 2026 11:08pm
drydockdemo-website Ready Ready Preview, Comment Jul 26, 2026 11:08pm

@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.

Tree-identical advance of main to dev/v1.6 for the rc.7 cut.

@coderabbitai

coderabbitai Bot commented Jul 26, 2026

Copy link
Copy Markdown

Review Change Stack

πŸ“ Walkthrough

Walkthrough

The change centralizes container candidate identity fields for lifecycle signatures, notification hashes, and scan validation. Security scan write-back now re-fetches raw records, preserves concurrent updates, and skips persistence for removed containers. Update age now requires updateAvailable. Tests cover identity drift, scan concurrency, maturity filtering, and age sorting. Release metadata and documentation advance to v1.6.0-rc.7, and the server icon bundle is regenerated.

Possibly related PRs

πŸš₯ 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/main-20260726-rc7

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.

ALARGECOMPANY
ALARGECOMPANY previously approved these changes Jul 26, 2026

@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.

Routine pre-cut sync, content already green on dev/v1.6.

@scttbnsn
scttbnsn dismissed stale reviews from ALARGECOMPANY and biggest-littlest July 26, 2026 23:05

The merge-base changed after approval.

@scttbnsn
scttbnsn force-pushed the sync/main-20260726-rc7 branch from 391c1b7 to 8aabf0f Compare July 26, 2026 23:05

@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.

Re-approving after the head branch was rebuilt as main + dev tree wholesale.

@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.

Re-approved, tree matches dev/v1.6 exactly.

@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

πŸ€– 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 `@content/docs/current/updates/index.mdx`:
- Line 8: Update the release-note bullet in the current updates index to
separate the no-update maturity/age filter fix from the three candidate-identity
fixes. State that the filter/sort behavior is gated by updateAvailable, and
reserve the shared candidate-identity comparison claim for the maturity clock,
notification deduplication, and security-scan fixes.

In `@scripts/release-docs-identity.test.mjs`:
- Around line 32-34: Validate RC_VERSION against the supported plain-semver or
numeric RC prerelease syntax before the RC/GA branching logic in the
release-docs assertions. Reject malformed values such as β€œ1.6.0-rc.x” before
deriving or checking any release surfaces, while preserving support for GA
versions and valid RC versions.
πŸͺ„ Autofix (Beta)

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: 34588d89-1df6-435b-bad7-97e947ceab3b

πŸ“₯ Commits

Reviewing files that changed from the base of the PR and between f48598e and 8aabf0f.

β›” Files ignored due to path filters (1)
  • CHANGELOG.md is excluded by !CHANGELOG.md
πŸ“’ Files selected for processing (32)
  • README.md
  • app/api/container.test.ts
  • app/api/container.ts
  • app/api/container/bulk-security.test.ts
  • app/api/container/bulk-security.ts
  • app/api/container/crud.test.ts
  • app/api/container/filters.test.ts
  • app/api/container/maturity-filter.test.ts
  • app/api/container/security.test.ts
  • app/api/container/security.ts
  • app/api/container/update-age.ts
  • app/model/container.ts
  • app/store/container.test.ts
  • app/store/container.ts
  • app/store/notification-history.test.ts
  • app/store/notification-history.ts
  • apps/demo/src/mocks/data/agents.ts
  • apps/demo/src/mocks/data/audit.ts
  • apps/demo/src/mocks/data/containers.ts
  • apps/demo/src/mocks/data/server.ts
  • apps/demo/src/mocks/handlers/app.ts
  • apps/web/src/lib/site-config.ts
  • apps/web/src/lib/site-content.ts
  • content/docs/current/api/agent.mdx
  • content/docs/current/api/app.mdx
  • content/docs/current/api/portwing.mdx
  • content/docs/current/quickstart/index.mdx
  • content/docs/current/updates/index.mdx
  • scripts/changelog-links.test.mjs
  • scripts/release-docs-identity.test.mjs
  • scripts/release-identity.test.mjs
  • ui/src/boot/icon-bundle.json


## v1.6.0-rc.7 Highlights β€” July 26, 2026

- **Four identity-drift bugs fixed** β€” the maturity soak clock no longer resets when a container is recreated, notification dedup no longer double-fires a `once: true` notification on a manual recheck, a finishing security scan no longer reverts an update the watcher detected mid-scan, and containers with no available update no longer surface under maturity/age filters or sorts. All four traced back to inconsistent candidate-identity comparisons, now unified behind one shared helper.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟑 Minor | ⚑ Quick win

Separate update-availability gating from identity drift.

The no-update maturity/age filter behavior is fixed by requiring updateAvailable, not by candidate-identity comparison. Split that claim from the three identity fixes so the release note matches the implementation.

πŸ€– 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 `@content/docs/current/updates/index.mdx` at line 8, Update the release-note
bullet in the current updates index to separate the no-update maturity/age
filter fix from the three candidate-identity fixes. State that the filter/sort
behavior is gated by updateAvailable, and reserve the shared candidate-identity
comparison claim for the maturity clock, notification deduplication, and
security-scan fixes.

Source: Path instructions

Comment on lines +32 to +34
// RC_VERSION is either a prerelease (e.g. 1.6.0-rc.6) or, at the GA cut, the plain base
// version (e.g. 1.6.0). Both shapes drive every assertion below directly from the
// constant β€” no shape-specific literal is hand-maintained, and no shape throws.

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🎯 Functional Correctness | 🟑 Minor | ⚑ Quick win

Reject malformed release versions before the RC/GA branch.

A value such as 1.6.0-rc.x falls into the GA branch and can pass if copied across release surfaces. Assert the supported syntax before branching.

Proposed fix
+  assert.match(RC_VERSION, /^\d+\.\d+\.\d+(?:-rc\.\d+)?$/u);
   const rcSuffixMatch = RC_VERSION.match(/^(.*-rc\.)(\d+)$/u);
πŸ“ Committable suggestion

‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.

Suggested change
// RC_VERSION is either a prerelease (e.g. 1.6.0-rc.6) or, at the GA cut, the plain base
// version (e.g. 1.6.0). Both shapes drive every assertion below directly from the
// constant β€” no shape-specific literal is hand-maintained, and no shape throws.
// RC_VERSION is either a prerelease (e.g. 1.6.0-rc.6) or, at the GA cut, the plain base
// version (e.g. 1.6.0). Both shapes drive every assertion below directly from the
// constant β€” no shape-specific literal is hand-maintained, and no shape throws.
assert.match(RC_VERSION, /^\d+\.\d+\.\d+(?:-rc\.\d+)?$/u);
const rcSuffixMatch = RC_VERSION.match(/^(.*-rc\.)(\d+)$/u);
πŸ€– 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 `@scripts/release-docs-identity.test.mjs` around lines 32 - 34, Validate
RC_VERSION against the supported plain-semver or numeric RC prerelease syntax
before the RC/GA branching logic in the release-docs assertions. Reject
malformed values such as β€œ1.6.0-rc.x” before deriving or checking any release
surfaces, while preserving support for GA versions and valid RC versions.

@scttbnsn
scttbnsn merged commit 8e8ed1f into main Jul 26, 2026
25 checks passed
@scttbnsn
scttbnsn deleted the sync/main-20260726-rc7 branch July 26, 2026 23:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants