Skip to content

F-048 (P7) — Scan-resilience defects (F-024 batch abort, F-025 transient finding loss) without regression test #19

Closed

Description

@LarsLaskowski

Severity: 🟠 · Criterion: K8 (Tests) · Phase: P7 · Status (review): 🆕

File(s): src/Tests/DockerUpdateGuard.Tests/ImageScanOrchestratorTests.cs; src/Tests/DockerUpdateGuard.Tests/RuntimeContainerScanOrchestratorTests.cs

Finding

The orchestrator suites are overall strong and cover the
per-container resilience exemplarily (…ContinuesAfterContainerProcessingFailureAsync:
one broken container → Partial, the rest run on). What remains uncovered, however, is
exactly the two resilience defects found in P3: (a)
F-024
— an exception outside the inner try (e.g. SingleAsync on an image deleted between
listing and scan, or a DB error on the initial ScanRun save)
aborts all subsequent items in ScanAllAsync/ScanInstanceAsync; all
batch tests, however, use only one instance or skip the pre-try throw. (b)
F-025
— no test seeds active findings and then makes discovery/registry
fail, to check whether existing alerts survive the transient error
(per F-025 they do not).

Impact

Two defects with user impact (starving subsequent items;
flickering "update available" alerts) can regress unnoticed or remain
unverified on a fix — exactly on the paths the review marked as 🟠.

Recommendation

(1) A multi-instance/multi-item batch test in which the first item throws in the
pre-try region, and verification that the remaining items are scanned nonetheless. (2) A test with
pre-existing active findings + a failing discovery that proves
active findings are deleted/deactivated only after a successful re-evaluation.


Auto-generated from the repository code review. Source of truth: docs/review/findings.md → F-048 (P7), branch review/review-analysis-plan.

Activity

  1. LarsLaskowski commented on Oct 31, 2026

    @LarsLaskowski
    OwnerAuthor

    Squad working record

    Tier trivial, no security area. F-024 and F-025 are already fixed on main (#129, #134); this change only adds the missing regression tests (PR #386). Related defects found on the way: #384, #385.

    plan.md

    Full plan at the last commit that contains it: https://github.com/LarsLaskowski/DockerUpdateGuard/blob/64a2426/specs/issue-19/plan.md

    Summary: three tests (AC1 image batch continues after a pre-try failure of the first item, AC2 the same for the runtime batch, AC3 the derived .NET finding survives a failing release feed) plus a FailOnSaveAttempt option on the SaveChangesFailingDbContext test double. AC4: each test was shown to fail when its guard is removed.

    log.md
    Date Step Member Result
    2026-10-31 16:33 1 Intake Orchestrator Issue #19 read (open, label review-report, milestone M2): test-gap for F-024/F-025 resilience defects; treated as bug; branch claude/admiring-gauss-b4h8am off main bb924ba
    2026-10-31 16:39 2 Plan Lead Plan DONE: tier trivial, no security area, 3 tests + FailOnSaveAttempt on test double; F-024/F-025 already fixed on main; plan-check PASS (opus/medium · 134,115 tokens · 42 tool uses · 383 s)
    2026-10-31 16:39 2 Plan challenge Orchestrator challenge skipped: no options
    2026-10-31 16:59 6 Tests Tester 3 tests + FailOnSaveAttempt written; pass on current code, fail under 3 mutations (AC4); Running-run count: 1 of 2 left Running (fact 10 confirmed); full suite green (sonnet/medium · 126,886 tokens · 25 tool uses · 2593 s)
    2026-10-31 17:02 7 Code check Orchestrator Format check 0/393, Release build 0 warnings, Test 1008+21 passed, Coverage gate PASS (no production lines), Analyzer gate PASS
    2026-10-31 17:04 8 Review round 1 Reviewer APPROVE at ab0bfb5, no findings (opus/medium · 45,852 tokens · 7 tool uses · 46 s)
    2026-10-31 17:04 9 PR approval Orchestrator approved by checklist (review clean, gates pass on head, no decision records, no open decisions); decision-check PASS
    2026-10-31 17:05 10 Pull request Orchestrator Follow-up issues #384 and #385 opened; working record posted to issue #19; opening draft PR
    2026-10-31 17:09 11 After the PR Orchestrator PR 386 opened as draft and subscribed; Sonar quality gate passed (0 issues, 0 hotspots); CI Build/Test/Analyze green, CodeQL csharp pending
    2026-10-31 17:09 12 Wrap-up Orchestrator no lessons

    Squad run metrics

    Member Model/effort Launches Tokens Tool uses Seconds
    Lead opus/medium 1 134,115 42 383
    Reviewer opus/medium 1 45,852 7 46
    Tester sonnet/medium 1 126,886 25 2593
    Total 3 306,853 74 3022
    Member Wall time (s) Not covered by launches (s) Gate runs
    Orchestrator 2,160 554 1

    Generated by Claude Code

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions