🔧 chore(release): consolidate v1.6.0-rc.2#550
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Path: .coderabbit.yaml Review profile: CHILL Plan: Pro Plus Run ID: ⛔ Files ignored due to path filters (1)
📒 Files selected for processing (38)
📝 WalkthroughWalkthroughThe PR centralizes GitHub Actions workflow parsing in shared test utilities. Docker watch and image reconciliation preserve prior comparison state and reconciled digests across failure, repair, and errored-container paths. The UI adds a Possibly related issues
Possibly related PRs
🚥 Pre-merge checks | ✅ 2✅ Passed checks (2 passed)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Comment |
There was a problem hiding this comment.
🧹 Nitpick comments (1)
.github/tests/ci-verify-workflow.test.ts (1)
36-39: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winDelegate to the shared lookup helper.
function getTestJobStep(name: string): WorkflowStep | undefined { - const workflow = loadWorkflow(); - return workflow.jobs?.test?.steps?.find((step) => step.name === name); + return getWorkflowStep('test', name); }🤖 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 @.github/tests/ci-verify-workflow.test.ts around lines 36 - 39, Update getTestJobStep to delegate step lookup to the existing shared lookup helper instead of directly traversing workflow.jobs.test.steps and calling find. Preserve the current name-based lookup behavior and undefined result when no matching step exists.
🤖 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.
Nitpick comments:
In @.github/tests/ci-verify-workflow.test.ts:
- Around line 36-39: Update getTestJobStep to delegate step lookup to the
existing shared lookup helper instead of directly traversing
workflow.jobs.test.steps and calling find. Preserve the current name-based
lookup behavior and undefined result when no matching step exists.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Path: .coderabbit.yaml
Review profile: CHILL
Plan: Pro Plus
Run ID: 17052623-2d47-4bce-be6e-8bf4e8bbea4b
⛔ Files ignored due to path filters (1)
CHANGELOG.mdis excluded by!CHANGELOG.md
📒 Files selected for processing (36)
.github/tests/ci-verify-workflow.test.ts.github/tests/crowdin-workflow.test.ts.github/tests/e2e-playwright-workflow.test.ts.github/tests/github-actions-pins.test.ts.github/tests/harden-runner-workflow.test.ts.github/tests/mutation-workflow.test.ts.github/tests/path-filter-workflow.test.ts.github/tests/release-cut-retry-workflow.test.ts.github/tests/workflow-test-utils.tsREADME.mdapp/watchers/providers/docker/container-processing.test.tsapp/watchers/providers/docker/container-processing.tsapp/watchers/providers/docker/docker-image-details-orchestration.test.tsapp/watchers/providers/docker/docker-image-details-orchestration.tsapps/demo/src/mocks/data/agents.tsapps/demo/src/mocks/data/audit.tsapps/demo/src/mocks/data/containers.tsapps/demo/src/mocks/data/server.tsapps/demo/src/mocks/handlers/app.tsapps/web/src/lib/site-config.tsapps/web/src/lib/site-content.tscontent/docs/current/api/agent.mdxcontent/docs/current/api/app.mdxcontent/docs/current/api/portwing.mdxcontent/docs/current/quickstart/index.mdxcontent/docs/current/updates/index.mdxscripts/changelog-links.test.mjsscripts/release-docs-identity.test.mjsscripts/release-identity.test.mjsui/src/components/containers/ContainersListContent.vueui/src/composables/useContainerFilters.tsui/src/locales/en/containerComponents.jsonui/src/views/ContainersView.vueui/tests/components/containers/ContainersListContent.spec.tsui/tests/composables/useContainerFilters.spec.tsui/tests/views/ContainersView.spec.ts
|
The 🥒 E2E Cucumber failure is root-caused and real, not a flake: the #543 restore in watchContainer's catch assigns Fix round in progress on dev/v1.6 (restore only the plain data props |
…le (#551) Fixes the real regression the 🥒 Cucumber E2E gate caught on release PR #550 (details in [this comment](#550 (comment))). **Root cause:** the #543 error-restore in `watchContainer`'s catch assigned `updateAvailable`/`updateKind`, but `validate()` installs those as getter-only derived properties (no setter). On a validated container the assignment threw `TypeError: Cannot set property updateAvailable of #<Object> which has only a getter`, escaped `watchContainer`, and the container report never persisted — so `start-drydock.sh`'s readiness gate timed out on the `local_ecr_sub_sub_test` fixture. **Fix:** restore only the plain data properties `result` and `currentReleaseNotes`. `updateAvailable`/`updateKind` recompute from the restored result via the getters, which also makes the restore inherently consistent (no way to restore a stale flag against a fresh result). **Why unit tests missed it:** the container fixtures were plain object literals without the model's getters. TDD round (Codex tests first): a new regression test builds its container through the real `validate()` and failed pre-fix with the exact getter TypeError; the four pre-existing tests were migrated off plain literals to `validate()`-built containers so the file exercises real model object shapes from now on. 2 failed pre-fix → 5/5 post-fix. **Verification:** full docker provider suite 34 files / 1313 tests green; `container-processing.ts` at 100/100/100/100; complete pre-push gate green from a worktree (coverage 100% app+ui, builds, biome, qlty). No CHANGELOG entry: this corrects the unreleased #543 implementation already covered by the rc.2 bullet. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Changelog - 🐛 Fixed `watchContainer` error recovery for validated containers by restoring only `result` and `currentReleaseNotes`. - 🔧 Updated watcher tests to use validated container fixtures and cover getter-derived update state. - ✨ Added regression coverage for failed enrichment/write cycles and state restoration. - ✅ Verified with 1,313 Docker provider tests and the complete pre-push gate. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
d63b3d3 to
ebaaf21
Compare
|
@coderabbitai full review Head regenerated at |
|
✅ Action performedFull review finished. |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 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/watchers/providers/docker/container-processing.test.ts`:
- Around line 86-92: Extend the test around watchContainer to verify
emitContainerReport is called after the restore path completes. Assert the
emitted report contains the restored container state, alongside the existing
return-value assertions, using the test's existing emitContainerReport mock or
spy.
🪄 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: 6bd66eab-5638-432c-8871-248effaafa8b
⛔ Files ignored due to path filters (1)
CHANGELOG.mdis excluded by!CHANGELOG.md
📒 Files selected for processing (36)
.github/tests/ci-verify-workflow.test.ts.github/tests/crowdin-workflow.test.ts.github/tests/e2e-playwright-workflow.test.ts.github/tests/github-actions-pins.test.ts.github/tests/harden-runner-workflow.test.ts.github/tests/mutation-workflow.test.ts.github/tests/path-filter-workflow.test.ts.github/tests/release-cut-retry-workflow.test.ts.github/tests/workflow-test-utils.tsREADME.mdapp/watchers/providers/docker/container-processing.test.tsapp/watchers/providers/docker/container-processing.tsapp/watchers/providers/docker/docker-image-details-orchestration.test.tsapp/watchers/providers/docker/docker-image-details-orchestration.tsapps/demo/src/mocks/data/agents.tsapps/demo/src/mocks/data/audit.tsapps/demo/src/mocks/data/containers.tsapps/demo/src/mocks/data/server.tsapps/demo/src/mocks/handlers/app.tsapps/web/src/lib/site-config.tsapps/web/src/lib/site-content.tscontent/docs/current/api/agent.mdxcontent/docs/current/api/app.mdxcontent/docs/current/api/portwing.mdxcontent/docs/current/quickstart/index.mdxcontent/docs/current/updates/index.mdxscripts/changelog-links.test.mjsscripts/release-docs-identity.test.mjsscripts/release-identity.test.mjsui/src/components/containers/ContainersListContent.vueui/src/composables/useContainerFilters.tsui/src/locales/en/containerComponents.jsonui/src/views/ContainersView.vueui/tests/components/containers/ContainersListContent.spec.tsui/tests/composables/useContainerFilters.spec.tsui/tests/views/ContainersView.spec.ts
🚧 Files skipped from review as they are similar to previous changes (29)
- apps/demo/src/mocks/data/agents.ts
- content/docs/current/api/portwing.mdx
- apps/web/src/lib/site-content.ts
- apps/demo/src/mocks/data/server.ts
- apps/demo/src/mocks/handlers/app.ts
- .github/tests/workflow-test-utils.ts
- ui/src/locales/en/containerComponents.json
- apps/web/src/lib/site-config.ts
- content/docs/current/api/agent.mdx
- ui/src/components/containers/ContainersListContent.vue
- .github/tests/e2e-playwright-workflow.test.ts
- apps/demo/src/mocks/data/audit.ts
- app/watchers/providers/docker/container-processing.ts
- .github/tests/harden-runner-workflow.test.ts
- ui/tests/composables/useContainerFilters.spec.ts
- scripts/changelog-links.test.mjs
- scripts/release-docs-identity.test.mjs
- apps/demo/src/mocks/data/containers.ts
- content/docs/current/updates/index.mdx
- .github/tests/crowdin-workflow.test.ts
- .github/tests/path-filter-workflow.test.ts
- README.md
- ui/tests/components/containers/ContainersListContent.spec.ts
- .github/tests/ci-verify-workflow.test.ts
- .github/tests/mutation-workflow.test.ts
- .github/tests/github-actions-pins.test.ts
- ui/tests/views/ContainersView.spec.ts
- app/watchers/providers/docker/docker-image-details-orchestration.test.ts
- app/watchers/providers/docker/docker-image-details-orchestration.ts
CodeRabbit follow-up from release PR #550 ([the finding](#550 (comment))): the getter-TypeError regression manifested as the container report never persisting, so the regression test now also asserts `emitContainerReport` ran once with the returned report, instead of only checking returned container state. Test-only, 4 lines. 5/5 tests green; full pre-push gate green from a worktree. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ✨ Added - Extended the Docker container watcher regression test to verify `emitContainerReport` is called once with the returned report. - Confirmed the container state remains correctly preserved after a getter `TypeError`. - Test-only change. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
ebaaf21 to
0d93862
Compare
|
@coderabbitai full review Head regenerated at |
|
✅ Action performedFull review finished. |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 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/api/portwing.mdx`:
- Line 188: Update the Welcome example’s drydockVersion value to match the
emitted default from drydockVersion() in app/api/portwing-ws.ts, which is 1.5.0;
preserve the surrounding example unchanged.
🪄 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: f740f86f-b412-47d0-b862-42b25ac8b217
⛔ Files ignored due to path filters (1)
CHANGELOG.mdis excluded by!CHANGELOG.md
📒 Files selected for processing (36)
.github/tests/ci-verify-workflow.test.ts.github/tests/crowdin-workflow.test.ts.github/tests/e2e-playwright-workflow.test.ts.github/tests/github-actions-pins.test.ts.github/tests/harden-runner-workflow.test.ts.github/tests/mutation-workflow.test.ts.github/tests/path-filter-workflow.test.ts.github/tests/release-cut-retry-workflow.test.ts.github/tests/workflow-test-utils.tsREADME.mdapp/watchers/providers/docker/container-processing.test.tsapp/watchers/providers/docker/container-processing.tsapp/watchers/providers/docker/docker-image-details-orchestration.test.tsapp/watchers/providers/docker/docker-image-details-orchestration.tsapps/demo/src/mocks/data/agents.tsapps/demo/src/mocks/data/audit.tsapps/demo/src/mocks/data/containers.tsapps/demo/src/mocks/data/server.tsapps/demo/src/mocks/handlers/app.tsapps/web/src/lib/site-config.tsapps/web/src/lib/site-content.tscontent/docs/current/api/agent.mdxcontent/docs/current/api/app.mdxcontent/docs/current/api/portwing.mdxcontent/docs/current/quickstart/index.mdxcontent/docs/current/updates/index.mdxscripts/changelog-links.test.mjsscripts/release-docs-identity.test.mjsscripts/release-identity.test.mjsui/src/components/containers/ContainersListContent.vueui/src/composables/useContainerFilters.tsui/src/locales/en/containerComponents.jsonui/src/views/ContainersView.vueui/tests/components/containers/ContainersListContent.spec.tsui/tests/composables/useContainerFilters.spec.tsui/tests/views/ContainersView.spec.ts
…mes (#553) Fixes the shipped bug CodeRabbit caught on release PR #550 ([the finding](#550 (comment))): `drydockVersion()` claimed to be populated from package.json at runtime but hard-coded `'1.5.0'` — every portwing WS Welcome frame since the endpoint shipped in v1.5.0 (so v1.5.1, v1.5.2, and v1.6.0-rc.1 servers) identified itself as `1.5.0` to agents. The documented Welcome example was describing intended behavior the code never delivered. **Fix:** `drydockVersion()` now delegates to the canonical `getVersion()` from `app/configuration` (`DD_VERSION` override, else package.json — the same source `app/debug/dump.ts` and the rest of the API use), still cached at first read and still overridable by `injectDrydockVersionForTesting()`. Stale comments corrected. **TDD (Codex tests first):** new regression test mocks `getVersion()` to a sentinel and asserts the Welcome frame carries it — failed pre-fix with `expected '1.5.0' to be '9.9.9-test'`; 98/98 file tests green post-fix, `portwing-ws.ts` at 100/100/100/100. CHANGELOG bullet under `[1.6.0-rc.2]` Fixed. Full pre-push gate green from a worktree; release-guard scripts 105/105. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Changelog ### 🐛 Fixed - Portwing WebSocket Welcome frames now report the canonical server version (no more hard-coded `1.5.0`). - `drydockVersion()` delegates to the canonical `getVersion()` from `app/configuration` (honors `DD_VERSION` override or `package.json` fallback) while keeping first-read caching and the existing `injectDrydockVersionForTesting()` override. - Updated `[1.6.0-rc.2]` changelog entry to reflect the Portwing WS welcome-version fix. ### 🔧 Changed - Added/extended regression coverage: mock `getVersion()` and assert the first outbound `welcome` frame contains `data.config.drydockVersion` equal to the mocked value during a full upgrade + hello handshake. - Replaced scheduler-sensitive fixed delay in the welcome-version regression test with `vi.waitFor`. - Refreshed related comments and configuration imports around the version source. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
0d93862 to
d382696
Compare
|
@coderabbitai full review Final head |
|
✅ Action performedFull review finished. |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 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/watchers/providers/docker/docker-image-details-orchestration.test.ts`:
- Around line 330-352: Extend the test “keeps an errored broken reference on the
fast path and preserves its digest” to assert that the errored container’s
broken image reference is repaired after addImageDetailsToContainerOrchestration
completes. Verify the repaired image tag or image ID in addition to the existing
digest assertion, while retaining the fast-path getContainers assertion.
🪄 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: cae7a8c1-f898-47f2-a81a-b7810281c6f9
⛔ Files ignored due to path filters (1)
CHANGELOG.mdis excluded by!CHANGELOG.md
📒 Files selected for processing (38)
.github/tests/ci-verify-workflow.test.ts.github/tests/crowdin-workflow.test.ts.github/tests/e2e-playwright-workflow.test.ts.github/tests/github-actions-pins.test.ts.github/tests/harden-runner-workflow.test.ts.github/tests/mutation-workflow.test.ts.github/tests/path-filter-workflow.test.ts.github/tests/release-cut-retry-workflow.test.ts.github/tests/workflow-test-utils.tsREADME.mdapp/api/portwing-ws.test.tsapp/api/portwing-ws.tsapp/watchers/providers/docker/container-processing.test.tsapp/watchers/providers/docker/container-processing.tsapp/watchers/providers/docker/docker-image-details-orchestration.test.tsapp/watchers/providers/docker/docker-image-details-orchestration.tsapps/demo/src/mocks/data/agents.tsapps/demo/src/mocks/data/audit.tsapps/demo/src/mocks/data/containers.tsapps/demo/src/mocks/data/server.tsapps/demo/src/mocks/handlers/app.tsapps/web/src/lib/site-config.tsapps/web/src/lib/site-content.tscontent/docs/current/api/agent.mdxcontent/docs/current/api/app.mdxcontent/docs/current/api/portwing.mdxcontent/docs/current/quickstart/index.mdxcontent/docs/current/updates/index.mdxscripts/changelog-links.test.mjsscripts/release-docs-identity.test.mjsscripts/release-identity.test.mjsui/src/components/containers/ContainersListContent.vueui/src/composables/useContainerFilters.tsui/src/locales/en/containerComponents.jsonui/src/views/ContainersView.vueui/tests/components/containers/ContainersListContent.spec.tsui/tests/composables/useContainerFilters.spec.tsui/tests/views/ContainersView.spec.ts
🚧 Files skipped from review as they are similar to previous changes (33)
- apps/demo/src/mocks/data/agents.ts
- apps/demo/src/mocks/handlers/app.ts
- content/docs/current/api/app.mdx
- apps/demo/src/mocks/data/audit.ts
- apps/demo/src/mocks/data/containers.ts
- content/docs/current/quickstart/index.mdx
- content/docs/current/api/portwing.mdx
- ui/tests/composables/useContainerFilters.spec.ts
- apps/web/src/lib/site-config.ts
- content/docs/current/updates/index.mdx
- apps/demo/src/mocks/data/server.ts
- .github/tests/e2e-playwright-workflow.test.ts
- ui/src/locales/en/containerComponents.json
- .github/tests/harden-runner-workflow.test.ts
- scripts/changelog-links.test.mjs
- ui/src/views/ContainersView.vue
- .github/tests/crowdin-workflow.test.ts
- ui/src/components/containers/ContainersListContent.vue
- .github/tests/workflow-test-utils.ts
- scripts/release-docs-identity.test.mjs
- ui/src/composables/useContainerFilters.ts
- app/watchers/providers/docker/container-processing.ts
- .github/tests/mutation-workflow.test.ts
- apps/web/src/lib/site-content.ts
- .github/tests/ci-verify-workflow.test.ts
- .github/tests/path-filter-workflow.test.ts
- ui/tests/views/ContainersView.spec.ts
- ui/tests/components/containers/ContainersListContent.spec.ts
- app/watchers/providers/docker/container-processing.test.ts
- scripts/release-identity.test.mjs
- app/watchers/providers/docker/docker-image-details-orchestration.ts
- README.md
- .github/tests/github-actions-pins.test.ts
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 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/portwing-ws.test.ts`:
- Around line 354-357: Update the welcome-frame assertion in the WebSocket test
to compare drydockVersion directly against the expected literal “9.9.9-test”
instead of calling getVersion(). Clear getVersion mock history before exercising
the production flow, then verify getVersion was called after the welcome
response is produced.
🪄 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: 521a17e9-2880-4daa-bfa4-d27a9cfb0239
⛔ Files ignored due to path filters (1)
CHANGELOG.mdis excluded by!CHANGELOG.md
📒 Files selected for processing (38)
.github/tests/ci-verify-workflow.test.ts.github/tests/crowdin-workflow.test.ts.github/tests/e2e-playwright-workflow.test.ts.github/tests/github-actions-pins.test.ts.github/tests/harden-runner-workflow.test.ts.github/tests/mutation-workflow.test.ts.github/tests/path-filter-workflow.test.ts.github/tests/release-cut-retry-workflow.test.ts.github/tests/workflow-test-utils.tsREADME.mdapp/api/portwing-ws.test.tsapp/api/portwing-ws.tsapp/watchers/providers/docker/container-processing.test.tsapp/watchers/providers/docker/container-processing.tsapp/watchers/providers/docker/docker-image-details-orchestration.test.tsapp/watchers/providers/docker/docker-image-details-orchestration.tsapps/demo/src/mocks/data/agents.tsapps/demo/src/mocks/data/audit.tsapps/demo/src/mocks/data/containers.tsapps/demo/src/mocks/data/server.tsapps/demo/src/mocks/handlers/app.tsapps/web/src/lib/site-config.tsapps/web/src/lib/site-content.tscontent/docs/current/api/agent.mdxcontent/docs/current/api/app.mdxcontent/docs/current/api/portwing.mdxcontent/docs/current/quickstart/index.mdxcontent/docs/current/updates/index.mdxscripts/changelog-links.test.mjsscripts/release-docs-identity.test.mjsscripts/release-identity.test.mjsui/src/components/containers/ContainersListContent.vueui/src/composables/useContainerFilters.tsui/src/locales/en/containerComponents.jsonui/src/views/ContainersView.vueui/tests/components/containers/ContainersListContent.spec.tsui/tests/composables/useContainerFilters.spec.tsui/tests/views/ContainersView.spec.ts
…554) CodeRabbit follow-up from release PR #550 ([the finding](#550 (comment))): the errored-container fast-path tests pinned routing (no `getContainers` scan) and digest stickiness, but not the repair itself — a silently-skipped repair would still pass. New test pins the full self-heal contract for an errored container with a broken stored reference: fast-path routing held, tag repaired via `resolveTagName` (`1.2.3` per the helpers fixture — verified by execution), image id updated from inspect, #541 digest stickiness (`sha256:reconciled` preserved), and the stored error retained until a successful watch clears it. Test-only, 29 lines (Codex-authored, contract verified by running against the implementation). 56/56 file tests, full docker provider coverage suite green, full pre-push gate green from a worktree. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ✨ Added a Docker watcher test covering self-healing for errored containers with broken image references: - Verifies fast-path routing without `getContainers` - Confirms tag normalization via `resolveTagName` - Updates the image ID from inspection - Preserves `sha256:reconciled` digest stickiness - Retains the stored error until a successful watch clears it - Test-only change - File tests, Docker provider coverage, and pre-push checks pass <!-- end of auto-generated comment: release notes by coderabbit.ai -->
d382696 to
04152e7
Compare
|
@coderabbitai full review Final head |
|
✅ Action performedFull review finished. |
CodeRabbit follow-up from release PR #550 ([the finding](#550 (comment))): the welcome-version regression test compared the frame against `getVersion()` — the same mock production calls — so a hard-coded frame value could still pass. Now asserts the `'9.9.9-test'` sentinel literally (after clearing the mock's history) and verifies the mocked `getVersion` was called to produce the frame. Test-only, 5 lines. 98/98 file tests green; full pre-push gate green from a worktree. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ✨ Added - Strengthened the welcome-version regression test with the literal `9.9.9-test` sentinel. - Verified the mocked `getVersion` function is called during handshake processing. - Cleared mock call history before exercising the gateway handshake. Concerns: - None identified. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
04152e7 to
1b7c1ae
Compare
|
@coderabbitai full review Final head |
|
✅ Action performedFull review finished. |
There was a problem hiding this comment.
Actionable comments posted: 1
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
app/watchers/providers/docker/docker-image-details-orchestration.test.ts (1)
125-164: 🎯 Functional Correctness | 🟡 Minor | ⚡ Quick winCapture the pre-call policy override reference.
resultandstoredare the same object, so Line 164 passes even if refresh replacesupdatePolicyOverrides. Save the original nested reference before orchestration.Proposed fix
const stored = createErroredStoredContainer(); +const originalUpdatePolicyOverrides = stored.updatePolicyOverrides; // Run orchestration... -expect(result?.updatePolicyOverrides).toBe(stored.updatePolicyOverrides); +expect(result?.updatePolicyOverrides).toBe(originalUpdatePolicyOverrides);🤖 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/watchers/providers/docker/docker-image-details-orchestration.test.ts` around lines 125 - 164, Capture the original stored.updatePolicyOverrides reference before calling addImageDetailsToContainerOrchestration, then assert the result’s overrides are the same reference as that saved value. Update the final identity assertion in the test while retaining the existing value-content assertion.
🧹 Nitpick comments (1)
.github/tests/harden-runner-workflow.test.ts (1)
7-7: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winRoute workflow parsing through the shared loader.
loadWorkflowFiles()still parses YAML locally, so this test does not use the new parsing utility like the other migrated workflow tests. Keepsourcefor assertions, but loadworkflowthroughloadWorkflow(...)(or extend the helper to return both) to prevent parser and type behavior from diverging.🤖 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 @.github/tests/harden-runner-workflow.test.ts at line 7, Update the workflow setup in harden-runner-workflow.test.ts so loadWorkflowFiles() retains source for assertions but obtains workflow through the shared loadWorkflow(...) utility, or extend that helper to return both values. Remove the local YAML parsing path and preserve the existing test assertions.
🤖 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/portwing-ws.test.ts`:
- Around line 324-326: Reset the test-only _drydockVersion cache at the start of
the “reports the canonical configuration version in the welcome frame” test,
before vi.mocked(getVersion).mockClear(). Keep clearNonceCacheForTesting()
unchanged and use the existing test reset mechanism or directly reset the
visible cache symbol.
---
Outside diff comments:
In `@app/watchers/providers/docker/docker-image-details-orchestration.test.ts`:
- Around line 125-164: Capture the original stored.updatePolicyOverrides
reference before calling addImageDetailsToContainerOrchestration, then assert
the result’s overrides are the same reference as that saved value. Update the
final identity assertion in the test while retaining the existing value-content
assertion.
---
Nitpick comments:
In @.github/tests/harden-runner-workflow.test.ts:
- Line 7: Update the workflow setup in harden-runner-workflow.test.ts so
loadWorkflowFiles() retains source for assertions but obtains workflow through
the shared loadWorkflow(...) utility, or extend that helper to return both
values. Remove the local YAML parsing path and preserve the existing test
assertions.
🪄 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: 6aa81238-b851-4bb0-9fc5-da10aa4e6fc3
⛔ Files ignored due to path filters (1)
CHANGELOG.mdis excluded by!CHANGELOG.md
📒 Files selected for processing (38)
.github/tests/ci-verify-workflow.test.ts.github/tests/crowdin-workflow.test.ts.github/tests/e2e-playwright-workflow.test.ts.github/tests/github-actions-pins.test.ts.github/tests/harden-runner-workflow.test.ts.github/tests/mutation-workflow.test.ts.github/tests/path-filter-workflow.test.ts.github/tests/release-cut-retry-workflow.test.ts.github/tests/workflow-test-utils.tsREADME.mdapp/api/portwing-ws.test.tsapp/api/portwing-ws.tsapp/watchers/providers/docker/container-processing.test.tsapp/watchers/providers/docker/container-processing.tsapp/watchers/providers/docker/docker-image-details-orchestration.test.tsapp/watchers/providers/docker/docker-image-details-orchestration.tsapps/demo/src/mocks/data/agents.tsapps/demo/src/mocks/data/audit.tsapps/demo/src/mocks/data/containers.tsapps/demo/src/mocks/data/server.tsapps/demo/src/mocks/handlers/app.tsapps/web/src/lib/site-config.tsapps/web/src/lib/site-content.tscontent/docs/current/api/agent.mdxcontent/docs/current/api/app.mdxcontent/docs/current/api/portwing.mdxcontent/docs/current/quickstart/index.mdxcontent/docs/current/updates/index.mdxscripts/changelog-links.test.mjsscripts/release-docs-identity.test.mjsscripts/release-identity.test.mjsui/src/components/containers/ContainersListContent.vueui/src/composables/useContainerFilters.tsui/src/locales/en/containerComponents.jsonui/src/views/ContainersView.vueui/tests/components/containers/ContainersListContent.spec.tsui/tests/composables/useContainerFilters.spec.tsui/tests/views/ContainersView.spec.ts
Closes the round-7 review finding on #550 plus two adjacent test-hygiene issues found by an adversarial pass over the same surface, so the whole batch lands in one review round. ## Changes **Version cache reset (CodeRabbit finding on #550, `app/api/portwing-ws.test.ts:324`)** - `injectDrydockVersionForTesting` now accepts `undefined` to clear the module-level `_drydockVersion` cache (the `!== undefined` guard in `drydockVersion()` makes it naturally re-prime from `getVersion()`). - The welcome-version test resets the cache before `vi.mocked(getVersion).mockClear()`, so it stays order-independent: an earlier inject or welcome frame can no longer leave the cache primed and let the test pass without exercising the canonical `getVersion()` path. **Same bug class one describe block down** - The injector suite ended by "restoring" the cache to a literal `'1.5.0'` — leaving every later test in the file primed with a stale magic value, the exact order-dependency this PR fixes. It now resets to `undefined` like the new idiom. **Duplicate test scenario in the orchestration suite** - `keeps an errored broken reference on the fast path and preserves its digest` (repair-branch digest stickiness) and `repairs a broken reference for an errored container on the fast path` (fast-path eligibility) ran byte-identical arrange/act; the newer test asserts a strict superset. Folded into one test whose name now carries both intents. Coverage verified 100% across all metrics at directory scope after the merge. **Comment accuracy in `container-processing.ts`** - The catch-block comment implied release-notes enrichment can reject after a fresh result; `enrichContainerWithReleaseNotes` swallows its own errors and never rejects, so the guard is defense-in-depth. The comment now says so instead of overstating the live path. ## Verification - `npx vitest run api/portwing-ws.test.ts watchers/providers/docker/container-processing.test.ts watchers/providers/docker/docker-image-details-orchestration.test.ts` — 158/158 pass. - Directory-scope coverage: `docker-image-details-orchestration.ts` and `container-processing.ts` both 100% branches/lines/functions/statements. - Full pre-push gate (biome, qlty, coverage, build) green on push. <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Changelog - ✨ Added support for clearing the cached Drydock version with `undefined`. - 🔧 Changed API tests to reset the version cache, preventing order-dependent behavior. - 🔧 Clarified the defensive result-restore comment in Docker container processing. - 🗑️ Removed a duplicate errored fast-path repair test and consolidated digest assertions. ## Concerns - Verify the targeted test suite and pre-push checks remain green. <!-- end of auto-generated comment: release notes by coderabbit.ai -->
1b7c1ae to
cbecfa1
Compare
|
@coderabbitai full review |
✅ Action performedFull review finished. |
ALARGECOMPANY
left a comment
There was a problem hiding this comment.
Release head construction verified (parent = frozen main, planning-free tree, delta matches dev exactly). LGTM.
Summary
dev/v1.6over the shipped rc.1: the Fast-path repair branch blindly resets image.digest.value (same defect class as #536's slow-path fix) #541/Containers with a stored watch error repeat the full slow enumeration path every cron #542/Preserve last-known-good result across watch-error writes #543 error-rebuild hardening round 2 (PR 🐛 fix(watcher): error-rebuild hardening round 2 (#541, #542, #543) #547), the Add better filtering to containers #538 "Version Update" container filter (PR ✨ feat(ui): add "version update" container filter (#538) #539), the Deduplicate workflow-test scaffolding under .github/tests (CodeRabbit nitpick from PR #532) #544 workflow-test scaffolding dedupe (PR ♻️ refactor(ci): dedupe workflow-test scaffolding into shared module #548), and the rc.2 release identity sweep (PR 📝 docs(release): bump release identity to v1.6.0-rc.2 #549).planningchanges from the release diff and historyImmutable release construction
mainatd6e166ff29d97d00215d7c69bfce91e3b5de3e8adev/v1.6at51fea2cf22136a15ccef0be4a67b5dec8b009528d63b3d3e29ea21402ea4bf5474e997dbdc9af912dev/v1.6tree exactly (empty diff).planningis absent from frozen main and the release head and contributes zero files or commitsLocal verification on the exact release head
monitor.test.mjs7/7 locallyFinal merge gate
Do not merge this PR or cut
v1.6.0-rc.2until the exact-head GitHub CI, Playwright, Cucumber, load/security matrix, CodeRabbit/Qlty/CodeQL review, two required non-author approvals, and the isolated fresh 24-hour NAS acceptance report are clean withpassed: true. The 24-hour NAS run starts last from the frozen approved tree. After rc.2, the 7-day soak restarts from its publication date (GA earliest ~2026-07-25); GA promotes the exact RC digest, and any further code change requires a new RC and a fresh soak.✨ Added
.github/tests/workflow-test-utils.ts) withloadWorkflow()/getWorkflowStep()and workflow YAML types; refactored workflow inspection tests to use them.watchContainerVitest coverage (app/watchers/providers/docker/container-processing.test.ts) to assert failure/success preservation ofresultandcurrentReleaseNotes, including validated-container getter safety.docker-image-details-orchestration.*.test.ts).filterKind="version"), including kind-filter matching semantics, filter-chip/select option rendering, and route-query synchronization tests.welcomeframe’sconfig.drydockVersionmatches the canonicalgetVersion()value (app/api/portwing-ws.test.ts).v1.6.0-rc.2(including compare-link chain completion expectations).🔧 Changed
loadWorkflow/getWorkflowStephelpers and shared workflow typings.watchContainerby snapshotting/restoring onlycontainerWithResult.resultandcontainerWithResult.currentReleaseNotesacross watch cycles, restoring them only when the current cycle still produced no freshresult(so later enrichment failures don’t overwrite earlier successful comparison state).refreshStoredContainerImageFields.containerToReturn.image.digest.valueassignment to always use the computedrepoDigest.structuredClonecarry-over ofupdatePolicyOverridesinto returned containers before applying declarative policy.getVersion()on first use; extendedinjectDrydockVersionForTestingto acceptstring | undefined.filterKind="version"as a grouped match: containers withupdateKindofmajor/minor/patchmatch the version filter.v1.6.0-rc.1→v1.6.0-rc.2across release identity surfaces (README/site badge + highlights, demo/mock data, API docs, quickstart/update content) and updated release-doc/changelog identity tests accordingly.🐛 Fixed
result/currentReleaseNotesso validated-container getters can safely deriveupdateAvailable/updateKind.welcomeframe usesgetVersion()and adding direct unit coverage.🔒 Security
v1.6.0-rc.2.