Skip to content

πŸ› fix(maturity): surface swallowed auth errors and honor per-container threshold - #660

Merged
scttbnsn merged 2 commits into
dev/v1.6from
fix/v1.6-maturity-clock-604
Aug 4, 2026
Merged

πŸ› fix(maturity): surface swallowed auth errors and honor per-container threshold#660
scttbnsn merged 2 commits into
dev/v1.6from
fix/v1.6-maturity-clock-604

Conversation

@scttbnsn

@scttbnsn scttbnsn commented Aug 4, 2026

Copy link
Copy Markdown
Contributor

Fixes #604.

Two contained defects from the #556 latents:

  • getImagePublishedAt failures (incl. GHCR/LSCR 401/403) now log at warn instead of debug β€” the maturity gate's silent fallback from registry publishedAt to updateDetectedAt is no longer invisible.
  • getRawUpdateMaturityLevel and getContainerMaturityLevel now resolve the container's own updatePolicy.maturityMinAgeDays before the global DD_UI_MATURITY_THRESHOLD_DAYS, matching the gate's isUpdateSuppressed/isMaturityGatePending logic β€” badge and gate can no longer disagree in one response. Containers without an override keep byte-identical behavior.

Review provenance: workflow-implemented, adversarial verify round (caught 2 stale debug-level assertions in the Docker.containers suites, fixed), independent Codex review: clean. Full app suite green.

Changelog

  • πŸ› Fixed registry publication-date failures to log at warn, including GHCR/LSCR authentication failures.
  • πŸ”§ Changed maturity classification to resolve updatePolicy.maturityMinAgeDays before DD_UI_MATURITY_THRESHOLD_DAYS.
  • ✨ Added regression tests for per-container maturity thresholds and warning behavior.
  • πŸ—‘οΈ Removed the obsolete millisecond-based UI threshold helper.

Concerns

  • Verify that warning-level logging follows the same callable-logger convention in both digest-only and regular image paths.
  • Check whether maturity-threshold resolution should use a shared utility to avoid duplicate fallback logic.

@vercel

vercel Bot commented Aug 4, 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 Aug 4, 2026 9:51pm
drydockdemo-website Ready Ready Preview Aug 4, 2026 9:51pm

@coderabbitai

coderabbitai Bot commented Aug 4, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. πŸŽ‰

ℹ️ Recent review info
βš™οΈ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 750c29ee-995f-46a0-9651-dbfd6bdbf5ff

πŸ“₯ Commits

Reviewing files that changed from the base of the PR and between 70ca6d9 and f0c853a.

β›” Files ignored due to path filters (1)
  • CHANGELOG.md is excluded by !CHANGELOG.md
πŸ“’ Files selected for processing (8)
  • app/api/container/maturity-filter.test.ts
  • app/api/container/maturity-filter.ts
  • app/model/container.test.ts
  • app/model/container.ts
  • app/watchers/providers/docker/Docker.containers.labels-version-finding.test.ts
  • app/watchers/providers/docker/Docker.containers.test.ts
  • app/watchers/providers/docker/image-comparison.test.ts
  • app/watchers/providers/docker/image-comparison.ts
🚧 Files skipped from review as they are similar to previous changes (8)
  • app/watchers/providers/docker/Docker.containers.test.ts
  • app/model/container.test.ts
  • app/api/container/maturity-filter.test.ts
  • app/watchers/providers/docker/image-comparison.ts
  • app/watchers/providers/docker/image-comparison.test.ts
  • app/api/container/maturity-filter.ts
  • app/watchers/providers/docker/Docker.containers.labels-version-finding.test.ts
  • app/model/container.ts

πŸ“ Walkthrough

Walkthrough

Container maturity classification now uses updatePolicy.maturityMinAgeDays when configured and the UI threshold otherwise. Model and API paths include regression coverage for divergent thresholds. Docker publish-date lookup failures now use warning logs for digest-only and regular image checks. Tests cover authentication failures and missing warning loggers.

Possibly related PRs

πŸš₯ Pre-merge checks | βœ… 2
βœ… Passed checks (2 passed)
Check name Status Explanation
Linked Issues check βœ… Passed The PR raises registry publish-date failures to warn and applies per-container maturityMinAgeDays in both maturity paths, satisfying issue #604.
Out of Scope Changes check βœ… Passed All production and test changes directly support issue #604 by covering warning-level failures and per-container maturity thresholds.
✨ Finishing Touches πŸ’‘ 1
πŸ› οΈ Fix failing CI checks πŸ’‘
  • Create stacked PR
  • Commit on current branch
πŸ“ Generate docstrings
  • Create stacked PR
  • Commit on current branch
πŸ§ͺ Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/v1.6-maturity-clock-604

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: 3

πŸ€– 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 `@app/api/container/maturity-filter.test.ts`:
- Around line 37-60: Update the test around applyContainerMaturityFilter to set
DD_UI_MATURITY_THRESHOLD_DAYS to '7' before exercising the assertions, and
restore its prior environment value in a finally block. Keep the existing
per-container override assertions unchanged.

In `@app/watchers/providers/docker/image-comparison.test.ts`:
- Around line 838-863: Update the test around findNewVersion so its fixture
selects the GHCR and LSCR providers using their actual registry identifiers,
preferably parameterizing the case with test.each while preserving the 401
warning assertions; otherwise rename the test to describe a generic registry
authentication failure.

In `@app/watchers/providers/docker/image-comparison.ts`:
- Line 342: Guard the warning call in the digest-only error path around
getErrorMessage(error), matching the existing logContainer.warn guard used by
the regular path, so missing warn still returns the result without publishedAt.
Add a regression test in the image-comparison tests covering digest-only lookup
failure with no warning logger.
πŸͺ„ 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: cc65d749-badb-4400-82f7-70b3cd49d9fa

πŸ“₯ Commits

Reviewing files that changed from the base of the PR and between 7449633 and 14c08a1.

β›” Files ignored due to path filters (1)
  • CHANGELOG.md is excluded by !CHANGELOG.md
πŸ“’ Files selected for processing (8)
  • app/api/container/maturity-filter.test.ts
  • app/api/container/maturity-filter.ts
  • app/model/container.test.ts
  • app/model/container.ts
  • app/watchers/providers/docker/Docker.containers.labels-version-finding.test.ts
  • app/watchers/providers/docker/Docker.containers.test.ts
  • app/watchers/providers/docker/image-comparison.test.ts
  • app/watchers/providers/docker/image-comparison.ts

Comment thread app/api/container/maturity-filter.test.ts Outdated
Comment thread app/watchers/providers/docker/image-comparison.test.ts Outdated
Comment thread app/watchers/providers/docker/image-comparison.ts Outdated
@vercel

vercel Bot commented Aug 4, 2026

Copy link
Copy Markdown

Deployment failed with the following error:

Resource is limited - try again in 24 hours (more than 100, code: "api-deployments-free-per-day").

Learn More: https://vercel.com/codeswhat?upgradeToPro=build-rate-limit

…r threshold

- Bump getImagePublishedAt failure logging from debug to warn in image-comparison.ts (GHCR/LSCR auth failures were invisible, silently degrading the maturity clock to updateDetectedAt)
- getRawUpdateMaturityLevel (container.ts) and getContainerMaturityLevel (maturity-filter.ts) now resolve updatePolicy.maturityMinAgeDays per-container before falling back to the global DD_UI_MATURITY_THRESHOLD_DAYS, matching the actual gate logic in isUpdateSuppressed/isMaturityGatePending

Fixes: #604
@scttbnsn
scttbnsn force-pushed the fix/v1.6-maturity-clock-604 branch from 7b7c697 to f0c853a Compare August 4, 2026 22:18
@coderabbitai

coderabbitai Bot commented Aug 4, 2026

Copy link
Copy Markdown

Note

GitHub couldn't provide a complete incremental comparison for this pull request, so CodeRabbit is performing a full review instead. This review may take a little longer.

@scttbnsn
scttbnsn merged commit b78fd4b into dev/v1.6 Aug 4, 2026
22 of 24 checks passed
@scttbnsn
scttbnsn deleted the fix/v1.6-maturity-clock-604 branch August 4, 2026 22:40
scttbnsn added a commit that referenced this pull request Aug 5, 2026
Wholesale-tree sync ahead of the v1.6.0-rc.12 cut: the head commit's
tree is `origin/dev/v1.6`'s tree verbatim (`630c64ec`), parented on
main's current head (`67f23419`). Squash-merging makes main
tree-identical to `dev/v1.6`, satisfying the release-cut drift guard
(`git diff --quiet origin/main origin/dev/v1.6`).

Brings in since rc.11: #659 security pins, #662/#660/#661/#663 runtime
fixes (#636/#604/#605/#637), #664 guard floor, #653–#656 deps, #665
Crowdin, #666 rc.12 prep.

After merge: dispatch `release-cut.yml --ref main -f
release_tag=v1.6.0-rc.12`.

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->

## Changelog

- πŸ”’ Updated dependency security pins and security-version tests.
- ✨ Added anonymous-authenticated WebSocket log streams with IP-based
rate limits.
- ✨ Added agent component-registration state tracking.
- πŸ”§ Downgraded selected update blockers during agent registration.
- πŸ”§ Added controller-Docker transport detection.
- πŸ› Added HTTP `501` responses for unsupported agent lifecycle actions.
- πŸ› Fixed maturity filtering to use per-container thresholds.
- πŸ› Changed Docker publish-date lookup failures to warning logs.
- πŸ”§ Updated dependency versions, release metadata, documentation, mocks,
and changelog links from `v1.6.0-rc.11` to `v1.6.0-rc.12`.
- ✨ Added release highlights for `v1.6.0-rc.12`.

## Concerns

- Fix the French `containerLogs.stderr` value if `"sdterr"` is not
intentional.
- Verify the release date `August 4, 2026`.
- Dispatch the release-cut workflow for `main` with
`release_tag=v1.6.0-rc.12` after merging.

<!-- end of auto-generated comment: release notes by coderabbit.ai -->
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