Skip to content

bug: idle repository freshness false breach 보정 #61

@pureliture

Description

@pureliture

Outcome

discover-updates --from-catalog --ls-remote-skip가 idle repository를 정상 확인했을 때 freshness-eval이 false incremental breach를 만들지 않는다.

Scope

포함:

  • incremental discovery가 새 incremental work 없음/idle 상태를 성공적으로 확인한 경우 REPO_HEALTH.lastSuccessfulIncrementalAt heartbeat를 전진한다.
  • DISCOVERY_MODE_INITIALIZE, missing cursor, non-fast-forward, pending job 생성 경로는 fresh로 표시하지 않는다.
  • SCAN_JOB / SCAN_LEDGER 기반 scan completion 및 dedupe proof는 그대로 유지한다.

제외:

  • baseline cadence 변경
  • vulnerability scan rollout 변경
  • GHAS mutation 또는 external scan trigger

Bug Details

Actual behavior:

  • idle repo가 skip되거나 새 job이 없으면 REPO_HEALTH.lastSuccessfulIncrementalAt가 전진하지 않아 freshness-eval이 incremental breach로 집계할 수 있다.

Expected behavior:

  • incremental discovery가 remote refs와 cursor 일치 또는 no new work를 정상 확인하면 incremental discovery heartbeat가 최신화되어야 한다.

Reproduction:

  • catalog 대상 repo가 장시간 새 commit 없이 유지된다.
  • discover-updates --from-catalog --ls-remote-skip는 정상 실행된다.
  • freshness-eval --poll-interval-hours 0.0833333333 --baseline-cadence-hours 24 --margin-hours 1가 stale incremental breach를 보고한다.

Impact:

  • operator dashboard/freshness alert가 실제 queue failure가 아닌 idle repository를 stale로 해석한다.

Acceptance Criteria

  • Idle skip 경로는 DISCOVERY_MODE_ENQUEUE에서만 incremental heartbeat를 전진한다.
  • Fetch 후 refs 없음/unchanged/all-ledger-skipped 경로는 새 work 없음이 확인된 경우 heartbeat를 전진한다.
  • Initialize/missing cursor/non-fast-forward/pending work 경로는 heartbeat를 전진하지 않는다.
  • Focused runtime tests와 full test suite가 통과한다.
  • PR body가 lastSuccessfulIncrementalAt 의미를 scan completion이 아니라 incremental discovery heartbeat로 명확히 설명한다.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions